@sumaris-net/ngx-components 1.23.4 → 1.23.5

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.
@@ -276,13 +276,13 @@ export class EntitiesTableDataSource extends TableDataSource {
276
276
  // Call service deletion
277
277
  yield this.dataService.deleteAll(data, this.serviceOptions);
278
278
  // Workaround, to be sure all rows have been deleted
279
- // Sometimes, the service miss deletion, or GrapQHl cache remove failed.
279
+ // Sometime, the service miss deletion, or GraphQl cache remove failed.
280
280
  // In this case, apply missing deletion using the super.delete() function
281
281
  const rowNotDeleted = this.getRows().filter(rows.includes);
282
282
  if (isNotEmptyArray(rowNotDeleted)) {
283
- console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows (Is service update the cache ?)`);
283
+ console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows! Please check that data service update the cache, after deletion`);
284
284
  rowNotDeleted
285
- // Start from the end
285
+ // Start at the end
286
286
  .sort((a, b) => a.id > b.id ? -1 : 1)
287
287
  .forEach(r => _super.delete.call(this, r.id));
288
288
  }
@@ -386,4 +386,4 @@ EntitiesTableDataSource.ctorParameters = () => [
386
386
  { type: undefined },
387
387
  { type: undefined }
388
388
  ];
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFpQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQVEsWUFBWSxFQUFFLGVBQWUsRUFBWSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQXlCOUQsV0FBVztBQUVYLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sdUJBU1QsU0FBUSxlQUF3QjtJQXFEbEM7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLFFBQW9CLEVBQ0osV0FBdUMsRUFDdkQsZ0JBQW9CLEVBQ3BCLE9BQVc7UUFDckIsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLGtCQUNsQyw0QkFBNEIsRUFBRSxLQUFLLEVBQ25DLFFBQVEsRUFBRSxLQUFLLEVBQ2YsaUJBQWlCLEVBQUUsS0FBSyxJQUNyQixPQUFPLEVBQ1YsQ0FBQztRQVJ1QixnQkFBVyxHQUFYLFdBQVcsQ0FBNEI7UUExRHpELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BDLGlCQUFZLEdBQStCLElBQUksQ0FBQztRQUUxRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLFNBQVMsQ0FBQyxDQUFDO1FBOER2RCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxNQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDN0UsQ0FBQztJQTlERDs7T0FFRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCOytDQUM1QixJQUFJLENBQUMsZUFBZSxHQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWMsQ0FBQyxLQUFjO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUdBQXVHLENBQUMsQ0FBQztRQUN0SCxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLEtBQVM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBUztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsaURBQWlEO0lBQy9GLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLGdEQUFnRDtJQUM5RixDQUFDO0lBMEJELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjLEVBQ2QsSUFBWSxFQUNaLE1BQWUsRUFDZixhQUE2QixFQUM3QixNQUFtQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQW9CLENBQUM7YUFDckcsSUFBSSxDQUNILFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUMsRUFDakUsR0FBRyxDQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsSUFBSSxDQUFDLFdBQVcsOENBQThDLENBQUMsQ0FBQzthQUM3RztpQkFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixJQUFJLENBQUMsV0FBVyw2RkFBNkYsQ0FBQyxDQUFDO2FBQzVKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFRLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7UUFDRiw4Q0FBOEM7UUFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUIseUZBQXlGO1NBQzFGLENBQUM7SUFDTixDQUFDO0lBRVMsd0JBQXdCLENBQUMsSUFBdUI7O1FBQ3hELG1EQUFtRDtRQUNuRCxVQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLDBDQUFFLE1BQU0sRUFBRTtZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0hBQW9ILENBQUMsQ0FBQztZQUNwSyxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFDSTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUM7SUFFSyxJQUFJOztZQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztnQkFDakYsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELG9DQUFvQztZQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLElBQUksQ0FBQyxXQUFXLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3ZGLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUVwRCxJQUFJO2dCQUNGLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLFdBQVcsNEJBQTRCLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBRTFILGVBQWU7Z0JBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUU1QiwwQkFBMEI7Z0JBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztnQkFFaEYsaUNBQWlDO2dCQUNqQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7b0JBQ3RCLGFBQWE7b0JBQ2IsSUFBSSxJQUFJLENBQUMsTUFBTTt3QkFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLElBQUksQ0FBQyxXQUFXLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdEkscUJBQXFCO29CQUNyQixNQUFNLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUMsQ0FBQztpQkFDNUY7Z0JBRUQsSUFBSSxJQUFTLENBQUM7Z0JBQ2QsSUFBSSxVQUFlLENBQUM7Z0JBRXBCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUN6QixVQUFVLEdBQUcsRUFBRSxDQUFDO29CQUNoQixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFPLENBQUM7d0JBQ3BELFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN4QyxnQ0FBZ0M7d0JBQ2hDLElBQUksYUFBYSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSzs0QkFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN2RSxPQUFPLFdBQVcsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLGFBQWE7d0JBQUUsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDdkM7Z0JBQ0QsOEVBQThFO3FCQUN6RTtvQkFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDeEMsbURBQW1EO29CQUNuRCxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUNuQjtnQkFFRCwyQkFBMkI7Z0JBQzNCLElBQUksYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTTt3QkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixJQUFJLENBQUMsV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO29CQUMvRixPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0RBQWtELElBQUksQ0FBQyxXQUFXLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDdkgsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUVoRSxJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLElBQUksQ0FBQyxXQUFXLFlBQVksQ0FBQyxDQUFDO2dCQUUxRiw0SkFBNEo7Z0JBQzVKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztnQkFFaEQsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztnQkFDNUcsTUFBTSxLQUFLLENBQUM7YUFDYjtvQkFBUztnQkFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQztLQUFBO0lBRUQsZ0JBQWdCLENBQUMsSUFBUyxFQUFFLElBQTZCO1FBQ3ZELElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTFGLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLGdCQUFrQztRQUN4Qyx3REFBd0Q7UUFDeEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxnQkFBbUM7UUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxjQUF1QjtRQUM5QixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjO2FBQ3pDLFlBQVksRUFBRTthQUNkLElBQUksQ0FDSCxZQUFZLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQjtTQUNoRSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQW9CO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzVDLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0dBQWdHLENBQUMsQ0FBQztZQUMvRyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBb0I7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUMsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7WUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyw4RkFBOEYsQ0FBQyxDQUFDO1lBQzdHLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFvQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztZQUNuRyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVUsRUFBRSxPQUFlO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsV0FBVyxnQkFBZ0IsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsV0FBVyxnQkFBZ0IsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2YsdURBQXVEO1FBQ3ZELElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRSxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUMvRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsMkVBQTJFO2dCQUMzRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztnQkFDeEMsSUFBSSxPQUFPO29CQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFSyxTQUFTLENBQUMsSUFBdUI7Ozs7O1lBRXJDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhDLElBQUk7Z0JBRUYsd0JBQXdCO2dCQUN4QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRTVELG9EQUFvRDtnQkFDcEQsd0VBQXdFO2dCQUN4RSx5RUFBeUU7Z0JBQ3pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsYUFBYSxDQUFDLE1BQU0sdUNBQXVDLENBQUMsQ0FBQztvQkFDbEgsYUFBYTt3QkFDWCxxQkFBcUI7eUJBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDcEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTSxNQUFNLFlBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JDO2FBQ0Y7WUFDRCxPQUFPLEdBQUcsRUFBRTtnQkFDVix1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QjtvQkFDTztnQkFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUM7S0FBQTtJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFSyxTQUFTLENBQUMsUUFBaUIsRUFBRSxPQUFPLEdBQUcsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDOzs7Ozs7WUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLENBQUMsMkNBQTJDO1lBRXZFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRXRCLElBQUk7Z0JBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFNLFNBQVMsWUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxHQUFHO29CQUFFLE9BQU87Z0JBRWpCLFVBQUksSUFBSSxDQUFDLE1BQU0sMENBQUUsWUFBWSxFQUFFO29CQUM3QixJQUFJO3dCQUNGLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3JDO29CQUNELE9BQU8sR0FBRyxFQUFHO3dCQUNYLHFCQUFxQjt3QkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7cUJBQy9DO2lCQUNGO2dCQUVELE9BQU8sR0FBRyxDQUFDO2FBQ1o7b0JBQ087Z0JBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDeEI7O0tBQ0Y7SUFFRCxPQUFPO1FBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUssU0FBUyxDQUFDLElBQTZCOzs7OztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxzQkFBc0I7WUFDNUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFdBQVcsa0NBQWtDLENBQUMsQ0FBQztnQkFDdEYsT0FBTzthQUNSO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBRXBELHdEQUF3RDtZQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBRXpCLGtCQUFrQjtZQUNsQixNQUFNLEdBQUcsR0FBa0IsTUFBTSxXQUFXLEVBQUUsQ0FBQztZQUUvQywrQkFBK0I7WUFDL0IsSUFBSSxZQUFZLENBQUMsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLElBQUksQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUUxQyx5QkFBeUI7WUFDekIsT0FBTSxnQkFBZ0IsWUFBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtZQUUzRSxxQkFBcUI7WUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRUQsNEJBQTRCO0lBRTVCLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUF2YUYsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVEYXRhU291cmNlLCBUYWJsZUVsZW1lbnQsIFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VudGl0eSwgSUVudGl0eX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7RXJyb3JDb2Rlc30gZnJvbSAnLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NvcnREaXJlY3Rpb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtDb2xsZWN0aW9uVmlld2VyfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtUYWJsZURhdGFTb3VyY2VDb25maWd9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZS9zcmMvYXBwL25neC1tYXRlcmlhbC10YWJsZS90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0VudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRmV0Y2hNb3JlRm4sIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHR9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge2ZpcnN0RmFsc2VQcm9taXNlfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtCZWFucywgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCByZW1vdmVFbmR9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtBcHBUYWJsZVV0aWxzfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7ZW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnlcbiAgPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZUNvbmZpZyB7XG5cbiAgb25Sb3dDcmVhdGVkPzogKHJvdzogVGFibGVFbGVtZW50PFQ+KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbiAgc2F2ZU9ubHlEaXJ0eVJvd3M/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBkYXRhU2VydmljZU9wdGlvbnM/OiBXTyAmIFNPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uud2F0Y2hBbGwoKSBhbmQgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG5cbiAgd2F0Y2hBbGxPcHRpb25zPzogV087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS5zYXZlQWxsKClcbiAgc2F2ZUFsbE9wdGlvbnM/OiBTTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8XG4gIFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPixcbiAgRiA9IGFueSxcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBTTyA9IGFueSxcbiAgViBleHRlbmRzIFZhbGlkYXRvclNlcnZpY2UgPSBWYWxpZGF0b3JTZXJ2aWNlLFxuICBDIGV4dGVuZHMgRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4gPSBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxULCBJRCwgV08sIFNPPixcbiAgPlxuICAgIGV4dGVuZHMgVGFibGVEYXRhU291cmNlPFQsIFYsIEM+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0eU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2RlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY3JlYXRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zYXZpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zdG9wV2F0Y2hpbmckID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcm90ZWN0ZWQgX2ZldGNoTW9yZUZuOiBGZXRjaE1vcmVGbjxMb2FkUmVzdWx0PFQ+PiA9IG51bGw7XG5cbiAgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIGdldCBzZXJ2aWNlT3B0aW9ucygpOiBXTyAmIFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YVNlcnZpY2VPcHRpb25zXG4gICAgICB8fCB7Li4udGhpcy53YXRjaEFsbE9wdGlvbnMsIC4uLnRoaXMuc2F2ZUFsbE9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIHNldCBzZXJ2aWNlT3B0aW9ucyh2YWx1ZTogV08gJiBTTykgIHtcbiAgICBjb25zb2xlLndhcm4oJ2RhdGFTb3VyY2Uuc2VydmljZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCEgUGxlYXNlIHVzZSBcXCd3YXRjaEFsbE9wdGlvbnNcXCcgb3IgXFwnc2F2ZUFsbE9wdGlvbnNcXCcgaW5zdGVhZCcpO1xuICAgIHRoaXMuY29uZmlnLmRhdGFTZXJ2aWNlT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHdhdGNoQWxsT3B0aW9ucygpOiBXTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucztcbiAgfVxuXG4gIHNldCB3YXRjaEFsbE9wdGlvbnModmFsdWU6IFdPKSAge1xuICAgIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNhdmVBbGxPcHRpb25zKCk6IFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2F2ZUFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgc2F2ZUFsbE9wdGlvbnModmFsdWU6IFNPKSAge1xuICAgIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlID09PSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gdW5kZWZpbmVkIChpbml0aWFsIHN0YXRlKVxuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlOyAvLyBTaG91bGQgYmUgdHJ1ZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRhYmxlRGF0YVNvdXJjZSBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBkYXRhc291cmNlIG9mIGBAYW5ndWxhci9jZGtgIGRhdGEtdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhU2VydmljZSBBIHNlcnZpY2UgdG8gbG9hZCBhbmQgc2F2ZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUeXBlIG9mIGRhdGEgY29udGFpbmVkIGJ5IHRoZSBUYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlbiBgZGF0YWAgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSB2YWxpZGF0b3JTZXJ2aWNlIFNlcnZpY2UgdGhhdCBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBGb3JtR3JvdXAgdXNlZCB0byB2YWxpZGF0ZSByb3cgZmllbGRzLlxuICAgKiBAcGFyYW0gY29uZmlnIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGFibGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICAgICAgICAgICAgdmFsaWRhdG9yU2VydmljZT86IFYsXG4gICAgICAgICAgICAgIG9wdGlvbnM/OiBDKSB7XG4gICAgc3VwZXIoW10sIGRhdGFUeXBlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICBrZWVwT3JpZ2luYWxEYXRhQWZ0ZXJDb25maXJtOiBmYWxzZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHNhdmVPbmx5RGlydHlSb3dzOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcblxuICAgIHRoaXMuX2VudGl0eU5hbWUgPSByZW1vdmVFbmQoKG5ldyBkYXRhVHlwZSgpKS5fX3R5cGVuYW1lIHx8ICdVbmtub3duVk8nLCAnVk8nKTtcbiAgICB0aGlzLl9kZWJ1ZyA9IG9wdGlvbnM/LnN1cHByZXNzRXJyb3JzID09PSBmYWxzZSAmJiAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdG9wV2F0Y2hpbmckLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMuc2VydmljZU9wdGlvbnMgYXMgV08pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsICdFUlJPUi5MT0FEX0RBVEFfRVJST1InKSksXG4gICAgICAgIG1hcCgocmVzOiBMb2FkUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbdGFibGUtZGF0YXNvdXJjZV0gUmVjZWl2ZWQgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIChmcm9tIHNlcnZpY2UpLCBidXQgc3RpbGwgc2F2aW5nOiBza2lwYCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1NvbWVFZGl0aW5nUm93KCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW3RhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSwgd2hpbGUgc29tZSByb3cgc3RpbGwgZWRpdGluZzogc2tpcDsgUGxlYXNlIGNoZWNrIHNhdmUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdGFibGUhYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZSgocmVzLmRhdGEgfHwgW10pIGFzIFRbXSk7XG4gICAgICAgICAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBTdG9wIHRoaXMgcGlwZSBuZXh0IHRpbWUgd2UgY2FsbCB3YXRjaEFsbCgpXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdG9wV2F0Y2hpbmckKVxuICAgICAgICAvLyDimqAgTm90aWNlOiBEb24ndCBwdXQgYW55IG9wZXJhdG9yIGFmdGVyIHRha2VVbnRpbCB0byBhdm9pZCBwb3RlbnRpYWwgc3Vic2NyaXB0aW9uIGxlYWtzXG4gICAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSkge1xuICAgIC8vIEF2b2lkIHRvIHVwZGF0ZSBkYXRhU291cmNlU3ViamVjdCwgd2hlbiBub3QgbmVlZFxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2VTdWJqZWN0Lm9ic2VydmVycz8ubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnLnN1cHByZXNzRXJyb3JzKSBjb25zb2xlLndhcm4oJ1t0YWJsZS1kYXRhc291cmNlXSBVcGRhdGUgZGF0YXNvdXJjZSBzdWJqZWN0LiBQbGVhc2UgcHJlZmVyIHVzaW5nIFxcJ3Jvd3NTdWJqZWN0XFwnIGluc3RlYWQgb2YgXFwnZGF0YXNvdXJjZVN1YmplY3RcXCcnKTtcbiAgICAgIHN1cGVyLnVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbdGFibGUtZGF0YXNvdXJjZV0gU2tpcHBpbmcgZGF0YXNvdXJjZVN1YmplY3QgdXBkYXRlIChub3QgdXNlZCB5ZXQpLicpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWRPbmx5KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbdGFibGUtZGF0YXNvdXJjZV0gRW5hYmxlIHRvIHNhdmUsIGJlY2F1c2UgY29uZmlnLnJlYWRPbmx5PXRydWUnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2F2aW5nIHR3aWNlIChzaG91bGQgbmV2ZXIgb2NjdXIpXG4gICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFibGUtZGF0YXNvdXJjZV0gVHJ5aW5nIHRvIHNhdmUgJHt0aGlzLl9lbnRpdHlOYW1lfSByb3dzIHR3aWNlLiBTa2lwYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IG9ubHlEaXJ0eVJvd3MgPSB0aGlzLmNvbmZpZy5zYXZlT25seURpcnR5Um93cztcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFt0YWJsZS1kYXRhc291cmNlXSBTYXZpbmcgJHt0aGlzLl9lbnRpdHlOYW1lfSByb3dzLi4uIHtvbmx5RGlydHlSb3dzOiAke29ubHlEaXJ0eVJvd3N9fWApO1xuXG4gICAgICAvLyBHZXQgYWxsIHJvd3NcbiAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcblxuICAgICAgLy8gRmluaXNoIGVkaXRpbmcgYWxsIHJvd3NcbiAgICAgIGNvbnN0IGludmFsaWRSb3dzID0gcm93cy5maWx0ZXIocm93ID0+IHJvdy5lZGl0aW5nICYmICFyb3cuY29uZmlybUVkaXRDcmVhdGUoKSk7XG5cbiAgICAgIC8vIENhbm5vdCBmaW5pc2ggc29tZSByb3dzOiBlcnJvclxuICAgICAgaWYgKGludmFsaWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAvLyBsb2cgZXJyb3JzXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgaW52YWxpZFJvd3MuZm9yRWFjaChyb3cgPT4gQXBwVGFibGVVdGlscy5sb2dSb3dFcnJvcnMocm93LCBgW3RhYmxlLWRhdGFzb3VyY2VdICR7dGhpcy5fZW50aXR5TmFtZX0gcm93ICMke3Jvdy5pZH1gKSk7XG4gICAgICAgIC8vIFN0b3Agd2l0aCBhbiBlcnJvclxuICAgICAgICB0aHJvdyB7Y29kZTogRXJyb3JDb2Rlcy5UQUJMRV9JTlZBTElEX1JPV19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLlRBQkxFX0lOVkFMSURfUk9XX0VSUk9SJ307XG4gICAgICB9XG5cbiAgICAgIGxldCBkYXRhOiBUW107XG4gICAgICBsZXQgZGF0YVRvU2F2ZTogVFtdO1xuXG4gICAgICBpZiAodGhpcy52YWxpZGF0b3JTZXJ2aWNlKSB7XG4gICAgICAgIGRhdGFUb1NhdmUgPSBbXTtcbiAgICAgICAgZGF0YSA9IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBuZXcgdGhpcy5kYXRhQ29uc3RydWN0b3IoKSBhcyBUO1xuICAgICAgICAgIGN1cnJlbnREYXRhLmZyb21PYmplY3Qocm93LmN1cnJlbnREYXRhKTtcbiAgICAgICAgICAvLyBGaWx0ZXIgdG8ga2VlcCBvbmx5IGRpcnR5IHJvd1xuICAgICAgICAgIGlmIChvbmx5RGlydHlSb3dzICYmIHJvdy52YWxpZGF0b3IuZGlydHkpIGRhdGFUb1NhdmUucHVzaChjdXJyZW50RGF0YSk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRhO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFvbmx5RGlydHlSb3dzKSBkYXRhVG9TYXZlID0gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIE9yIHVzZSB0aGUgY3VycmVudCBkYXRhIHdpdGhvdXQgY29udmVyc2lvbiAod2hlbiBubyB2YWxpZGF0b3Igc2VydmljZSB1c2VkKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSByb3dzLm1hcChyb3cgPT4gcm93LmN1cnJlbnREYXRhKTtcbiAgICAgICAgLy8gc2F2ZSBhbGwgZGF0YSwgYXMgd2UgZG9uJ3QgaGF2ZSBhbnkgZGlydHkgbWFya2VyXG4gICAgICAgIGRhdGFUb1NhdmUgPSBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBkYXRhIHRvIHNhdmU6IGV4aXRcbiAgICAgIGlmIChvbmx5RGlydHlSb3dzICYmICFkYXRhVG9TYXZlLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFt0YWJsZS1kYXRhc291cmNlXSBObyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEgdG8gc2F2ZS4gU2tpcGApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIEFza2luZyBzZXJ2aWNlIHRvIHNhdmUgdGhpcyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGE6YCwgZGF0YVRvU2F2ZSk7XG4gICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVBbGwoZGF0YVRvU2F2ZSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIFNhdmluZyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEgW09LXWApO1xuXG4gICAgICAvLyBMUCAyMy8wMy8yMDIxOiB1cGRhdGUgZGF0YXNvdXJjZSBpcyBuZWNlc3NhcnkgYnV0IGNhbiBiZSBjaGFuZ2VkIHRvIGEgcmVmZXRjaCgpIG9uIFF1ZXJ5UmVmIChtdXN0IGJlIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgaW4gR3JhcGhxbFNlcnZpY2Uud2F0Y2hRdWVyeSlcbiAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZShkYXRhLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmVycm9yKCdbdGFibGUtZGF0YXNvdXJjZV0gRXJyb3Igd2hpbGUgc2F2aW5nOiAnICsgZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGFzb3VyY2UoZGF0YTogVFtdLCBvcHRzPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIFVwZGF0aW5nIGRhdGFzb3VyY2Ugd2l0aCBkYXRhOmAsIGRhdGEpO1xuXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZShkYXRhLCBvcHRzKTtcblxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUYWJsZUVsZW1lbnQ8VD5bXSB8IFJlYWRvbmx5QXJyYXk8VGFibGVFbGVtZW50PFQ+Pj4ge1xuICAgIC8vIERFQlVHIGNvbnNvbGUuZGVidWcoXCJbZW50aXRpZXMtZGF0YXNvdXJjZV0gY29ubmVjdFwiKTtcbiAgICByZXR1cm4gc3VwZXIuY29ubmVjdChjb2xsZWN0aW9uVmlld2VyKTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcj86IENvbGxlY3Rpb25WaWV3ZXIpIHtcbiAgICBzdXBlci5kaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICB9XG5cbiAgd2FpdElkbGUoZGVib3VuY2VUaW1lTXM/OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaXJzdEZhbHNlUHJvbWlzZSh0aGlzLmxvYWRpbmdTdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2VUaW1lTXMgfHwgMTAwKSAvLyBpZiBub3Qgc3RhcnRlZCB5ZXQsIHdhaXRcbiAgICAgICkpO1xuICB9XG5cbiAgY29uZmlybUNyZWF0ZShyb3c6IFRhYmxlRWxlbWVudDxUPikge1xuICAgIGlmICghc3VwZXIuY29uZmlybUNyZWF0ZShyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3RhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1DcmVhdGUoKSEgRm9yY2UgZWRpdGluZyB0byBmYWxzZScpO1xuICAgICAgcm93LnZhbGlkYXRvci5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbmZpcm1FZGl0KHJvdzogVGFibGVFbGVtZW50PFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5jb25maXJtRWRpdChyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3RhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1FZGl0KCkhIEZvcmNlIGVkaXRpbmcgdG8gZmFsc2UnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGFydEVkaXQocm93OiBUYWJsZUVsZW1lbnQ8VD4pOiBib29sZWFuIHtcbiAgICBpZiAoIXN1cGVyLnN0YXJ0RWRpdChyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1t0YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiBmYWxzZX0gYWZ0ZXIgc3RhcnRFZGl0KCkhIEZvcmNlIGVkaXRpbmcnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZW5hYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBhbnksIG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgfHwgZXJyb3JNc2cpO1xuICB9XG5cbiAgaGFuZGxlU2VydmljZUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3I7XG4gICAgY29uc29sZS5lcnJvcihgW3RhYmxlLWRhdGFzb3VyY2VdIFNlcnZpY2UgJHt0aGlzLl9lbnRpdHlOYW1lfSBzZW50IGVycm9yOiAke2Vycm9yTXNnfWAsIGVycm9yKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBJZiBuZXcgcm93OiBub3QgbmVlZCB0byBwcm9wYWdhdGUgdG8gdGhlIGRhdGFTZXJ2aWNlXG4gICAgaWYgKGlkID09PSAtMSkge1xuICAgICAgcmV0dXJuIHN1cGVyLmRlbGV0ZShpZCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaWQpO1xuICAgIGlmICghcm93KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdGFibGUtZGF0YXNvdXJjZV0gUm93IHRvIGRlbGV0ZSB3aXRoIGlkPSR7aWR9IG5vdCBmb3VuZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoW3Jvdy5jdXJyZW50RGF0YV0sIHRoaXMuc2VydmljZU9wdGlvbnMpXG4gICAgICAuY2F0Y2goZXJyID0+IHRoaXMuaGFuZGxlU2VydmljZUVycm9yKGVycikpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIG1ha2Ugc3VyZSByb3cgaGFzIGJlZW4gZGVsZXRlZCAoYmVjYXVzZSBHcmFwUUhsIGNhY2hlIHJlbW92ZSBjYW4gZmFpbGVkKVxuICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLmdldFJvdyhpZCkgPT09IHJvdztcbiAgICAgICAgICBpZiAocHJlc2VudCkgc3VwZXIuZGVsZXRlKGlkKTtcblxuICAgICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSk6IFByb21pc2U8YW55PiB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFGcm9tUm93cyhyb3dzKTtcblxuICAgIHRyeSB7XG5cbiAgICAgIC8vIENhbGwgc2VydmljZSBkZWxldGlvblxuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoZGF0YSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIC8vIFdvcmthcm91bmQsIHRvIGJlIHN1cmUgYWxsIHJvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgIC8vIFNvbWV0aW1lcywgdGhlIHNlcnZpY2UgbWlzcyBkZWxldGlvbiwgb3IgR3JhcFFIbCBjYWNoZSByZW1vdmUgZmFpbGVkLlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCBhcHBseSBtaXNzaW5nIGRlbGV0aW9uIHVzaW5nIHRoZSBzdXBlci5kZWxldGUoKSBmdW5jdGlvblxuICAgICAgY29uc3Qgcm93Tm90RGVsZXRlZCA9IHRoaXMuZ2V0Um93cygpLmZpbHRlcihyb3dzLmluY2x1ZGVzKTtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkocm93Tm90RGVsZXRlZCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBbdGFibGUtZGF0YXNvdXJjZV0gRm9yY2UgZGVsZXRpb24gb2YgJHtyb3dOb3REZWxldGVkLmxlbmd0aH0gcm93cyAoSXMgc2VydmljZSB1cGRhdGUgdGhlIGNhY2hlID8pYCk7XG4gICAgICAgIHJvd05vdERlbGV0ZWRcbiAgICAgICAgICAvLyBTdGFydCBmcm9tIHRoZSBlbmRcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pZCA+IGIuaWQgPyAtMSA6IDEpXG4gICAgICAgICAgLmZvckVhY2gociA9PiBzdXBlci5kZWxldGUoci5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBIYW5kbGUgc2VydmljZSBlcnJvclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdyhpZDogbnVtYmVyKTogVGFibGVFbGVtZW50PFQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0Um93KGlkKTtcbiAgfVxuXG4gIGdldFJvd3MoKTogVGFibGVFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiB0aGlzLnJvd3NTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICBoYXNTb21lRWRpdGluZ1JvdygpIHtcbiAgICByZXR1cm4gKHRoaXMucm93c1N1YmplY3QudmFsdWUgfHwgW10pLnNvbWUocm93ID0+IHJvdy5lZGl0aW5nKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU5ldyhpbnNlcnRBdD86IG51bWJlciwgb3B0aW9ucyA9IHtlZGl0aW5nOiB0cnVlfSk6IFByb21pc2U8VGFibGVFbGVtZW50PFQ+fHVuZGVmaW5lZD4ge1xuICAgIGlmICh0aGlzLl9jcmVhdGluZykgcmV0dXJuOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsIChzaG91bGQgbmV2ZXIgb2NjdXIpXG5cbiAgICB0aGlzLl9jcmVhdGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc3VwZXIuY3JlYXRlTmV3KGluc2VydEF0LCBvcHRpb25zKTtcbiAgICAgIGlmICghcm93KSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25Sb3dDcmVhdGVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25Sb3dDcmVhdGVkKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikgIHtcbiAgICAgICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLl9jcmVhdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGEoKTogVFtdIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZyb21Sb3dzKHJvd3MpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNb3JlKG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9mZXRjaE1vcmVGbikgcmV0dXJuIGZhbHNlOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsXG4gICAgaWYgKHRoaXMuaGFzU29tZUVkaXRpbmdSb3coKSkge1xuICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZmV0Y2ggbW9yZSAke3RoaXMuX2VudGl0eU5hbWV9IGJlY2F1c2Ugc29tZSByb3cpIHN0aWxsIGVkaXRpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgV2lsbCBmZXRjaGluZyBtb3JlIHJvdyhzKSBzdGlsbC4uLmApO1xuXG4gICAgLy8gRm9yZ2V0IHRoZSBmZXRjaE1vcmUgZnVuY3Rpb24sIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBjb25zdCBmZXRjaE1vcmVGbiA9IHRoaXMuX2ZldGNoTW9yZUZuO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcblxuICAgIC8vIEZldGNoIG5leHQgcGFnZVxuICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IGF3YWl0IGZldGNoTW9yZUZuKCk7XG5cbiAgICAvLyBTa2lwIGlmIGVtcHR5IChubyBtb3JlIGRhdGEpXG4gICAgaWYgKGlzRW1wdHlBcnJheShyZXM/LmRhdGEpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc291cmNlXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZSgodGhpcy5jdXJyZW50RGF0YSB8fCBbXSkuY29uY2F0KC4uLnJlcy5kYXRhKSwgb3B0cyk7XG5cbiAgICAvLyBSZW1lbWJlciBmZXRjaE1vcmVcbiAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgbWFya0FzTG9hZGluZygpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFpQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQVEsWUFBWSxFQUFFLGVBQWUsRUFBWSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQXlCOUQsV0FBVztBQUVYLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sdUJBU1QsU0FBUSxlQUF3QjtJQXFEbEM7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLFFBQW9CLEVBQ0osV0FBdUMsRUFDdkQsZ0JBQW9CLEVBQ3BCLE9BQVc7UUFDckIsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLGtCQUNsQyw0QkFBNEIsRUFBRSxLQUFLLEVBQ25DLFFBQVEsRUFBRSxLQUFLLEVBQ2YsaUJBQWlCLEVBQUUsS0FBSyxJQUNyQixPQUFPLEVBQ1YsQ0FBQztRQVJ1QixnQkFBVyxHQUFY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LElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBRXpCLGtCQUFrQjtZQUNsQixNQUFNLEdBQUcsR0FBa0IsTUFBTSxXQUFXLEVBQUUsQ0FBQztZQUUvQywrQkFBK0I7WUFDL0IsSUFBSSxZQUFZLENBQUMsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLElBQUksQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUUxQyx5QkFBeUI7WUFDekIsT0FBTSxnQkFBZ0IsWUFBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtZQUUzRSxxQkFBcUI7WUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRUQsNEJBQTRCO0lBRTVCLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7WUF2YUYsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVEYXRhU291cmNlLCBUYWJsZUVsZW1lbnQsIFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VudGl0eSwgSUVudGl0eX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7RXJyb3JDb2Rlc30gZnJvbSAnLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NvcnREaXJlY3Rpb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtDb2xsZWN0aW9uVmlld2VyfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtUYWJsZURhdGFTb3VyY2VDb25maWd9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZS9zcmMvYXBwL25neC1tYXRlcmlhbC10YWJsZS90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0VudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRmV0Y2hNb3JlRm4sIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHR9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge2ZpcnN0RmFsc2VQcm9taXNlfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtCZWFucywgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCByZW1vdmVFbmR9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtBcHBUYWJsZVV0aWxzfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7ZW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnlcbiAgPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZUNvbmZpZyB7XG5cbiAgb25Sb3dDcmVhdGVkPzogKHJvdzogVGFibGVFbGVtZW50PFQ+KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbiAgc2F2ZU9ubHlEaXJ0eVJvd3M/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBkYXRhU2VydmljZU9wdGlvbnM/OiBXTyAmIFNPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uud2F0Y2hBbGwoKSBhbmQgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG5cbiAgd2F0Y2hBbGxPcHRpb25zPzogV087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS5zYXZlQWxsKClcbiAgc2F2ZUFsbE9wdGlvbnM/OiBTTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8XG4gIFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPixcbiAgRiA9IGFueSxcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBTTyA9IGFueSxcbiAgViBleHRlbmRzIFZhbGlkYXRvclNlcnZpY2UgPSBWYWxpZGF0b3JTZXJ2aWNlLFxuICBDIGV4dGVuZHMgRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4gPSBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxULCBJRCwgV08sIFNPPixcbiAgPlxuICAgIGV4dGVuZHMgVGFibGVEYXRhU291cmNlPFQsIFYsIEM+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0eU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2RlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY3JlYXRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zYXZpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zdG9wV2F0Y2hpbmckID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcm90ZWN0ZWQgX2ZldGNoTW9yZUZuOiBGZXRjaE1vcmVGbjxMb2FkUmVzdWx0PFQ+PiA9IG51bGw7XG5cbiAgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIGdldCBzZXJ2aWNlT3B0aW9ucygpOiBXTyAmIFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YVNlcnZpY2VPcHRpb25zXG4gICAgICB8fCB7Li4udGhpcy53YXRjaEFsbE9wdGlvbnMsIC4uLnRoaXMuc2F2ZUFsbE9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIHNldCBzZXJ2aWNlT3B0aW9ucyh2YWx1ZTogV08gJiBTTykgIHtcbiAgICBjb25zb2xlLndhcm4oJ2RhdGFTb3VyY2Uuc2VydmljZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCEgUGxlYXNlIHVzZSBcXCd3YXRjaEFsbE9wdGlvbnNcXCcgb3IgXFwnc2F2ZUFsbE9wdGlvbnNcXCcgaW5zdGVhZCcpO1xuICAgIHRoaXMuY29uZmlnLmRhdGFTZXJ2aWNlT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHdhdGNoQWxsT3B0aW9ucygpOiBXTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucztcbiAgfVxuXG4gIHNldCB3YXRjaEFsbE9wdGlvbnModmFsdWU6IFdPKSAge1xuICAgIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNhdmVBbGxPcHRpb25zKCk6IFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2F2ZUFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgc2F2ZUFsbE9wdGlvbnModmFsdWU6IFNPKSAge1xuICAgIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlID09PSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gdW5kZWZpbmVkIChpbml0aWFsIHN0YXRlKVxuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlOyAvLyBTaG91bGQgYmUgdHJ1ZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRhYmxlRGF0YVNvdXJjZSBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBkYXRhc291cmNlIG9mIGBAYW5ndWxhci9jZGtgIGRhdGEtdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhU2VydmljZSBBIHNlcnZpY2UgdG8gbG9hZCBhbmQgc2F2ZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUeXBlIG9mIGRhdGEgY29udGFpbmVkIGJ5IHRoZSBUYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlbiBgZGF0YWAgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSB2YWxpZGF0b3JTZXJ2aWNlIFNlcnZpY2UgdGhhdCBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBGb3JtR3JvdXAgdXNlZCB0byB2YWxpZGF0ZSByb3cgZmllbGRzLlxuICAgKiBAcGFyYW0gY29uZmlnIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGFibGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICAgICAgICAgICAgdmFsaWRhdG9yU2VydmljZT86IFYsXG4gICAgICAgICAgICAgIG9wdGlvbnM/OiBDKSB7XG4gICAgc3VwZXIoW10sIGRhdGFUeXBlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICBrZWVwT3JpZ2luYWxEYXRhQWZ0ZXJDb25maXJtOiBmYWxzZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHNhdmVPbmx5RGlydHlSb3dzOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcblxuICAgIHRoaXMuX2VudGl0eU5hbWUgPSByZW1vdmVFbmQoKG5ldyBkYXRhVHlwZSgpKS5fX3R5cGVuYW1lIHx8ICdVbmtub3duVk8nLCAnVk8nKTtcbiAgICB0aGlzLl9kZWJ1ZyA9IG9wdGlvbnM/LnN1cHByZXNzRXJyb3JzID09PSBmYWxzZSAmJiAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdG9wV2F0Y2hpbmckLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMuc2VydmljZU9wdGlvbnMgYXMgV08pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsICdFUlJPUi5MT0FEX0RBVEFfRVJST1InKSksXG4gICAgICAgIG1hcCgocmVzOiBMb2FkUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbdGFibGUtZGF0YXNvdXJjZV0gUmVjZWl2ZWQgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIChmcm9tIHNlcnZpY2UpLCBidXQgc3RpbGwgc2F2aW5nOiBza2lwYCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1NvbWVFZGl0aW5nUm93KCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW3RhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSwgd2hpbGUgc29tZSByb3cgc3RpbGwgZWRpdGluZzogc2tpcDsgUGxlYXNlIGNoZWNrIHNhdmUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdGFibGUhYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZSgocmVzLmRhdGEgfHwgW10pIGFzIFRbXSk7XG4gICAgICAgICAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBTdG9wIHRoaXMgcGlwZSBuZXh0IHRpbWUgd2UgY2FsbCB3YXRjaEFsbCgpXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdG9wV2F0Y2hpbmckKVxuICAgICAgICAvLyDimqAgTm90aWNlOiBEb24ndCBwdXQgYW55IG9wZXJhdG9yIGFmdGVyIHRha2VVbnRpbCB0byBhdm9pZCBwb3RlbnRpYWwgc3Vic2NyaXB0aW9uIGxlYWtzXG4gICAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSkge1xuICAgIC8vIEF2b2lkIHRvIHVwZGF0ZSBkYXRhU291cmNlU3ViamVjdCwgd2hlbiBub3QgbmVlZFxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2VTdWJqZWN0Lm9ic2VydmVycz8ubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnLnN1cHByZXNzRXJyb3JzKSBjb25zb2xlLndhcm4oJ1t0YWJsZS1kYXRhc291cmNlXSBVcGRhdGUgZGF0YXNvdXJjZSBzdWJqZWN0LiBQbGVhc2UgcHJlZmVyIHVzaW5nIFxcJ3Jvd3NTdWJqZWN0XFwnIGluc3RlYWQgb2YgXFwnZGF0YXNvdXJjZVN1YmplY3RcXCcnKTtcbiAgICAgIHN1cGVyLnVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbdGFibGUtZGF0YXNvdXJjZV0gU2tpcHBpbmcgZGF0YXNvdXJjZVN1YmplY3QgdXBkYXRlIChub3QgdXNlZCB5ZXQpLicpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWRPbmx5KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbdGFibGUtZGF0YXNvdXJjZV0gRW5hYmxlIHRvIHNhdmUsIGJlY2F1c2UgY29uZmlnLnJlYWRPbmx5PXRydWUnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2F2aW5nIHR3aWNlIChzaG91bGQgbmV2ZXIgb2NjdXIpXG4gICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFibGUtZGF0YXNvdXJjZV0gVHJ5aW5nIHRvIHNhdmUgJHt0aGlzLl9lbnRpdHlOYW1lfSByb3dzIHR3aWNlLiBTa2lwYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IG9ubHlEaXJ0eVJvd3MgPSB0aGlzLmNvbmZpZy5zYXZlT25seURpcnR5Um93cztcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFt0YWJsZS1kYXRhc291cmNlXSBTYXZpbmcgJHt0aGlzLl9lbnRpdHlOYW1lfSByb3dzLi4uIHtvbmx5RGlydHlSb3dzOiAke29ubHlEaXJ0eVJvd3N9fWApO1xuXG4gICAgICAvLyBHZXQgYWxsIHJvd3NcbiAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcblxuICAgICAgLy8gRmluaXNoIGVkaXRpbmcgYWxsIHJvd3NcbiAgICAgIGNvbnN0IGludmFsaWRSb3dzID0gcm93cy5maWx0ZXIocm93ID0+IHJvdy5lZGl0aW5nICYmICFyb3cuY29uZmlybUVkaXRDcmVhdGUoKSk7XG5cbiAgICAgIC8vIENhbm5vdCBmaW5pc2ggc29tZSByb3dzOiBlcnJvclxuICAgICAgaWYgKGludmFsaWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAvLyBsb2cgZXJyb3JzXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgaW52YWxpZFJvd3MuZm9yRWFjaChyb3cgPT4gQXBwVGFibGVVdGlscy5sb2dSb3dFcnJvcnMocm93LCBgW3RhYmxlLWRhdGFzb3VyY2VdICR7dGhpcy5fZW50aXR5TmFtZX0gcm93ICMke3Jvdy5pZH1gKSk7XG4gICAgICAgIC8vIFN0b3Agd2l0aCBhbiBlcnJvclxuICAgICAgICB0aHJvdyB7Y29kZTogRXJyb3JDb2Rlcy5UQUJMRV9JTlZBTElEX1JPV19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLlRBQkxFX0lOVkFMSURfUk9XX0VSUk9SJ307XG4gICAgICB9XG5cbiAgICAgIGxldCBkYXRhOiBUW107XG4gICAgICBsZXQgZGF0YVRvU2F2ZTogVFtdO1xuXG4gICAgICBpZiAodGhpcy52YWxpZGF0b3JTZXJ2aWNlKSB7XG4gICAgICAgIGRhdGFUb1NhdmUgPSBbXTtcbiAgICAgICAgZGF0YSA9IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBuZXcgdGhpcy5kYXRhQ29uc3RydWN0b3IoKSBhcyBUO1xuICAgICAgICAgIGN1cnJlbnREYXRhLmZyb21PYmplY3Qocm93LmN1cnJlbnREYXRhKTtcbiAgICAgICAgICAvLyBGaWx0ZXIgdG8ga2VlcCBvbmx5IGRpcnR5IHJvd1xuICAgICAgICAgIGlmIChvbmx5RGlydHlSb3dzICYmIHJvdy52YWxpZGF0b3IuZGlydHkpIGRhdGFUb1NhdmUucHVzaChjdXJyZW50RGF0YSk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRhO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFvbmx5RGlydHlSb3dzKSBkYXRhVG9TYXZlID0gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIE9yIHVzZSB0aGUgY3VycmVudCBkYXRhIHdpdGhvdXQgY29udmVyc2lvbiAod2hlbiBubyB2YWxpZGF0b3Igc2VydmljZSB1c2VkKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSByb3dzLm1hcChyb3cgPT4gcm93LmN1cnJlbnREYXRhKTtcbiAgICAgICAgLy8gc2F2ZSBhbGwgZGF0YSwgYXMgd2UgZG9uJ3QgaGF2ZSBhbnkgZGlydHkgbWFya2VyXG4gICAgICAgIGRhdGFUb1NhdmUgPSBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBkYXRhIHRvIHNhdmU6IGV4aXRcbiAgICAgIGlmIChvbmx5RGlydHlSb3dzICYmICFkYXRhVG9TYXZlLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFt0YWJsZS1kYXRhc291cmNlXSBObyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEgdG8gc2F2ZS4gU2tpcGApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIEFza2luZyBzZXJ2aWNlIHRvIHNhdmUgdGhpcyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGE6YCwgZGF0YVRvU2F2ZSk7XG4gICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVBbGwoZGF0YVRvU2F2ZSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIFNhdmluZyAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEgW09LXWApO1xuXG4gICAgICAvLyBMUCAyMy8wMy8yMDIxOiB1cGRhdGUgZGF0YXNvdXJjZSBpcyBuZWNlc3NhcnkgYnV0IGNhbiBiZSBjaGFuZ2VkIHRvIGEgcmVmZXRjaCgpIG9uIFF1ZXJ5UmVmIChtdXN0IGJlIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgaW4gR3JhcGhxbFNlcnZpY2Uud2F0Y2hRdWVyeSlcbiAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZShkYXRhLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmVycm9yKCdbdGFibGUtZGF0YXNvdXJjZV0gRXJyb3Igd2hpbGUgc2F2aW5nOiAnICsgZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGFzb3VyY2UoZGF0YTogVFtdLCBvcHRzPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW3RhYmxlLWRhdGFzb3VyY2VdIFVwZGF0aW5nIGRhdGFzb3VyY2Ugd2l0aCBkYXRhOmAsIGRhdGEpO1xuXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZShkYXRhLCBvcHRzKTtcblxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUYWJsZUVsZW1lbnQ8VD5bXSB8IFJlYWRvbmx5QXJyYXk8VGFibGVFbGVtZW50PFQ+Pj4ge1xuICAgIC8vIERFQlVHIGNvbnNvbGUuZGVidWcoXCJbZW50aXRpZXMtZGF0YXNvdXJjZV0gY29ubmVjdFwiKTtcbiAgICByZXR1cm4gc3VwZXIuY29ubmVjdChjb2xsZWN0aW9uVmlld2VyKTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcj86IENvbGxlY3Rpb25WaWV3ZXIpIHtcbiAgICBzdXBlci5kaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICAgIHRoaXMuX3N0b3BXYXRjaGluZyQubmV4dCgpO1xuICB9XG5cbiAgd2FpdElkbGUoZGVib3VuY2VUaW1lTXM/OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaXJzdEZhbHNlUHJvbWlzZSh0aGlzLmxvYWRpbmdTdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2VUaW1lTXMgfHwgMTAwKSAvLyBpZiBub3Qgc3RhcnRlZCB5ZXQsIHdhaXRcbiAgICAgICkpO1xuICB9XG5cbiAgY29uZmlybUNyZWF0ZShyb3c6IFRhYmxlRWxlbWVudDxUPikge1xuICAgIGlmICghc3VwZXIuY29uZmlybUNyZWF0ZShyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3RhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1DcmVhdGUoKSEgRm9yY2UgZWRpdGluZyB0byBmYWxzZScpO1xuICAgICAgcm93LnZhbGlkYXRvci5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbmZpcm1FZGl0KHJvdzogVGFibGVFbGVtZW50PFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5jb25maXJtRWRpdChyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3RhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1FZGl0KCkhIEZvcmNlIGVkaXRpbmcgdG8gZmFsc2UnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGFydEVkaXQocm93OiBUYWJsZUVsZW1lbnQ8VD4pOiBib29sZWFuIHtcbiAgICBpZiAoIXN1cGVyLnN0YXJ0RWRpdChyb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1t0YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiBmYWxzZX0gYWZ0ZXIgc3RhcnRFZGl0KCkhIEZvcmNlIGVkaXRpbmcnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZW5hYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBhbnksIG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgfHwgZXJyb3JNc2cpO1xuICB9XG5cbiAgaGFuZGxlU2VydmljZUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3I7XG4gICAgY29uc29sZS5lcnJvcihgW3RhYmxlLWRhdGFzb3VyY2VdIFNlcnZpY2UgJHt0aGlzLl9lbnRpdHlOYW1lfSBzZW50IGVycm9yOiAke2Vycm9yTXNnfWAsIGVycm9yKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBJZiBuZXcgcm93OiBub3QgbmVlZCB0byBwcm9wYWdhdGUgdG8gdGhlIGRhdGFTZXJ2aWNlXG4gICAgaWYgKGlkID09PSAtMSkge1xuICAgICAgcmV0dXJuIHN1cGVyLmRlbGV0ZShpZCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaWQpO1xuICAgIGlmICghcm93KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdGFibGUtZGF0YXNvdXJjZV0gUm93IHRvIGRlbGV0ZSB3aXRoIGlkPSR7aWR9IG5vdCBmb3VuZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoW3Jvdy5jdXJyZW50RGF0YV0sIHRoaXMuc2VydmljZU9wdGlvbnMpXG4gICAgICAuY2F0Y2goZXJyID0+IHRoaXMuaGFuZGxlU2VydmljZUVycm9yKGVycikpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIG1ha2Ugc3VyZSByb3cgaGFzIGJlZW4gZGVsZXRlZCAoYmVjYXVzZSBHcmFwUUhsIGNhY2hlIHJlbW92ZSBjYW4gZmFpbGVkKVxuICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLmdldFJvdyhpZCkgPT09IHJvdztcbiAgICAgICAgICBpZiAocHJlc2VudCkgc3VwZXIuZGVsZXRlKGlkKTtcblxuICAgICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSk6IFByb21pc2U8YW55PiB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFGcm9tUm93cyhyb3dzKTtcblxuICAgIHRyeSB7XG5cbiAgICAgIC8vIENhbGwgc2VydmljZSBkZWxldGlvblxuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoZGF0YSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIC8vIFdvcmthcm91bmQsIHRvIGJlIHN1cmUgYWxsIHJvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgIC8vIFNvbWV0aW1lLCB0aGUgc2VydmljZSBtaXNzIGRlbGV0aW9uLCBvciBHcmFwaFFsIGNhY2hlIHJlbW92ZSBmYWlsZWQuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGFwcGx5IG1pc3NpbmcgZGVsZXRpb24gdXNpbmcgdGhlIHN1cGVyLmRlbGV0ZSgpIGZ1bmN0aW9uXG4gICAgICBjb25zdCByb3dOb3REZWxldGVkID0gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvd3MuaW5jbHVkZXMpO1xuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShyb3dOb3REZWxldGVkKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFt0YWJsZS1kYXRhc291cmNlXSBGb3JjZSBkZWxldGlvbiBvZiAke3Jvd05vdERlbGV0ZWQubGVuZ3RofSByb3dzISBQbGVhc2UgY2hlY2sgdGhhdCBkYXRhIHNlcnZpY2UgdXBkYXRlIHRoZSBjYWNoZSwgYWZ0ZXIgZGVsZXRpb25gKTtcbiAgICAgICAgcm93Tm90RGVsZXRlZFxuICAgICAgICAgIC8vIFN0YXJ0IGF0IHRoZSBlbmRcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pZCA+IGIuaWQgPyAtMSA6IDEpXG4gICAgICAgICAgLmZvckVhY2gociA9PiBzdXBlci5kZWxldGUoci5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBIYW5kbGUgc2VydmljZSBlcnJvclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdyhpZDogbnVtYmVyKTogVGFibGVFbGVtZW50PFQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0Um93KGlkKTtcbiAgfVxuXG4gIGdldFJvd3MoKTogVGFibGVFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiB0aGlzLnJvd3NTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICBoYXNTb21lRWRpdGluZ1JvdygpIHtcbiAgICByZXR1cm4gKHRoaXMucm93c1N1YmplY3QudmFsdWUgfHwgW10pLnNvbWUocm93ID0+IHJvdy5lZGl0aW5nKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU5ldyhpbnNlcnRBdD86IG51bWJlciwgb3B0aW9ucyA9IHtlZGl0aW5nOiB0cnVlfSk6IFByb21pc2U8VGFibGVFbGVtZW50PFQ+fHVuZGVmaW5lZD4ge1xuICAgIGlmICh0aGlzLl9jcmVhdGluZykgcmV0dXJuOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsIChzaG91bGQgbmV2ZXIgb2NjdXIpXG5cbiAgICB0aGlzLl9jcmVhdGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc3VwZXIuY3JlYXRlTmV3KGluc2VydEF0LCBvcHRpb25zKTtcbiAgICAgIGlmICghcm93KSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25Sb3dDcmVhdGVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25Sb3dDcmVhdGVkKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikgIHtcbiAgICAgICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLl9jcmVhdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGEoKTogVFtdIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZyb21Sb3dzKHJvd3MpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNb3JlKG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9mZXRjaE1vcmVGbikgcmV0dXJuIGZhbHNlOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsXG4gICAgaWYgKHRoaXMuaGFzU29tZUVkaXRpbmdSb3coKSkge1xuICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZmV0Y2ggbW9yZSAke3RoaXMuX2VudGl0eU5hbWV9IGJlY2F1c2Ugc29tZSByb3cpIHN0aWxsIGVkaXRpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgV2lsbCBmZXRjaGluZyBtb3JlIHJvdyhzKSBzdGlsbC4uLmApO1xuXG4gICAgLy8gRm9yZ2V0IHRoZSBmZXRjaE1vcmUgZnVuY3Rpb24sIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBjb25zdCBmZXRjaE1vcmVGbiA9IHRoaXMuX2ZldGNoTW9yZUZuO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcblxuICAgIC8vIEZldGNoIG5leHQgcGFnZVxuICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IGF3YWl0IGZldGNoTW9yZUZuKCk7XG5cbiAgICAvLyBTa2lwIGlmIGVtcHR5IChubyBtb3JlIGRhdGEpXG4gICAgaWYgKGlzRW1wdHlBcnJheShyZXM/LmRhdGEpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc291cmNlXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZSgodGhpcy5jdXJyZW50RGF0YSB8fCBbXSkuY29uY2F0KC4uLnJlcy5kYXRhKSwgb3B0cyk7XG5cbiAgICAvLyBSZW1lbWJlciBmZXRjaE1vcmVcbiAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgbWFya0FzTG9hZGluZygpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -22596,13 +22596,13 @@ class EntitiesTableDataSource extends TableDataSource {
22596
22596
  // Call service deletion
22597
22597
  yield this.dataService.deleteAll(data, this.serviceOptions);
22598
22598
  // Workaround, to be sure all rows have been deleted
22599
- // Sometimes, the service miss deletion, or GrapQHl cache remove failed.
22599
+ // Sometime, the service miss deletion, or GraphQl cache remove failed.
22600
22600
  // In this case, apply missing deletion using the super.delete() function
22601
22601
  const rowNotDeleted = this.getRows().filter(rows.includes);
22602
22602
  if (isNotEmptyArray(rowNotDeleted)) {
22603
- console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows (Is service update the cache ?)`);
22603
+ console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows! Please check that data service update the cache, after deletion`);
22604
22604
  rowNotDeleted
22605
- // Start from the end
22605
+ // Start at the end
22606
22606
  .sort((a, b) => a.id > b.id ? -1 : 1)
22607
22607
  .forEach(r => _super.delete.call(this, r.id));
22608
22608
  }