@vgip/meta-ui 1.8.2 → 1.8.3
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/esm2022/lib/resource/index.mjs +2 -3
- package/fesm2022/{vgip-meta-ui-index-ec07628c.mjs → vgip-meta-ui-index-53a51627.mjs} +5 -5
- package/fesm2022/{vgip-meta-ui-index-ec07628c.mjs.map → vgip-meta-ui-index-53a51627.mjs.map} +1 -1
- package/fesm2022/{vgip-meta-ui-index-0ced0b58.mjs → vgip-meta-ui-index-5b9bf56d.mjs} +3 -4
- package/fesm2022/vgip-meta-ui-index-5b9bf56d.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-285a22e1.mjs → vgip-meta-ui-index-6ccd33b5.mjs} +2 -2
- package/fesm2022/{vgip-meta-ui-index-285a22e1.mjs.map → vgip-meta-ui-index-6ccd33b5.mjs.map} +1 -1
- package/fesm2022/{vgip-meta-ui-index-fe6b7896.mjs → vgip-meta-ui-index-718490b0.mjs} +3 -3
- package/fesm2022/{vgip-meta-ui-index-fe6b7896.mjs.map → vgip-meta-ui-index-718490b0.mjs.map} +1 -1
- package/fesm2022/{vgip-meta-ui-index-c47a5ece.mjs → vgip-meta-ui-index-8970e016.mjs} +2 -2
- package/fesm2022/{vgip-meta-ui-index-c47a5ece.mjs.map → vgip-meta-ui-index-8970e016.mjs.map} +1 -1
- package/fesm2022/{vgip-meta-ui-index-50c4a57d.mjs → vgip-meta-ui-index-dbe3aa62.mjs} +3 -3
- package/fesm2022/{vgip-meta-ui-index-50c4a57d.mjs.map → vgip-meta-ui-index-dbe3aa62.mjs.map} +1 -1
- package/fesm2022/vgip-meta-ui.mjs +8 -8
- package/package.json +1 -1
- package/fesm2022/vgip-meta-ui-index-0ced0b58.mjs.map +0 -1
|
@@ -378,10 +378,9 @@ export class MetaResource {
|
|
|
378
378
|
if (this.model) {
|
|
379
379
|
const nestMatch = key.match(/(\S+)\[\d\]\.(\S+)/);
|
|
380
380
|
if (nestMatch && fieldNames.indexOf(nestMatch[1]) !== -1) {
|
|
381
|
-
this.model[nestMatch[1]] = [];
|
|
382
381
|
const nestKeys = {};
|
|
383
382
|
nestKeys[nestMatch[2]] = value;
|
|
384
|
-
this.model[nestMatch[1]]
|
|
383
|
+
this.model[nestMatch[1]] = [nestKeys];
|
|
385
384
|
}
|
|
386
385
|
else if (fieldNames.indexOf(key) !== -1) {
|
|
387
386
|
this.model[key] = value;
|
|
@@ -520,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
520
519
|
type: ViewChild,
|
|
521
520
|
args: ['resourceForm']
|
|
522
521
|
}] } });
|
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2UvaW5kZXgudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2Uvdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEksT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLFlBQVk7SUE4QnZCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUErQixFQUMvQixjQUE4QjtRQUo5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBOUIvQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ1IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBV3JELFNBQUksR0FBRyxJQUFJLENBQUM7UUFLWiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFJaEMsb0JBQWUsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQTZYakQsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDaEMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDO0lBclhGLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixJQUNFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO2VBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtlQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNO2VBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ3JDO1lBQ0EsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTt3QkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7d0JBQy9CLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN6QjtpQkFDRjtZQUNILENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xELG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN0RCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMvSDtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsb0dBQW9HO1lBQ3BHLHlCQUF5QjtZQUN6QixNQUFNO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDL0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBUyxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsRUFBRztRQUMxQyxNQUFNLGNBQWMsR0FBRyxlQUFlLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxSCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDNUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO2lCQUM1QjtnQkFDRCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3JELFlBQVksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pDO2dCQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztnQkFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMvRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsU0FBYyxFQUFFLEVBQUU7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxvQ0FBb0MsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDO2dCQUNoRixZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLEVBQUUsRUFBRTtZQUNOLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWSxDQUFDLE9BQU8sQ0FDbEIsZUFBZSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQ2xHLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25FLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYTttQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFDcEU7Z0JBQ0EsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDM0M7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3JCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2lCQUMvRyxDQUNBLENBQUMsU0FBUyxDQUFDO29CQUNWLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO3dCQUN0Qix5Q0FBeUM7d0JBQ3pDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTs0QkFDbEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQ0FDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7NkJBQ3ZEOzRCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUE7NEJBQzVFLHlHQUF5Rzs0QkFDekcsd0ZBQXdGOzRCQUN4RixtR0FBbUc7NEJBQ25HLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7NkJBQ3hDO3lCQUNGO3dCQUNELHdDQUF3Qzt3QkFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUU7NEJBQ3hCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRTtnQ0FDaEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQzdCO3lCQUNGO3dCQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDbkIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO3dCQUN2SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ25CLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxtQ0FBbUM7Z0JBQ3hGLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO29CQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7cUJBQ3JGO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUM3QixJQUFJLENBQUMsZUFBZSxFQUNwQjtZQUNFLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87WUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDekQsRUFDRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUM3QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUM3QixJQUFJLENBQUMsZUFBZSxFQUNwQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDM0YsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTt3QkFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7d0JBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztxQkFDeEI7aUJBQ0Y7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDdkY7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlLENBQUMsWUFBWSxFQUFFLFdBQVc7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxJQUFJLDRDQUE0QyxDQUFDO1FBQ3RGLElBQUksV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDN0UsS0FBSyxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNuQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDbEY7YUFDRjtZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxZQUFZLEdBQXFCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2dCQUMvSCxJQUFJLFlBQVksRUFBRTtvQkFDaEIsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDaEMseUNBQXlDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHO3dCQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7d0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtxQkFDaEMsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDakQsbUNBQW1DO2dCQUNuQyxzTEFBc0w7Z0JBQ3RMLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDeEQsd0NBQXdDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQywyQ0FBMkM7Z0JBQy9GLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzlILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ25CLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7dUJBQ25ILENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQzNILHlEQUF5RDtrQkFDekQ7b0JBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztvQkFDL0QsSUFBSTt3QkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FDN0IsSUFBSSxDQUFDLGVBQWUsRUFDcEI7NEJBQ0UsTUFBTSxFQUFFLG1CQUFtQjs0QkFDM0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlOzRCQUNyQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxZQUFZOzRCQUM1QyxRQUFRLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7NEJBQzVDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO3lCQUN2RSxFQUNELENBQUMsUUFBUSxFQUFFLEVBQUU7NEJBQ1gsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO2dDQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7NkJBQzFEO2lDQUFNO2dDQUNMLGdEQUFnRDtnQ0FDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQ0FDL0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDOzZCQUNyQzt3QkFDSCxDQUFDLENBQ0YsQ0FBQztxQkFDSDtvQkFBQyxPQUFPLEdBQUcsRUFBRTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztxQkFDMUI7aUJBQ0Y7cUJBQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN2RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQ3JDO2dCQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztpQkFDakQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFDL0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxRQUFRLEdBQUcsY0FBYyxJQUFJLENBQUMsWUFBWSxxREFBcUQsQ0FBQztnQkFDdEcsTUFBTSxZQUFZLEdBQXFCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckYsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFPTyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUNyQyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLFNBQVMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxRQUFRLEdBQVEsRUFBRSxDQUFDO29CQUN6QixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDekM7cUJBQU0sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDekI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtvQkFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO29CQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDckY7WUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckUsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtnQkFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7d0JBQzdDLEtBQUssRUFBRSxJQUFJO3dCQUNYLFlBQVksRUFBRSxJQUFJO3dCQUNsQixVQUFVLEVBQUUsS0FBSztxQkFDbEIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUcsSUFBSSxlQUF1QixDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDbkQsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDekg7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RFLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pGLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQzthQUMxQztZQUNELElBQUksZUFBZSxFQUFFO2dCQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7YUFDekY7U0FDRjtJQUNILENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN4RyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDekMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFOzRCQUNsQixDQUFDLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzt5QkFDcEI7NkJBQU07NEJBQ0wsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsK0JBQStCO3lCQUN0Rjt3QkFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDckYsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7NEJBQ25FLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDckQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO2dDQUNyQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7b0NBQ2xCLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQ0FDckU7Z0NBQ0QsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0NBQ2pCLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEVBQUU7b0NBQ3hDLEtBQUssRUFBRSxNQUFNO29DQUNiLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJO29DQUM5QixJQUFJLEVBQUUsSUFBSTtpQ0FDWCxDQUFDLENBQUM7NkJBQ0o7eUJBQ0Y7d0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxzQkFBc0I7NEJBQ3RGLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3lCQUN4Qjt3QkFDRCxPQUFPO3dCQUNQLHFGQUFxRjt3QkFDckYsZ0dBQWdHO3dCQUNoRyxNQUFNO3dCQUNOLHdGQUF3Rjt3QkFDeEYsOEJBQThCO3dCQUM5QixpSEFBaUg7d0JBQ2pILDRFQUE0RTt3QkFDNUUsb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7d0JBQ2hDLE1BQU07d0JBQ04sSUFBSTtxQkFDTDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUNyQztJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLDRCQUE0QjtRQUM1QixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0ExaEJVLFlBQVk7bUdBQVosWUFBWSxnWkNoQnpCLHErSUFzRUE7OzRGRHREYSxZQUFZO2tCQUx4QixTQUFTOytCQUNFLG9CQUFvQjtpT0FLckIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNXLElBQUk7c0JBQXBCLE1BQU07Z0JBQ1UsY0FBYztzQkFBOUIsTUFBTTtnQkFFMkIsWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZXRhUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YVJlc291cmNlJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuaW1wb3J0IHsgTWV0YUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YUNvbnRleHQnO1xuaW1wb3J0IHsgTWV0YU1zZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhTXNnJztcbmltcG9ydCB7IG1ldGFOb3JtYWxpemVyIH0gZnJvbSAnLi4vY29tbW9uL21ldGFOb3JtYWxpemVyJztcbmltcG9ydCB7IHRlbXBsYXRlQnVpbGRlciB9IGZyb20gJy4uL2NvbW1vbi91dGlscy90ZW1wbGF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmdpcC1tZXRhLXJlc291cmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZXRhUmVzb3VyY2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHJlc291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XG4gIEBJbnB1dCgpIG1ldGFSZXNvdXJjZVNlcnZpY2VEZWxlZ2F0ZWQ6IE1ldGFSZXNvdXJjZVNlcnZpY2U7IC8vIGNhcnkgaXQgZnJvbSB0aGUgcGFyZW50IHRvIGtlZXAgdGhlIGludGVyY2VwdG9yc1xuICBASW5wdXQoKSB0aGVtZTogc3RyaW5nO1xuICBASW5wdXQoKSBlZGl0TW9kZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZG9uZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNvdXJjZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdyZXNvdXJjZUZvcm0nKSBwdWJsaWMgcmVzb3VyY2VGb3JtOiBOZ0Zvcm07XG5cbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBtZXRhOiBhbnk7XG4gIHNlcnZpY2U6IE1ldGFSZXNvdXJjZVNlcnZpY2U7XG4gIGN1cnJlbnRMYXlvdXRJZDogYW55O1xuICBmb3JtRXJyb3JzOiBhbnk7XG4gIGZpZWxkc01hcDogYW55O1xuICBlZGl0ID0gdHJ1ZTtcbiAgYnVzeTogYm9vbGVhbjtcbiAgbWV0YUxvYWRpbmc6IGJvb2xlYW47XG4gIGdlbmVyYWxFcnJvcjogc3RyaW5nO1xuICByZXNvdXJjZU1lbnVWaXNpYmxlOiBib29sZWFuO1xuICBjb250YWN0c1N1Z2dlc3Rpb25zRG9uZSA9IGZhbHNlO1xuICBpc0VkaXRhYmxlOiBib29sZWFuO1xuICBpc1BlcnNpc3RlbnQ6IGJvb2xlYW47XG4gIGxvY2tlZExheW91dElkOiBzdHJpbmc7XG4gIHJlc291cmNlQ2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICByZXNvdXJjZVZybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbWV0YVJlc291cmNlU2VydmljZTogTWV0YVJlc291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIG1ldGFDb250ZXh0OiBNZXRhQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXRhTXNnU2VydmljZTogTWV0YU1zZ1NlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIGdldCBuaWNlRmllbGRzKCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNcbiAgICAgICYmIHRoaXMucmVzb3VyY2UubWV0YVxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dFxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5zZWN0aW9uc1xuICAgICkge1xuICAgICAgY29uc3QgZXh0cmFjdFNlY3Rpb25GaWVsZHMgPSAocykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2Ygcy5maWVsZHMpIHtcbiAgICAgICAgICBpZiAoZi5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNbZi5uYW1lXSA9IGY7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmLmZpZWxkcyAmJiBmLmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV4dHJhY3RTZWN0aW9uRmllbGRzKGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVzb3VyY2UubmljZUZpZWxkcyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgICAgZXh0cmFjdFNlY3Rpb25GaWVsZHMocyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHM7XG4gIH1cblxuICBnZXQgZmllbGROYW1lcygpIHtcbiAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMubmljZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5jaGlsZHJlbikge1xuICAgICAgICBuYW1lcy5wdXNoKGNoaWxkLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmFtZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmludGVncmF0aW9uQ29kZSA9ICh0aGlzLnJlc291cmNlLmludGVncmF0aW9uQ29kZSB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLnJlc291cmNlVHlwZSA9IHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlO1xuICAgIHRoaXMuc2VydmljZSA9ICh0aGlzLm1ldGFSZXNvdXJjZVNlcnZpY2VEZWxlZ2F0ZWQgfHwgdGhpcy5tZXRhUmVzb3VyY2VTZXJ2aWNlKS5uZXcodGhpcy5yZXNvdXJjZSk7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgfVxuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gdGhpcy5yZXNvdXJjZT8uZXh0ZXJuYWxJZDtcbiAgICBpZiAodGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VWcm4gPSBgdnJuOnZnaXM6JHt0aGlzLmludGVncmF0aW9uQ29kZS50b0xvd2VyQ2FzZSgpfToke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfToke3RoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZH1gO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAmJiB0aGlzLnJlc291cmNlLnJlZi5lZGl0YWJsZSA9PT0gZmFsc2UgJiYgIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkID0gJ01JU1NJTkdfRVhURVJOQUxfSUQnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVzb3VyY2UubWV0YSkge1xuICAgICAgdGhpcy5sb2FkTWV0YWRhdGEodGhpcy5yZXNvdXJjZS5sYXlvdXRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNQZXJzaXN0ZW50ICYmICghdGhpcy5pc0VkaXRhYmxlIHx8IHRoaXMucmVzb3VyY2VzW3JlZi5uYW1lXS5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgIC8vICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgIC8vICAgfVxuICAgICAgdGhpcy5tZXRhID0gdGhpcy5yZXNvdXJjZS5tZXRhO1xuICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmlzUGVyc2lzdGVudCAmJiAoIXRoaXMuaXNFZGl0YWJsZSB8fCB0aGlzLmVkaXRNb2RlID09PSBmYWxzZSB8fCB0aGlzLm1ldGEubGF5b3V0LmNoaWxkcmVuKSkge1xuICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudExheW91dElkID0gdGhpcy5tZXRhLmxheW91dC5pZDtcbiAgICAgIHRoaXMuZ2V0RGV0YWlscygpO1xuICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGhlbWUgIT09ICdpbmhlcml0Jykge1xuICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XG4gICAgfVxuICAgIHRoaXMucmVzb3VyY2VDaGFuZ2VkLnBpcGUoZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5yZXNvdXJjZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzLnRoZW1lKSB7XG4gICAgICB0aGlzLnRoZW1lID0gY2hhbmdlcy50aGVtZS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy50aGVtZSAhPT0gJ2luaGVyaXQnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdCA9IHRydWU7XG4gIH1cblxuICBsb2FkTWV0YWRhdGEobGF5b3V0SWQ/LCByZWZyZXNoID0gZmFsc2UsIGV2Pykge1xuICAgIGNvbnN0IGxheW91dFN0b3JlS2V5ID0gYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWA7XG4gICAgaWYgKCFsYXlvdXRJZCkge1xuICAgICAgbGF5b3V0SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgfVxuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1ldGFMb2FkaW5nID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzO1xuICAgIHRoaXMuc2VydmljZS5nZXRNZXRhZGF0YShsYXlvdXRJZCwgcmVmcmVzaCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChtZXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0SWQgPSBtZXRhLmxheW91dC5pZDtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExheW91dElkLmluZGV4T2YodGhpcy5sb2NrZWRMYXlvdXRJZCkgPT09IC0xKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMubG9ja2VkTGF5b3V0SWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxheW91dElkICE9PSBtZXRhLmxheW91dC5pZCAmJiAhdGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YU5vcm1hbGl6ZXIobWV0YSwgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5tZXRhID0gdGhpcy5tZXRhO1xuICAgICAgICBpZiAoIXJlZnJlc2ggJiYgdGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5lZGl0TW9kZSA9PT0gZmFsc2UgfHwgdGhpcy5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKG1ldGFFcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgIHRoaXMuZ2VuZXJhbEVycm9yID0gYEVycm9yIGxvYWRpbmcgcmVzb3VyY2UgbWV0YWRhdGEgKCR7bWV0YUVycm9yLnN0YXR1c1RleHR9KWA7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxheW91dFN0b3JlS2V5KTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5tZXRhTG9hZGluZztcbiAgICAgICAgdGhpcy5mb3JjZVVpVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGV2KSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGF5b3V0KCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWAsXG4gICAgICB0aGlzLmN1cnJlbnRMYXlvdXRJZFxuICAgICk7XG4gICAgdGhpcy5sb2FkTWV0YWRhdGEodGhpcy5jdXJyZW50TGF5b3V0SWQpO1xuICB9XG5cbiAgZ2V0RGV0YWlscygpIHtcbiAgICBkZWxldGUgdGhpcy5sb2NrZWRMYXlvdXRJZDtcbiAgICBpZiAodGhpcy5yZXNvdXJjZSAmJiAodGhpcy5yZXNvdXJjZS5leHRlcm5hbElkIHx8IHRoaXMucmVzb3VyY2UuaWQpKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5wYXJlbnQgJiYgdGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAvLyBza2lwIGZldGNoXG4gICAgICAgICYmIHRoaXMubWV0YS5sYXlvdXQuZWRpdGFibGUgPT09IGZhbHNlICYmICF0aGlzLm1ldGEubGF5b3V0LmNoaWxkcmVuXG4gICAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UuYWN0aXZpdHkpIHtcbiAgICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eVtwXSAmJiB0aGlzLmZpZWxkTmFtZXMuaW5kZXhPZihwKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxbcF0gPSB0aGlzLnJlc291cmNlLmFjdGl2aXR5W3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERldGFpbHMoXG4gICAgICAgICAgKHRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCB8fCB0aGlzLnJlc291cmNlLmlkKSwge1xuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMucmVzb3VyY2UuZXZlbnRJZCAhPT0gJ05PX0VWRU5UJyA/IHRoaXMucmVzb3VyY2UuZXZlbnRJZCA6IG51bGwsIGxheW91dElkOiB0aGlzLnJlc291cmNlLmxheW91dElkXG4gICAgICAgIH1cbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNvdXJjZTogYW55KSA9PiB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICAgICAgaWYgKHJlc291cmNlLl92Z2lzKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZS5fdmdpcy5ldmVudElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCA9IHJlc291cmNlLl92Z2lzLmV2ZW50SWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5sb2NrZWRMYXlvdXRJZCA9IHJlc291cmNlLl92Z2lzLmxheW91dElkIHx8IHJlc291cmNlLl92Z2lzLnJlY29yZFR5cGVJZFxuICAgICAgICAgICAgICAvLyBzYW1wbGUgb3JpZyBsYXlvdXRJZDogMDEyMDAwMDAwMDAwMDAwQUFBLCBjdXN0b20gbGF5b3V0SWQ6IDY2Y2NiYjNkMTgxMDk4NWFhM2ExNjIwMjowMTIwMDAwMDAwMDAwMDBBQUFcbiAgICAgICAgICAgICAgLy8gc28gaWYgdGhlIGN1cnJlbnQgbGF5b3V0IGlzIG5vdCBpbmhlcml0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb25lLCByZWxvYWQgdGhlIG9yaWcgbWV0YVxuICAgICAgICAgICAgICAvLyBDQ09NTkktMTU1IC0gYWxsb3cgZm9ybSBsYXlvdXQgY2hhbmdlICgqdW5sZXNzIHdlIGFyZSBjZXJ0YWluIHRoYXQgdGhlIGN1cnJlbnQgYW5kIGxvY2tlZCBtYXRjaClcbiAgICAgICAgICAgICAgaWYgKHRoaXMubG9ja2VkTGF5b3V0SWQgJiYgKHRoaXMuY3VycmVudExheW91dElkIHx8ICcnKS5pbmRleE9mKHRoaXMubG9ja2VkTGF5b3V0SWQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE1ldGFkYXRhKHRoaXMubG9ja2VkTGF5b3V0SWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmVzb3VyY2VbcF0gIT09ICd1bmRlZmluZWQnKSAmJiAodGhpcy5maWVsZE5hbWVzLmluZGV4T2YocCkgIT09IC0xIHx8IHAgPT09ICdfdmdpcycpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHJlc291cmNlW3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChyZXNvdXJjZUVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxFcnJvciA9IHJlc291cmNlRXJyb3IuZXJyb3IgPyByZXNvdXJjZUVycm9yLmVycm9yLm1lc3NhZ2UgfHwgcmVzb3VyY2VFcnJvci5tZXNzYWdlIDogcmVzb3VyY2VFcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcmNlVWlVcGRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5yZWYgJiYgdGhpcy5yZXNvdXJjZS5yZWYuYWN0aXZpdHkpIHsgLy8gcmV1c2UgZmFpbGVkIGF1dG9hY3Rpdml0aWVzIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5ICYmIHRoaXMuZmllbGROYW1lcy5pbmRleE9mKHApICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5W3BdOyAvLyBWR0lTLTcyMTUgKGNvcHkgb25seSB2YWxpZCBmaWVsZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBlcmZvcm1BdXRvRmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHBlcmZvcm1BdXRvRmlsbCgpIHtcbiAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2F1dG9GaWxsJyxcbiAgICAgICAgaW50ZWdyYXRpb246IHRoaXMuaW50ZWdyYXRpb25Db2RlLFxuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlLFxuICAgICAgICByZXNvdXJjZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsKSksXG4gICAgICAgIGZpZWxkczogdGhpcy5uaWNlRmllbGRzLFxuICAgICAgICBldmVudDogdGhpcy5tZXRhQ29udGV4dC5jb250ZXh0LFxuICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXVxuICAgICAgfSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBhZnAgaW4gcmVzcG9uc2UuYXV0b0ZpbGwpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbFthZnBdKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWxbYWZwXSA9IHJlc3BvbnNlLmF1dG9GaWxsW2FmcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEZpZWxkc01hcCgpIHtcbiAgICBpZiAodGhpcy5tZXRhLmZpZWxkc01hcCkge1xuICAgICAgdGhpcy5maWVsZHNNYXAgPSB0aGlzLm1ldGEuZmllbGRzTWFwO1xuICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgeyBhY3Rpb246ICdmaWVsZHNNYXAnLCBpbnRlZ3JhdGlvbjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUgfSxcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNNYXAgPSByZXNwb25zZS5maWVsZHNNYXA7XG4gICAgICAgICAgICB0aGlzLm1hcmtDb250YWN0YWJsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb250YWN0c1N1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgICAgICB0aGlzLmJ1aWxkU3ViamVjdFRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgIHRoaXMuZXhlY1RyYW5zZm9ybWVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBmaWVsZHMgbWFwJywgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2VUeXBlLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5SZXNvdXJjZU1lbnUoKSB7XG4gICAgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgY2xvc2UocmVzdWx0Pykge1xuICAgIHRoaXMuZG9uZS5lbWl0KHJlc3VsdCk7XG4gIH1cblxuICBzaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCBwYXJzZWRFcnJvcikge1xuICAgIHRoaXMuZm9ybUVycm9ycyA9IHBhcnNlZEVycm9yLm1lc3NhZ2UgfHwgJ1RoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyc7XG4gICAgaWYgKHBhcnNlZEVycm9yLmVycm9ycyAmJiBwYXJzZWRFcnJvci5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvcm1FcnJvcnMgKz0gYCAoJHtwYXJzZWRFcnJvci5lcnJvcnMubWFwKGUgPT4gZS5tZXNzYWdlKS5qb2luKCcsICcpfSlgO1xuICAgICAgZm9yIChjb25zdCBwZSBvZiBwYXJzZWRFcnJvci5lcnJvcnMpIHtcbiAgICAgICAgaWYgKHJlc291cmNlRm9ybS5jb250cm9sc1twZS5maWVsZF0pIHtcbiAgICAgICAgICByZXNvdXJjZUZvcm0uY29udHJvbHNbcGUuZmllbGRdLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUsIGN1c3RvbTogcGUubWVzc2FnZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpcnN0SW52YWxpZDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuVmx0LWZvcm1fX2VsZW1lbnQtLWVycm9yIC5tYWluOm5vdCguc3RhbmRhbG9uZSknKTtcbiAgICAgICAgaWYgKGZpcnN0SW52YWxpZCkge1xuICAgICAgICAgIGZpcnN0SW52YWxpZC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQocmVzb3VyY2VGb3JtKSB7XG4gICAgZGVsZXRlIHRoaXMuZm9ybUVycm9ycztcbiAgICByZXNvdXJjZUZvcm0uZm9ybS5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChyZXNvdXJjZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICBpZiAodGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwuX3ZnaXMpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLl92Z2lzID0ge1xuICAgICAgICAgICAgY29ubmVjdG9yOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMubGF5b3V0SWQgPSB0aGlzLmN1cnJlbnRMYXlvdXRJZDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhpcy5tb2RlbC5fdmdpcy50aW1lWm9uZU9mZnNldEluTWludXRlcyA9IDA7IC8vIHdlIGFyZSBub3QgcHJvdmlkaW5nIHRpbWV6b25lIGFueW1vcmUgKGFzIFYzKSwgaW5zdGVhZCB0aGUgJ3RpbWUnIGFuZCAnZGF0ZScgb2JqZWN0cyBhcmUgY29udmVydGVkIHNvIHRoZSBVVEMgdGltZS9kYXRlIGlzIGNvcnJlY3RcbiAgICAgICAgdGhpcy5tb2RlbC5fdmdpcy5ldmVudElkID0gdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZDtcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgfVxuICAgICAgdGhpcy5zZXJ2aWNlLnNhdmUodGhpcy5tb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgPSByZXN1bHQuX3ZnaXMuZXh0ZXJuYWxJZDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICB0aGlzLnJlc291cmNlVnJuID0gYHZybjp2Z2lzOiR7dGhpcy5pbnRlZ3JhdGlvbkNvZGUudG9Mb3dlckNhc2UoKX06JHt0aGlzLnJlc291cmNlLnJlc291cmNlVHlwZX06JHt0aGlzLnJlc291cmNlLmV4dGVybmFsSWR9YDtcbiAgICAgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICgoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIgJiYgZXJyb3JSZXN1bHQuZXJyb3IgJiYgIWVycm9yUmVzdWx0LmVycm9yLmVycm9ycyAmJiBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKVxuICAgICAgICAgIHx8IChlcnJvclJlc3VsdC5lcnJvciAmJiBlcnJvclJlc3VsdC5lcnJvci5lcnJvcnMgJiYgZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzLmxlbmd0aCAmJiAhZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzWzBdLmZpZWxkKVxuICAgICAgICAgIC8vIGJhY2tlbmQgaW1wbGVtZW50ZWQgZXJyb3IgcGFyc2luZyBidXQgYnJva2VuIFZHSVMtNzM2NlxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSAnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzJztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5tZXRhTXNnU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdwYXJzZUVycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgaW50ZWdyYXRpb25Db2RlOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IGVycm9yUmVzdWx0LmVycm9yLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgICAgICByYXdFcnJvcjogZXJyb3JSZXN1bHQuZXJyb3IuaW50ZWdyYXRpb25FcnJvcixcbiAgICAgICAgICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlLnRvVXBwZXJDYXNlKCldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5wYXJzZWRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCByZXNwb25zZS5wYXJzZWRFcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gZXJyb3IgcGFyc2VyIGZvcicsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVycm9ycyA9IGVycm9yUmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcuLi4uJywgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgICAgICB0aGlzLnNob3dQYXJzZWRFcnJvcihyZXNvdXJjZUZvcm0sIGVycm9yUmVzdWx0LmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSBlcnJvclJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUVycm9ycyA9IE9iamVjdC5rZXlzKHJlc291cmNlRm9ybS5jb250cm9scylcbiAgICAgICAgLmZpbHRlcigoYykgPT4gcmVzb3VyY2VGb3JtLmNvbnRyb2xzW2NdLmludmFsaWQpXG4gICAgICAgIC5tYXAoKGYpID0+ICh0aGlzLm5pY2VGaWVsZHNbZl0gPyAodGhpcy5uaWNlRmllbGRzW2ZdLmxhYmVsIHx8IGYpIDogZikpLmpvaW4oJywgJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgZm9ybVtuYW1lPVwiJHt0aGlzLnJlc291cmNlVHlwZX1cIl0gLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpYDtcbiAgICAgICAgY29uc3QgZmlyc3RJbnZhbGlkOiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkKSB7XG4gICAgICAgICAgZmlyc3RJbnZhbGlkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybUVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5mb3JtRXJyb3JzO1xuICB9XG5cbiAgb25Gb3JtQ2hhbmdlKCkge1xuICAgIHRoaXMucmVzb3VyY2VDaGFuZ2VkLm5leHQoSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1lbnVDbGlja291dCA9ICgpID0+IHtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzdWdnZXN0RmllbGRQcm9wZXJ0eShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZmllbGROYW1lcztcbiAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lc3RNYXRjaCA9IGtleS5tYXRjaCgvKFxcUyspXFxbXFxkXFxdXFwuKFxcUyspLyk7XG4gICAgICAgIGlmIChuZXN0TWF0Y2ggJiYgZmllbGROYW1lcy5pbmRleE9mKG5lc3RNYXRjaFsxXSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtuZXN0TWF0Y2hbMV1dID0gW107XG4gICAgICAgICAgY29uc3QgbmVzdEtleXM6IGFueSA9IHt9O1xuICAgICAgICAgIG5lc3RLZXlzW25lc3RNYXRjaFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLm1vZGVsW25lc3RNYXRjaFsxXV0ucHVzaChuZXN0S2V5cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGROYW1lcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4ZWNUcmFuc2Zvcm1lcigpIHtcbiAgICBpZiAodGhpcy5tZXRhQ29udGV4dCAmJiB0aGlzLmZpZWxkc01hcCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAucGhvbmVOdW1iZXIsIHRoaXMubWV0YUNvbnRleHQucGhvbmVOdW1iZXIpO1xuICAgICAgICBpZiAodGhpcy5maWVsZHNNYXAuZmlyc3ROYW1lIHx8IHRoaXMuZmllbGRzTWFwLmxhc3ROYW1lKSB7XG4gICAgICAgICAgY29uc3QgbmFtZXMgPSAodGhpcy5tZXRhQ29udGV4dC5kaXNwbGF5TmFtZSB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmZpcnN0TmFtZSwgbmFtZXNbMF0pO1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAubGFzdE5hbWUsIG5hbWVzWzFdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkc01hcC5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAuZGlzcGxheU5hbWUsIHRoaXMubWV0YUNvbnRleHQuZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRhY3RhYmxlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLm5pY2VGaWVsZHNbY107XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWVsZCwgJyRpc0NvbnRhY3RhYmxlJywge1xuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN1YmplY3RUZW1wbGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kZWxbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0gJiYgdGhpcy5maWVsZHNNYXAuc3ViamVjdCAmJiB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0pIHtcbiAgICAgIGxldCBzdWJqZWN0VGVtcGxhdGU6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdCkge1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdC5pZCB8fCB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRhQ29udGV4dC5wcm9maWxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdIHx8IHt9O1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSBwcm9maWxlLmRlZmF1bHRTdWJqZWN0ID9cbiAgICAgICAgICBwcm9maWxlLmRlZmF1bHRTdWJqZWN0WygodGhpcy5tZXRhQ29udGV4dC5jb250ZXh0IHx8ICdDQUxMJykudHlwZSB8fCAnJykudG9VcHBlckNhc2UoKV0gOlxuICAgICAgICAgIHByb2ZpbGUuYWN0aXZpdHlEZWZhdWx0U3ViamVjdFRlbXBsYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHN1YmplY3RUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdID0gdGVtcGxhdGVCdWlsZGVyKHRoaXMubWV0YUNvbnRleHQsIHN1YmplY3RUZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRhY3RzU3VnZ2VzdGlvbnMoKSB7XG4gICAgLy8gbGV0IGhhc0RlZmF1bHRDb250YWN0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQuY29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSAmJiB0aGlzLm1ldGEubGF5b3V0ICYmIHRoaXMubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiAocy5maWVsZHMgfHwgW10pKSB7XG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgICAgIGlmICghZi5zdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zID0gZi5zdWdnZXN0aW9ucy5maWx0ZXIoc2cgPT4gIXNnLmF1dG8pOyAvLyBrZWVwIG1ldGEgc3VnZ2VzdGlvbnMgaWYgYW55XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWZUeXBlcyA9IChmLnJlZmVyZW5jZS5sZW5ndGggPyBmLnJlZmVyZW5jZSA6IFtmLnJlZmVyZW5jZV0pLm1hcChyID0+IHIubmFtZSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5tZXRhQ29udGV4dC5jb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdKSB7XG4gICAgICAgICAgICAgIGlmIChyZWZUeXBlcy5pbmRleE9mKGMucmVzb3VyY2VUeXBlIHx8IGMudHlwZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRMYWJlbCA9IGMuZGlzcGxheU5hbWUgfHwgYy5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjLnBob25lTnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgdExhYmVsICs9ICgnIOKchicgKyBjLnBob25lTnVtYmVycy5tYXAocCA9PiBwLnBob25lTnVtYmVyKS5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgaWQ6IGMuZXh0ZXJuYWxJZCB8fCBjLmlkZW50aWZpZXIgfHwgYy5pZCxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiB0TGFiZWwsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBjLnJlc291cmNlVHlwZSB8fCBjLnR5cGUsXG4gICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzIHx8IFtdKS5pbmRleE9mKGYubmFtZSkgIT09IC0xKSB7IC8vIGV2YWx1YXRlIHVzYWJpbGl0eT9cbiAgICAgICAgICAgICAgZi5hbHdheXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIChcbiAgICAgICAgICAgIC8vICAgIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV1cbiAgICAgICAgICAgIC8vICAgJiYgcmVmVHlwZXMuaW5kZXhPZih0aGlzLm1ldGFDb250ZXh0LmRlZmF1bHRDb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdLnR5cGUpICE9PSAtMVxuICAgICAgICAgICAgLy8gKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMucmVzb3VyY2VbZi5uYW1lXSA9IHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV07XG4gICAgICAgICAgICAvLyAgIGhhc0RlZmF1bHRDb250YWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyAmJiBmLnN1Z2dlc3Rpb25zICYmIGYuc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyAgIGlmICh0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMuaW5kZXhPZihmLm5hbWUpICE9PSAtMSAmJiAhZi5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyAgICAgZi5kZWZhdWx0ID0gZi5zdWdnZXN0aW9uc1swXTtcbiAgICAgICAgICAgIC8vICAgICBoYXNEZWZhdWx0Q29udGFjdCA9IHRydWU7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFjdHNTdWdnZXN0aW9uc0RvbmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpIHtcbiAgICBjb25zdCBtZXRhVGhlbWUgPSB0aGlzLnRoZW1lID09PSAnZGFyaycgPyBtZXRhRGFyayA6IG1ldGFMaWdodDtcbiAgICBjb25zb2xlLmxvZygncmVzb3VyY2UgYXBwbHkgdGhlbWUnLCB0aGlzLnRoZW1lKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXRhVGhlbWUucHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIG1ldGFUaGVtZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VVaVVwZGF0ZSgpIHsgLy8gaU9TIHdlYnZpZXcgZG9lcyBub3QgdXBkYXRlIHRoZSBVSSBhZnRlciBhc3ljIGNoYW5nZXMuIFRlbXAgZml4IDooXG4gICAgLy8gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnRzJyk7XG4gICAgZS5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgZmFsc2UpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGUpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPSdnZW5lcmFsRXJyb3InIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWNyaXRpY2FsXCIgc3R5bGU9J292ZXJmbG93OiBhdXRvOyBtYXJnaW46IDIwcHg7Jz5cblx0PGk+PC9pPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LWNhbGxvdXRfX2NvbnRlbnRcIj5cblx0XHQ8cD57e2dlbmVyYWxFcnJvcn19PC9wPlxuXHQ8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIW1ldGEnIGNsYXNzPVwiVmx0LXByb2dyZXNzXCI+XG5cdDxkaXYgY2xhc3M9XCJWbHQtcHJvZ3Jlc3NfX2JhclwiIFtuZ0NsYXNzXT1cInsgbG9hZGluZzogbWV0YUxvYWRpbmcgfVwiIHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZXRleHQ9XCJMb2FkaW5nIE1ldGFkYXRhXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiPjwvZGl2PlxuPC9kaXY+XG48Zm9ybSBbdmdpcE1ldGFGb3JtQXV0b2ZvY3VzXT0nIXJlc291cmNlIHx8ICFyZXNvdXJjZS5leHRlcm5hbElkJyAqbmdJZj0nbWV0YSAmJiAhZ2VuZXJhbEVycm9yJyAjcmVzb3VyY2VGb3JtPVwibmdGb3JtXCIgW25hbWVdPSdyZXNvdXJjZS5yZXNvdXJjZVR5cGUnIChuZ1N1Ym1pdCk9J3N1Ym1pdChyZXNvdXJjZUZvcm0pJyAoY2hhbmdlKT0nb25Gb3JtQ2hhbmdlKCknIG5vdmFsaWRhdGU+XG5cdDxkaXYgY2xhc3M9J2Zvcm0tY29udGVudCcgc3R5bGU9J292ZXJmbG93OiBoaWRkZW47Jz5cblx0XHQ8ZGl2IFtuZ0NsYXNzXT1cInsgJ1ZsdC1jYWxsb3V0LS1kaXNtaXNzZWQnOiAhZm9ybUVycm9ycyB9XCIgY2xhc3M9XCJWbHQtY2FsbG91dCBWbHQtY2FsbG91dC0tYmFubmVyIFZsdC1jYWxsb3V0LS1jcml0aWNhbFwiPlxuXHRcdFx0PGk+PC9pPlxuXHRcdFx0PGRpdiBjbGFzcz1cIlZsdC1jYWxsb3V0X19jb250ZW50XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiBhdXRvO1wiPlxuXHRcdFx0XHQ8cD5UaGVyZSBpcyBhIHByb2JsZW0gd2l0aCBvbmUgb3IgbW9yZSBmaWVsZHM8L3A+XG5cdFx0XHRcdDxzbWFsbCBzdHlsZT0nZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxLjBlbTsnICpuZ0lmPSdmb3JtRXJyb3JzJz57eyBmb3JtRXJyb3JzLm1lc3NhZ2UgfHwgZm9ybUVycm9ycyB9fTwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz1cIlZsdC1jYWxsb3V0X19kaXNtaXNzXCIgKGNsaWNrKT0nY2xlYXJGb3JtRXJyb3JzKCknIGFyaWEtbGFiZWw9XCJEaXNtaXNzXCI+PC9idXR0b24+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cIlZsdC1jYXJkX19jb250ZW50XCIgc3R5bGU9J21pbi1oZWlnaHQ6IDQwcHg7Jz5cblx0XHRcdDx2Z2lwLW1ldGEtbGF5b3V0ICpuZ0lmPSdlZGl0JyBbbWV0YV09J21ldGEubGF5b3V0JyBbcmVzb3VyY2VdPSdtb2RlbCcgW3ByZXZpZXddPSdmYWxzZScgW2ludGVncmF0aW9uXT0nbWV0YS5pbnRlZ3JhdGlvbicgW3R5cGVdPSdyZXNvdXJjZS5yZXNvdXJjZVR5cGUnIHRoZW1lPSdpbmhlcml0Jz48L3ZnaXAtbWV0YS1sYXlvdXQ+XG5cdFx0XHQ8dmdpcC1tZXRhLWxheW91dCAqbmdJZj0nIWVkaXQnIFttZXRhXT0nbWV0YS5sYXlvdXQnIFtyZXNvdXJjZV09J21vZGVsJyBbcHJldmlld109J3RydWUnIFtpbnRlZ3JhdGlvbl09J21ldGEuaW50ZWdyYXRpb24nIFt0eXBlXT0ncmVzb3VyY2UucmVzb3VyY2VUeXBlJyB0aGVtZT0naW5oZXJpdCcgW2F0dHIuZGF0YS12cm5dPSdyZXNvdXJjZVZybic+PC92Z2lwLW1ldGEtbGF5b3V0PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cIlZsdC1jYXJkX19mb290ZXJcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1zZWNvbmRhcnkgVmx0LWJ0bi0tYXBwIFZsdC1idG4tLW91dGxpbmVcIiB0eXBlPSdidXR0b24nIGFyaWEtbGFiZWw9J0NhbmNlbCcgKGNsaWNrKT0nY2xvc2UoKSc+XG5cdFx0XHR7eyBlZGl0ID8gJ0NhbmNlbCcgOiAnQ2xvc2UnIH19XG5cdFx0PC9idXR0b24+XG5cdFx0PGJ1dHRvbiAqbmdJZj0nZWRpdCcgY2xhc3M9XCJWbHQtYnRuIFZsdC1idG4tLWFwcFwiIFtuZ0NsYXNzXT1cInsgJ1ZsdC1idG4tLXByaW1hcnknOiBpc1BlcnNpc3RlbnQsICdWbHQtYnRuLS1zZWNvbmRhcnknOiAhaXNQZXJzaXN0ZW50IH1cIiB0eXBlPSdzdWJtaXQnPlxuXHRcdFx0e3sgKHJlc291cmNlICYmIHJlc291cmNlLmV4dGVybmFsSWQpID8gJ1VwZGF0ZScgOiAnQ3JlYXRlJyB9fVxuXHRcdDwvYnV0dG9uPlxuXHRcdDxidXR0b24gKGNsaWNrKT0nc2V0RWRpdE1vZGUoKScgKm5nSWY9JyFlZGl0ICYmIGlzRWRpdGFibGUnIFtkaXNhYmxlZF09JyFpc0VkaXRhYmxlJyBjbGFzcz1cIlZsdC1idG4gVmx0LWJ0bi0tYXBwIFZsdC1idG4tLXByaW1hcnlcIiB0eXBlPSdidXR0b24nIGFyaWEtbGFiZWw9J0VkaXQnPlxuXHRcdFx0RWRpdFxuXHRcdDwvYnV0dG9uPlxuXHRcdDxkaXYgc3R5bGU9J21hcmdpbi1yaWdodDogOHB4OyBmbGV4OiAxOyc+XG5cdFx0XHQ8ZGl2ICpuZ0lmPSdtZXRhLmF2YWlsYWJsZUxheW91dHMgJiYgbWV0YS5hdmFpbGFibGVMYXlvdXRzLmxlbmd0aCcgY2xhc3M9XCJWbHQtZm9ybV9fZWxlbWVudCBWbHQtZm9ybV9fZWxlbWVudC0tYmlnXCIgc3R5bGU9J3BhZGRpbmc6IDA7IG1hcmdpbjogLThweCAtMThweCAtOHB4IDA7Jz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIlZsdC1zZWxlY3RcIj5cblx0XHRcdFx0XHQ8bGFiZWwgc3R5bGU9J2FsbDogaW5oZXJpdDsnPlxuXHRcdFx0XHRcdFx0PHNlbGVjdCBzdHlsZT0nYm9yZGVyOiAwOyBtYXJnaW4tdG9wOiAzcHg7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OycgKGNoYW5nZSk9J2NoYW5nZUxheW91dCgpJyBbKG5nTW9kZWwpXT0nY3VycmVudExheW91dElkJyBbbmdNb2RlbE9wdGlvbnNdPSd7IHN0YW5kYWxvbmU6IHRydWUgfScgW2Rpc2FibGVkXT0nbG9ja2VkTGF5b3V0SWQgPT09IGN1cnJlbnRMYXlvdXRJZCc+XG5cdFx0XHRcdFx0XHRcdDxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0IGxheW91dDwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0XHQ8b3B0aW9uICpuZ0Zvcj0nbGV0IGxheW91dCBvZiBtZXRhLmF2YWlsYWJsZUxheW91dHMnIFtuZ1ZhbHVlXT0nbGF5b3V0LmlkJz57e2xheW91dC5uYW1lfX08L29wdGlvbj5cblx0XHRcdFx0XHRcdDwvc2VsZWN0PlxuXHRcdFx0XHRcdFx0PGxhYmVsPkxheW91dDwvbGFiZWw+IDwhLS0gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvbGFiZWwtaGFzLWFzc29jaWF0ZWQtY29udHJvbCAtLT5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd24gcmVzb3VyY2UtbWVudVwiIFtuZ0NsYXNzXT1cInsgJ1ZsdC1kcm9wZG93bi0tZXhwYW5kZWQnOiByZXNvdXJjZU1lbnVWaXNpYmxlIH1cIiBzdHlsZT0nbWFyZ2luLWxlZnQ6IDJweDsnPlxuXHRcdFx0PGRpdiBjbGFzcz1cIlZsdC1kcm9wZG93bl9fcGFuZWxcIiBzdHlsZT0nYm90dG9tOiA0MHB4OyByaWdodDogLTRweDsgdG9wOiBpbml0aWFsOyc+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd25fX3BhbmVsX19jb250ZW50XCI+XG5cdFx0XHRcdFx0PGEgaHJlZj0nIycgY2xhc3M9XCJWbHQtZHJvcGRvd25fX2xpbmtcIiAoY2xpY2spPSdsb2FkTWV0YWRhdGEoY3VycmVudExheW91dElkLCB0cnVlLCAkZXZlbnQpJz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdDxzdmcgY2xhc3M9J1ZsdC1pY29uIFZsdC1pY29uLS1zbWFsbGVyJz48dXNlIHhsaW5rOmhyZWY9XCJ2b2x0YS92b2x0YS1pY29ucy5zdmcjVmx0LWljb24tcmVmcmVzaFwiLz48L3N2Zz4mbmJzcDsmbmJzcDtSZWZyZXNoIG1ldGFkYXRhXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duX190cmlnZ2VyXCI+XG5cdFx0XHRcdDxidXR0b24gdHlwZT0nYnV0dG9uJyAoY2xpY2spPSdvcGVuUmVzb3VyY2VNZW51KCknIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1saW5rXCIgYXJpYS1sYWJlbD0nUmVzb3VyY2UgbWVudSc+XG5cdFx0XHRcdFx0PHN2ZyBjbGFzcz0nVmx0LWljb24gVmx0LWljb24tLXNtYWxsJyBzdHlsZT0nbWFyZ2luOiAwOyc+PHVzZSB4bGluazpocmVmPVwidm9sdGEvdm9sdGEtaWNvbnMuc3ZnI1ZsdC1pY29uLW1vcmUtdi1uZWdhdGl2ZVwiLz48L3N2Zz5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Zvcm0+XG48ZGl2IGNsYXNzPSdidXN5LW1hc2snIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBidXN5IH1cIj5cblx0PGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnPlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtc3Bpbm5lclwiPjwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2UvaW5kZXgudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2Uvdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEksT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLFlBQVk7SUE4QnZCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUErQixFQUMvQixjQUE4QjtRQUo5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBOUIvQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ1IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBV3JELFNBQUksR0FBRyxJQUFJLENBQUM7UUFLWiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFJaEMsb0JBQWUsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQTZYakQsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDaEMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDO0lBclhGLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixJQUNFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO2VBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtlQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNO2VBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ3JDO1lBQ0EsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTt3QkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7d0JBQy9CLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN6QjtpQkFDRjtZQUNILENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xELG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN0RCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMvSDtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsb0dBQW9HO1lBQ3BHLHlCQUF5QjtZQUN6QixNQUFNO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDL0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBUyxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsRUFBRztRQUMxQyxNQUFNLGNBQWMsR0FBRyxlQUFlLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxSCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDNUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO2lCQUM1QjtnQkFDRCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3JELFlBQVksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pDO2dCQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztnQkFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMvRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsU0FBYyxFQUFFLEVBQUU7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxvQ0FBb0MsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDO2dCQUNoRixZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLEVBQUUsRUFBRTtZQUNOLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWSxDQUFDLE9BQU8sQ0FDbEIsZUFBZSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQ2xHLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25FLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYTttQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFDcEU7Z0JBQ0EsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDM0M7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3JCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2lCQUMvRyxDQUNBLENBQUMsU0FBUyxDQUFDO29CQUNWLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO3dCQUN0Qix5Q0FBeUM7d0JBQ3pDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTs0QkFDbEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQ0FDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7NkJBQ3ZEOzRCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUE7NEJBQzVFLHlHQUF5Rzs0QkFDekcsd0ZBQXdGOzRCQUN4RixtR0FBbUc7NEJBQ25HLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7NkJBQ3hDO3lCQUNGO3dCQUNELHdDQUF3Qzt3QkFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUU7NEJBQ3hCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRTtnQ0FDaEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQzdCO3lCQUNGO3dCQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDbkIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO3dCQUN2SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ25CLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxtQ0FBbUM7Z0JBQ3hGLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO29CQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7cUJBQ3JGO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUM3QixJQUFJLENBQUMsZUFBZSxFQUNwQjtZQUNFLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87WUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDekQsRUFDRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUM3QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUM3QixJQUFJLENBQUMsZUFBZSxFQUNwQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDM0YsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTt3QkFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7d0JBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztxQkFDeEI7aUJBQ0Y7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDdkY7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlLENBQUMsWUFBWSxFQUFFLFdBQVc7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxJQUFJLDRDQUE0QyxDQUFDO1FBQ3RGLElBQUksV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDN0UsS0FBSyxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNuQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDbEY7YUFDRjtZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxZQUFZLEdBQXFCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2dCQUMvSCxJQUFJLFlBQVksRUFBRTtvQkFDaEIsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDaEMseUNBQXlDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHO3dCQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7d0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtxQkFDaEMsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDakQsbUNBQW1DO2dCQUNuQyxzTEFBc0w7Z0JBQ3RMLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDeEQsd0NBQXdDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQywyQ0FBMkM7Z0JBQy9GLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzlILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ25CLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7dUJBQ25ILENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQzNILHlEQUF5RDtrQkFDekQ7b0JBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztvQkFDL0QsSUFBSTt3QkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FDN0IsSUFBSSxDQUFDLGVBQWUsRUFDcEI7NEJBQ0UsTUFBTSxFQUFFLG1CQUFtQjs0QkFDM0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlOzRCQUNyQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxZQUFZOzRCQUM1QyxRQUFRLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7NEJBQzVDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO3lCQUN2RSxFQUNELENBQUMsUUFBUSxFQUFFLEVBQUU7NEJBQ1gsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO2dDQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7NkJBQzFEO2lDQUFNO2dDQUNMLGdEQUFnRDtnQ0FDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQ0FDL0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDOzZCQUNyQzt3QkFDSCxDQUFDLENBQ0YsQ0FBQztxQkFDSDtvQkFBQyxPQUFPLEdBQUcsRUFBRTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztxQkFDMUI7aUJBQ0Y7cUJBQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN2RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQ3JDO2dCQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztpQkFDakQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFDL0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxRQUFRLEdBQUcsY0FBYyxJQUFJLENBQUMsWUFBWSxxREFBcUQsQ0FBQztnQkFDdEcsTUFBTSxZQUFZLEdBQXFCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckYsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFPTyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUNyQyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLFNBQVMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN4RCxNQUFNLFFBQVEsR0FBUSxFQUFFLENBQUM7b0JBQ3pCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdkM7cUJBQU0sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDekI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtvQkFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO29CQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDckY7WUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckUsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtnQkFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7d0JBQzdDLEtBQUssRUFBRSxJQUFJO3dCQUNYLFlBQVksRUFBRSxJQUFJO3dCQUNsQixVQUFVLEVBQUUsS0FBSztxQkFDbEIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUcsSUFBSSxlQUF1QixDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDbkQsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDekg7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RFLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pGLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQzthQUMxQztZQUNELElBQUksZUFBZSxFQUFFO2dCQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7YUFDekY7U0FDRjtJQUNILENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN4RyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDekMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFOzRCQUNsQixDQUFDLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzt5QkFDcEI7NkJBQU07NEJBQ0wsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsK0JBQStCO3lCQUN0Rjt3QkFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDckYsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7NEJBQ25FLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDckQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO2dDQUNyQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7b0NBQ2xCLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQ0FDckU7Z0NBQ0QsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0NBQ2pCLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEVBQUU7b0NBQ3hDLEtBQUssRUFBRSxNQUFNO29DQUNiLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJO29DQUM5QixJQUFJLEVBQUUsSUFBSTtpQ0FDWCxDQUFDLENBQUM7NkJBQ0o7eUJBQ0Y7d0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxzQkFBc0I7NEJBQ3RGLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3lCQUN4Qjt3QkFDRCxPQUFPO3dCQUNQLHFGQUFxRjt3QkFDckYsZ0dBQWdHO3dCQUNoRyxNQUFNO3dCQUNOLHdGQUF3Rjt3QkFDeEYsOEJBQThCO3dCQUM5QixpSEFBaUg7d0JBQ2pILDRFQUE0RTt3QkFDNUUsb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7d0JBQ2hDLE1BQU07d0JBQ04sSUFBSTtxQkFDTDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUNyQztJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLDRCQUE0QjtRQUM1QixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0F6aEJVLFlBQVk7bUdBQVosWUFBWSxnWkNoQnpCLHErSUFzRUE7OzRGRHREYSxZQUFZO2tCQUx4QixTQUFTOytCQUNFLG9CQUFvQjtpT0FLckIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNXLElBQUk7c0JBQXBCLE1BQU07Z0JBQ1UsY0FBYztzQkFBOUIsTUFBTTtnQkFFMkIsWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZXRhUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YVJlc291cmNlJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuaW1wb3J0IHsgTWV0YUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YUNvbnRleHQnO1xuaW1wb3J0IHsgTWV0YU1zZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhTXNnJztcbmltcG9ydCB7IG1ldGFOb3JtYWxpemVyIH0gZnJvbSAnLi4vY29tbW9uL21ldGFOb3JtYWxpemVyJztcbmltcG9ydCB7IHRlbXBsYXRlQnVpbGRlciB9IGZyb20gJy4uL2NvbW1vbi91dGlscy90ZW1wbGF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmdpcC1tZXRhLXJlc291cmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZXRhUmVzb3VyY2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHJlc291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XG4gIEBJbnB1dCgpIG1ldGFSZXNvdXJjZVNlcnZpY2VEZWxlZ2F0ZWQ6IE1ldGFSZXNvdXJjZVNlcnZpY2U7IC8vIGNhcnkgaXQgZnJvbSB0aGUgcGFyZW50IHRvIGtlZXAgdGhlIGludGVyY2VwdG9yc1xuICBASW5wdXQoKSB0aGVtZTogc3RyaW5nO1xuICBASW5wdXQoKSBlZGl0TW9kZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZG9uZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNvdXJjZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdyZXNvdXJjZUZvcm0nKSBwdWJsaWMgcmVzb3VyY2VGb3JtOiBOZ0Zvcm07XG5cbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBtZXRhOiBhbnk7XG4gIHNlcnZpY2U6IE1ldGFSZXNvdXJjZVNlcnZpY2U7XG4gIGN1cnJlbnRMYXlvdXRJZDogYW55O1xuICBmb3JtRXJyb3JzOiBhbnk7XG4gIGZpZWxkc01hcDogYW55O1xuICBlZGl0ID0gdHJ1ZTtcbiAgYnVzeTogYm9vbGVhbjtcbiAgbWV0YUxvYWRpbmc6IGJvb2xlYW47XG4gIGdlbmVyYWxFcnJvcjogc3RyaW5nO1xuICByZXNvdXJjZU1lbnVWaXNpYmxlOiBib29sZWFuO1xuICBjb250YWN0c1N1Z2dlc3Rpb25zRG9uZSA9IGZhbHNlO1xuICBpc0VkaXRhYmxlOiBib29sZWFuO1xuICBpc1BlcnNpc3RlbnQ6IGJvb2xlYW47XG4gIGxvY2tlZExheW91dElkOiBzdHJpbmc7XG4gIHJlc291cmNlQ2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICByZXNvdXJjZVZybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbWV0YVJlc291cmNlU2VydmljZTogTWV0YVJlc291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIG1ldGFDb250ZXh0OiBNZXRhQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXRhTXNnU2VydmljZTogTWV0YU1zZ1NlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIGdldCBuaWNlRmllbGRzKCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNcbiAgICAgICYmIHRoaXMucmVzb3VyY2UubWV0YVxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dFxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5zZWN0aW9uc1xuICAgICkge1xuICAgICAgY29uc3QgZXh0cmFjdFNlY3Rpb25GaWVsZHMgPSAocykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2Ygcy5maWVsZHMpIHtcbiAgICAgICAgICBpZiAoZi5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNbZi5uYW1lXSA9IGY7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmLmZpZWxkcyAmJiBmLmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV4dHJhY3RTZWN0aW9uRmllbGRzKGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVzb3VyY2UubmljZUZpZWxkcyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgICAgZXh0cmFjdFNlY3Rpb25GaWVsZHMocyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHM7XG4gIH1cblxuICBnZXQgZmllbGROYW1lcygpIHtcbiAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMubmljZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5jaGlsZHJlbikge1xuICAgICAgICBuYW1lcy5wdXNoKGNoaWxkLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmFtZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmludGVncmF0aW9uQ29kZSA9ICh0aGlzLnJlc291cmNlLmludGVncmF0aW9uQ29kZSB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLnJlc291cmNlVHlwZSA9IHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlO1xuICAgIHRoaXMuc2VydmljZSA9ICh0aGlzLm1ldGFSZXNvdXJjZVNlcnZpY2VEZWxlZ2F0ZWQgfHwgdGhpcy5tZXRhUmVzb3VyY2VTZXJ2aWNlKS5uZXcodGhpcy5yZXNvdXJjZSk7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgfVxuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gdGhpcy5yZXNvdXJjZT8uZXh0ZXJuYWxJZDtcbiAgICBpZiAodGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VWcm4gPSBgdnJuOnZnaXM6JHt0aGlzLmludGVncmF0aW9uQ29kZS50b0xvd2VyQ2FzZSgpfToke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfToke3RoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZH1gO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAmJiB0aGlzLnJlc291cmNlLnJlZi5lZGl0YWJsZSA9PT0gZmFsc2UgJiYgIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkID0gJ01JU1NJTkdfRVhURVJOQUxfSUQnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVzb3VyY2UubWV0YSkge1xuICAgICAgdGhpcy5sb2FkTWV0YWRhdGEodGhpcy5yZXNvdXJjZS5sYXlvdXRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNQZXJzaXN0ZW50ICYmICghdGhpcy5pc0VkaXRhYmxlIHx8IHRoaXMucmVzb3VyY2VzW3JlZi5uYW1lXS5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgIC8vICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgIC8vICAgfVxuICAgICAgdGhpcy5tZXRhID0gdGhpcy5yZXNvdXJjZS5tZXRhO1xuICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmlzUGVyc2lzdGVudCAmJiAoIXRoaXMuaXNFZGl0YWJsZSB8fCB0aGlzLmVkaXRNb2RlID09PSBmYWxzZSB8fCB0aGlzLm1ldGEubGF5b3V0LmNoaWxkcmVuKSkge1xuICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudExheW91dElkID0gdGhpcy5tZXRhLmxheW91dC5pZDtcbiAgICAgIHRoaXMuZ2V0RGV0YWlscygpO1xuICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGhlbWUgIT09ICdpbmhlcml0Jykge1xuICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XG4gICAgfVxuICAgIHRoaXMucmVzb3VyY2VDaGFuZ2VkLnBpcGUoZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5yZXNvdXJjZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzLnRoZW1lKSB7XG4gICAgICB0aGlzLnRoZW1lID0gY2hhbmdlcy50aGVtZS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy50aGVtZSAhPT0gJ2luaGVyaXQnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdCA9IHRydWU7XG4gIH1cblxuICBsb2FkTWV0YWRhdGEobGF5b3V0SWQ/LCByZWZyZXNoID0gZmFsc2UsIGV2Pykge1xuICAgIGNvbnN0IGxheW91dFN0b3JlS2V5ID0gYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWA7XG4gICAgaWYgKCFsYXlvdXRJZCkge1xuICAgICAgbGF5b3V0SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgfVxuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1ldGFMb2FkaW5nID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzO1xuICAgIHRoaXMuc2VydmljZS5nZXRNZXRhZGF0YShsYXlvdXRJZCwgcmVmcmVzaCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChtZXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0SWQgPSBtZXRhLmxheW91dC5pZDtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExheW91dElkLmluZGV4T2YodGhpcy5sb2NrZWRMYXlvdXRJZCkgPT09IC0xKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMubG9ja2VkTGF5b3V0SWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxheW91dElkICE9PSBtZXRhLmxheW91dC5pZCAmJiAhdGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YU5vcm1hbGl6ZXIobWV0YSwgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5tZXRhID0gdGhpcy5tZXRhO1xuICAgICAgICBpZiAoIXJlZnJlc2ggJiYgdGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5lZGl0TW9kZSA9PT0gZmFsc2UgfHwgdGhpcy5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKG1ldGFFcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgIHRoaXMuZ2VuZXJhbEVycm9yID0gYEVycm9yIGxvYWRpbmcgcmVzb3VyY2UgbWV0YWRhdGEgKCR7bWV0YUVycm9yLnN0YXR1c1RleHR9KWA7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxheW91dFN0b3JlS2V5KTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5tZXRhTG9hZGluZztcbiAgICAgICAgdGhpcy5mb3JjZVVpVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGV2KSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGF5b3V0KCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWAsXG4gICAgICB0aGlzLmN1cnJlbnRMYXlvdXRJZFxuICAgICk7XG4gICAgdGhpcy5sb2FkTWV0YWRhdGEodGhpcy5jdXJyZW50TGF5b3V0SWQpO1xuICB9XG5cbiAgZ2V0RGV0YWlscygpIHtcbiAgICBkZWxldGUgdGhpcy5sb2NrZWRMYXlvdXRJZDtcbiAgICBpZiAodGhpcy5yZXNvdXJjZSAmJiAodGhpcy5yZXNvdXJjZS5leHRlcm5hbElkIHx8IHRoaXMucmVzb3VyY2UuaWQpKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5wYXJlbnQgJiYgdGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAvLyBza2lwIGZldGNoXG4gICAgICAgICYmIHRoaXMubWV0YS5sYXlvdXQuZWRpdGFibGUgPT09IGZhbHNlICYmICF0aGlzLm1ldGEubGF5b3V0LmNoaWxkcmVuXG4gICAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UuYWN0aXZpdHkpIHtcbiAgICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eVtwXSAmJiB0aGlzLmZpZWxkTmFtZXMuaW5kZXhPZihwKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxbcF0gPSB0aGlzLnJlc291cmNlLmFjdGl2aXR5W3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERldGFpbHMoXG4gICAgICAgICAgKHRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCB8fCB0aGlzLnJlc291cmNlLmlkKSwge1xuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMucmVzb3VyY2UuZXZlbnRJZCAhPT0gJ05PX0VWRU5UJyA/IHRoaXMucmVzb3VyY2UuZXZlbnRJZCA6IG51bGwsIGxheW91dElkOiB0aGlzLnJlc291cmNlLmxheW91dElkXG4gICAgICAgIH1cbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNvdXJjZTogYW55KSA9PiB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICAgICAgaWYgKHJlc291cmNlLl92Z2lzKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZS5fdmdpcy5ldmVudElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCA9IHJlc291cmNlLl92Z2lzLmV2ZW50SWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5sb2NrZWRMYXlvdXRJZCA9IHJlc291cmNlLl92Z2lzLmxheW91dElkIHx8IHJlc291cmNlLl92Z2lzLnJlY29yZFR5cGVJZFxuICAgICAgICAgICAgICAvLyBzYW1wbGUgb3JpZyBsYXlvdXRJZDogMDEyMDAwMDAwMDAwMDAwQUFBLCBjdXN0b20gbGF5b3V0SWQ6IDY2Y2NiYjNkMTgxMDk4NWFhM2ExNjIwMjowMTIwMDAwMDAwMDAwMDBBQUFcbiAgICAgICAgICAgICAgLy8gc28gaWYgdGhlIGN1cnJlbnQgbGF5b3V0IGlzIG5vdCBpbmhlcml0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb25lLCByZWxvYWQgdGhlIG9yaWcgbWV0YVxuICAgICAgICAgICAgICAvLyBDQ09NTkktMTU1IC0gYWxsb3cgZm9ybSBsYXlvdXQgY2hhbmdlICgqdW5sZXNzIHdlIGFyZSBjZXJ0YWluIHRoYXQgdGhlIGN1cnJlbnQgYW5kIGxvY2tlZCBtYXRjaClcbiAgICAgICAgICAgICAgaWYgKHRoaXMubG9ja2VkTGF5b3V0SWQgJiYgKHRoaXMuY3VycmVudExheW91dElkIHx8ICcnKS5pbmRleE9mKHRoaXMubG9ja2VkTGF5b3V0SWQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE1ldGFkYXRhKHRoaXMubG9ja2VkTGF5b3V0SWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmVzb3VyY2VbcF0gIT09ICd1bmRlZmluZWQnKSAmJiAodGhpcy5maWVsZE5hbWVzLmluZGV4T2YocCkgIT09IC0xIHx8IHAgPT09ICdfdmdpcycpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHJlc291cmNlW3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChyZXNvdXJjZUVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxFcnJvciA9IHJlc291cmNlRXJyb3IuZXJyb3IgPyByZXNvdXJjZUVycm9yLmVycm9yLm1lc3NhZ2UgfHwgcmVzb3VyY2VFcnJvci5tZXNzYWdlIDogcmVzb3VyY2VFcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcmNlVWlVcGRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5yZWYgJiYgdGhpcy5yZXNvdXJjZS5yZWYuYWN0aXZpdHkpIHsgLy8gcmV1c2UgZmFpbGVkIGF1dG9hY3Rpdml0aWVzIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5ICYmIHRoaXMuZmllbGROYW1lcy5pbmRleE9mKHApICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5W3BdOyAvLyBWR0lTLTcyMTUgKGNvcHkgb25seSB2YWxpZCBmaWVsZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBlcmZvcm1BdXRvRmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHBlcmZvcm1BdXRvRmlsbCgpIHtcbiAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2F1dG9GaWxsJyxcbiAgICAgICAgaW50ZWdyYXRpb246IHRoaXMuaW50ZWdyYXRpb25Db2RlLFxuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlLFxuICAgICAgICByZXNvdXJjZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsKSksXG4gICAgICAgIGZpZWxkczogdGhpcy5uaWNlRmllbGRzLFxuICAgICAgICBldmVudDogdGhpcy5tZXRhQ29udGV4dC5jb250ZXh0LFxuICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXVxuICAgICAgfSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBhZnAgaW4gcmVzcG9uc2UuYXV0b0ZpbGwpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbFthZnBdKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWxbYWZwXSA9IHJlc3BvbnNlLmF1dG9GaWxsW2FmcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEZpZWxkc01hcCgpIHtcbiAgICBpZiAodGhpcy5tZXRhLmZpZWxkc01hcCkge1xuICAgICAgdGhpcy5maWVsZHNNYXAgPSB0aGlzLm1ldGEuZmllbGRzTWFwO1xuICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgeyBhY3Rpb246ICdmaWVsZHNNYXAnLCBpbnRlZ3JhdGlvbjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUgfSxcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNNYXAgPSByZXNwb25zZS5maWVsZHNNYXA7XG4gICAgICAgICAgICB0aGlzLm1hcmtDb250YWN0YWJsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb250YWN0c1N1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgICAgICB0aGlzLmJ1aWxkU3ViamVjdFRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgIHRoaXMuZXhlY1RyYW5zZm9ybWVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBmaWVsZHMgbWFwJywgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2VUeXBlLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5SZXNvdXJjZU1lbnUoKSB7XG4gICAgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgY2xvc2UocmVzdWx0Pykge1xuICAgIHRoaXMuZG9uZS5lbWl0KHJlc3VsdCk7XG4gIH1cblxuICBzaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCBwYXJzZWRFcnJvcikge1xuICAgIHRoaXMuZm9ybUVycm9ycyA9IHBhcnNlZEVycm9yLm1lc3NhZ2UgfHwgJ1RoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyc7XG4gICAgaWYgKHBhcnNlZEVycm9yLmVycm9ycyAmJiBwYXJzZWRFcnJvci5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvcm1FcnJvcnMgKz0gYCAoJHtwYXJzZWRFcnJvci5lcnJvcnMubWFwKGUgPT4gZS5tZXNzYWdlKS5qb2luKCcsICcpfSlgO1xuICAgICAgZm9yIChjb25zdCBwZSBvZiBwYXJzZWRFcnJvci5lcnJvcnMpIHtcbiAgICAgICAgaWYgKHJlc291cmNlRm9ybS5jb250cm9sc1twZS5maWVsZF0pIHtcbiAgICAgICAgICByZXNvdXJjZUZvcm0uY29udHJvbHNbcGUuZmllbGRdLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUsIGN1c3RvbTogcGUubWVzc2FnZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpcnN0SW52YWxpZDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuVmx0LWZvcm1fX2VsZW1lbnQtLWVycm9yIC5tYWluOm5vdCguc3RhbmRhbG9uZSknKTtcbiAgICAgICAgaWYgKGZpcnN0SW52YWxpZCkge1xuICAgICAgICAgIGZpcnN0SW52YWxpZC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQocmVzb3VyY2VGb3JtKSB7XG4gICAgZGVsZXRlIHRoaXMuZm9ybUVycm9ycztcbiAgICByZXNvdXJjZUZvcm0uZm9ybS5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChyZXNvdXJjZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICBpZiAodGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwuX3ZnaXMpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLl92Z2lzID0ge1xuICAgICAgICAgICAgY29ubmVjdG9yOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMubGF5b3V0SWQgPSB0aGlzLmN1cnJlbnRMYXlvdXRJZDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhpcy5tb2RlbC5fdmdpcy50aW1lWm9uZU9mZnNldEluTWludXRlcyA9IDA7IC8vIHdlIGFyZSBub3QgcHJvdmlkaW5nIHRpbWV6b25lIGFueW1vcmUgKGFzIFYzKSwgaW5zdGVhZCB0aGUgJ3RpbWUnIGFuZCAnZGF0ZScgb2JqZWN0cyBhcmUgY29udmVydGVkIHNvIHRoZSBVVEMgdGltZS9kYXRlIGlzIGNvcnJlY3RcbiAgICAgICAgdGhpcy5tb2RlbC5fdmdpcy5ldmVudElkID0gdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZDtcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgfVxuICAgICAgdGhpcy5zZXJ2aWNlLnNhdmUodGhpcy5tb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgPSByZXN1bHQuX3ZnaXMuZXh0ZXJuYWxJZDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICB0aGlzLnJlc291cmNlVnJuID0gYHZybjp2Z2lzOiR7dGhpcy5pbnRlZ3JhdGlvbkNvZGUudG9Mb3dlckNhc2UoKX06JHt0aGlzLnJlc291cmNlLnJlc291cmNlVHlwZX06JHt0aGlzLnJlc291cmNlLmV4dGVybmFsSWR9YDtcbiAgICAgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICgoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIgJiYgZXJyb3JSZXN1bHQuZXJyb3IgJiYgIWVycm9yUmVzdWx0LmVycm9yLmVycm9ycyAmJiBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKVxuICAgICAgICAgIHx8IChlcnJvclJlc3VsdC5lcnJvciAmJiBlcnJvclJlc3VsdC5lcnJvci5lcnJvcnMgJiYgZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzLmxlbmd0aCAmJiAhZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzWzBdLmZpZWxkKVxuICAgICAgICAgIC8vIGJhY2tlbmQgaW1wbGVtZW50ZWQgZXJyb3IgcGFyc2luZyBidXQgYnJva2VuIFZHSVMtNzM2NlxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSAnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzJztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5tZXRhTXNnU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdwYXJzZUVycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgaW50ZWdyYXRpb25Db2RlOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IGVycm9yUmVzdWx0LmVycm9yLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgICAgICByYXdFcnJvcjogZXJyb3JSZXN1bHQuZXJyb3IuaW50ZWdyYXRpb25FcnJvcixcbiAgICAgICAgICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlLnRvVXBwZXJDYXNlKCldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5wYXJzZWRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCByZXNwb25zZS5wYXJzZWRFcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gZXJyb3IgcGFyc2VyIGZvcicsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVycm9ycyA9IGVycm9yUmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcuLi4uJywgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgICAgICB0aGlzLnNob3dQYXJzZWRFcnJvcihyZXNvdXJjZUZvcm0sIGVycm9yUmVzdWx0LmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSBlcnJvclJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUVycm9ycyA9IE9iamVjdC5rZXlzKHJlc291cmNlRm9ybS5jb250cm9scylcbiAgICAgICAgLmZpbHRlcigoYykgPT4gcmVzb3VyY2VGb3JtLmNvbnRyb2xzW2NdLmludmFsaWQpXG4gICAgICAgIC5tYXAoKGYpID0+ICh0aGlzLm5pY2VGaWVsZHNbZl0gPyAodGhpcy5uaWNlRmllbGRzW2ZdLmxhYmVsIHx8IGYpIDogZikpLmpvaW4oJywgJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgZm9ybVtuYW1lPVwiJHt0aGlzLnJlc291cmNlVHlwZX1cIl0gLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpYDtcbiAgICAgICAgY29uc3QgZmlyc3RJbnZhbGlkOiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkKSB7XG4gICAgICAgICAgZmlyc3RJbnZhbGlkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybUVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5mb3JtRXJyb3JzO1xuICB9XG5cbiAgb25Gb3JtQ2hhbmdlKCkge1xuICAgIHRoaXMucmVzb3VyY2VDaGFuZ2VkLm5leHQoSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1lbnVDbGlja291dCA9ICgpID0+IHtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzdWdnZXN0RmllbGRQcm9wZXJ0eShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZmllbGROYW1lcztcbiAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lc3RNYXRjaCA9IGtleS5tYXRjaCgvKFxcUyspXFxbXFxkXFxdXFwuKFxcUyspLyk7XG4gICAgICAgIGlmIChuZXN0TWF0Y2ggJiYgZmllbGROYW1lcy5pbmRleE9mKG5lc3RNYXRjaFsxXSkgIT09IC0xKSB7XG4gICAgICAgICAgY29uc3QgbmVzdEtleXM6IGFueSA9IHt9O1xuICAgICAgICAgIG5lc3RLZXlzW25lc3RNYXRjaFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLm1vZGVsW25lc3RNYXRjaFsxXV0gPSBbbmVzdEtleXNdO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkTmFtZXMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleGVjVHJhbnNmb3JtZXIoKSB7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQgJiYgdGhpcy5maWVsZHNNYXApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLnBob25lTnVtYmVyLCB0aGlzLm1ldGFDb250ZXh0LnBob25lTnVtYmVyKTtcbiAgICAgICAgaWYgKHRoaXMuZmllbGRzTWFwLmZpcnN0TmFtZSB8fCB0aGlzLmZpZWxkc01hcC5sYXN0TmFtZSkge1xuICAgICAgICAgIGNvbnN0IG5hbWVzID0gKHRoaXMubWV0YUNvbnRleHQuZGlzcGxheU5hbWUgfHwgJycpLnNwbGl0KCcgJyk7XG4gICAgICAgICAgdGhpcy5zdWdnZXN0RmllbGRQcm9wZXJ0eSh0aGlzLmZpZWxkc01hcC5maXJzdE5hbWUsIG5hbWVzWzBdKTtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmxhc3ROYW1lLCBuYW1lc1sxXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZHNNYXAuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmRpc3BsYXlOYW1lLCB0aGlzLm1ldGFDb250ZXh0LmRpc3BsYXlOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtDb250YWN0YWJsZXMoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyAmJiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5uaWNlRmllbGRzW2NdO1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQsICckaXNDb250YWN0YWJsZScsIHtcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdWJqZWN0VGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdICYmIHRoaXMuZmllbGRzTWFwLnN1YmplY3QgJiYgdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdKSB7XG4gICAgICBsZXQgc3ViamVjdFRlbXBsYXRlOiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQpIHtcbiAgICAgICAgc3ViamVjdFRlbXBsYXRlID0gdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQuaWQgfHwgdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSB8fCB7fTtcbiAgICAgICAgc3ViamVjdFRlbXBsYXRlID0gcHJvZmlsZS5kZWZhdWx0U3ViamVjdCA/XG4gICAgICAgICAgcHJvZmlsZS5kZWZhdWx0U3ViamVjdFsoKHRoaXMubWV0YUNvbnRleHQuY29udGV4dCB8fCAnQ0FMTCcpLnR5cGUgfHwgJycpLnRvVXBwZXJDYXNlKCldIDpcbiAgICAgICAgICBwcm9maWxlLmFjdGl2aXR5RGVmYXVsdFN1YmplY3RUZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzdWJqZWN0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5tb2RlbFt0aGlzLmZpZWxkc01hcC5zdWJqZWN0XSA9IHRlbXBsYXRlQnVpbGRlcih0aGlzLm1ldGFDb250ZXh0LCBzdWJqZWN0VGVtcGxhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250YWN0c1N1Z2dlc3Rpb25zKCkge1xuICAgIC8vIGxldCBoYXNEZWZhdWx0Q29udGFjdCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm1ldGFDb250ZXh0LmNvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0gJiYgdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5tZXRhLmxheW91dC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2YgKHMuZmllbGRzIHx8IFtdKSkge1xuICAgICAgICAgIGlmIChmLnR5cGUgPT09ICdyZWZlcmVuY2UnKSB7XG4gICAgICAgICAgICBpZiAoIWYuc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgZi5zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZi5zdWdnZXN0aW9ucyA9IGYuc3VnZ2VzdGlvbnMuZmlsdGVyKHNnID0+ICFzZy5hdXRvKTsgLy8ga2VlcCBtZXRhIHN1Z2dlc3Rpb25zIGlmIGFueVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVmVHlwZXMgPSAoZi5yZWZlcmVuY2UubGVuZ3RoID8gZi5yZWZlcmVuY2UgOiBbZi5yZWZlcmVuY2VdKS5tYXAociA9PiByLm5hbWUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRoaXMubWV0YUNvbnRleHQuY29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSkge1xuICAgICAgICAgICAgICBpZiAocmVmVHlwZXMuaW5kZXhPZihjLnJlc291cmNlVHlwZSB8fCBjLnR5cGUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGxldCB0TGFiZWwgPSBjLmRpc3BsYXlOYW1lIHx8IGMubmFtZTtcbiAgICAgICAgICAgICAgICBpZiAoYy5waG9uZU51bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgIHRMYWJlbCArPSAoJyDinIYnICsgYy5waG9uZU51bWJlcnMubWFwKHAgPT4gcC5waG9uZU51bWJlcikuam9pbignLCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZi5zdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGlkOiBjLmV4dGVybmFsSWQgfHwgYy5pZGVudGlmaWVyIHx8IGMuaWQsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogdExhYmVsLFxuICAgICAgICAgICAgICAgICAgdHlwZTogYy5yZXNvdXJjZVR5cGUgfHwgYy50eXBlLFxuICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyB8fCBbXSkuaW5kZXhPZihmLm5hbWUpICE9PSAtMSkgeyAvLyBldmFsdWF0ZSB1c2FiaWxpdHk/XG4gICAgICAgICAgICAgIGYuYWx3YXlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiAoXG4gICAgICAgICAgICAvLyAgICFoYXNEZWZhdWx0Q29udGFjdCAmJiB0aGlzLm1ldGFDb250ZXh0LmRlZmF1bHRDb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdXG4gICAgICAgICAgICAvLyAgICYmIHJlZlR5cGVzLmluZGV4T2YodGhpcy5tZXRhQ29udGV4dC5kZWZhdWx0Q29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXS50eXBlKSAhPT0gLTFcbiAgICAgICAgICAgIC8vICkge1xuICAgICAgICAgICAgLy8gICB0aGlzLnJlc291cmNlW2YubmFtZV0gPSB0aGlzLm1ldGFDb250ZXh0LmRlZmF1bHRDb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdO1xuICAgICAgICAgICAgLy8gICBoYXNEZWZhdWx0Q29udGFjdCA9IHRydWU7XG4gICAgICAgICAgICAvLyB9IGVsc2UgaWYgKCFoYXNEZWZhdWx0Q29udGFjdCAmJiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMgJiYgZi5zdWdnZXN0aW9ucyAmJiBmLnN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gICBpZiAodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzLmluZGV4T2YoZi5uYW1lKSAhPT0gLTEgJiYgIWYuZGVmYXVsdCkge1xuICAgICAgICAgICAgLy8gICAgIGYuZGVmYXVsdCA9IGYuc3VnZ2VzdGlvbnNbMF07XG4gICAgICAgICAgICAvLyAgICAgaGFzRGVmYXVsdENvbnRhY3QgPSB0cnVlO1xuICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhY3RzU3VnZ2VzdGlvbnNEb25lID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VGhlbWUoKSB7XG4gICAgY29uc3QgbWV0YVRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2RhcmsnID8gbWV0YURhcmsgOiBtZXRhTGlnaHQ7XG4gICAgY29uc29sZS5sb2coJ3Jlc291cmNlIGFwcGx5IHRoZW1lJywgdGhpcy50aGVtZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWV0YVRoZW1lLnByb3BlcnRpZXMpKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBtZXRhVGhlbWUucHJvcGVydGllc1trZXldKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcmNlVWlVcGRhdGUoKSB7IC8vIGlPUyB3ZWJ2aWV3IGRvZXMgbm90IHVwZGF0ZSB0aGUgVUkgYWZ0ZXIgYXN5YyBjaGFuZ2VzLiBUZW1wIGZpeCA6KFxuICAgIC8vIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50cycpO1xuICAgIGUuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIGZhbHNlKTtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChlKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj0nZ2VuZXJhbEVycm9yJyBjbGFzcz1cIlZsdC1jYWxsb3V0IFZsdC1jYWxsb3V0LS1jcml0aWNhbFwiIHN0eWxlPSdvdmVyZmxvdzogYXV0bzsgbWFyZ2luOiAyMHB4Oyc+XG5cdDxpPjwvaT5cblx0PGRpdiBjbGFzcz1cIlZsdC1jYWxsb3V0X19jb250ZW50XCI+XG5cdFx0PHA+e3tnZW5lcmFsRXJyb3J9fTwvcD5cblx0PC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9JyFtZXRhJyBjbGFzcz1cIlZsdC1wcm9ncmVzc1wiPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LXByb2dyZXNzX19iYXJcIiBbbmdDbGFzc109XCJ7IGxvYWRpbmc6IG1ldGFMb2FkaW5nIH1cIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbWluPVwiMFwiIGFyaWEtdmFsdWV0ZXh0PVwiTG9hZGluZyBNZXRhZGF0YVwiIGFyaWEtdmFsdWVtYXg9XCIxMDBcIj48L2Rpdj5cbjwvZGl2PlxuPGZvcm0gW3ZnaXBNZXRhRm9ybUF1dG9mb2N1c109JyFyZXNvdXJjZSB8fCAhcmVzb3VyY2UuZXh0ZXJuYWxJZCcgKm5nSWY9J21ldGEgJiYgIWdlbmVyYWxFcnJvcicgI3Jlc291cmNlRm9ybT1cIm5nRm9ybVwiIFtuYW1lXT0ncmVzb3VyY2UucmVzb3VyY2VUeXBlJyAobmdTdWJtaXQpPSdzdWJtaXQocmVzb3VyY2VGb3JtKScgKGNoYW5nZSk9J29uRm9ybUNoYW5nZSgpJyBub3ZhbGlkYXRlPlxuXHQ8ZGl2IGNsYXNzPSdmb3JtLWNvbnRlbnQnIHN0eWxlPSdvdmVyZmxvdzogaGlkZGVuOyc+XG5cdFx0PGRpdiBbbmdDbGFzc109XCJ7ICdWbHQtY2FsbG91dC0tZGlzbWlzc2VkJzogIWZvcm1FcnJvcnMgfVwiIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWJhbm5lciBWbHQtY2FsbG91dC0tY3JpdGljYWxcIj5cblx0XHRcdDxpPjwvaT5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FsbG91dF9fY29udGVudFwiIHN0eWxlPVwibWFyZ2luLXRvcDogYXV0bztcIj5cblx0XHRcdFx0PHA+VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzPC9wPlxuXHRcdFx0XHQ8c21hbGwgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMS4wZW07JyAqbmdJZj0nZm9ybUVycm9ycyc+e3sgZm9ybUVycm9ycy5tZXNzYWdlIHx8IGZvcm1FcnJvcnMgfX08L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9XCJWbHQtY2FsbG91dF9fZGlzbWlzc1wiIChjbGljayk9J2NsZWFyRm9ybUVycm9ycygpJyBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiPjwvYnV0dG9uPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fY29udGVudFwiIHN0eWxlPSdtaW4taGVpZ2h0OiA0MHB4Oyc+XG5cdFx0XHQ8dmdpcC1tZXRhLWxheW91dCAqbmdJZj0nZWRpdCcgW21ldGFdPSdtZXRhLmxheW91dCcgW3Jlc291cmNlXT0nbW9kZWwnIFtwcmV2aWV3XT0nZmFsc2UnIFtpbnRlZ3JhdGlvbl09J21ldGEuaW50ZWdyYXRpb24nIFt0eXBlXT0ncmVzb3VyY2UucmVzb3VyY2VUeXBlJyB0aGVtZT0naW5oZXJpdCc+PC92Z2lwLW1ldGEtbGF5b3V0PlxuXHRcdFx0PHZnaXAtbWV0YS1sYXlvdXQgKm5nSWY9JyFlZGl0JyBbbWV0YV09J21ldGEubGF5b3V0JyBbcmVzb3VyY2VdPSdtb2RlbCcgW3ByZXZpZXddPSd0cnVlJyBbaW50ZWdyYXRpb25dPSdtZXRhLmludGVncmF0aW9uJyBbdHlwZV09J3Jlc291cmNlLnJlc291cmNlVHlwZScgdGhlbWU9J2luaGVyaXQnIFthdHRyLmRhdGEtdnJuXT0ncmVzb3VyY2VWcm4nPjwvdmdpcC1tZXRhLWxheW91dD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fZm9vdGVyXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cIlZsdC1idG4gVmx0LWJ0bi0tc2Vjb25kYXJ5IFZsdC1idG4tLWFwcCBWbHQtYnRuLS1vdXRsaW5lXCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdDYW5jZWwnIChjbGljayk9J2Nsb3NlKCknPlxuXHRcdFx0e3sgZWRpdCA/ICdDYW5jZWwnIDogJ0Nsb3NlJyB9fVxuXHRcdDwvYnV0dG9uPlxuXHRcdDxidXR0b24gKm5nSWY9J2VkaXQnIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1hcHBcIiBbbmdDbGFzc109XCJ7ICdWbHQtYnRuLS1wcmltYXJ5JzogaXNQZXJzaXN0ZW50LCAnVmx0LWJ0bi0tc2Vjb25kYXJ5JzogIWlzUGVyc2lzdGVudCB9XCIgdHlwZT0nc3VibWl0Jz5cblx0XHRcdHt7IChyZXNvdXJjZSAmJiByZXNvdXJjZS5leHRlcm5hbElkKSA/ICdVcGRhdGUnIDogJ0NyZWF0ZScgfX1cblx0XHQ8L2J1dHRvbj5cblx0XHQ8YnV0dG9uIChjbGljayk9J3NldEVkaXRNb2RlKCknICpuZ0lmPSchZWRpdCAmJiBpc0VkaXRhYmxlJyBbZGlzYWJsZWRdPSchaXNFZGl0YWJsZScgY2xhc3M9XCJWbHQtYnRuIFZsdC1idG4tLWFwcCBWbHQtYnRuLS1wcmltYXJ5XCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdFZGl0Jz5cblx0XHRcdEVkaXRcblx0XHQ8L2J1dHRvbj5cblx0XHQ8ZGl2IHN0eWxlPSdtYXJnaW4tcmlnaHQ6IDhweDsgZmxleDogMTsnPlxuXHRcdFx0PGRpdiAqbmdJZj0nbWV0YS5hdmFpbGFibGVMYXlvdXRzICYmIG1ldGEuYXZhaWxhYmxlTGF5b3V0cy5sZW5ndGgnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnQgVmx0LWZvcm1fX2VsZW1lbnQtLWJpZ1wiIHN0eWxlPSdwYWRkaW5nOiAwOyBtYXJnaW46IC04cHggLTE4cHggLThweCAwOyc+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtc2VsZWN0XCI+XG5cdFx0XHRcdFx0PGxhYmVsIHN0eWxlPSdhbGw6IGluaGVyaXQ7Jz5cblx0XHRcdFx0XHRcdDxzZWxlY3Qgc3R5bGU9J2JvcmRlcjogMDsgbWFyZ2luLXRvcDogM3B4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsnIChjaGFuZ2UpPSdjaGFuZ2VMYXlvdXQoKScgWyhuZ01vZGVsKV09J2N1cnJlbnRMYXlvdXRJZCcgW25nTW9kZWxPcHRpb25zXT0neyBzdGFuZGFsb25lOiB0cnVlIH0nIFtkaXNhYmxlZF09J2xvY2tlZExheW91dElkID09PSBjdXJyZW50TGF5b3V0SWQnPlxuXHRcdFx0XHRcdFx0XHQ8b3B0aW9uIHNlbGVjdGVkIGRpc2FibGVkPlNlbGVjdCBsYXlvdXQ8L29wdGlvbj5cblx0XHRcdFx0XHRcdFx0PG9wdGlvbiAqbmdGb3I9J2xldCBsYXlvdXQgb2YgbWV0YS5hdmFpbGFibGVMYXlvdXRzJyBbbmdWYWx1ZV09J2xheW91dC5pZCc+e3tsYXlvdXQubmFtZX19PC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8L3NlbGVjdD5cblx0XHRcdFx0XHRcdDxsYWJlbD5MYXlvdXQ8L2xhYmVsPiA8IS0tIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2xhYmVsLWhhcy1hc3NvY2lhdGVkLWNvbnRyb2wgLS0+XG5cdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duIHJlc291cmNlLW1lbnVcIiBbbmdDbGFzc109XCJ7ICdWbHQtZHJvcGRvd24tLWV4cGFuZGVkJzogcmVzb3VyY2VNZW51VmlzaWJsZSB9XCIgc3R5bGU9J21hcmdpbi1sZWZ0OiAycHg7Jz5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd25fX3BhbmVsXCIgc3R5bGU9J2JvdHRvbTogNDBweDsgcmlnaHQ6IC00cHg7IHRvcDogaW5pdGlhbDsnPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duX19wYW5lbF9fY29udGVudFwiPlxuXHRcdFx0XHRcdDxhIGhyZWY9JyMnIGNsYXNzPVwiVmx0LWRyb3Bkb3duX19saW5rXCIgKGNsaWNrKT0nbG9hZE1ldGFkYXRhKGN1cnJlbnRMYXlvdXRJZCwgdHJ1ZSwgJGV2ZW50KSc+XG5cdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHQ8c3ZnIGNsYXNzPSdWbHQtaWNvbiBWbHQtaWNvbi0tc21hbGxlcic+PHVzZSB4bGluazpocmVmPVwidm9sdGEvdm9sdGEtaWNvbnMuc3ZnI1ZsdC1pY29uLXJlZnJlc2hcIi8+PC9zdmc+Jm5ic3A7Jm5ic3A7UmVmcmVzaCBtZXRhZGF0YVxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9hPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIlZsdC1kcm9wZG93bl9fdHJpZ2dlclwiPlxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9J2J1dHRvbicgKGNsaWNrKT0nb3BlblJlc291cmNlTWVudSgpJyBjbGFzcz1cIlZsdC1idG4gVmx0LWJ0bi0tbGlua1wiIGFyaWEtbGFiZWw9J1Jlc291cmNlIG1lbnUnPlxuXHRcdFx0XHRcdDxzdmcgY2xhc3M9J1ZsdC1pY29uIFZsdC1pY29uLS1zbWFsbCcgc3R5bGU9J21hcmdpbjogMDsnPjx1c2UgeGxpbms6aHJlZj1cInZvbHRhL3ZvbHRhLWljb25zLnN2ZyNWbHQtaWNvbi1tb3JlLXYtbmVnYXRpdmVcIi8+PC9zdmc+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9mb3JtPlxuPGRpdiBjbGFzcz0nYnVzeS1tYXNrJyBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYnVzeSB9XCI+XG5cdDxkaXYgc3R5bGU9J2hlaWdodDogMTAwJTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz5cblx0XHQ8ZGl2IGNsYXNzPVwiVmx0LXNwaW5uZXJcIj48L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -23,15 +23,15 @@ const FMAP = async (fType) => {
|
|
|
23
23
|
case 'select':
|
|
24
24
|
case 'options': {
|
|
25
25
|
// return FieldSelect
|
|
26
|
-
return import('./vgip-meta-ui-index-
|
|
26
|
+
return import('./vgip-meta-ui-index-dbe3aa62.mjs').then(m => m.FieldSelect);
|
|
27
27
|
}
|
|
28
28
|
case 'reference': {
|
|
29
29
|
// return FieldReference;
|
|
30
|
-
return import('./vgip-meta-ui-index-
|
|
30
|
+
return import('./vgip-meta-ui-index-718490b0.mjs').then(function (n) { return n.i; }).then(m => m.FieldReference);
|
|
31
31
|
}
|
|
32
32
|
case 'composite': {
|
|
33
33
|
// return FieldComposite;
|
|
34
|
-
return import('./vgip-meta-ui-index-
|
|
34
|
+
return import('./vgip-meta-ui-index-6ccd33b5.mjs').then(m => m.FieldComposite);
|
|
35
35
|
}
|
|
36
36
|
case 'boolean': {
|
|
37
37
|
// return FieldBoolean;
|
|
@@ -43,7 +43,7 @@ const FMAP = async (fType) => {
|
|
|
43
43
|
}
|
|
44
44
|
case 'list': {
|
|
45
45
|
// return FieldList;
|
|
46
|
-
return import('./vgip-meta-ui-index-
|
|
46
|
+
return import('./vgip-meta-ui-index-8970e016.mjs').then(m => m.FieldList);
|
|
47
47
|
}
|
|
48
48
|
case 'richtext': {
|
|
49
49
|
// return FieldRichtext;
|
|
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
148
148
|
}] } });
|
|
149
149
|
|
|
150
150
|
export { MetaField as M, MetaFieldContentDirective as a };
|
|
151
|
-
//# sourceMappingURL=vgip-meta-ui-index-
|
|
151
|
+
//# sourceMappingURL=vgip-meta-ui-index-53a51627.mjs.map
|
package/fesm2022/{vgip-meta-ui-index-ec07628c.mjs.map → vgip-meta-ui-index-53a51627.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgip-meta-ui-index-
|
|
1
|
+
{"version":3,"file":"vgip-meta-ui-index-53a51627.mjs","sources":["../../../projects/meta-ui/src/lib/metaField/index.ts"],"sourcesContent":["import { Component, Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldAbstract } from '../fieldAbstract';\n\nconst FMAP = async (fType) => {\n switch (fType) {\n case '':\n case null:\n case undefined:\n case 'number':\n // case 'datetime':\n // case 'time':\n // case 'date':\n case 'string': { // eslint-disable-line no-fallthrough\n // return FieldInput;\n return import('../fieldInput').then(m => m.FieldInput);\n }\n case 'textarea':\n case 'text': {\n // return FieldText\n return import('../fieldText').then(m => m.FieldText);\n }\n case 'select':\n case 'options': {\n // return FieldSelect\n return import('../fieldSelect').then(m => m.FieldSelect);\n }\n case 'reference': {\n // return FieldReference;\n return import('../fieldReference').then(m => m.FieldReference);\n }\n case 'composite': {\n // return FieldComposite;\n return import('../fieldComposite').then(m => m.FieldComposite);\n }\n case 'boolean': {\n // return FieldBoolean;\n return import('../fieldBoolean').then(m => m.FieldBoolean);\n }\n case 'radio': {\n // return FieldRadio;\n return import('../fieldRadio').then(m => m.FieldRadio);\n }\n case 'list': {\n // return FieldList;\n return import('../fieldList').then(m => m.FieldList);\n }\n case 'richtext': {\n // return FieldRichtext;\n return import('../fieldRichtext').then(m => m.FieldRichtext);\n }\n case 'datetime':\n case 'time':\n case 'date': {\n // return FieldDatetime;\n return import('../fieldDatetime').then(m => m.FieldDatetime);\n }\n case 'hidden': {\n return import('../fieldHidden').then(m => m.FieldHidden);\n }\n default: {\n // return FieldUnknown;\n return import('../fieldUnknown').then(m => m.FieldUnknown);\n }\n }\n};\n\n@Directive({\n selector: '[metaFieldContent]'\n})\nexport class MetaFieldContentDirective {\n constructor(public viewContainerRef: ViewContainerRef) { }\n}\n\n@Component({\n selector: 'vgip-meta-field',\n template: '<ng-template metaFieldContent>Loading</ng-template>',\n styleUrls: ['../field.scss']\n})\nexport class MetaField extends FieldAbstract implements OnInit {\n @Input() meta: any;\n @Input() parent: any;\n @Input() integrationCode: any;\n @Input() resourceType: any;\n @Input() index: number;\n @Input() scope: string;\n @Input() preview: boolean;\n @Input() theme: string;\n @Input() overlayContainer: HTMLElement;\n // eslint-disable-next-line\n @Output() onChange = new EventEmitter();\n // eslint-disable-next-line\n @Output() onLeave = new EventEmitter();\n\n @ViewChild(MetaFieldContentDirective, { static: true }) fieldContent: MetaFieldContentDirective;\n\n constructor(private el: ElementRef) {\n super();\n }\n\n async ngOnInit() {\n const component = await FMAP(this.meta.type);\n this.fieldContent.viewContainerRef.clear();\n const componentRef = this.fieldContent.viewContainerRef.createComponent(component);\n const field: FieldAbstract = componentRef.instance;\n if (component.setup) {\n // console.log('setup', {a: this.el.nativeElement.parentNode.parentNode})\n component.setup(field, this.parent, this.meta);\n }\n field.meta = this.meta;\n field.parent = this.parent;\n field.integrationCode = (this.integrationCode || '').toLowerCase();\n field.resourceType = (this.resourceType || '');\n field.index = this.index;\n field.scope = this.scope;\n field.elementRef = this.el;\n field.onChange = this.onChange;\n field.onLeave = this.onLeave;\n field.preview = this.preview;\n field.theme = this.theme;\n field.overlayContainer = this.overlayContainer;\n Object.defineProperty(field.meta, 'unset', {\n value: false,\n writable: true,\n configurable: true,\n enumerable: false\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import * as i1 from '@angular/common/http';
|
|
|
9
9
|
import { HttpParams, HttpHeaders } from '@angular/common/http';
|
|
10
10
|
import * as i2 from '@angular/forms';
|
|
11
11
|
import * as i1$1 from '@angular/router';
|
|
12
|
-
import { M as MetaField } from './vgip-meta-ui-index-
|
|
12
|
+
import { M as MetaField } from './vgip-meta-ui-index-53a51627.mjs';
|
|
13
13
|
|
|
14
14
|
const numberFieldNormalizer = (field) => {
|
|
15
15
|
const f = {
|
|
@@ -1693,10 +1693,9 @@ class MetaResource {
|
|
|
1693
1693
|
if (this.model) {
|
|
1694
1694
|
const nestMatch = key.match(/(\S+)\[\d\]\.(\S+)/);
|
|
1695
1695
|
if (nestMatch && fieldNames.indexOf(nestMatch[1]) !== -1) {
|
|
1696
|
-
this.model[nestMatch[1]] = [];
|
|
1697
1696
|
const nestKeys = {};
|
|
1698
1697
|
nestKeys[nestMatch[2]] = value;
|
|
1699
|
-
this.model[nestMatch[1]]
|
|
1698
|
+
this.model[nestMatch[1]] = [nestKeys];
|
|
1700
1699
|
}
|
|
1701
1700
|
else if (fieldNames.indexOf(key) !== -1) {
|
|
1702
1701
|
this.model[key] = value;
|
|
@@ -1972,4 +1971,4 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
1972
1971
|
});
|
|
1973
1972
|
|
|
1974
1973
|
export { MetaRefDialog as M, MetaResourceService as a, MetaReferenceService as b, MetaLayout as c, MetaResource as d, MetaAutofocusDirective as e, MetaMsgService as f, MetaHttpClient as g, metaNormalizer as m };
|
|
1975
|
-
//# sourceMappingURL=vgip-meta-ui-index-
|
|
1974
|
+
//# sourceMappingURL=vgip-meta-ui-index-5b9bf56d.mjs.map
|