vcomply-workflow-engine 3.4.52 → 3.4.54

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.
@@ -273,8 +273,8 @@ export class AddMultipleResponsibilityComponent {
273
273
  isValidDueDate: validDate,
274
274
  isPastDate: this.isPastDate(report[4], report[5]),
275
275
  checkValidity: validFields,
276
- isValid: validDate && validFields && validUser,
277
- isValidUser: validUser,
276
+ isValid: validDate && validFields,
277
+ isValidUser: true,
278
278
  };
279
279
  }
280
280
  else {
@@ -304,8 +304,8 @@ export class AddMultipleResponsibilityComponent {
304
304
  isValidDueDate: validDate,
305
305
  isPastDate: this.isPastDate(report[5], report[6]),
306
306
  checkValidity: validFields,
307
- isValid: validDate && validFields && validUser,
308
- isValidUser: validUser,
307
+ isValid: validDate && validFields,
308
+ isValidUser: true,
309
309
  };
310
310
  }
311
311
  this.responsibilityBulkUpload.reports.push(obj);
@@ -894,4 +894,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
894
894
  }], feature: [{
895
895
  type: Input
896
896
  }] } });
897
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFjN0IsTUFBTSxPQUFPLGtDQUFrQztJQW9GN0MsWUFDVSxXQUEyQixFQUMzQixxQkFBNEMsRUFDNUMsV0FBd0IsRUFDeEIsZ0JBQXNDLEVBQ3RDLFFBQXlCO1FBSnpCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF4RnpCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakQsUUFBRyxHQUNELHlWQUF5VixDQUFDO1FBQzVWLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQUNoQixtQ0FBOEIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlELGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsNEJBQXVCLEdBQVE7WUFDN0Isa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNuQyxZQUFZLEVBQUU7Z0JBQ1osb0JBQW9CLEVBQUUsRUFBRTtnQkFDeEIsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsc0JBQXNCLEVBQUUsRUFBRTthQUMzQjtZQUNELGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7WUFDckUsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBT0YsNkJBQXdCLEdBQVE7WUFDOUIsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixpQkFBWSxHQUFRO1lBQ2xCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBQ0YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUV2QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxxQkFBcUIsQ0FBQztRQUNyQyxtQkFBYyxHQUFXLGlCQUFpQixDQUFDO1FBQzNDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsbUdBQW1HLENBQUM7UUFDcEgsa0JBQWEsR0FBRztZQUNkO2dCQUNFLFVBQVUsRUFBRSwrQkFBK0I7Z0JBQzNDLEtBQUssRUFBRSxXQUFXO2dCQUNsQixFQUFFLEVBQUUsU0FBUzthQUNkO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7b0JBQ3BDLENBQUMsQ0FBQyxnQ0FBZ0M7b0JBQ2xDLENBQUMsQ0FBQyx1QkFBdUI7Z0JBQzNCLEtBQUssRUFBRSxVQUFVO2dCQUNqQixFQUFFLEVBQUUsTUFBTTthQUNYO1NBQ0YsQ0FBQztRQUNGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFJbkIsNkJBQXdCLEdBQVksS0FBSyxDQUFDO0lBUXZDLENBQUM7SUFqRUosSUFBMkIsZ0JBQWdCLENBQUMsSUFBUztRQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFpRUQsV0FBVyxDQUFDLE9BQXNCLElBQUcsQ0FBQztJQUN0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsR0FBRztZQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQzNELDZCQUE2QixDQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixxQkFBcUI7UUFDckIsSUFBSTtZQUNGLElBQUksQ0FBQyx3QkFBd0IsR0FBRztnQkFDOUIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLEVBQUU7YUFDWixDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksR0FBRztnQkFDbEIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixhQUFhLEVBQUUsRUFBRTtnQkFDakIsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdELElBQUksU0FBUyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ25FO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxNQUFNLE1BQU0sR0FBaUIsS0FBSyxDQUFDLE1BQXNCLENBQUM7WUFDMUQsa0NBQWtDO1lBQ2xDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsTUFBTSxFQUFFLEdBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzlELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sT0FBTyxHQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLFFBQVEsR0FBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFcEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sRUFBRSxDQUFDO29CQUNULEdBQUcsRUFBRSxLQUFLO2lCQUNYLENBQVEsQ0FBQztnQkFFVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQVEsQ0FBQztnQkFDdkUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxXQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDN0MsQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFO29CQUN4QyxJQUFJLENBQUMsWUFBWTt3QkFDZixrR0FBa0c7NEJBQ2xHLFFBQVEsQ0FBQztvQkFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDeEIsT0FBTztpQkFDUjtnQkFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUNsRSxDQUFDO2dCQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQy9DLENBQUMsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQ0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLDRCQUE0QixFQUM1QjtvQkFDQSxJQUFJLENBQUMsWUFBWTt3QkFDZixrR0FBa0c7NEJBQ2xHLFFBQVEsQ0FBQztvQkFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBRTFCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU3QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxZQUFZO3dCQUNmLGtHQUFrRzs0QkFDbEcsUUFBUSxDQUFDO29CQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUN4QixPQUFPO2lCQUNSO2dCQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDM0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTt3QkFDbkMsTUFBTSxRQUFRLEdBQUc7NEJBQ2YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ2hCLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO3lCQUN4QixDQUFDO3dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDL0M7b0JBQ0QsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTt3QkFDbkMsTUFBTSxFQUFFLEdBQUc7NEJBQ1QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDOzRCQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQ25DLENBQUM7d0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNuQztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFO3dCQUNyQyxNQUFNLFFBQVEsR0FBRzs0QkFDZixZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQzs0QkFDekIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzs0QkFDbEQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ3hCLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO3lCQUMxQixDQUFDO3dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDaEQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRTt3QkFDckMsTUFBTSxRQUFRLEdBQUc7NEJBQ2YsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ3pCLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDaEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7NEJBQ2xELFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO3lCQUN2QixDQUFDO3dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDaEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxJQUFJLENBQUMsWUFBWTt3QkFDZix3RkFBd0YsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDM0IsT0FBTztpQkFDUjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7aUJBQ25CO2dCQUNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3pDLENBQUMsV0FBZ0IsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQzdDLENBQUM7Z0JBQ0Ysa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7b0JBQ3pDLElBQUksU0FBUyxDQUFDO29CQUNkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQzt3QkFDekQsQ0FBQyxDQUFDLElBQUk7d0JBQ04sQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDVixJQUFJLEdBQVEsQ0FBQztvQkFDYixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssa0JBQWtCLEVBQUU7d0JBQ2xFLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM5RCxHQUFHLEdBQUc7NEJBQ0osa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUN6QixzQkFBc0IsRUFBRSxJQUFJOzRCQUM1QixTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQzFCLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUN0QixvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDckMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUM1QixXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQzVCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUNyQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQzFCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUMzQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDekMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQ3pDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs0QkFDbkMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQzFDLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDOUIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUNqQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDbkMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOzRCQUV2QyxjQUFjLEVBQUUsU0FBUzs0QkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDakQsYUFBYSxFQUFFLFdBQVc7NEJBQzFCLE9BQU8sRUFBRSxTQUFTLElBQUksV0FBVyxJQUFJLFNBQVM7NEJBQzlDLFdBQVcsRUFBRSxTQUFTO3lCQUN2QixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM5RCxHQUFHLEdBQUc7NEJBQ0osa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUN6QixzQkFBc0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDdkMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUMxQixHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQ3BCLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDdEIsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NEJBQ3JDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTs0QkFDNUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFOzRCQUM1QixvQkFBb0IsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDdEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUMxQix5QkFBeUIsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDM0MsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQ3pDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUN6QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7NEJBQ25DLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUMxQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQzlCLGVBQWUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTs0QkFDakMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7NEJBQ25DLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs0QkFFdkMsY0FBYyxFQUFFLFNBQVM7NEJBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pELGFBQWEsRUFBRSxXQUFXOzRCQUMxQixPQUFPLEVBQUUsU0FBUyxJQUFJLFdBQVcsSUFBSSxTQUFTOzRCQUM5QyxXQUFXLEVBQUUsU0FBUzt5QkFDdkIsQ0FBQztxQkFDSDtvQkFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLHVDQUF1QztZQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxxQkFBcUI7SUFFckIsYUFBYSxDQUFDLE1BQVc7UUFDdkIsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDO1FBQzFCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBaUJHO1FBQ0gsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDckQsa0JBQWtCO1lBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxrQkFBa0I7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxrQkFBa0I7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxrQkFBa0I7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQ0UsQ0FBQyxTQUFTO1lBQ1YsQ0FBQyxXQUFXO1lBQ1osQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNSLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVk7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNSLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVE7b0JBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZO29CQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVk7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLElBQUksWUFBWSxJQUFJLFFBQVEsSUFBSSxlQUFlLENBQUMsQ0FBQztZQUN2RSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVjtZQUNBLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsR0FBUSxFQUFFLEtBQVU7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtTQUM1QixDQUFDO1FBRUYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV0QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQ3RCLEdBQUcsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsRUFDdEUsdUJBQXVCLENBQ3hCLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDaEMsSUFBSSxTQUFTLElBQUksY0FBYyxFQUFFO2dCQUMvQixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBRTlCLFVBQVUsQ0FBQyxRQUFRLENBQ2pCLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3RCxFQUFFLEtBQUssR0FBRyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxLQUFLLENBQ1YsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQ0UsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxXQUFXLEdBQUcsVUFBVSxFQUN4QjtnQkFDQSxPQUFPLEtBQUssQ0FBQzthQUNkO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUSxFQUFFLEtBQVU7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUUvQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtTQUM1QixDQUFDO1FBRUYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsdURBQXVEO1lBQ3ZELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsVUFBVSxDQUFDLFFBQVEsQ0FDakIsT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFDdkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdELEVBQUUsS0FBSyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUFDO1lBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxXQUFXLEdBQUcsVUFBVSxFQUFFO2dCQUM1QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRCxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUUxRyxJQUFJLENBQUMsV0FBVyxDQUFDLDhCQUE4QixFQUFFLENBQUMsU0FBUyxDQUN6RCxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekQ7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUNqRCxJQUFJLENBQUMsSUFBSSxFQUNULGtCQUFrQixFQUNsQixRQUFRLENBQ1QsQ0FBQztnQkFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDVjtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztRQUNyQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLHFCQUFxQixHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUM3RCxJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUU7b0JBQ25CLHFCQUFxQixJQUFJLENBQUMsQ0FBQztpQkFDNUI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRztnQkFDUixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQjtnQkFDekQsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtnQkFDeEMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtnQkFDeEMsd0JBQXdCLEVBQ3RCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDaEQsd0JBQXdCLEVBQUUscUJBQXFCO2FBQ2hELENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNsQixJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsS0FBSyxJQUFJLEVBQUU7d0JBQzFDLE1BQU0sQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7cUJBQ3BDO29CQUNELE1BQU0sU0FBUyxHQUFRLElBQUksQ0FBQyxTQUFTLENBQ25DLE1BQU0sQ0FBQyxvQkFBb0IsRUFDM0IsT0FBTyxDQUNSLENBQUM7b0JBQ0YsTUFBTSxlQUFlLEdBQVEsSUFBSSxDQUFDLFNBQVMsQ0FDekMsTUFBTSxDQUFDLFFBQVEsRUFDZixVQUFVLENBQ1gsQ0FBQztvQkFDRixNQUFNLGVBQWUsR0FBUSxNQUFNLENBQUMsUUFBUTt3QkFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUM7d0JBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ1AsTUFBTSxTQUFTLEdBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNqRSxNQUFNLGdCQUFnQixHQUFRLElBQUksQ0FBQyxTQUFTLENBQzFDLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLFdBQVcsQ0FDWixDQUFDO29CQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFFbEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FDekQsVUFBVSxDQUNYO3dCQUNDLENBQUMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUM1RCxNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsR0FBRyxFQUNWLE1BQU0sQ0FBQyxLQUFLLENBQ2IsQ0FBQztvQkFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUN0QixNQUFNLENBQUMsR0FBRzt3QkFDUixHQUFHO3dCQUNILFlBQVksQ0FBQyxDQUFDLENBQUM7d0JBQ2YsR0FBRzt3QkFDSCxFQUFFO3dCQUNGLFlBQVksQ0FBQyxDQUFDLENBQUM7d0JBQ2YsV0FBVyxFQUNiLHVCQUF1QixDQUN4QixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO29CQUVoQyxJQUFJLFlBQVksQ0FBQztvQkFDakIsSUFBSSxlQUFlLENBQUM7b0JBQ3BCLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELElBQUksTUFBTSxDQUFDLG9CQUFvQixLQUFLLEVBQUUsRUFBRTt3QkFDdEMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztxQkFDNUM7eUJBQU0sSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7d0JBQ3JELE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDL0QsWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDNUM7b0JBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLEVBQUUsRUFBRTt3QkFDN0IsZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7cUJBQ3RDO3lCQUFNLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO3dCQUNyRCxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQy9ELGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbEQ7b0JBQ0QsTUFBTSxHQUFHLEdBQUc7d0JBQ1YsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUTt3QkFDbEMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjO3dCQUNwQyxTQUFTLEVBQUUsZUFBZTs0QkFDeEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFROzRCQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7d0JBQ2pCLFdBQVcsRUFBRSxlQUFlOzRCQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0NBQ2YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDaEMsQ0FBQyxDQUFDLEVBQUU7NEJBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO2dDQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNsQyxDQUFDLENBQUMsRUFBRTt3QkFDTixZQUFZLEVBQUUsZUFBZTs0QkFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dDQUNmLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQ0FDakQsQ0FBQyxDQUFDLEVBQUU7NEJBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO2dDQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0NBQ25ELENBQUMsQ0FBQyxFQUFFO3dCQUNOLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9DLFdBQVcsRUFBRSxNQUFNLENBQUMsa0JBQWtCLElBQUksRUFBRTt3QkFDNUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7d0JBQ2xELGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDO3dCQUNoRSxhQUFhLEVBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO3dCQUN2RCxhQUFhLEVBQUUsWUFBWTt3QkFDM0IsdUJBQXVCLEVBQUUsRUFBRTt3QkFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3pCLE1BQU0sQ0FBQyxzQkFBc0IsRUFDN0IsYUFBYSxDQUNkO3dCQUNELE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JDLFdBQVcsRUFDVCxTQUFTLElBQUksU0FBUyxDQUFDLElBQUk7NEJBQ3pCLENBQUMsQ0FBQztnQ0FDRTtvQ0FDRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29DQUNuRCxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lDQUN0Qzs2QkFDRjs0QkFDSCxDQUFDLENBQUMsRUFBRTt3QkFDUixpQkFBaUIsRUFBRSxjQUFjO3dCQUNqQyxlQUFlLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzdDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxTQUFTO3dCQUN2QyxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsV0FBVzt3QkFDOUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTt3QkFDcEMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxXQUFXOzRCQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQzs0QkFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7Z0NBQ3ZCLENBQUMsQ0FBQyxDQUFDO2dDQUNILENBQUMsQ0FBQyxDQUFDO3dCQUNMLE9BQU8sRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQzNCLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2pELGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUM5RCxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakUsYUFBYSxFQUFFLEVBQUU7d0JBQ2pCLG9CQUFvQixFQUFFLGFBQWEsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTt3QkFDOUQsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLGdCQUFnQixFQUFFLEVBQUU7d0JBQ3BCLGtCQUFrQixFQUNoQixNQUFNLENBQUMsd0JBQXdCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ25ELFNBQVMsRUFBRSxDQUFDO3dCQUNaLGdCQUFnQixFQUFFLENBQUM7d0JBQ25CLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JCLGFBQWEsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQ2hFLGNBQWMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzFELFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVELFlBQVksRUFDVixlQUFlLElBQUksZUFBZSxDQUFDLFVBQVU7NEJBQzNDLENBQUMsQ0FBQztnQ0FDRSxNQUFNLEVBQUU7b0NBQ04sU0FBUyxFQUFFO3dDQUNUOzRDQUNFLFNBQVMsRUFBRSxlQUFlO2dEQUN4QixDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVU7Z0RBQzVCLENBQUMsQ0FBQyxDQUFDOzRDQUNMLGVBQWUsRUFBRSxDQUFDO3lDQUNuQjtxQ0FDRjtvQ0FDRCxJQUFJLEVBQUUsWUFBWTtpQ0FDbkI7NkJBQ0Y7NEJBQ0gsQ0FBQyxDQUFDLEVBQUU7d0JBQ1IsY0FBYyxFQUNaLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxFQUFFOzRCQUNyQyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLHlCQUF5Qjt3QkFDdEMsZUFBZSxFQUNiLE1BQU0sQ0FBQyx1QkFBdUIsS0FBSyxFQUFFOzRCQUNuQyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLHVCQUF1Qjt3QkFDcEMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDNUQsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLHVCQUF1Qjs0QkFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUI7NEJBQ2hDLENBQUMsQ0FBQyxFQUFFO3dCQUNOLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDdkMscUJBQXFCLEVBQ25CLE1BQU0sQ0FBQyx3QkFBd0IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRTt3QkFDakMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVk7d0JBQ25DLFFBQVEsRUFBRSxLQUFLO3dCQUNmLFdBQVcsRUFBRSxJQUFJO3FCQUNsQixDQUFDO29CQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ2pFLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsa0dBQWtHLEVBQ2xHLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVMsRUFBRSxHQUFXO1FBQzlCLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxPQUFPO2dCQUNWLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ25ELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7d0JBQzNCLElBQUksSUFBSSxDQUFDO3dCQUNULElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7NEJBQ3hDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDL0M7NkJBQU07NEJBQ0wsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7eUJBQ3hCO3dCQUNELEtBQUssR0FBRzs0QkFDTixJQUFJOzRCQUNKLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSzs0QkFDdEIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO3lCQUNoQyxDQUFDO3FCQUNIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxXQUFXLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFvQixFQUFFLEVBQUU7b0JBQy9ELElBQUksZUFBZSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUU7d0JBQ3hDLFdBQVcsR0FBRzs0QkFDWixJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUk7NEJBQzFCLFVBQVUsRUFBRSxlQUFlLENBQUMsWUFBWTs0QkFDeEMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO3lCQUM3QixDQUFDO3FCQUNIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sV0FBVyxDQUFDO2dCQUVuQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksV0FBVyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBb0IsRUFBRSxFQUFFO29CQUMvRCxJQUFJLGVBQWUsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO3dCQUN4QyxXQUFXLEdBQUc7NEJBQ1osSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJOzRCQUMxQixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7NEJBQzVCLFFBQVEsRUFBRSxlQUFlLENBQUMsU0FBUzt5QkFDcEMsQ0FBQztxQkFDSDtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLFdBQVcsQ0FBQztnQkFFbkIsTUFBTTtZQUNSLEtBQUssSUFBSTtnQkFDUCxJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO29CQUN6RCxJQUFJLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO3dCQUNsQyxLQUFLLEdBQUc7NEJBQ04sSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJOzRCQUNwQixVQUFVLEVBQUUsU0FBUyxDQUFDLFdBQVc7NEJBQ2pDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzt5QkFDdkIsQ0FBQztxQkFDSDtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEtBQUssQ0FBQztnQkFDYixNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLElBQUksTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQzFELElBQUksVUFBVSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUU7d0JBQ25DLE1BQU0sR0FBRzs0QkFDUCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7NEJBQ3JCLFVBQVUsRUFBRSxVQUFVLENBQUMsV0FBVzs0QkFDbEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO3lCQUN4QixDQUFDO3FCQUNIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDO2dCQUNkLE1BQU07WUFFUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtvQkFDekQsSUFBSSxTQUFTLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTt3QkFDbEMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7cUJBQy9CO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTt3QkFDekIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7cUJBQzlCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDO2dCQUNiLE1BQU07WUFFUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO29CQUNqQixPQUFPLENBQUMsQ0FBQztpQkFDVjtxQkFBTSxJQUFJLElBQUksSUFBSSxZQUFZLEVBQUU7b0JBQy9CLE9BQU8sQ0FBQyxDQUFDO2lCQUNWO3FCQUFNLElBQUksSUFBSSxJQUFJLGFBQWEsRUFBRTtvQkFDaEMsT0FBTyxDQUFDLENBQUM7aUJBQ1Y7cUJBQU0sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO29CQUN6QixPQUFPLENBQUMsQ0FBQztpQkFDVjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyx3QkFBd0IsR0FBRztZQUM5QixNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsTUFBTSxFQUFFLEVBQUU7WUFDVixhQUFhLEVBQUUsRUFBRTtZQUNqQixhQUFhLEVBQUUsRUFBRTtZQUNqQixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUNELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixZQUFZLEdBQUcsbUNBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUMvRDtpQkFBTTtnQkFDTCxZQUFZO29CQUNWLDJEQUEyRCxDQUFDO2FBQy9EO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNoRSxZQUFZLEdBQUcscUNBQXFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxZQUFZLEdBQUcsb0NBQW9DLENBQUM7YUFDckQ7U0FDRjtRQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2hELEdBQUcsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO1NBQzFFO2FBQU07WUFDTCxHQUFHLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQixHQUFHLFlBQVksQ0FBQztTQUMzRTtRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FDdkQsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLGtHQUFrRyxFQUNsRyxPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7K0hBbDhCVSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyx5YUN6Qi9DLG9nRkEyQ0E7MkZEbEJhLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxpQ0FBaUM7b09BS2pDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRSxXQUFXO3NCQUFuQixLQUFLO2dCQUlJLDhCQUE4QjtzQkFBdkMsTUFBTTtnQkFnQm9CLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxjQUFjO2dCQUdaLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5QnVsa1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxudHlwZSBBT0EgPSBhbnlbXVtdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZzogYW55O1xyXG4gIHVybCA9XHJcbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XHJcbiAgaXNOb3RpZmljYXRpb25QZW5kaW5nID0gMDtcclxuICBAT3V0cHV0KCkgY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICcnO1xyXG4gIHJlY2VudFJlc3BvbnNpYmlsaXR5VXJsOiBhbnkgPSB7XHJcbiAgICBieVJlc3BvbnNpYmlsaXRpZXM6IHsgdHlwZTogWydyZWNlbnRfcmVzcG9uc2liaWxpdGllcyddLCBzdWJUeXBlOiBbJ0NDJ10gfSxcclxuICAgIGJ5U3RhdHVzOiB7IHR5cGU6IFtdLCBzdWJUeXBlOiBbXSB9LFxyXG4gICAgZmlsdGVyT2JqZWN0OiB7XHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcclxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxyXG4gICAgICBlbnRydXN0ZWRUbzogW10sXHJcbiAgICAgIHJpc2tJZHM6IFtdLFxyXG4gICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcclxuICAgIH0sXHJcbiAgICB0aW1lUGVyaW9kRGV0YWlsczogeyB0eXBlOiAnJywgc2VsZWN0ZWRQZXJpb2Q6ICcnLCBzZWxlY3RlZFllYXI6ICcnIH0sXHJcbiAgICBzdGF0dXM6ICcnLFxyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgndXBsb2FkZWRGaWxlJykgc2V0IHVwbG9hZGVkRmlsZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZShkYXRhKTtcclxuICB9XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuXHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfTtcclxuXHJcbiAgdGVtcGxhdGVJbmZvOiBhbnkgPSB7XHJcbiAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgcmNMaXN0OiBbXSxcclxuICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICBtZW1iZXJJZDogJycsXHJcbiAgfTtcclxuICBpc0xvYWRlciA9IGZhbHNlO1xyXG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcclxuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcclxuICBkb3dubG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gIGZpbGVOYW1lOiBhbnk7XHJcbiAgZGF0YTogYW55O1xyXG4gIHNob3dFeGNlbCA9IGZhbHNlO1xyXG4gIHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xyXG4gIGZpbGVSZXNwb25zZTogYW55ID0gW107XHJcbiAgZmlsZVZhbHVlOiBhbnk7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XHJcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xyXG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgZGVmYXVsdE93bmVyID0gJyc7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCEgV2UncmUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QgYW5kIHlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlbWFpbCB1cG9uIGNvbXBsZXRpb24uYDtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXHJcbiAgICAgIGlkOiAnYWRkTW9yZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xyXG4gICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBJbiBRdWV1ZSdcclxuICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgaWQ6ICd2aWV3JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIHJpc2tDbGFzc0VuYWJsZWQ6IGFueTtcclxuICB1c2VySW5mbyE6IGFueTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgZmZCdWxrVXBsb2FkT3B0aW1pemF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7fVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJfb2JqX2lkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLl9pZDtcclxuICAgIHRoaXMudXNlckluZm8gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcjtcclxuICAgIHRoaXMuZGVmYXVsdE93bmVyID0gdGhpcy51c2VySW5mb1xyXG4gICAgICA/IHRoaXMudXNlckluZm8ubmFtZSArICcgKCcgKyB0aGlzLnVzZXJJbmZvLmVtYWlsICsgJyknXHJcbiAgICAgIDogJyc7XHJcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmlza0NsYXNzRW5hYmxlZCA9IHJlcy5lbmFibGVfcmlza2NsYXNzO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZmQnVsa1VwbG9hZE9wdGltaXphdGlvbiA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfYnVsa191cGxvYWRfb3B0aW1pemF0aW9uJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xyXG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcclxuICAgIGlmIChnZXRGaWxlKSB7XHJcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRlZEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gdGhpcy50ZXN0YXJyYXk9W107XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XHJcbiAgICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgICByY0xpc3Q6IFtdLFxyXG4gICAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICAgIG1lbWJlcklkOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY3JvbGxSZWZlcmVuY2UnKTtcclxuICAgICAgaWYgKHJlZmVyZW5jZSkge1xyXG4gICAgICAgIHJlZmVyZW5jZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWxlTmFtZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXS5uYW1lO1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChldmVudC50YXJnZXQuZmlsZXMpO1xyXG4gICAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IGV2ZW50LnRhcmdldCBhcyBEYXRhVHJhbnNmZXI7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY3VybHlcclxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIG11bHRpcGxlIGZpbGVzJyk7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTE6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMV07XHJcbiAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZTFdO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MsIHtcclxuICAgICAgICAgIGhlYWRlcjogMSxcclxuICAgICAgICAgIHJhdzogZmFsc2UsXHJcbiAgICAgICAgfSkgYXMgQU9BO1xyXG5cclxuICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwgeyBoZWFkZXI6IDEgfSkgYXMgQU9BO1xyXG4gICAgICAgIGNvbnN0IHRlbXBMaXN0ID0gdERhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVOYW1lLnN1YnN0cigtNSkgIT09ICcueGxzeCcpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyID0gY2xvbmVEZWVwKFxyXG4gICAgICAgICAgdGhpcy5kYXRhWzBdLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlci5zcGxpY2UoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIubGVuZ3RoIC0gMSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc2xpY2UoMik7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzBdICE9PVxyXG4gICAgICAgICAgJ0VudGVyIFJlc3BvbnNpYmlsaXR5IE5hbWUqJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXHJcbiAgICAgICAgICAgICcgUkVUUlknO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMjVdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tZW1iZXJfb2JqX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMl0gJiYgZWxlbWVudFsyXSAhPSAnICcpIHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFsyXSxcclxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogZWxlbWVudFszXSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2goY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbOV0gJiYgZWxlbWVudFs5XSAhPSAnICcpIHtcclxuICAgICAgICAgICAgY29uc3QgcmMgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFs5XSxcclxuICAgICAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXHJcbiAgICAgICAgICAgICAgcGFyZW50SWRzOiBKU09OLnBhcnNlKGVsZW1lbnRbMTNdKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LnB1c2gocmMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTFdICYmIGVsZW1lbnRbMTFdICE9ICcgJykge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHtcclxuICAgICAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMTFdLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTFdLnNwbGl0KCcgKCcpWzBdLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlX2lkOiBlbGVtZW50WzEyXSxcclxuICAgICAgICAgICAgICBteV9tZW1iZXJfaWQ6IGVsZW1lbnRbMTZdLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LnB1c2goYXNzaWduZWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTRdICYmIGVsZW1lbnRbMTRdICE9ICcgJykge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vciA9IHtcclxuICAgICAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMTRdLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTRdLnNwbGl0KCcgKCcpWzBdLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzE0XS5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpLFxyXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFsxNV0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QucHVzaChhc3NpZ25vcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuY2hlY2tFbXB0eUZpbGUoKTtcclxuICAgICAgICBpZiAoaXNFbXB0eSkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xyXG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2liaWxpdHlEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcclxuICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXNwb25zaWJpbGl0eURhdGEuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCB2YWxpZERhdGU7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZEZpZWxkcyA9IHRoaXMuY2hlY2tWYWxpZGl0eShyZXBvcnQpO1xyXG4gICAgICAgICAgY29uc3QgdmFsaWRVc2VyID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0WzJdLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBsZXQgb2JqOiBhbnk7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdICE9PSAnU2VsZWN0IGEgUHJvZ3JhbScpIHtcclxuICAgICAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzNdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGRheTogcmVwb3J0WzRdID8/ICcnLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbNV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs2XSA/PyAnJyxcclxuICAgICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzddID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbOF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFs5XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzEwXSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMTFdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTJdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTNdID8/ICcnLFxyXG4gICAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTRdPy50b1N0cmluZygpID8/ICcnLFxyXG4gICAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE1XSA/PyAnJyxcclxuICAgICAgICAgICAgICBhbHdheXNOb3RpZnk6IHJlcG9ydFsxNl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMTddID8/ICcnLFxyXG4gICAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMThdID8/ICcnLFxyXG4gICAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzE5XT8udG9TdHJpbmcoKSA/PyAnJyxcclxuXHJcbiAgICAgICAgICAgICAgaXNWYWxpZER1ZURhdGU6IHZhbGlkRGF0ZSxcclxuICAgICAgICAgICAgICBpc1Bhc3REYXRlOiB0aGlzLmlzUGFzdERhdGUocmVwb3J0WzRdLCByZXBvcnRbNV0pLFxyXG4gICAgICAgICAgICAgIGNoZWNrVmFsaWRpdHk6IHZhbGlkRmllbGRzLFxyXG4gICAgICAgICAgICAgIGlzVmFsaWQ6IHZhbGlkRGF0ZSAmJiB2YWxpZEZpZWxkcyAmJiB2YWxpZFVzZXIsXHJcbiAgICAgICAgICAgICAgaXNWYWxpZFVzZXI6IHZhbGlkVXNlcixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbGlkRGF0ZSA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZShyZXBvcnRbNV0sIHJlcG9ydFs2XSk7XHJcbiAgICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSA/PyAnJyxcclxuICAgICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzFdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogcmVwb3J0WzNdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzRdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGRheTogcmVwb3J0WzVdID8/ICcnLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbNl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs3XSA/PyAnJyxcclxuICAgICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzhdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbOV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzEyXSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzEzXSA/PyAnJyxcclxuICAgICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE0XSA/PyAnJyxcclxuICAgICAgICAgICAgICBub3RlczogcmVwb3J0WzE1XT8udG9TdHJpbmcoKSA/PyAnJyxcclxuICAgICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTddID8/ICcnLFxyXG4gICAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzE4XSA/PyAnJyxcclxuICAgICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE5XSA/PyAnJyxcclxuICAgICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsyMF0/LnRvU3RyaW5nKCkgPz8gJycsXHJcblxyXG4gICAgICAgICAgICAgIGlzVmFsaWREdWVEYXRlOiB2YWxpZERhdGUsXHJcbiAgICAgICAgICAgICAgaXNQYXN0RGF0ZTogdGhpcy5pc1Bhc3REYXRlKHJlcG9ydFs1XSwgcmVwb3J0WzZdKSxcclxuICAgICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcclxuICAgICAgICAgICAgICBpc1ZhbGlkOiB2YWxpZERhdGUgJiYgdmFsaWRGaWVsZHMgJiYgdmFsaWRVc2VyLFxyXG4gICAgICAgICAgICAgIGlzVmFsaWRVc2VyOiB2YWxpZFVzZXIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2gob2JqKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGVja0VtcHR5RmlsZSgpIHtcclxuICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKTtcclxuICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoIDwgMSkge1xyXG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0VtcHR5O1xyXG4gIH1cclxuXHJcbiAgLy8gdGVzdGFycmF5OmFueVtdPVtdXHJcblxyXG4gIGNoZWNrVmFsaWRpdHkocmVwb3J0OiBhbnkpIHtcclxuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XHJcbiAgICBpZiAocmVwb3J0WzBdKSB7XHJcbiAgICAgIHZhciB0cmltbWVkTmFtZSA9IHJlcG9ydFswXS50b1N0cmluZygpLnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICAgIHRyaW1tZWROYW1lID0gdHJpbW1lZE5hbWUucmVwbGFjZSgvICArL2csICcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgaW5kZXggICAgICAgICAgIGtleSBmb3IgICAgICAgICAgICAgICBjb25kaXRpb25cclxuICAgICAqXHJcbiAgICAgKiAgcmVwb3J0WzFdICAgICAgIE9uIEJlaGFsZiBvZiB1c2VyXHJcbiAgICAgKiAgcmVwb3J0WzExXSAgICAgIFJldmlld2VyICAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzEwXSAgICAgIFJldmlld2VyICAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgcmVwb3J0WzE3XSAgICAgIEFsd2F5cyBOb3RpZnkgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzE2XSAgICAgIEFsd2F5cyBOb3RpZnkgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzE3XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgcmVwb3J0WzE3XSAgICAgIEFsd2F5cyBOb3RpZnlcclxuICAgICAqICByZXBvcnRbMThdICAgICAgTm90aWZ5IE9uIEZhaWx1cmVcclxuICAgICAqICByZXBvcnRbMl0gICAgICAgQXNzaWduZWVcclxuICAgICAqICByZXBvcnRbNF0gICAgICAgZnJlcXVlbmN5ICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyAnU2VsZWN0IGEgUHJvZ3JhbSdcclxuICAgICAqICByZXBvcnRbM10gICAgICAgZnJlcXVlbmN5ICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyBub3QgJ1NlbGVjdCBhIFByb2dyYW0nKGRpc2FibGVkIGZvciB1c2VycyB3aXRob3V0IHByb2dyYW0gcGVybWlzc2lvbilcclxuICAgICAqICB0cmltbWVkTmFtZSAgICAgUmVwb3J0IG5hbWVcclxuICAgICAqICBkZWZhdWx0T3duZXIgICAgRGVmYXVsdCBBc3NpZ25vclxyXG4gICAgICovXHJcbiAgICBjb25zdCBmcmVxdWVuY3kgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcclxuICAgICAgICA/IHJlcG9ydFs0XVxyXG4gICAgICAgIDogcmVwb3J0WzNdO1xyXG4gICAgY29uc3QgcmV2aWV3ZXIgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcclxuICAgICAgICA/IHJlcG9ydFsxMV1cclxuICAgICAgICA6IHJlcG9ydFsxMF07XHJcbiAgICBjb25zdCBOb3RpZnlBbHdheXMgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcclxuICAgICAgICA/IHJlcG9ydFsxN11cclxuICAgICAgICA6IHJlcG9ydFsxNl07XHJcbiAgICBjb25zdCBOb3RpZnlPbkZhaWx1cmUgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcclxuICAgICAgICA/IHJlcG9ydFsxOF1cclxuICAgICAgICA6IHJlcG9ydFsxN107XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhZnJlcXVlbmN5IHx8XHJcbiAgICAgICF0cmltbWVkTmFtZSB8fFxyXG4gICAgICAocmVwb3J0WzFdICYmXHJcbiAgICAgICAgKHJlcG9ydFsxXSA9PSBOb3RpZnlBbHdheXMgfHwgcmVwb3J0WzFdID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgICghcmVwb3J0WzFdICYmXHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeUFsd2F5cyB8fFxyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0T3duZXIgPT0gTm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKHJlcG9ydFsyXSAmJlxyXG4gICAgICAgIChyZXBvcnRbMl0gPT0gcmV2aWV3ZXIgfHxcclxuICAgICAgICAgIHJlcG9ydFsyXSA9PSBOb3RpZnlBbHdheXMgfHxcclxuICAgICAgICAgIHJlcG9ydFsyXSA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIXJlcG9ydFsyXSAmJlxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMgfHxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgIChyZXZpZXdlciAmJiAocmV2aWV3ZXIgPT0gTm90aWZ5QWx3YXlzIHx8IHJldmlld2VyID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgICFyZXBvcnRbMl1cclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoQW5kWWVhciA9IG1vbnRoLnNwbGl0KFwiJ1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcclxuICAgICAgICBkYXkgKyAnLScgKyBtb250aEFuZFllYXJbMF0gKyAnLScgKyAyMCArIG1vbnRoQW5kWWVhclsxXSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICAgIGlmIChzdGFydERhdGUgPT0gJ0ludmFsaWQgZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDUpO1xyXG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY3VycmVudERhdGUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSAhPVxyXG4gICAgICAgICAgZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICYmXHJcbiAgICAgICAgY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zdCByZXBvcnREYXRlID0gbmV3IERhdGUoZGF5ICsgbW9udGguc3BsaXQoXCInXCIpKTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XHJcbiAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgICBjb25zdCBkb3dubG9hZERhdGUgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XHJcblxyXG4gICAgdGhpcy5yaXNrU2VydmljZS5kb3dubG9hZFJlc3BvbnNpYmlsaXR5VGVtcGxhdGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmJvZHkpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXHJcbiAgICAgICAgICAgICAgZGF0YS5ib2R5LFxyXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bHN4JyxcclxuICAgICAgICAgICAgICBmaWxlTmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ0RPV05MT0FERUQnO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZnJlcXVlbmN5VHlwZUFycmF5ID0gWycxJywgJzInLCAnMycsICc0JywgJzcnLCAnMCddO1xyXG4gICAgY29uc3QgZGVmYXVsdFdpbmRvdyA9IFswLCAyLCA3LCAzMCwgNywgMTVdO1xyXG4gICAgY29uc3QgZGVmYXVsdEZhaWxlZERheSA9IFsxLCAyLCA1LCA1LCA1LCA1XTtcclxuICAgIGxldCB2YWxpZFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xyXG4gICAgaWYgKHRoaXMuZmZCdWxrVXBsb2FkT3B0aW1pemF0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5yZXBvcnRzLmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcG9ydD8uaXNWYWxpZCkge1xyXG4gICAgICAgICAgdmFsaWRSZXNwb25zaWJpbGl0aWVzICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBvcmlnaW5hbEZpbGVuYW1lOiB0aGlzLmZpbGVSZXNwb25zZVswXT8ub3JpZ2luYWxfZmlsZW5hbWUsXHJcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlbmFtZSxcclxuICAgICAgICBmaWxlUGF0aDogdGhpcy5maWxlUmVzcG9uc2VbMF0/LmZpbGVwYXRoLFxyXG4gICAgICAgIHRvdGFsUmVzcG9uc2liaWxpdHlDb3VudDpcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5yZXBvcnRzPy5sZW5ndGgsXHJcbiAgICAgICAgdmFsaWRSZXNwb25zaWJpbGl0eUNvdW50OiB2YWxpZFJlc3BvbnNpYmlsaXRpZXMsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcG9ydC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICBpZiAocmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNlbnRlcixcclxuICAgICAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJldmlld2VyRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHJlcG9ydC5yZXZpZXdlcixcclxuICAgICAgICAgICAgJ3Jldmlld2VyJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGFzc2lnbm9yRGV0YWlsczogYW55ID0gcmVwb3J0LmFzc2lnbm9yXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFzc2lnbm9yLCAnYXNzaWdub3InKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgY29uc3QgY2NEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQuYWx3YXlzTm90aWZ5LCAnY2MnKTtcclxuICAgICAgICAgIGNvbnN0IGNjRmFpbHVyZURldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQubm90aWZ5T25GYWlsdXJlLFxyXG4gICAgICAgICAgICAnY2NGYWlsdXJlJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcblxyXG4gICAgICAgICAgY29uc3QgY2F0ZWdvcnlOYW1lID0gcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICdbV0lUSElOXSdcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgPyByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeS5zcGxpdCgnIFsnKVswXVxyXG4gICAgICAgICAgICA6IHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5O1xyXG4gICAgICAgICAgY29uc3QgZnJlcXVlbmN5VmFsdWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXHJcbiAgICAgICAgICAgIHJlcG9ydC5mcmVxdWVuY3ksXHJcbiAgICAgICAgICAgIHJlcG9ydC5kYXksXHJcbiAgICAgICAgICAgIHJlcG9ydC5tb250aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGVBbmRNb250aCA9IHJlcG9ydC5tb250aC5zcGxpdChcIidcIik7XHJcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQoXHJcbiAgICAgICAgICAgIHJlcG9ydC5kYXkgK1xyXG4gICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgZGF0ZUFuZE1vbnRoWzBdICtcclxuICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgIDIwICtcclxuICAgICAgICAgICAgICBkYXRlQW5kTW9udGhbMV0gK1xyXG4gICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICAnREQtTU1NTS1ZWVlZIEhIOm1tOnNzJ1xyXG4gICAgICAgICAgKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTtcclxuXHJcbiAgICAgICAgICBsZXQgY29tcGxldGVEYXlzO1xyXG4gICAgICAgICAgbGV0IG5vdENvbXBsZXRlRGF5cztcclxuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdO1xyXG4gICAgICAgICAgaWYgKHJlcG9ydC5yZXNwb25zaWJpbGl0eVdpbmRvdyAhPT0gJycpIHtcclxuICAgICAgICAgICAgY29tcGxldGVEYXlzID0gcmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5LmluZGV4T2YoZnJlcXVlbmN5VHlwZSk7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlRGF5cyA9IGRlZmF1bHRXaW5kb3dbaW5kZXhPZkFycmF5XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXBvcnQuZmFpbGVkQWZ0ZXIgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyA9IHJlcG9ydC5mYWlsZWRBZnRlcjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheS5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSBkZWZhdWx0RmFpbGVkRGF5W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICAgIHVzZXJJZDogdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQsXHJcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcclxuICAgICAgICAgICAgbWVtYmVyX2lkOiBhc3NpZ25vckRldGFpbHNcclxuICAgICAgICAgICAgICA/IGFzc2lnbm9yRGV0YWlscy5tZW1iZXJJZFxyXG4gICAgICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcclxuICAgICAgICAgICAgbWVtYmVyX25hbWU6IGFzc2lnbm9yRGV0YWlsc1xyXG4gICAgICAgICAgICAgID8gcmVwb3J0LmFzc2lnbm9yXHJcbiAgICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vci5zcGxpdCgnICgnKVswXVxyXG4gICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyLnNwbGl0KCcgKCcpWzBdXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgbWVtYmVyX2VtYWlsOiBhc3NpZ25vckRldGFpbHNcclxuICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vclxyXG4gICAgICAgICAgICAgICAgPyByZXBvcnQuYXNzaWdub3Iuc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKVxyXG4gICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJylcclxuICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICBjcmVhdGVkX2J5OiBhc3NpZ25vckRldGFpbHMgPyB0aGlzLm1lbWJlcklkIDogMCxcclxuICAgICAgICAgICAgcmVwb3J0X25hbWU6IHJlcG9ydC5yZXNwb25zaWJpbGl0eU5hbWUgPz8gJycsXHJcbiAgICAgICAgICAgIGVudHJ1c3RlZF90bzogcmVwb3J0LmFzc2lnbmVlLnNwbGl0KCcgKCcpWzBdID8/ICcnLFxyXG4gICAgICAgICAgICBlbnRydXN0ZWRfdG9faWQ6IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpLFxyXG4gICAgICAgICAgICBlbWFpbF9hZGRyZXNzOlxyXG4gICAgICAgICAgICAgIHJlcG9ydC5hc3NpZ25lZS5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpID8/ICcnLFxyXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiBjYXRlZ29yeU5hbWUsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWVfd2l0aF90cmVlOiAnJyxcclxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgcmNfbmFtZTogcmNEZXRhaWxzID8gcmNEZXRhaWxzLm5hbWUgOiAnJyxcclxuICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMCxcclxuICAgICAgICAgICAgZW50aXR5X3RyZWU6XHJcbiAgICAgICAgICAgICAgcmNEZXRhaWxzICYmIHJjRGV0YWlscy5yY0lkXHJcbiAgICAgICAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHMucGFyZW50SWRzIDogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICByY19pZDogcmNEZXRhaWxzID8gcmNEZXRhaWxzLnJjSWQgOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9oYW5kbGVyOiBmcmVxdWVuY3lWYWx1ZSxcclxuICAgICAgICAgICAgY29tcGxpYW5jZV90eXBlOiBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfZGVzY3JpcHRpb246IHJlcG9ydC5mcmVxdWVuY3ksXHJcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6IHJlcG9ydC5kYXkgPyBzdGFydERhdGUgOiBjdXJyZW50RGF0ZSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICByaXNrX2NsYXNzOiByZXBvcnQucmVwb3J0Q2xhc3MgPz8gJycsXHJcbiAgICAgICAgICAgIHJpc2tfY2xhc3NJZDogcmVwb3J0LnJlcG9ydENsYXNzXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhyZXBvcnQucmVwb3J0Q2xhc3MsICdyaXNrX2NsYXNzJylcclxuICAgICAgICAgICAgICA6IHRoaXMucmlza0NsYXNzRW5hYmxlZFxyXG4gICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgIDogMixcclxuICAgICAgICAgICAgZG9jX3V0YzogMCxcclxuICAgICAgICAgICAgY29tbWVudDogcmVwb3J0Lm5vdGVzID8/ICcnLFxyXG4gICAgICAgICAgICBjY19tYWlsOiBjY0RldGFpbHMgPyBjY0RldGFpbHMuZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgY2NfbWFpbF9pZDogY2NEZXRhaWxzID8gY2NEZXRhaWxzLmVtcGxveWVlSWQgOiAnJyxcclxuICAgICAgICAgICAgY2NfZmFpbGVkX21haWw6IGNjRmFpbHVyZURldGFpbHMgPyBjY0ZhaWx1cmVEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICAgIGNjX2ZhaWx1cmVfaWQ6IGNjRmFpbHVyZURldGFpbHMgPyBjY0ZhaWx1cmVEZXRhaWxzLmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgICBzZW5kX3JlbWluZGVyOiAnJyxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IGZyZXF1ZW5jeVR5cGUgPT09ICcxJyA/IDAgOiBjb21wbGV0ZURheXMsXHJcbiAgICAgICAgICAgIGZhaWxlZF9hZnRlcjogbm90Q29tcGxldGVEYXlzLFxyXG4gICAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiAnJyxcclxuICAgICAgICAgICAgcmVwb3J0X3VwbG9hZF9mbGFnOlxyXG4gICAgICAgICAgICAgIHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnID8gMSA6IDAsXHJcbiAgICAgICAgICAgIHJlcG9ydF9pZDogMCxcclxuICAgICAgICAgICAgaXNfYXNzaWduZWRfZmxhZzogMCxcclxuICAgICAgICAgICAgcHJpdmF0ZV9saWJyYXJ5X2lkOiAwLFxyXG4gICAgICAgICAgICBrZXljb21wbGlhbmNlOiByZXBvcnQua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gJ1llcycgOiAnTm8nLFxyXG4gICAgICAgICAgICBrZXlfY29tcGxpYW5jZTogcmVwb3J0LmtleVJlc3BvbnNpYmlsaXR5ID09PSAnWWVzJyA/IDEgOiAwLFxyXG4gICAgICAgICAgICByZXZpZXdlcklkOiByZXZpZXdlckRldGFpbHMgPyByZXZpZXdlckRldGFpbHMuZW1wbG95ZWVJZCA6IDAsXHJcbiAgICAgICAgICAgIHJldmlld2VyX2FycjpcclxuICAgICAgICAgICAgICByZXZpZXdlckRldGFpbHMgJiYgcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV2aWV3ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IHJldmlld2VyRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXZpZXdlckRldGFpbHMuZW1wbG95ZWVJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyX2FjY2VwdDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU0VRVUVOVElBTCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgOiB7fSxcclxuICAgICAgICAgICAgcmV2aWV3ZXJXaW5kb3c6XHJcbiAgICAgICAgICAgICAgcmVwb3J0LnJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW4gPT09ICcnXHJcbiAgICAgICAgICAgICAgICA/IDJcclxuICAgICAgICAgICAgICAgIDogcmVwb3J0LnJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW4sXHJcbiAgICAgICAgICAgIHJldmlld2VyRmFpbHVyZTpcclxuICAgICAgICAgICAgICByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIgPT09ICcnXHJcbiAgICAgICAgICAgICAgICA/IDJcclxuICAgICAgICAgICAgICAgIDogcmVwb3J0LnJldmlld1dpbGxCZUZhaWxlZEFmdGVyLFxyXG4gICAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnQuZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHlcclxuICAgICAgICAgICAgICA/IHJlcG9ydC5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIGRvY3VtZW50YXJ5RXZpZGVuY2U6IHJlcG9ydC5ub3RlcyA/PyAnJyxcclxuICAgICAgICAgICAgaXNkb2N1bWVudGFyeUV2aWRlbmNlOlxyXG4gICAgICAgICAgICAgIHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnID8gMSA6IDAsXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0Lm9iamVjdGl2ZSA/PyAnJyxcclxuICAgICAgICAgICAgZXhjZWxfc2hlZXRfaW5mbzogdGhpcy5maWxlUmVzcG9uc2UsXHJcbiAgICAgICAgICAgIHNob3dMaXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgY3VzdG9tX3RhZ3M6ICdbXScsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcGF5bG9hZC5wdXNoKG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmFkZEJ1bGtSZXNwb25zaWJpbGl0eShwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICdhbGVydCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ3JjX2lkJzpcclxuICAgICAgICBsZXQgcmNPYmogPSB7IG5hbWU6ICcnLCByY0lkOiAwLCBwYXJlbnRJZHM6IFtdIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LmZvckVhY2goKHJjX2VsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZSA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGxldCBuYW1lO1xyXG4gICAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lLmluY2x1ZGVzKCdbV0lUSElOXScpKSB7XHJcbiAgICAgICAgICAgICAgbmFtZSA9IHJjX2VsZW1lbnQubmFtZS5zcGxpdCgnIFtXSVRISU5dICcpWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG5hbWUgPSByY19lbGVtZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmNPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICByY0lkOiByY19lbGVtZW50LnJjX2lkLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkczogcmNfZWxlbWVudC5wYXJlbnRJZHMsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJjT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgbGV0IHJldmlld2VyT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChyZXZpZXdlckVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJldmlld2VyRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICByZXZpZXdlck9iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiByZXZpZXdlckVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiByZXZpZXdlckVsZW1lbnQubXlfbWVtYmVyX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiByZXZpZXdlckVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJldmlld2VyT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWdub3InOlxyXG4gICAgICAgIGxldCBhc3NpZ25vck9iaiA9IHsgbmFtZTogJycsIG1lbWJlcklkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LmZvckVhY2goKGFzc2lnbm9yRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYXNzaWdub3JFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGFzc2lnbm9yT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGFzc2lnbm9yRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBhc3NpZ25vckVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVtYmVySWQ6IGFzc2lnbm9yRWxlbWVudC5tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbm9yT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2MnOlxyXG4gICAgICAgIGxldCBjY09iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoY2NFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjY0VsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogY2NFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogY2NFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY0VsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWx1cmUnOlxyXG4gICAgICAgIGxldCBjY2ZPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGNjZkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjZkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NmT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGNjZkVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY2ZFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY2ZFbGVtZW50LmVtYWlsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjY2ZPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdlbnRydXN0ZWRfdG8nOlxyXG4gICAgICAgIGxldCBlbXBJZCA9IDA7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVuRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBlbXBJZCA9IGVuRWxlbWVudC5lbXBsb3llZV9pZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZW1wSWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5X2lkJzpcclxuICAgICAgICBsZXQgY2F0SWQgPSAwO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChjYXRlZ29yeTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2F0ZWdvcnkubmFtZSA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGNhdElkID0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNhdElkO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmlza19jbGFzcyc6XHJcbiAgICAgICAgaWYgKGl0ZW0gPT0gJ0xvdycpIHtcclxuICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnTG93LU1lZGl1bScpIHtcclxuICAgICAgICAgIHJldHVybiAyO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnTWVkaXVtLUhpZ2gnKSB7XHJcbiAgICAgICAgICByZXR1cm4gMztcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0hpZ2gnKSB7XHJcbiAgICAgICAgICByZXR1cm4gNDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xyXG4gICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICByY0xpc3Q6IFtdLFxyXG4gICAgICBhc3NpZ25vcnNMaXN0OiBbXSxcclxuICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgIG1lbWJlcklkOiAnJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkuZW1pdCgpO1xyXG4gIH1cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXRpZXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgbGV0IHVybFN1YnN0cmluZyA9ICcnO1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZykge1xyXG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT8nICsgdGhpcy51cmw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID1cclxuICAgICAgICAgICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzL3Jlc3BvbnNpYmlsaXRpZXMtcXVldWUnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbSA9IEpTT04/LnN0cmluZ2lmeSh0aGlzLnJlY2VudFJlc3BvbnNpYmlsaXR5VXJsKTtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdHk/cT0nICsgdGhpcy5xdWVyeVBhcmFtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvY29tcGxpYW5jZS8jLycgKyB1cmxTdWJzdHJpbmc7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICB9XHJcblxyXG4gIC8vIFVwbG9hZCBGaWxlIHRvIHRoZSBzZXJ2ZXJcclxuICBmaWxlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5maWxlUmVzcG9uc2UgPSBbXTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy51cGxvYWRlZEZpbGVzWzBdWzBdO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdzb3VyY2VmaWxlJywgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2Rlc3RpbmF0aW9uJywgJ2J1bGt1cGxvYWQvZW50cnVzdC8nICsgdGhpcy51c2VySW5mby5lbWFpbCk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5maWxlVXBsb2FkKGZvcm1EYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmZpbGVuYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVSZXNwb25zZS5wdXNoKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICdhbGVydCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCIgPlxyXG4gICAgPCEtIC0gbWFpbiBjb250YWluZXIgc3RhcnRzIGhlcmUgLSAtPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc3ByZWFkc2hlZXQtbXVsdGlwbGUtY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoND5Zb3UgY2FuIGVudHJ1c3QgbXVsdGlwbGUgcmVzcG9uc2liaWxpdGllcyBpbiBqdXN0IHR3byBlYXN5IHN0ZXBzOjwvaDQ+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5VcGxvYWQgdGhlIC54bHN4IGZpbGUgYW5kIHlvdeKAmXJlIGdvb2QgdG8gZ28hPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cclxuICAgICAgICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXR8fCBpc0ZpbGVFbXB0eVwiXHJcbiAgICAgICAgICAgID57e2Vycm9yTWVzc2FnZX19PC9wPiAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG48YXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldyAqbmdJZj1cInNob3dFeGNlbFwiXHJcbltyZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWRdPVwicmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkXCJcclxuW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcclxuW2xvYWRlcl09XCJsb2FkZXJcIlxyXG5bZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXHJcbihzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQpPVwic3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKClcIlxyXG4oY2FuY2VsKT1cInJlc2V0KClcIlxyXG5bcmVzcG9uc2liaWxpdHlUeXBlXT1cIidzaW5nbGVUYWInXCI+PC9hcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3PlxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG5cclxuPGlucHV0IHR5cGU9XCJmaWxlXCIgWyhuZ01vZGVsKV09XCJmaWxlVmFsdWVcIiBpZD1cImZpbGVJbnB1dFwiIGNsYXNzPVwiaGlkZGVuLWlucHV0XCIgYWNjZXB0PVwiLnhsc3hcIiAoY2hhbmdlKT1cInVwbG9hZGVkRmlsZSgkZXZlbnQpXCIgbXVsdGlwbGUgLz5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZSAqbmdJZj1cInNob3dTbWlsZXlcIiBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCIgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG4iXX0=
897
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFjN0IsTUFBTSxPQUFPLGtDQUFrQztJQW9GN0MsWUFDVSxXQUEyQixFQUMzQixxQkFBNEMsRUFDNUMsV0FBd0IsRUFDeEIsZ0JBQXNDLEVBQ3RDLFFBQXlCO1FBSnpCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF4RnpCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FB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QXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFJSSw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBZ0JvQixnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsY0FBYztnQkFHWixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbnR5cGUgQU9BID0gYW55W11bXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgZmVhdHVyZWZsYWc6IGFueTtcclxuICB1cmwgPVxyXG4gICAgJ3E9e1wiYnlSZXNwb25zaWJpbGl0aWVzXCI6e1widHlwZVwiOltcInJlc3BvbnNpYmlsaXRpZXNfaW5fcXVldWVcIl0sXCJzdWJUeXBlXCI6W1wiQ0NcIl19LFwiYnlTdGF0dXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXX0sXCJmaWx0ZXJPYmplY3RcIjp7XCJyZXNwb25zaWJpbGl0eUNlbnRlclwiOltdLFwiZW50cnVzdGVkQnlcIjpbXSxcImVudHJ1c3RlZFRvXCI6W10sXCJyaXNrSWRzXCI6W10sXCJyZXNwb25zaWJpbGl0eUNhdGVnb3J5XCI6W119LFwidGltZVBlcmlvZERldGFpbHNcIjp7XCJ0eXBlXCI6XCJcIixcInNlbGVjdGVkUGVyaW9kXCI6XCJcIixcInNlbGVjdGVkWWVhclwiOlwiXCJ9LFwic3RhdHVzXCI6XCJcIn0nO1xyXG4gIGlzTm90aWZpY2F0aW9uUGVuZGluZyA9IDA7XHJcbiAgQE91dHB1dCgpIGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBxdWVyeVBhcmFtOiBzdHJpbmcgPSAnJztcclxuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1xyXG4gICAgYnlSZXNwb25zaWJpbGl0aWVzOiB7IHR5cGU6IFsncmVjZW50X3Jlc3BvbnNpYmlsaXRpZXMnXSwgc3ViVHlwZTogWydDQyddIH0sXHJcbiAgICBieVN0YXR1czogeyB0eXBlOiBbXSwgc3ViVHlwZTogW10gfSxcclxuICAgIGZpbHRlck9iamVjdDoge1xyXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXHJcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcclxuICAgICAgZW50cnVzdGVkVG86IFtdLFxyXG4gICAgICByaXNrSWRzOiBbXSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXHJcbiAgICB9LFxyXG4gICAgdGltZVBlcmlvZERldGFpbHM6IHsgdHlwZTogJycsIHNlbGVjdGVkUGVyaW9kOiAnJywgc2VsZWN0ZWRZZWFyOiAnJyB9LFxyXG4gICAgc3RhdHVzOiAnJyxcclxuICB9O1xyXG5cclxuICBASW5wdXQoJ3VwbG9hZGVkRmlsZScpIHNldCB1cGxvYWRlZEZpbGVEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGUoZGF0YSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcblxyXG4gIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZDogYW55ID0ge1xyXG4gICAgaGVhZGVyOiBbXSxcclxuICAgIHJlcG9ydHM6IFtdLFxyXG4gIH07XHJcblxyXG4gIHRlbXBsYXRlSW5mbzogYW55ID0ge1xyXG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgIHJjTGlzdDogW10sXHJcbiAgICBhc3NpZ25vcnNMaXN0OiBbXSxcclxuICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgbWVtYmVySWQ6ICcnLFxyXG4gIH07XHJcbiAgaXNMb2FkZXIgPSBmYWxzZTtcclxuICBzaG93Q2F0ZWdvcnlMaXN0ID0gZmFsc2U7XHJcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgZG93bmxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICBmaWxlTmFtZTogYW55O1xyXG4gIGRhdGE6IGFueTtcclxuICBzaG93RXhjZWwgPSBmYWxzZTtcclxuICB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcclxuICBmaWxlUmVzcG9uc2U6IGFueSA9IFtdO1xyXG4gIGZpbGVWYWx1ZTogYW55O1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcbiAgZXJyb3JNZXNzYWdlID0gJyBpbnZhbGlkIGZpbGUgZXJyb3InO1xyXG4gIGRvd25sb2FkU3RhdHVzOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcclxuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gIGRlZmF1bHRPd25lciA9ICcnO1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhIFdlJ3JlIHByb2Nlc3NpbmcgeW91ciByZXF1ZXN0IGFuZCB5b3Ugd2lsbCBiZSBub3RpZmllZCB2aWEgZW1haWwgdXBvbiBjb21wbGV0aW9uLmA7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHtcclxuICAgICAgYnV0dG9uVGV4dDogJ0VudHJ1c3QgTW9yZSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgY2xhc3M6ICd3aGl0ZS1idG4nLFxyXG4gICAgICBpZDogJ2FkZE1vcmUnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgYnV0dG9uVGV4dDogdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmdcclxuICAgICAgICA/ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMgSW4gUXVldWUnXHJcbiAgICAgICAgOiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgY2xhc3M6ICdibHVlLWJ0bicsXHJcbiAgICAgIGlkOiAndmlldycsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcclxuICByaXNrQ2xhc3NFbmFibGVkOiBhbnk7XHJcbiAgdXNlckluZm8hOiBhbnk7XHJcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xyXG4gIGZmQnVsa1VwbG9hZE9wdGltaXphdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lCdWxrU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge31cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudXNlckluZm9cclxuICAgICAgPyB0aGlzLnVzZXJJbmZvLm5hbWUgKyAnICgnICsgdGhpcy51c2VySW5mby5lbWFpbCArICcpJ1xyXG4gICAgICA6ICcnO1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJpc2tDbGFzc0VuYWJsZWQgPSByZXMuZW5hYmxlX3Jpc2tjbGFzcztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24gPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2J1bGtfdXBsb2FkX29wdGltaXphdGlvbidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQnJvd3NlRmlsZSgpIHtcclxuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XHJcbiAgICBpZiAoZ2V0RmlsZSkge1xyXG4gICAgICBnZXRGaWxlLmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIHRoaXMudGVzdGFycmF5PVtdO1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XHJcbiAgICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgICByZXBvcnRzOiBbXSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xyXG4gICAgICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICAgICAgcmNMaXN0OiBbXSxcclxuICAgICAgICBhc3NpZ25vcnNMaXN0OiBbXSxcclxuICAgICAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgICAgICBtZW1iZXJJZDogJycsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xyXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XHJcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcclxuICAgICAgICByZWZlcmVuY2Uuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZXZlbnQudGFyZ2V0LmZpbGVzKTtcclxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN1cmx5XHJcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChic3RyLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGNvbnN0IHRlbXBEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWUxXTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XHJcbiAgICAgICAgICBoZWFkZXI6IDEsXHJcbiAgICAgICAgICByYXc6IGZhbHNlLFxyXG4gICAgICAgIH0pIGFzIEFPQTtcclxuXHJcbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcclxuICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcclxuICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5maWxlTmFtZS5zdWJzdHIoLTUpICE9PSAnLnhsc3gnKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcclxuICAgICAgICAgIHRoaXMuZGF0YVswXS5maWx0ZXIoKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIuc3BsaWNlKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKDIpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclswXSAhPT1cclxuICAgICAgICAgICdFbnRlciBSZXNwb25zaWJpbGl0eSBOYW1lKidcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdWzI1XTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWVtYmVyX29ial9pZCAhPSB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXHJcbiAgICAgICAgICAgICcgUkVUUlknO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRlbXBMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50WzJdICYmIGVsZW1lbnRbMl0gIT0gJyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMl0sXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZW1lbnRbM10sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKGNhdGVnb3J5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50WzldICYmIGVsZW1lbnRbOV0gIT0gJyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOV0sXHJcbiAgICAgICAgICAgICAgcmNfaWQ6IGVsZW1lbnRbMTBdLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkczogSlNPTi5wYXJzZShlbGVtZW50WzEzXSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50WzExXSAmJiBlbGVtZW50WzExXSAhPSAnICcpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzExXSxcclxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgICAgICBlbXBsb3llZV9pZDogZWxlbWVudFsxMl0sXHJcbiAgICAgICAgICAgICAgbXlfbWVtYmVyX2lkOiBlbGVtZW50WzE2XSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5wdXNoKGFzc2lnbmVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50WzE0XSAmJiBlbGVtZW50WzE0XSAhPSAnICcpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWdub3IgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzE0XSxcclxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzE0XS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgICAgICBtZW1iZXJfaWQ6IGVsZW1lbnRbMTVdLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LnB1c2goYXNzaWdub3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKCk7XHJcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5RGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlEYXRhLmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsaWREYXRlO1xyXG4gICAgICAgICAgY29uc3QgdmFsaWRGaWVsZHMgPSB0aGlzLmNoZWNrVmFsaWRpdHkocmVwb3J0KTtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkVXNlciA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydFsyXSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgbGV0IG9iajogYW55O1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSAhPT0gJ1NlbGVjdCBhIFByb2dyYW0nKSB7XHJcbiAgICAgICAgICAgIHZhbGlkRGF0ZSA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZShyZXBvcnRbNF0sIHJlcG9ydFs1XSk7XHJcbiAgICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSA/PyAnJyxcclxuICAgICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzFdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFszXSA/PyAnJyxcclxuICAgICAgICAgICAgICBkYXk6IHJlcG9ydFs0XSA/PyAnJyxcclxuICAgICAgICAgICAgICBtb250aDogcmVwb3J0WzVdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbNl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs3XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzhdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbOV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzExXSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzEyXSA/PyAnJyxcclxuICAgICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzEzXSA/PyAnJyxcclxuICAgICAgICAgICAgICBub3RlczogcmVwb3J0WzE0XT8udG9TdHJpbmcoKSA/PyAnJyxcclxuICAgICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTZdID8/ICcnLFxyXG4gICAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzE3XSA/PyAnJyxcclxuICAgICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE4XSA/PyAnJyxcclxuICAgICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxOV0/LnRvU3RyaW5nKCkgPz8gJycsXHJcblxyXG4gICAgICAgICAgICAgIGlzVmFsaWREdWVEYXRlOiB2YWxpZERhdGUsXHJcbiAgICAgICAgICAgICAgaXNQYXN0RGF0ZTogdGhpcy5pc1Bhc3REYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKSxcclxuICAgICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcclxuICAgICAgICAgICAgICBpc1ZhbGlkOiB2YWxpZERhdGUgJiYgdmFsaWRGaWVsZHMsXHJcbiAgICAgICAgICAgICAgaXNWYWxpZFVzZXI6IHRydWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSA/PyAnJyxcclxuICAgICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IHJlcG9ydFszXSA/PyAnJyxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs0XSA/PyAnJyxcclxuICAgICAgICAgICAgICBkYXk6IHJlcG9ydFs1XSA/PyAnJyxcclxuICAgICAgICAgICAgICBtb250aDogcmVwb3J0WzZdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbN10gPz8gJycsXHJcbiAgICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs4XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzldID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTBdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTFdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxM10gPz8gJycsXHJcbiAgICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNV0/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTZdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFsd2F5c05vdGlmeTogcmVwb3J0WzE3XSA/PyAnJyxcclxuICAgICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxOF0gPz8gJycsXHJcbiAgICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMjBdPy50b1N0cmluZygpID8/ICcnLFxyXG5cclxuICAgICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxyXG4gICAgICAgICAgICAgIGlzUGFzdERhdGU6IHRoaXMuaXNQYXN0RGF0ZShyZXBvcnRbNV0sIHJlcG9ydFs2XSksXHJcbiAgICAgICAgICAgICAgY2hlY2tWYWxpZGl0eTogdmFsaWRGaWVsZHMsXHJcbiAgICAgICAgICAgICAgaXNWYWxpZDogdmFsaWREYXRlICYmIHZhbGlkRmllbGRzLFxyXG4gICAgICAgICAgICAgIGlzVmFsaWRVc2VyOiB0cnVlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5wdXNoKG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tFbXB0eUZpbGUoKSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XHJcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDEpIHtcclxuICAgICAgaXNFbXB0eSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNFbXB0eTtcclxuICB9XHJcblxyXG4gIC8vIHRlc3RhcnJheTphbnlbXT1bXVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KHJlcG9ydDogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgaWYgKHJlcG9ydFswXSkge1xyXG4gICAgICB2YXIgdHJpbW1lZE5hbWUgPSByZXBvcnRbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGluZGV4ICAgICAgICAgICBrZXkgZm9yICAgICAgICAgICAgICAgY29uZGl0aW9uXHJcbiAgICAgKlxyXG4gICAgICogIHJlcG9ydFsxXSAgICAgICBPbiBCZWhhbGYgb2YgdXNlclxyXG4gICAgICogIHJlcG9ydFsxMV0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxMF0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxNl0gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxOF0gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5XHJcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlXHJcbiAgICAgKiAgcmVwb3J0WzJdICAgICAgIEFzc2lnbmVlXHJcbiAgICAgKiAgcmVwb3J0WzRdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzNdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgdHJpbW1lZE5hbWUgICAgIFJlcG9ydCBuYW1lXHJcbiAgICAgKiAgZGVmYXVsdE93bmVyICAgIERlZmF1bHQgQXNzaWdub3JcclxuICAgICAqL1xyXG4gICAgY29uc3QgZnJlcXVlbmN5ID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXHJcbiAgICAgICAgPyByZXBvcnRbNF1cclxuICAgICAgICA6IHJlcG9ydFszXTtcclxuICAgIGNvbnN0IHJldmlld2VyID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXHJcbiAgICAgICAgPyByZXBvcnRbMTFdXHJcbiAgICAgICAgOiByZXBvcnRbMTBdO1xyXG4gICAgY29uc3QgTm90aWZ5QWx3YXlzID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXHJcbiAgICAgICAgPyByZXBvcnRbMTddXHJcbiAgICAgICAgOiByZXBvcnRbMTZdO1xyXG4gICAgY29uc3QgTm90aWZ5T25GYWlsdXJlID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXHJcbiAgICAgICAgPyByZXBvcnRbMThdXHJcbiAgICAgICAgOiByZXBvcnRbMTddO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIWZyZXF1ZW5jeSB8fFxyXG4gICAgICAhdHJpbW1lZE5hbWUgfHxcclxuICAgICAgKHJlcG9ydFsxXSAmJlxyXG4gICAgICAgIChyZXBvcnRbMV0gPT0gTm90aWZ5QWx3YXlzIHx8IHJlcG9ydFsxXSA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIXJlcG9ydFsxXSAmJlxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMgfHxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgIChyZXBvcnRbMl0gJiZcclxuICAgICAgICAocmVwb3J0WzJdID09IHJldmlld2VyIHx8XHJcbiAgICAgICAgICByZXBvcnRbMl0gPT0gTm90aWZ5QWx3YXlzIHx8XHJcbiAgICAgICAgICByZXBvcnRbMl0gPT0gTm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKCFyZXBvcnRbMl0gJiZcclxuICAgICAgICAodGhpcy5kZWZhdWx0T3duZXIgPT0gTm90aWZ5QWx3YXlzIHx8XHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAocmV2aWV3ZXIgJiYgKHJldmlld2VyID09IE5vdGlmeUFsd2F5cyB8fCByZXZpZXdlciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAhcmVwb3J0WzJdXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBhcmVXaXRoQ3VycmVudERhdGUoZGF5OiBhbnksIG1vbnRoOiBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcclxuICAgICAgeyB2YWx1ZTogMywgbW9udGg6ICdNYXInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxyXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcclxuICAgICAgeyB2YWx1ZTogNiwgbW9udGg6ICdKdW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxyXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcclxuICAgICAgeyB2YWx1ZTogOSwgbW9udGg6ICdTZXAnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMiwgbW9udGg6ICdEZWMnIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghKGRheSB8fCBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBtb250aEFuZFllYXIgPSBtb250aC5zcGxpdChcIidcIik7XHJcblxyXG4gICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQoXHJcbiAgICAgICAgZGF5ICsgJy0nICsgbW9udGhBbmRZZWFyWzBdICsgJy0nICsgMjAgKyBtb250aEFuZFllYXJbMV0gKyAnIDAwOjAwOjAwJyxcclxuICAgICAgICAnREQtTU1NTS1ZWVlZIEhIOm1tOnNzJ1xyXG4gICAgICApLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xyXG4gICAgICBpZiAoc3RhcnREYXRlID09ICdJbnZhbGlkIGRhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHt9LCA1KTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxyXG4gICAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcclxuICAgICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXHJcbiAgICAgICAgICAgICAgPy52YWx1ZSAtIDFcclxuICAgICAgICAgIDogbW9udGhcclxuICAgICAgKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXREYXRlKE51bWJlcihkYXkpKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGN1cnJlbnREYXRlLnRvSlNPTigpLnNwbGl0KCdUJylbMF0gIT1cclxuICAgICAgICAgIGRhdGVfdmFsdWUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSAmJlxyXG4gICAgICAgIGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaXNQYXN0RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcclxuICAgICAgeyB2YWx1ZTogMywgbW9udGg6ICdNYXInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxyXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcclxuICAgICAgeyB2YWx1ZTogNiwgbW9udGg6ICdKdW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxyXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcclxuICAgICAgeyB2YWx1ZTogOSwgbW9udGg6ICdTZXAnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMiwgbW9udGg6ICdEZWMnIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghKGRheSB8fCBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICghKGRheSAmJiBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc3QgcmVwb3J0RGF0ZSA9IG5ldyBEYXRlKGRheSArIG1vbnRoLnNwbGl0KFwiJ1wiKSk7XHJcbiAgICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxyXG4gICAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcclxuICAgICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXHJcbiAgICAgICAgICAgICAgPy52YWx1ZSAtIDFcclxuICAgICAgICAgIDogbW9udGhcclxuICAgICAgKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXREYXRlKE51bWJlcihkYXkpKTtcclxuICAgICAgaWYgKGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSgpIHtcclxuICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURJTkcnO1xyXG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgRW50cnVzdCBSZXNwb25zaWJpbGl0aWVzLSR7ZG93bmxvYWREYXRlWzJdfS0ke2Rvd25sb2FkRGF0ZVsxXX0tJHtkb3dubG9hZERhdGVbM119Lnhsc3hgO1xyXG5cclxuICAgIHRoaXMucmlza1NlcnZpY2UuZG93bmxvYWRSZXNwb25zaWJpbGl0eVRlbXBsYXRlKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxyXG4gICAgICAgICAgICAgIGRhdGEuYm9keSxcclxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXHJcbiAgICAgICAgICAgICAgZmlsZU5hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGVBcnJheSA9IFsnMScsICcyJywgJzMnLCAnNCcsICc3JywgJzAnXTtcclxuICAgIGNvbnN0IGRlZmF1bHRXaW5kb3cgPSBbMCwgMiwgNywgMzAsIDcsIDE1XTtcclxuICAgIGNvbnN0IGRlZmF1bHRGYWlsZWREYXkgPSBbMSwgMiwgNSwgNSwgNSwgNV07XHJcbiAgICBsZXQgdmFsaWRSZXNwb25zaWJpbGl0aWVzID0gMDtcclxuICAgIGlmICh0aGlzLmZmQnVsa1VwbG9hZE9wdGltaXphdGlvbikge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8ucmVwb3J0cy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBvcnQ/LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdGllcyArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgb3JpZ2luYWxGaWxlbmFtZTogdGhpcy5maWxlUmVzcG9uc2VbMF0/Lm9yaWdpbmFsX2ZpbGVuYW1lLFxyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVSZXNwb25zZVswXT8uZmlsZW5hbWUsXHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlcGF0aCxcclxuICAgICAgICB0b3RhbFJlc3BvbnNpYmlsaXR5Q291bnQ6XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8ucmVwb3J0cz8ubGVuZ3RoLFxyXG4gICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdHlDb3VudDogdmFsaWRSZXNwb25zaWJpbGl0aWVzLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBvcnQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgaWYgKHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5ID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByY0RldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDZW50ZXIsXHJcbiAgICAgICAgICAgICdyY19pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCByZXZpZXdlckRldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQucmV2aWV3ZXIsXHJcbiAgICAgICAgICAgICdyZXZpZXdlcidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBhc3NpZ25vckRldGFpbHM6IGFueSA9IHJlcG9ydC5hc3NpZ25vclxyXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hc3NpZ25vciwgJ2Fzc2lnbm9yJylcclxuICAgICAgICAgICAgOiAnJztcclxuICAgICAgICAgIGNvbnN0IGNjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFsd2F5c05vdGlmeSwgJ2NjJyk7XHJcbiAgICAgICAgICBjb25zdCBjY0ZhaWx1cmVEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgcmVwb3J0Lm5vdGlmeU9uRmFpbHVyZSxcclxuICAgICAgICAgICAgJ2NjRmFpbHVyZSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGNhdGVnb3J5TmFtZSA9IHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAnW1dJVEhJTl0nXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAgID8gcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkuc3BsaXQoJyBbJylbMF1cclxuICAgICAgICAgICAgOiByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeTtcclxuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxyXG4gICAgICAgICAgICByZXBvcnQuZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICByZXBvcnQuZGF5LFxyXG4gICAgICAgICAgICByZXBvcnQubW9udGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBkYXRlQW5kTW9udGggPSByZXBvcnQubW9udGguc3BsaXQoXCInXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KFxyXG4gICAgICAgICAgICByZXBvcnQuZGF5ICtcclxuICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgIGRhdGVBbmRNb250aFswXSArXHJcbiAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAyMCArXHJcbiAgICAgICAgICAgICAgZGF0ZUFuZE1vbnRoWzFdICtcclxuICAgICAgICAgICAgICAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgJ0RELU1NTU0tWVlZWSBISDptbTpzcydcclxuICAgICAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbXBsZXRlRGF5cztcclxuICAgICAgICAgIGxldCBub3RDb21wbGV0ZURheXM7XHJcbiAgICAgICAgICBjb25zdCBmcmVxdWVuY3lUeXBlID0gZnJlcXVlbmN5VmFsdWUuc3BsaXQoJ34nKVswXTtcclxuICAgICAgICAgIGlmIChyZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlRGF5cyA9IHJlcG9ydC5yZXNwb25zaWJpbGl0eVdpbmRvdztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheS5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSBkZWZhdWx0V2luZG93W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVwb3J0LmZhaWxlZEFmdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSByZXBvcnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeVR5cGVBcnJheS5pbmNsdWRlcyhmcmVxdWVuY3lUeXBlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleE9mQXJyYXkgPSBmcmVxdWVuY3lUeXBlQXJyYXkuaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcclxuICAgICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gZGVmYXVsdEZhaWxlZERheVtpbmRleE9mQXJyYXldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICB1c2VySWQ6IHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkLFxyXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyBhc3NpZ25vckRldGFpbHMubWVtYmVySWRcclxuICAgICAgICAgICAgICA6IHRoaXMubWVtYmVySWQsXHJcbiAgICAgICAgICAgIG1lbWJlcl9uYW1lOiBhc3NpZ25vckRldGFpbHNcclxuICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vclxyXG4gICAgICAgICAgICAgICAgPyByZXBvcnQuYXNzaWdub3Iuc3BsaXQoJyAoJylbMF1cclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICA6IHRoaXMuZGVmYXVsdE93bmVyXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lci5zcGxpdCgnICgnKVswXVxyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIG1lbWJlcl9lbWFpbDogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyByZXBvcnQuYXNzaWdub3JcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJylcclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICA6IHRoaXMuZGVmYXVsdE93bmVyXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lci5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgY3JlYXRlZF9ieTogYXNzaWdub3JEZXRhaWxzID8gdGhpcy5tZW1iZXJJZCA6IDAsXHJcbiAgICAgICAgICAgIHJlcG9ydF9uYW1lOiByZXBvcnQucmVzcG9uc2liaWxpdHlOYW1lID8/ICcnLFxyXG4gICAgICAgICAgICBlbnRydXN0ZWRfdG86IHJlcG9ydC5hc3NpZ25lZS5zcGxpdCgnICgnKVswXSA/PyAnJyxcclxuICAgICAgICAgICAgZW50cnVzdGVkX3RvX2lkOiB0aGlzLnJldHVybklkcyhyZXBvcnQuYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKSxcclxuICAgICAgICAgICAgZW1haWxfYWRkcmVzczpcclxuICAgICAgICAgICAgICByZXBvcnQuYXNzaWduZWUuc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSA/PyAnJyxcclxuICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogY2F0ZWdvcnlOYW1lLFxyXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lX3dpdGhfdHJlZTogJycsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSxcclxuICAgICAgICAgICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHJjX25hbWU6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5uYW1lIDogJycsXHJcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHMucmNJZCA6IDAsXHJcbiAgICAgICAgICAgIGVudGl0eV90cmVlOlxyXG4gICAgICAgICAgICAgIHJjRGV0YWlscyAmJiByY0RldGFpbHMucmNJZFxyXG4gICAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3JjX2lkczogcmNEZXRhaWxzID8gcmNEZXRhaWxzLnBhcmVudElkcyA6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMCxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfaGFuZGxlcjogZnJlcXVlbmN5VmFsdWUsXHJcbiAgICAgICAgICAgIGNvbXBsaWFuY2VfdHlwZTogZnJlcXVlbmN5VmFsdWUuc3BsaXQoJ34nKVswXSxcclxuICAgICAgICAgICAgZnJlcXVlbmN5X2Rlc2NyaXB0aW9uOiByZXBvcnQuZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICBzdGFydF9kYXRlOiByZXBvcnQuZGF5ID8gc3RhcnREYXRlIDogY3VycmVudERhdGUgKyAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgcmlza19jbGFzczogcmVwb3J0LnJlcG9ydENsYXNzID8/ICcnLFxyXG4gICAgICAgICAgICByaXNrX2NsYXNzSWQ6IHJlcG9ydC5yZXBvcnRDbGFzc1xyXG4gICAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0LnJlcG9ydENsYXNzLCAncmlza19jbGFzcycpXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnJpc2tDbGFzc0VuYWJsZWRcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDIsXHJcbiAgICAgICAgICAgIGRvY191dGM6IDAsXHJcbiAgICAgICAgICAgIGNvbW1lbnQ6IHJlcG9ydC5ub3RlcyA/PyAnJyxcclxuICAgICAgICAgICAgY2NfbWFpbDogY2NEZXRhaWxzID8gY2NEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICAgIGNjX21haWxfaWQ6IGNjRGV0YWlscyA/IGNjRGV0YWlscy5lbXBsb3llZUlkIDogJycsXHJcbiAgICAgICAgICAgIGNjX2ZhaWxlZF9tYWlsOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscy5lbWFpbCA6ICcnLFxyXG4gICAgICAgICAgICBjY19mYWlsdXJlX2lkOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscy5lbXBsb3llZUlkIDogMCxcclxuICAgICAgICAgICAgc2VuZF9yZW1pbmRlcjogJycsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiBmcmVxdWVuY3lUeXBlID09PSAnMScgPyAwIDogY29tcGxldGVEYXlzLFxyXG4gICAgICAgICAgICBmYWlsZWRfYWZ0ZXI6IG5vdENvbXBsZXRlRGF5cyxcclxuICAgICAgICAgICAgZXhjZWxfc2hlZXRfbmFtZTogJycsXHJcbiAgICAgICAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzpcclxuICAgICAgICAgICAgICByZXBvcnQuZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkID09PSAnWWVzJyA/IDEgOiAwLFxyXG4gICAgICAgICAgICByZXBvcnRfaWQ6IDAsXHJcbiAgICAgICAgICAgIGlzX2Fzc2lnbmVkX2ZsYWc6IDAsXHJcbiAgICAgICAgICAgIHByaXZhdGVfbGlicmFyeV9pZDogMCxcclxuICAgICAgICAgICAga2V5Y29tcGxpYW5jZTogcmVwb3J0LmtleVJlc3BvbnNpYmlsaXR5ID09PSAnWWVzJyA/ICdZZXMnIDogJ05vJyxcclxuICAgICAgICAgICAga2V5X2NvbXBsaWFuY2U6IHJlcG9ydC5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycgPyAxIDogMCxcclxuICAgICAgICAgICAgcmV2aWV3ZXJJZDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgICByZXZpZXdlcl9hcnI6XHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzICYmIHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkXHJcbiAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyX2lkOiByZXZpZXdlckRldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpZXdlcl9hY2NlcHQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1NFUVVFTlRJQUwnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge30sXHJcbiAgICAgICAgICAgIHJldmlld2VyV2luZG93OlxyXG4gICAgICAgICAgICAgIHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluID09PSAnJ1xyXG4gICAgICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgICAgICA6IHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluLFxyXG4gICAgICAgICAgICByZXZpZXdlckZhaWx1cmU6XHJcbiAgICAgICAgICAgICAgcmVwb3J0LnJldmlld1dpbGxCZUZhaWxlZEFmdGVyID09PSAnJ1xyXG4gICAgICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgICAgICA6IHJlcG9ydC5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlcixcclxuICAgICAgICAgICAgcmV2aWV3ZXJfZW1haWw6IHJldmlld2VyRGV0YWlscyA/IHJldmlld2VyRGV0YWlscy5lbWFpbCA6ICcnLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICAgICAgPyByZXBvcnQuZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHlcclxuICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICBkb2N1bWVudGFyeUV2aWRlbmNlOiByZXBvcnQubm90ZXMgPz8gJycsXHJcbiAgICAgICAgICAgIGlzZG9jdW1lbnRhcnlFdmlkZW5jZTpcclxuICAgICAgICAgICAgICByZXBvcnQuZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkID09PSAnWWVzJyA/IDEgOiAwLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydC5vYmplY3RpdmUgPz8gJycsXHJcbiAgICAgICAgICAgIGV4Y2VsX3NoZWV0X2luZm86IHRoaXMuZmlsZVJlc3BvbnNlLFxyXG4gICAgICAgICAgICBzaG93TGlzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGN1c3RvbV90YWdzOiAnW10nLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHBheWxvYWQucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5hZGRCdWxrUmVzcG9uc2liaWxpdHkocGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSA9IHJlcztcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlICdyY19pZCc6XHJcbiAgICAgICAgbGV0IHJjT2JqID0geyBuYW1lOiAnJywgcmNJZDogMCwgcGFyZW50SWRzOiBbXSB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyY19lbGVtZW50Lm5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBsZXQgbmFtZTtcclxuICAgICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZS5pbmNsdWRlcygnW1dJVEhJTl0nKSkge1xyXG4gICAgICAgICAgICAgIG5hbWUgPSByY19lbGVtZW50Lm5hbWUuc3BsaXQoJyBbV0lUSElOXSAnKVswXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJjT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgcmNJZDogcmNfZWxlbWVudC5yY19pZCxcclxuICAgICAgICAgICAgICBwYXJlbnRJZHM6IHJjX2VsZW1lbnQucGFyZW50SWRzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByY09iajtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG4gICAgICAgIGxldCByZXZpZXdlck9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgocmV2aWV3ZXJFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXZpZXdlckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgcmV2aWV3ZXJPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogcmV2aWV3ZXJFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogcmV2aWV3ZXJFbGVtZW50Lm15X21lbWJlcl9pZCxcclxuICAgICAgICAgICAgICBlbWFpbDogcmV2aWV3ZXJFbGVtZW50LmVtYWlsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXZpZXdlck9iajtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbm9yJzpcclxuICAgICAgICBsZXQgYXNzaWdub3JPYmogPSB7IG5hbWU6ICcnLCBtZW1iZXJJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWdub3JzTGlzdC5mb3JFYWNoKChhc3NpZ25vckVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGFzc2lnbm9yRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBhc3NpZ25vck9iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBhc3NpZ25vckVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbWFpbDogYXNzaWdub3JFbGVtZW50LmVtYWlsLFxyXG4gICAgICAgICAgICAgIG1lbWJlcklkOiBhc3NpZ25vckVsZW1lbnQubWVtYmVyX2lkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhc3NpZ25vck9iajtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjJzpcclxuICAgICAgICBsZXQgY2NPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGNjRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2NFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGNjT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGNjRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjRWxlbWVudC5lbXBsb3llZV9pZCxcclxuICAgICAgICAgICAgICBlbWFpbDogY2NFbGVtZW50LmVtYWlsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjY09iajtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NGYWlsdXJlJzpcclxuICAgICAgICBsZXQgY2NmT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChjY2ZFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjY2ZFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGNjZk9iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjY2ZFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogY2NmRWxlbWVudC5lbXBsb3llZV9pZCxcclxuICAgICAgICAgICAgICBlbWFpbDogY2NmRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY2NmT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZW50cnVzdGVkX3RvJzpcclxuICAgICAgICBsZXQgZW1wSWQgPSAwO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoZW5FbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZW1wSWQgPSBlbkVsZW1lbnQuZW1wbG95ZWVfaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGVtcElkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeV9pZCc6XHJcbiAgICAgICAgbGV0IGNhdElkID0gMDtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3QuZm9yRWFjaCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNhdGVnb3J5Lm5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjYXRJZCA9IGNhdGVnb3J5LmNhdGVnb3J5X2lkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjYXRJZDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jpc2tfY2xhc3MnOlxyXG4gICAgICAgIGlmIChpdGVtID09ICdMb3cnKSB7XHJcbiAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0xvdy1NZWRpdW0nKSB7XHJcbiAgICAgICAgICByZXR1cm4gMjtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ01lZGl1bS1IaWdoJykge1xyXG4gICAgICAgICAgcmV0dXJuIDM7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdIaWdoJykge1xyXG4gICAgICAgICAgcmV0dXJuIDQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgcmNMaXN0OiBbXSxcclxuICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICBtZW1iZXJJZDogJycsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5LmVtaXQoKTtcclxuICB9XHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQpIHtcclxuICAgICAgY2FzZSAnYWRkTW9yZSc6XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0aWVzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSwgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3UmVzcG9uc2liaWxpdGllcygpOiB2b2lkIHtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGxldCB1cmxTdWJzdHJpbmcgPSAnJztcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcpIHtcclxuICAgICAgaWYgKHRoaXMuZmVhdHVyZWZsYWcpIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdHk/JyArIHRoaXMudXJsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9XHJcbiAgICAgICAgICAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcy9yZXNwb25zaWJpbGl0aWVzLXF1ZXVlJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZmVhdHVyZWZsYWcpIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW0gPSBKU09OPy5zdHJpbmdpZnkodGhpcy5yZWNlbnRSZXNwb25zaWJpbGl0eVVybCk7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5P3E9JyArIHRoaXMucXVlcnlQYXJhbTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvY29tcGxpYW5jZS8jLycgKyB1cmxTdWJzdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgfVxyXG5cclxuICAvLyBVcGxvYWQgRmlsZSB0byB0aGUgc2VydmVyXHJcbiAgZmlsZVVwbG9hZCgpIHtcclxuICAgIHRoaXMuZmlsZVJlc3BvbnNlID0gW107XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgY29uc3QgZmlsZSA9IHRoaXMudXBsb2FkZWRGaWxlc1swXVswXTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnc291cmNlZmlsZScsIGZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdkZXN0aW5hdGlvbicsICdidWxrdXBsb2FkL2VudHJ1c3QvJyArIHRoaXMudXNlckluZm8uZW1haWwpO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZmlsZVVwbG9hZChmb3JtRGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5maWxlbmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5maWxlUmVzcG9uc2UucHVzaChyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIiBbYXR0ci5pZF09XCInc2Nyb2xsUmVmZXJlbmNlJ1wiID5cclxuICAgIDwhLSAtIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0gLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NwcmVhZHNoZWV0LW11bHRpcGxlLWNhdGVnb3J5LnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xyXG4gICAgICAgICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpc1dyb25nRmlsZSB8fCBpc1dyb25nRm9ybWF0fHwgaXNGaWxlRW1wdHlcIlxyXG4gICAgICAgICAgICA+e3tlcnJvck1lc3NhZ2V9fTwvcD4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXcgKm5nSWY9XCJzaG93RXhjZWxcIlxyXG5bcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkXT1cInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiXHJcbltmaWxlTmFtZV09XCJmaWxlTmFtZVwiXHJcbltsb2FkZXJdPVwibG9hZGVyXCJcclxuW2RlZmF1bHRPd25lcl09XCJkZWZhdWx0T3duZXJcIlxyXG4oc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKT1cInN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCgpXCJcclxuKGNhbmNlbCk9XCJyZXNldCgpXCJcclxuW3Jlc3BvbnNpYmlsaXR5VHlwZV09XCInc2luZ2xlVGFiJ1wiPjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiIFsobmdNb2RlbCldPVwiZmlsZVZhbHVlXCIgaWQ9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIGFjY2VwdD1cIi54bHN4XCIgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCIgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuIl19