@sd-angular/core 1.3.246 → 1.3.248

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.
@@ -7,4 +7,4 @@ export const API = {
7
7
  sdExportByTemplate: '/excel/sd-export-by-template',
8
8
  sdMergePDF: '/excel/sd-merge-pdf',
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9leHBvcnQvIiwic291cmNlcyI6WyJzcmMvbGliL2V4cG9ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQTZDOUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsc0JBQXNCLEVBQUUsK0JBQStCO0lBQ3ZELGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsVUFBVSxFQUFFLGVBQWU7SUFDM0Isa0JBQWtCLEVBQUUsOEJBQThCO0lBQ2xELFVBQVUsRUFBRSxxQkFBcUI7Q0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXhjZWwubW9kZWwnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0VGVtcGxhdGUge1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGNvbHVtbnM6IFNkRXhwb3J0VGVtcGxhdGVDb2x1bW5bXTtcclxuICBzaGVldHM/OiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBmaWVsZHM6IHN0cmluZ1tdO1xyXG4gIH1bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0Q29sdW1uIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgbnVtRm10Pzogc3RyaW5nOyAvLyBGb3JtYXQgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIG114buRbiBz4butIGThu6VuZyB2w60gZOG7pSB24bubaSBudW1iZXIsIGRhdGUgLi4uXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RFeHBvcnRUZW1wbGF0ZUNvbHVtbiBleHRlbmRzIFNkRXhwb3J0Q29sdW1uIHtcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgZm9udENvbG9yPzogc3RyaW5nO1xyXG4gIGZpbGw/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTZEV4cG9ydEZpbGUge1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEV4cG9ydFNoZWV0PFQgPSBhbnk+IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaXRlbXM6IFRbXTtcclxuICBmaWVsZHM6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0T3B0aW9uPFQgPSBhbnk+IHtcclxuICBjb2x1bW5zOiBTZEV4cG9ydFRlbXBsYXRlQ29sdW1uW107XHJcbiAgaXRlbXM6IFRbXTtcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxuICBzaGVldHM/OiBTZEV4cG9ydFNoZWV0W107XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEdyb3VwUGVybWlzc2lvbiA9ICd2aWV3JyB8ICdhZGQnIHwgJ2RlbGV0ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVBJID0ge1xyXG4gIHVwbG9hZFRlbXBsYXRlOiAnL2V4Y2VsL3VwbG9hZFRlbXBsYXRlJyxcclxuICBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlOiAnL2V4Y2VsL2dlbmVyYXRlVXBsb2FkVGVtcGxhdGUnLFxyXG4gIGZpbGVzSW5Gb2xkZXI6ICcvZXhjZWwvZmlsZXNJbkZvbGRlcicsXHJcbiAgcmVtb3ZlRmlsZTogJy9leGNlbC9yZW1vdmUnLFxyXG4gIHNkRXhwb3J0QnlUZW1wbGF0ZTogJy9leGNlbC9zZC1leHBvcnQtYnktdGVtcGxhdGUnLFxyXG4gIHNkTWVyZ2VQREY6ICcvZXhjZWwvc2QtbWVyZ2UtcGRmJyxcclxufTtcclxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9leHBvcnQvIiwic291cmNlcyI6WyJzcmMvbGliL2V4cG9ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQTRDOUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsc0JBQXNCLEVBQUUsK0JBQStCO0lBQ3ZELGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsVUFBVSxFQUFFLGVBQWU7SUFDM0Isa0JBQWtCLEVBQUUsOEJBQThCO0lBQ2xELFVBQVUsRUFBRSxxQkFBcUI7Q0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXhjZWwubW9kZWwnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0VGVtcGxhdGUge1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGNvbHVtbnM6IFNkRXhwb3J0VGVtcGxhdGVDb2x1bW5bXTtcclxuICBzaGVldHM/OiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBmaWVsZHM6IHN0cmluZ1tdO1xyXG4gIH1bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0Q29sdW1uIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RFeHBvcnRUZW1wbGF0ZUNvbHVtbiBleHRlbmRzIFNkRXhwb3J0Q29sdW1uIHtcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgZm9udENvbG9yPzogc3RyaW5nO1xyXG4gIGZpbGw/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTZEV4cG9ydEZpbGUge1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEV4cG9ydFNoZWV0PFQgPSBhbnk+IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaXRlbXM6IFRbXTtcclxuICBmaWVsZHM6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkRXhwb3J0T3B0aW9uPFQgPSBhbnk+IHtcclxuICBjb2x1bW5zOiBTZEV4cG9ydFRlbXBsYXRlQ29sdW1uW107XHJcbiAgaXRlbXM6IFRbXTtcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxuICBzaGVldHM/OiBTZEV4cG9ydFNoZWV0W107XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEdyb3VwUGVybWlzc2lvbiA9ICd2aWV3JyB8ICdhZGQnIHwgJ2RlbGV0ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVBJID0ge1xyXG4gIHVwbG9hZFRlbXBsYXRlOiAnL2V4Y2VsL3VwbG9hZFRlbXBsYXRlJyxcclxuICBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlOiAnL2V4Y2VsL2dlbmVyYXRlVXBsb2FkVGVtcGxhdGUnLFxyXG4gIGZpbGVzSW5Gb2xkZXI6ICcvZXhjZWwvZmlsZXNJbkZvbGRlcicsXHJcbiAgcmVtb3ZlRmlsZTogJy9leGNlbC9yZW1vdmUnLFxyXG4gIHNkRXhwb3J0QnlUZW1wbGF0ZTogJy9leGNlbC9zZC1leHBvcnQtYnktdGVtcGxhdGUnLFxyXG4gIHNkTWVyZ2VQREY6ICcvZXhjZWwvc2QtbWVyZ2UtcGRmJyxcclxufTtcclxuIl19
@@ -347,7 +347,7 @@ export class SdExportService {
347
347
  const fromRow = hasDescription ? 4 : 3;
348
348
  items.forEach((e, idx1) => {
349
349
  columns.forEach((column, idx2) => {
350
- if (typeof e[column.field] === 'number' && !column.numFmt) {
350
+ if (typeof e[column.field] === 'number') {
351
351
  // Format mặc định với kiểu số
352
352
  firstSheet.getCell(fromRow + idx1, 1 + idx2).value = +e[column.field];
353
353
  firstSheet.getCell(fromRow + idx1, 1 + idx2).numFmt = '#';
@@ -355,8 +355,7 @@ export class SdExportService {
355
355
  else {
356
356
  firstSheet.getCell(fromRow + idx1, 1 + idx2).value = e[column.field];
357
357
  }
358
- firstSheet.getCell(fromRow + idx1, 1 + idx2).style = __classPrivateFieldGet(this, _cellStyle);
359
- firstSheet.getCell(fromRow + idx1, 1 + idx2).style.numFmt = column.numFmt;
358
+ firstSheet.getCell(fromRow + idx1, 1 + idx2).style = Object.assign({}, __classPrivateFieldGet(this, _cellStyle));
360
359
  });
361
360
  });
362
361
  const file = yield workbook.xlsx.writeBuffer();
@@ -492,4 +491,4 @@ SdExportService.ctorParameters = () => [
492
491
  { type: SdNotifyService },
493
492
  { type: undefined, decorators: [{ type: Inject, args: [FIREBASE_CONFIG,] }, { type: Optional }] }
494
493
  ];
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBb0MsR0FBRyxFQUFzQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUEwQixNQUFNLHlCQUF5QixDQUFDOzs7OztBQUtsRixNQUFNLE9BQU8sZUFBZTtJQStIMUIsWUFDVSxVQUF3QixFQUN4QixhQUE4QixFQUNPLHFCQUE2QztRQUZsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNPLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUE3RzVGLHNCQUE4QjtZQUM1QixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDdkIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUN6QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTthQUMxQjtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxRQUFRO2lCQUNmO2FBQ0Y7U0FDRixFQUFDO1FBQ0Ysc0JBQWMsUUFBUSxFQUFDO1FBQ3ZCLHdCQUFnQixRQUFRLEVBQUM7UUFDekIsc0JBQThCO1lBQzVCLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUN6QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUN2QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxRQUFRO2dCQUNsQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsRUFBRTtnQkFDUixLQUFLLEVBQUUsRUFBRSxJQUFJLDJDQUFrQixFQUFFO2FBQ2xDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSw2Q0FBb0I7aUJBQ3pCO2FBQ0Y7U0FDRixFQUFDO1FBRUYseUJBQWlDO1lBQy9CLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUN6QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUN2QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxRQUFRO2dCQUNsQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsRUFBRTtnQkFDUixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQzFCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7YUFDRjtTQUNGLEVBQUM7UUFFRiw0QkFBb0M7WUFDbEMsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3ZCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDekI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLElBQUk7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQzFCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7YUFDRjtTQUNGLEVBQUM7UUFFRixxQkFBNkI7WUFDM0IsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsSUFBSTthQUNmO1NBQ0YsRUFBQztRQVFGLHFCQUFhLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLFFBQVEsSUFBSSxDQUFDLE1BQU0sV0FBVyxZQUFZLFNBQVMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDO2FBQ3ZFO1lBQ0QsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixLQUFLO2FBQ04sQ0FBQyxDQUFDO1lBQ0gsT0FBTyxRQUFRLElBQUksQ0FBQyxNQUFNLFdBQVcsWUFBWSxTQUFTLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN4RSxDQUFDLEVBQUM7UUFFRixxQkFBZ0IsR0FBRyxDQUFPLFFBQTBCLEVBQUUsRUFBRTtZQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQzthQUM1RDtZQUNELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUN6RDthQUNGO1lBQ0QsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsc0VBQXNFO1lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7WUFDOUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTs7Z0JBQ2hDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztnQkFDN0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNoQixJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9DLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4RCxTQUFTLENBQUMsS0FBSyw0Q0FBbUIsQ0FBQztnQkFDbkMsSUFBSSxRQUFRLEVBQUU7b0JBQ1osU0FBUyxDQUFDLEtBQUssK0NBQXNCLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLFNBQVMsQ0FBQyxLQUFLLDRDQUFtQixDQUFDO2lCQUNwQztnQkFDRCxTQUFTLENBQUMsS0FBSyxpRkFFYixJQUFJLDJIQUNtQixJQUFJLEtBQ3pCLEtBQUssaUlBQ2tCLElBQUksMENBQUUsS0FBSyxLQUNoQyxJQUFJLEVBQUUsU0FBUywwR0FBc0IsSUFBSSwwQ0FBRSxLQUFLLDBDQUFFLElBQUksQ0FBQSxRQUcxRCxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLE9BQU87d0JBQ2hCLE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsSUFBSSwrQ0FBc0I7eUJBQ2pDO3FCQUNGLEdBQ0YsQ0FBQztnQkFDRixTQUFTLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLFNBQVMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxjQUFjLEVBQUU7b0JBQ2xCLGVBQWUsQ0FBQyxLQUFLLGtEQUF5QixDQUFDO29CQUMvQyxlQUFlLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2lCQUNsRDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxFQUFFO2dCQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtvQkFDMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUMzRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDbkQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7NEJBQ3BDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NEJBQ3pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLDRDQUFtQixDQUFDOzRCQUN4RCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzt3QkFDL0MsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7NEJBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO2dDQUNuQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQ3pELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSywyQ0FBa0IsQ0FBQzs0QkFDL0QsQ0FBQyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7YUFDRjtZQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUVBQW1FLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BJLENBQUMsQ0FBQSxDQUFDO1FBRUYsbUJBQWMsR0FBRyxDQUFPLElBQStFLEVBQXlCLEVBQUU7WUFDaEksTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDL0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsSUFBSSw4Q0FBQSxJQUFJLEVBQVksR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLFdBQVcsRUFBRSxHQUFHO2dCQUNoQixTQUFTO2FBQ1YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRTtvQkFDMUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxPQUFPLENBQUMsQ0FBQztvQkFDaEQsTUFBTSxHQUFHLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztvQkFDTCxRQUFRO29CQUNSLFFBQVE7aUJBQ1QsQ0FBQzthQUNIO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUEsQ0FBQztRQUVGLDJCQUFzQixHQUFHLENBQU8sSUFBaUUsRUFBRSxFQUFFO1lBQ25HLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztZQUN0QyxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLHNCQUFzQixJQUFJLDhDQUFBLElBQUksRUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxRixNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFBLENBQUM7UUFFRixlQUFVLEdBQUcsQ0FBTyxJQUF3RCxFQUFFLEVBQUU7WUFDOUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsSUFBSSw4Q0FBQSxJQUFJLEVBQVksR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLFFBQVEsRUFBRSxDQUFDO1lBQy9GLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFBLENBQUM7UUFFRixrQkFBYSxHQUFHLENBQU8sSUFBcUMsRUFBMkIsRUFBRTs7WUFTdkYsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDNUIsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxJQUFJLDhDQUFBLElBQUksRUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFtQixHQUFHLENBQUMsQ0FBQztZQUM3RCxPQUFPLENBQ0wsT0FBQSxHQUFHLENBQUMsS0FBSywwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3JCLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSTthQUNqQixDQUFDLE1BQUssRUFBRSxDQUNWLENBQUM7UUFDSixDQUFDLENBQUEsQ0FBQztRQUVGLGFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFRixxQkFBZ0IsR0FBRyxDQUFPLElBQTJFLEVBQUUsRUFBRTtZQUN2RyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3BELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNuQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QyxHQUFHLEVBQ0g7Z0JBQ0UsUUFBUTtnQkFDUixPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsUUFBUTthQUNULEVBQ0QsSUFBSSxFQUNKO2dCQUNFLFlBQVksRUFBRSxhQUFhO2FBQzVCLENBQ0YsQ0FBQztZQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkVBQTJFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZILFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQSxDQUFDO1FBRUYsY0FBUyxHQUFHLENBQU8sTUFBc0IsRUFBRSxFQUFFO1lBQzNDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUM1QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUN4QztZQUNELE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNsQyxRQUFRLEVBQUUsR0FBRyxRQUFRLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO2dCQUNwRixjQUFjLEVBQUUsR0FBRztnQkFDbkIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLGdCQUFnQixFQUFFLEdBQUc7Z0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsS0FBSyxFQUFFLFFBQVEsSUFBSSxLQUFLO2dCQUN4QixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQSxDQUFDO1FBRUYsV0FBTSxHQUFHLENBQU8sTUFBc0IsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDcEQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUN6RDtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3RCLGNBQWMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO2FBQ0Y7WUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsc0VBQXNFO1lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7WUFDMUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNoQixJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9DLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4RCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyw0Q0FBbUIsQ0FBQztnQkFDMUQsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSywrQ0FBc0IsQ0FBQztpQkFDOUQ7cUJBQU07b0JBQ0wsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssNENBQW1CLENBQUM7aUJBQzNEO2dCQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDdEQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN0RCxJQUFJLGNBQWMsRUFBRTtvQkFDbEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssa0RBQXlCLENBQUM7b0JBQ2hFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7aUJBQ25FO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEVBQUU7Z0JBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO29CQUMxQixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQzNFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNuRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTs0QkFDcEMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzs0QkFDekMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssNENBQW1CLENBQUM7NEJBQ3hELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUMvQyxDQUFDLENBQUMsQ0FBQzt3QkFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTs0QkFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0NBQ25DLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDekQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLDJDQUFrQixDQUFDOzRCQUMvRCxDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQztxQkFDSjtpQkFDRjthQUNGO1lBRUQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUMvQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO3dCQUN6RCw4QkFBOEI7d0JBQzlCLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO3FCQUMzRDt5QkFBTTt3QkFDTCxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN0RTtvQkFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssMkNBQWtCLENBQUM7b0JBQ3JFLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUM1RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9DLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxtRUFBbUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEksQ0FBQyxDQUFBLENBQUM7UUFFRixpQkFBWSxHQUFHLENBQU8sTUFBNEIsRUFBRSxFQUFFO1lBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQ3BDLElBQUksRUFBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUFBLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPO2FBQ1I7WUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDdkMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLElBQUksRUFBRSxFQUFFO29CQUNsQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDdkQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ3hEO2dCQUNELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO29CQUN4QixNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO29CQUMzQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNsRixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUM5QzthQUNGO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9DLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxtRUFBbUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEksQ0FBQyxDQUFBLENBQUM7UUFFRixhQUFRLEdBQUcsQ0FBTyxJQUFjLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQzNCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QyxHQUFHLEVBQ0g7Z0JBQ0UsSUFBSTthQUNMLEVBQ0QsSUFBSSxFQUNKO2dCQUNFLFlBQVksRUFBRSxhQUFhO2FBQzVCLENBQ0YsQ0FBQztZQUNGLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUEsQ0FBQztRQUVGLGVBQVUsR0FBRyxHQUE0RCxFQUFFO1lBQ3pFLE9BQU8sTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM1QixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBLENBQUM7UUFFRixjQUFTLEdBQUcsQ0FBTyxJQUFVLEVBQXFELEVBQUU7WUFDbEYsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLE9BQU8sQ0FBK0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQ25FLE1BQU0sRUFBRSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzFCLE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO3dCQUNuQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBcUIsQ0FBQzt3QkFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRTs0QkFDWCxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQzs0QkFDckMsT0FBTzt5QkFDUjt3QkFDRCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7NEJBQ25DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0NBQ1YsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0NBQ2pDLE9BQU87NkJBQ1I7NEJBQ0QsTUFBTSxLQUFLLEdBQVUsRUFBRSxDQUFDOzRCQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs0QkFDdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dDQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO29DQUM5QixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztvQ0FDbEMsc0NBQXNDO29DQUN0QyxJQUFJLFNBQVMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO3dDQUM3QixNQUFNLElBQUksR0FBUSxFQUFFLENBQUM7d0NBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7NENBQ25DLElBQUksU0FBUyxFQUFFO2dEQUNiLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnREFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnREFDNUIsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLEVBQUU7b0RBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7aURBQ2xDO2dEQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxFQUFFO29EQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lEQUNwQjs2Q0FDRjt3Q0FDSCxDQUFDLENBQUMsQ0FBQzt3Q0FDSCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FDQUNsQjtnQ0FDSCxDQUFDLENBQUMsQ0FBQztnQ0FDSCxPQUFPLENBQUM7b0NBQ04sS0FBSztvQ0FDTCxJQUFJO2lDQUNMLENBQUMsQ0FBQzs2QkFDSjt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUM7b0JBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE9BQU87b0JBQ0wsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLElBQUk7aUJBQ1gsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUExWEMsQ0FBQztJQWxJSixJQUFZLFdBQVc7O1FBQ3JCLGFBQU8sSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxXQUFXLENBQUM7SUFDakQsQ0FBQztJQUVELElBQVksTUFBTTtRQUNoQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUNwRCxPQUFPLEdBQUcsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFZLFVBQVU7UUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7Ozs7WUF0QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYUSxZQUFZO1lBTVosZUFBZTs0Q0F3SW5CLE1BQU0sU0FBQyxlQUFlLGNBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRXhwb3J0VG9Dc3YgfSBmcm9tICdleHBvcnQtdG8tY3N2JztcclxuaW1wb3J0IHsgV29ya2Jvb2ssIFN0eWxlIH0gZnJvbSAnZXhjZWxqcyc7XHJcbmltcG9ydCB7IFNkRXhwb3J0VGVtcGxhdGUsIFNkRXhwb3J0T3B0aW9uLCBBUEksIFNkRXhwb3J0RmlsZSwgU2RFeHBvcnRDdXN0b21PcHRpb24gfSBmcm9tICcuL2V4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHsgRklSRUJBU0VfQ09ORklHLCBJRmlyZWJhc2VDb25maWd1cmF0aW9uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRXhwb3J0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBnZXQgZnVuY3Rpb25VcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmZ1bmN0aW9uVXJsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBwcm9qZWN0LCBlbnYgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgcmV0dXJuIGAke3Byb2plY3R9LSR7ZW52fWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCB1c2VyRm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCFmb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmb2xkZXIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmb2xkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9sZGVyKCk7XHJcbiAgfVxyXG5cclxuICAjZmllbGRTdHlsZTogUGFydGlhbDxTdHlsZT4gPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgIH0sXHJcbiAgICBhbGlnbm1lbnQ6IHtcclxuICAgICAgdmVydGljYWw6ICdtaWRkbGUnLFxyXG4gICAgICBob3Jpem9udGFsOiAnY2VudGVyJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgICBzaXplOiAxMSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogJzAwMDAwMCcgfSxcclxuICAgIH0sXHJcbiAgICBmaWxsOiB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgIGFyZ2I6ICdGQUZBRkEnLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9O1xyXG4gICN0aXRsZUNvbG9yID0gJ0ZGRkZGRic7XHJcbiAgI3RpdGxlRmdDb2xvciA9ICcxNDMxODAnO1xyXG4gICN0aXRsZVN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGJvbGQ6IHRydWUsXHJcbiAgICAgIHNpemU6IDExLFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiB0aGlzLiN0aXRsZUNvbG9yIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiB0aGlzLiN0aXRsZUZnQ29sb3IsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICNyZXF1aXJlZFN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGl0YWxpYzogdHJ1ZSxcclxuICAgICAgc2l6ZTogMTEsXHJcbiAgICAgIGNvbG9yOiB7IGFyZ2I6ICdGRkZGRkYnIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiAnRkYxNzQ0JyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgI2Rlc2NyaXB0aW9uU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIGZvbnQ6IHtcclxuICAgICAgaXRhbGljOiB0cnVlLFxyXG4gICAgICBzaXplOiA5LFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiAnMDAwMDAwJyB9LFxyXG4gICAgfSxcclxuICAgIGZpbGw6IHtcclxuICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICBwYXR0ZXJuOiAnc29saWQnLFxyXG4gICAgICBmZ0NvbG9yOiB7XHJcbiAgICAgICAgYXJnYjogJ0NGRDhEQycsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICNjZWxsU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIEBJbmplY3QoRklSRUJBU0VfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlQ29uZmlndXJhdGlvbjogSUZpcmViYXNlQ29uZmlndXJhdGlvblxyXG4gICkge31cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXIsXHJcbiAgICB9KTtcclxuICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9VS0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gICAgfVxyXG4gICAgaGFzaGVkRm9sZGVyID0gaGFzaCh7XHJcbiAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIsXHJcbiAgICAgIGdyb3VwLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1HLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgfTtcclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlTmFtZSwgY29sdW1ucywgc2hlZXRzIH0gPSB0ZW1wbGF0ZTtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsIHRlbXBsYXRlIGNvbHVtbnMgbXVzdCBiZSBhbiBhcnJheScpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBbaWR4LCBjb2x1bW5dIG9mIGNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGlmICghY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogRmllbGQgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNvbHVtbi50aXRsZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7aWR4ICsgMX06IFRpdGxlIGlzIHJlcXVpcmVkYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gY29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4uZGVzY3JpcHRpb24pO1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTsgLy9hd2FpdCBYbHN4UG9wdWxhdGUuZnJvbUJsYW5rQXN5bmMoKTsgLy8gxJDhu41jIGZpbGUgc2F1IGtoaSDEkcOjIGRvd25sb2FkXHJcbiAgICBjb25zdCBmaXJzdFNoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCd0ZW1wbGF0ZScpOyAvLyBM4bqleSByYSBzaGVldCDEkeG6p3UgdGnDqm5cclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCB7IHJlcXVpcmVkLCBmaWxsLCBmb250Q29sb3IgfSA9IGNvbHVtbjtcclxuICAgICAgY29uc3QgY2VsbEZpZWxkID0gZmlyc3RTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSk7XHJcbiAgICAgIGNvbnN0IGNlbGxUaXRsZSA9IGZpcnN0U2hlZXQuZ2V0Q2VsbCgyLCBpbmRleCArIDEpO1xyXG4gICAgICBjb25zdCBjZWxsRGVzY3JpcHRpb24gPSBmaXJzdFNoZWV0LmdldENlbGwoMywgaW5kZXggKyAxKTtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNmaWVsZFN0eWxlO1xyXG4gICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNyZXF1aXJlZFN0eWxlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNlbGxGaWVsZC5zdHlsZSA9IHRoaXMuI2ZpZWxkU3R5bGU7XHJcbiAgICAgIH1cclxuICAgICAgY2VsbFRpdGxlLnN0eWxlID0ge1xyXG4gICAgICAgIC4uLnRoaXMuI3RpdGxlU3R5bGUsXHJcbiAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgLi4udGhpcy4jdGl0bGVTdHlsZT8uZm9udCxcclxuICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuI3RpdGxlU3R5bGU/LmZvbnQ/LmNvbG9yLFxyXG4gICAgICAgICAgICBhcmdiOiBmb250Q29sb3IgfHwgdGhpcy4jdGl0bGVTdHlsZT8uZm9udD8uY29sb3I/LmFyZ2IsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICAgICAgYXJnYjogZmlsbCB8fCB0aGlzLiN0aXRsZUZnQ29sb3IsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGNlbGxGaWVsZC52YWx1ZSA9IGNvbHVtbi5maWVsZDtcclxuICAgICAgY2VsbFRpdGxlLnZhbHVlID0gY29sdW1uLnRpdGxlO1xyXG4gICAgICBpZiAoaGFzRGVzY3JpcHRpb24pIHtcclxuICAgICAgICBjZWxsRGVzY3JpcHRpb24uc3R5bGUgPSB0aGlzLiNkZXNjcmlwdGlvblN0eWxlO1xyXG4gICAgICAgIGNlbGxEZXNjcmlwdGlvbi52YWx1ZSA9IGNvbHVtbi5kZXNjcmlwdGlvbiB8fCAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoc2hlZXRzPy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiBzaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSAmJiBBcnJheS5pc0FycmF5KHNoZWV0LmZpZWxkcykpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld1NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KHNoZWV0Lm5hbWUpO1xyXG4gICAgICAgICAgc2hlZXQuZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDb2x1bW4oaW5kZXggKyAxKS53aWR0aCA9IDMwO1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiN0aXRsZVN0eWxlO1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkudmFsdWUgPSBmaWVsZDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2hlZXQuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaWR4MSkgPT4ge1xyXG4gICAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGlkeDIpID0+IHtcclxuICAgICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDIgKyBpZHgxLCAxICsgaWR4MikudmFsdWUgPSBpdGVtW2ZpZWxkXTtcclxuICAgICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDIgKyBpZHgxLCAxICsgaWR4Mikuc3R5bGUgPSB0aGlzLiNjZWxsU3R5bGU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgU2RVdGlsaXR5LmRvd25sb2FkQmxvYihuZXcgQmxvYihbZmlsZV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KSwgZmlsZU5hbWUpO1xyXG4gIH07XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nOyB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZT4gPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIGdyb3VwLCB2YWxpZGF0b3IgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IHVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7dXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgU2RVdGlsaXR5LnVwbG9hZCh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsneGxzeCddLFxyXG4gICAgICBtYXhTaXplSW5NYjogMC4xLFxyXG4gICAgICB2YWxpZGF0b3IsXHJcbiAgICB9KTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZVBhdGgsIGZpbGVOYW1lIH0gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UudXBsb2FkKHVybCwgZmlsZSkuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyPy5tZXNzYWdlKTtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVQYXRoLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7IGtleTogc3RyaW5nOyB0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZTsgZ3JvdXA/OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIHRlbXBsYXRlLCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9O1xyXG5cclxuICByZW1vdmVGaWxlID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nOyBmaWxlTmFtZT86IHN0cmluZyB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyByZW1vdmVGaWxlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9O1xyXG5cclxuICBmaWxlc0luRm9sZGVyID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZVtdPiA9PiB7XHJcbiAgICBpbnRlcmZhY2UgRmlsZXNJbkZvbGRlclJlcyB7XHJcbiAgICAgIGRpcmVjdG9yeTogc3RyaW5nO1xyXG4gICAgICBmaWxlczoge1xyXG4gICAgICAgIHB1YmxpY1VybDogc3RyaW5nO1xyXG4gICAgICAgIGZ1bGxQYXRoOiBzdHJpbmc7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICB9W107XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpbGVzSW5Gb2xkZXIgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtmaWxlc0luRm9sZGVyfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldDxGaWxlc0luRm9sZGVyUmVzPih1cmwpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgcmVzLmZpbGVzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAgIGZpbGVQYXRoOiBlLnB1YmxpY1VybCxcclxuICAgICAgICBmaWxlTmFtZTogZS5uYW1lLFxyXG4gICAgICB9KSkgfHwgW11cclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgZG93bmxvYWQgPSAoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtmaWxlTmFtZSB8fCB1dWlkLnY0KCl9Lnhsc3hgO1xyXG4gICAgbGluay5ocmVmID0gZmlsZVBhdGg7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRCeVRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHsgZmlsZVBhdGg6IHN0cmluZzsgY29sdW1uczogYW55W107IGl0ZW1zOiBhbnlbXTsgZmlsZU5hbWU/OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgY29sdW1ucywgaXRlbXMsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydEJ5VGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtzZEV4cG9ydEJ5VGVtcGxhdGV9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICB9LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtiYXNlNjQsJyB9KTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IoYmxvYiwgZmlsZU5hbWUpO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydENTViA9IGFzeW5jIChvcHRpb246IFNkRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3N2RXhwb3J0ZXIgPSBuZXcgRXhwb3J0VG9Dc3Yoe1xyXG4gICAgICBmaWxlbmFtZTogYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsXHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY3N2RXhwb3J0ZXIuZ2VuZXJhdGVDc3YoW2hlYWRlckNTViwgLi4uaXRlbXNdKTtcclxuICB9O1xyXG5cclxuICBleHBvcnQgPSBhc3luYyAob3B0aW9uOiBTZEV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUsIHNoZWV0cyB9ID0gb3B0aW9uO1xyXG4gICAgbGV0IGhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IFtpZHgsIGNvbHVtbl0gb2YgY29sdW1ucy5lbnRyaWVzKCkpIHtcclxuICAgICAgaWYgKCFjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2lkeCArIDF9OiBGaWVsZCBpcyByZXF1aXJlZGApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29sdW1uLnRpdGxlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogVGl0bGUgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgaGFzRGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpOyAvL2F3YWl0IFhsc3hQb3B1bGF0ZS5mcm9tQmxhbmtBc3luYygpOyAvLyDEkOG7jWMgZmlsZSBzYXUga2hpIMSRw6MgZG93bmxvYWRcclxuICAgIGNvbnN0IGZpcnN0U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ2RhdGEnKTsgLy8gTOG6pXkgcmEgc2hlZXQgxJHhuqd1IHRpw6puXHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI2ZpZWxkU3R5bGU7XHJcbiAgICAgIGlmIChjb2x1bW4ucmVxdWlyZWQpIHtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3JlcXVpcmVkU3R5bGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDIsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiN0aXRsZVN0eWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmZpZWxkO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS52YWx1ZSA9IGNvbHVtbi50aXRsZTtcclxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDMsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiNkZXNjcmlwdGlvblN0eWxlO1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgzLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmRlc2NyaXB0aW9uIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChzaGVldHM/Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuZmllbGRzKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoc2hlZXQubmFtZSk7XHJcbiAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gMzA7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3RpdGxlU3R5bGU7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS52YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBzaGVldC5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgxKSA9PiB7XHJcbiAgICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaWR4MikgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9IGl0ZW1bZmllbGRdO1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHRoaXMuI2NlbGxTdHlsZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmcm9tUm93ID0gaGFzRGVzY3JpcHRpb24gPyA0IDogMztcclxuICAgIGl0ZW1zLmZvckVhY2goKGUsIGlkeDEpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGlkeDIpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGVbY29sdW1uLmZpZWxkXSA9PT0gJ251bWJlcicgJiYgIWNvbHVtbi5udW1GbXQpIHtcclxuICAgICAgICAgIC8vIEZvcm1hdCBt4bq3YyDEkeG7i25oIHbhu5tpIGtp4buDdSBz4buRXHJcbiAgICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9ICtlW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS5udW1GbXQgPSAnIyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gZVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHRoaXMuI2NlbGxTdHlsZTtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZS5udW1GbXQgPSBjb2x1bW4ubnVtRm10O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSksIGZpbGVOYW1lKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRDdXN0b20gPSBhc3luYyAob3B0aW9uOiBTZEV4cG9ydEN1c3RvbU9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlTmFtZSwgc2hlZXRzIH0gPSBvcHRpb247XHJcbiAgICBpZiAoIXNoZWV0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnUGjhuqNpIGPDsyDDrXQgbmjhuqV0IDEgc2hlZXQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTtcclxuICAgIGZvciAoY29uc3QgW2lkeCwgc2hlZXRdIG9mIHNoZWV0cy5lbnRyaWVzKCkpIHtcclxuICAgICAgY29uc3QgeyBuYW1lLCBjb2x1bW5zLCBjZWxscyB9ID0gc2hlZXQ7XHJcbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChuYW1lIHx8IGBTaGVldCAke2lkeCArIDF9YCk7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbi5pbmRleCkuc3R5bGUgPSBjb2x1bW4uc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENvbHVtbihjb2x1bW4uaW5kZXgpLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xyXG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2x1bW4sIHZhbHVlLCBzdHlsZSB9ID0gY2VsbDtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q2VsbChyb3csIGNvbHVtbikuc3R5bGUgPSBzdHlsZSB8fCB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbikuc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENlbGwocm93LCBjb2x1bW4pLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pLCBmaWxlTmFtZSk7XHJcbiAgfTtcclxuXHJcbiAgbWVyZ2VQREYgPSBhc3luYyAodXJsczogc3RyaW5nW10pID0+IHtcclxuICAgIGNvbnN0IHsgc2RNZXJnZVBERiB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke3NkTWVyZ2VQREZ9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICB1cmxzLFxyXG4gICAgICB9LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgU2RVdGlsaXR5LmRvd25sb2FkQmxvYihuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KSk7XHJcbiAgfTtcclxuXHJcbiAgdXBsb2FkWGxzeCA9IGFzeW5jICgpOiBQcm9taXNlPHsgaXRlbXM6IGFueVtdOyBmaWxlOiBGaWxlIH0gfCB1bmRlZmluZWQ+ID0+IHtcclxuICAgIHJldHVybiBhd2FpdCBTZFV0aWxpdHkudXBsb2FkKHtcclxuICAgICAgZXh0ZW5zaW9uczogWyd4bHN4J10sXHJcbiAgICAgIG1heFNpemVJbk1iOiAxMCxcclxuICAgIH0pLnRoZW4oZmlsZSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlWGxzeChmaWxlKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHBhcnNlWGxzeCA9IGFzeW5jIChmaWxlOiBGaWxlKTogUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXTsgZmlsZTogRmlsZSB9IHwgdW5kZWZpbmVkPiA9PiB7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8eyBpdGVtczogYW55W107IGZpbGU6IEZpbGUgfT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdiID0gbmV3IFdvcmtib29rKCk7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gcmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICAgIGlmICghYnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnQ8OzIGzhu5dpIHjhuqN5IHJhIGtoaSDEkeG7jWMgZmlsZScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3Yi54bHN4LmxvYWQoYnVmZmVyKS50aGVuKHdvcmtib29rID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay53b3Jrc2hlZXRzWzBdO1xyXG4gICAgICAgICAgICBpZiAoIXNoZWV0KSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdLaMO0bmcgdMOsbSB0aOG6pXkgZOG7ryBsaeG7h3UnKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBzaGVldC5nZXRSb3coMSkudmFsdWVzO1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xyXG4gICAgICAgICAgICAgIHNoZWV0LmVhY2hSb3coKHJvdywgcm93SW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaGFzVmFsdWVzLCB2YWx1ZXMgfSA9IHJvdztcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdywgaGFzVmFsdWVzLCB2YWx1ZXMpXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWVzICYmIHJvd0luZGV4ID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChjZWxsVmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjZWxsVmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWVzW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbVtmaWVsZF0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0udHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1bZmllbGRdID09PSAnJyB8fCBpdGVtW2ZpZWxkXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuIl19
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBb0MsR0FBRyxFQUFzQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUEwQixNQUFNLHlCQUF5QixDQUFDOzs7OztBQUtsRixNQUFNLE9BQU8sZUFBZTtJQStIMUIsWUFDVSxVQUF3QixFQUN4QixhQUE4QixFQUNPLHFCQUE2QztRQUZsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNPLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUE3RzVGLHNCQUE4QjtZQUM1QixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDdkIsS0FBSyxFQUFFLEVBQUUsS0FB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LEdBQUcsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFZLFVBQVU7UUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7Ozs7WUF0QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYUSxZQUFZO1lBTVosZUFBZTs0Q0F3SW5CLE1BQU0sU0FBQyxlQUFlLGNBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRXhwb3J0VG9Dc3YgfSBmcm9tICdleHBvcnQtdG8tY3N2JztcclxuaW1wb3J0IHsgV29ya2Jvb2ssIFN0eWxlIH0gZnJvbSAnZXhjZWxqcyc7XHJcbmltcG9ydCB7IFNkRXhwb3J0VGVtcGxhdGUsIFNkRXhwb3J0T3B0aW9uLCBBUEksIFNkRXhwb3J0RmlsZSwgU2RFeHBvcnRDdXN0b21PcHRpb24gfSBmcm9tICcuL2V4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHsgRklSRUJBU0VfQ09ORklHLCBJRmlyZWJhc2VDb25maWd1cmF0aW9uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRXhwb3J0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBnZXQgZnVuY3Rpb25VcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmZ1bmN0aW9uVXJsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBwcm9qZWN0LCBlbnYgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgcmV0dXJuIGAke3Byb2plY3R9LSR7ZW52fWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCB1c2VyRm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCFmb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmb2xkZXIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmb2xkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9sZGVyKCk7XHJcbiAgfVxyXG5cclxuICAjZmllbGRTdHlsZTogUGFydGlhbDxTdHlsZT4gPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgIH0sXHJcbiAgICBhbGlnbm1lbnQ6IHtcclxuICAgICAgdmVydGljYWw6ICdtaWRkbGUnLFxyXG4gICAgICBob3Jpem9udGFsOiAnY2VudGVyJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgICBzaXplOiAxMSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogJzAwMDAwMCcgfSxcclxuICAgIH0sXHJcbiAgICBmaWxsOiB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgIGFyZ2I6ICdGQUZBRkEnLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9O1xyXG4gICN0aXRsZUNvbG9yID0gJ0ZGRkZGRic7XHJcbiAgI3RpdGxlRmdDb2xvciA9ICcxNDMxODAnO1xyXG4gICN0aXRsZVN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGJvbGQ6IHRydWUsXHJcbiAgICAgIHNpemU6IDExLFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiB0aGlzLiN0aXRsZUNvbG9yIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiB0aGlzLiN0aXRsZUZnQ29sb3IsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICNyZXF1aXJlZFN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGl0YWxpYzogdHJ1ZSxcclxuICAgICAgc2l6ZTogMTEsXHJcbiAgICAgIGNvbG9yOiB7IGFyZ2I6ICdGRkZGRkYnIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiAnRkYxNzQ0JyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgI2Rlc2NyaXB0aW9uU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIGZvbnQ6IHtcclxuICAgICAgaXRhbGljOiB0cnVlLFxyXG4gICAgICBzaXplOiA5LFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiAnMDAwMDAwJyB9LFxyXG4gICAgfSxcclxuICAgIGZpbGw6IHtcclxuICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICBwYXR0ZXJuOiAnc29saWQnLFxyXG4gICAgICBmZ0NvbG9yOiB7XHJcbiAgICAgICAgYXJnYjogJ0NGRDhEQycsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICNjZWxsU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIEBJbmplY3QoRklSRUJBU0VfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlQ29uZmlndXJhdGlvbjogSUZpcmViYXNlQ29uZmlndXJhdGlvblxyXG4gICkge31cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXIsXHJcbiAgICB9KTtcclxuICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9VS0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gICAgfVxyXG4gICAgaGFzaGVkRm9sZGVyID0gaGFzaCh7XHJcbiAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIsXHJcbiAgICAgIGdyb3VwLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1HLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgfTtcclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlTmFtZSwgY29sdW1ucywgc2hlZXRzIH0gPSB0ZW1wbGF0ZTtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsIHRlbXBsYXRlIGNvbHVtbnMgbXVzdCBiZSBhbiBhcnJheScpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBbaWR4LCBjb2x1bW5dIG9mIGNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGlmICghY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogRmllbGQgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNvbHVtbi50aXRsZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7aWR4ICsgMX06IFRpdGxlIGlzIHJlcXVpcmVkYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gY29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4uZGVzY3JpcHRpb24pO1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTsgLy9hd2FpdCBYbHN4UG9wdWxhdGUuZnJvbUJsYW5rQXN5bmMoKTsgLy8gxJDhu41jIGZpbGUgc2F1IGtoaSDEkcOjIGRvd25sb2FkXHJcbiAgICBjb25zdCBmaXJzdFNoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCd0ZW1wbGF0ZScpOyAvLyBM4bqleSByYSBzaGVldCDEkeG6p3UgdGnDqm5cclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCB7IHJlcXVpcmVkLCBmaWxsLCBmb250Q29sb3IgfSA9IGNvbHVtbjtcclxuICAgICAgY29uc3QgY2VsbEZpZWxkID0gZmlyc3RTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSk7XHJcbiAgICAgIGNvbnN0IGNlbGxUaXRsZSA9IGZpcnN0U2hlZXQuZ2V0Q2VsbCgyLCBpbmRleCArIDEpO1xyXG4gICAgICBjb25zdCBjZWxsRGVzY3JpcHRpb24gPSBmaXJzdFNoZWV0LmdldENlbGwoMywgaW5kZXggKyAxKTtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNmaWVsZFN0eWxlO1xyXG4gICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNyZXF1aXJlZFN0eWxlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNlbGxGaWVsZC5zdHlsZSA9IHRoaXMuI2ZpZWxkU3R5bGU7XHJcbiAgICAgIH1cclxuICAgICAgY2VsbFRpdGxlLnN0eWxlID0ge1xyXG4gICAgICAgIC4uLnRoaXMuI3RpdGxlU3R5bGUsXHJcbiAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgLi4udGhpcy4jdGl0bGVTdHlsZT8uZm9udCxcclxuICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuI3RpdGxlU3R5bGU/LmZvbnQ/LmNvbG9yLFxyXG4gICAgICAgICAgICBhcmdiOiBmb250Q29sb3IgfHwgdGhpcy4jdGl0bGVTdHlsZT8uZm9udD8uY29sb3I/LmFyZ2IsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICAgICAgYXJnYjogZmlsbCB8fCB0aGlzLiN0aXRsZUZnQ29sb3IsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGNlbGxGaWVsZC52YWx1ZSA9IGNvbHVtbi5maWVsZDtcclxuICAgICAgY2VsbFRpdGxlLnZhbHVlID0gY29sdW1uLnRpdGxlO1xyXG4gICAgICBpZiAoaGFzRGVzY3JpcHRpb24pIHtcclxuICAgICAgICBjZWxsRGVzY3JpcHRpb24uc3R5bGUgPSB0aGlzLiNkZXNjcmlwdGlvblN0eWxlO1xyXG4gICAgICAgIGNlbGxEZXNjcmlwdGlvbi52YWx1ZSA9IGNvbHVtbi5kZXNjcmlwdGlvbiB8fCAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoc2hlZXRzPy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiBzaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSAmJiBBcnJheS5pc0FycmF5KHNoZWV0LmZpZWxkcykpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld1NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KHNoZWV0Lm5hbWUpO1xyXG4gICAgICAgICAgc2hlZXQuZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDb2x1bW4oaW5kZXggKyAxKS53aWR0aCA9IDMwO1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiN0aXRsZVN0eWxlO1xyXG4gICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkudmFsdWUgPSBmaWVsZDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2hlZXQuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaWR4MSkgPT4ge1xyXG4gICAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGlkeDIpID0+IHtcclxuICAgICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDIgKyBpZHgxLCAxICsgaWR4MikudmFsdWUgPSBpdGVtW2ZpZWxkXTtcclxuICAgICAgICAgICAgICBuZXdTaGVldC5nZXRDZWxsKDIgKyBpZHgxLCAxICsgaWR4Mikuc3R5bGUgPSB0aGlzLiNjZWxsU3R5bGU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgU2RVdGlsaXR5LmRvd25sb2FkQmxvYihuZXcgQmxvYihbZmlsZV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KSwgZmlsZU5hbWUpO1xyXG4gIH07XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nOyB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZT4gPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIGdyb3VwLCB2YWxpZGF0b3IgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IHVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7dXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgU2RVdGlsaXR5LnVwbG9hZCh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsneGxzeCddLFxyXG4gICAgICBtYXhTaXplSW5NYjogMC4xLFxyXG4gICAgICB2YWxpZGF0b3IsXHJcbiAgICB9KTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZVBhdGgsIGZpbGVOYW1lIH0gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UudXBsb2FkKHVybCwgZmlsZSkuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyPy5tZXNzYWdlKTtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVQYXRoLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7IGtleTogc3RyaW5nOyB0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZTsgZ3JvdXA/OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIHRlbXBsYXRlLCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9O1xyXG5cclxuICByZW1vdmVGaWxlID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nOyBmaWxlTmFtZT86IHN0cmluZyB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyByZW1vdmVGaWxlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9O1xyXG5cclxuICBmaWxlc0luRm9sZGVyID0gYXN5bmMgKGFyZ3M6IHsga2V5OiBzdHJpbmc7IGdyb3VwPzogc3RyaW5nIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZVtdPiA9PiB7XHJcbiAgICBpbnRlcmZhY2UgRmlsZXNJbkZvbGRlclJlcyB7XHJcbiAgICAgIGRpcmVjdG9yeTogc3RyaW5nO1xyXG4gICAgICBmaWxlczoge1xyXG4gICAgICAgIHB1YmxpY1VybDogc3RyaW5nO1xyXG4gICAgICAgIGZ1bGxQYXRoOiBzdHJpbmc7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICB9W107XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpbGVzSW5Gb2xkZXIgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtmaWxlc0luRm9sZGVyfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldDxGaWxlc0luRm9sZGVyUmVzPih1cmwpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgcmVzLmZpbGVzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAgIGZpbGVQYXRoOiBlLnB1YmxpY1VybCxcclxuICAgICAgICBmaWxlTmFtZTogZS5uYW1lLFxyXG4gICAgICB9KSkgfHwgW11cclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgZG93bmxvYWQgPSAoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtmaWxlTmFtZSB8fCB1dWlkLnY0KCl9Lnhsc3hgO1xyXG4gICAgbGluay5ocmVmID0gZmlsZVBhdGg7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRCeVRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHsgZmlsZVBhdGg6IHN0cmluZzsgY29sdW1uczogYW55W107IGl0ZW1zOiBhbnlbXTsgZmlsZU5hbWU/OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgY29sdW1ucywgaXRlbXMsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydEJ5VGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtzZEV4cG9ydEJ5VGVtcGxhdGV9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICB9LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtiYXNlNjQsJyB9KTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IoYmxvYiwgZmlsZU5hbWUpO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydENTViA9IGFzeW5jIChvcHRpb246IFNkRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3N2RXhwb3J0ZXIgPSBuZXcgRXhwb3J0VG9Dc3Yoe1xyXG4gICAgICBmaWxlbmFtZTogYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsXHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY3N2RXhwb3J0ZXIuZ2VuZXJhdGVDc3YoW2hlYWRlckNTViwgLi4uaXRlbXNdKTtcclxuICB9O1xyXG5cclxuICBleHBvcnQgPSBhc3luYyAob3B0aW9uOiBTZEV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUsIHNoZWV0cyB9ID0gb3B0aW9uO1xyXG4gICAgbGV0IGhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IFtpZHgsIGNvbHVtbl0gb2YgY29sdW1ucy5lbnRyaWVzKCkpIHtcclxuICAgICAgaWYgKCFjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2lkeCArIDF9OiBGaWVsZCBpcyByZXF1aXJlZGApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29sdW1uLnRpdGxlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogVGl0bGUgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgaGFzRGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpOyAvL2F3YWl0IFhsc3hQb3B1bGF0ZS5mcm9tQmxhbmtBc3luYygpOyAvLyDEkOG7jWMgZmlsZSBzYXUga2hpIMSRw6MgZG93bmxvYWRcclxuICAgIGNvbnN0IGZpcnN0U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ2RhdGEnKTsgLy8gTOG6pXkgcmEgc2hlZXQgxJHhuqd1IHRpw6puXHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI2ZpZWxkU3R5bGU7XHJcbiAgICAgIGlmIChjb2x1bW4ucmVxdWlyZWQpIHtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3JlcXVpcmVkU3R5bGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDIsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiN0aXRsZVN0eWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmZpZWxkO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS52YWx1ZSA9IGNvbHVtbi50aXRsZTtcclxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDMsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiNkZXNjcmlwdGlvblN0eWxlO1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgzLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmRlc2NyaXB0aW9uIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChzaGVldHM/Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuZmllbGRzKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoc2hlZXQubmFtZSk7XHJcbiAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gMzA7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3RpdGxlU3R5bGU7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS52YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBzaGVldC5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgxKSA9PiB7XHJcbiAgICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaWR4MikgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9IGl0ZW1bZmllbGRdO1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHRoaXMuI2NlbGxTdHlsZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmcm9tUm93ID0gaGFzRGVzY3JpcHRpb24gPyA0IDogMztcclxuICAgIGl0ZW1zLmZvckVhY2goKGUsIGlkeDEpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGlkeDIpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGVbY29sdW1uLmZpZWxkXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIC8vIEZvcm1hdCBt4bq3YyDEkeG7i25oIHbhu5tpIGtp4buDdSBz4buRXHJcbiAgICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9ICtlW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS5udW1GbXQgPSAnIyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gZVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoZnJvbVJvdyArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHtcclxuICAgICAgICAgIC4uLnRoaXMuI2NlbGxTdHlsZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSksIGZpbGVOYW1lKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRDdXN0b20gPSBhc3luYyAob3B0aW9uOiBTZEV4cG9ydEN1c3RvbU9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlTmFtZSwgc2hlZXRzIH0gPSBvcHRpb247XHJcbiAgICBpZiAoIXNoZWV0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnUGjhuqNpIGPDsyDDrXQgbmjhuqV0IDEgc2hlZXQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTtcclxuICAgIGZvciAoY29uc3QgW2lkeCwgc2hlZXRdIG9mIHNoZWV0cy5lbnRyaWVzKCkpIHtcclxuICAgICAgY29uc3QgeyBuYW1lLCBjb2x1bW5zLCBjZWxscyB9ID0gc2hlZXQ7XHJcbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChuYW1lIHx8IGBTaGVldCAke2lkeCArIDF9YCk7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbi5pbmRleCkuc3R5bGUgPSBjb2x1bW4uc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENvbHVtbihjb2x1bW4uaW5kZXgpLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xyXG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2x1bW4sIHZhbHVlLCBzdHlsZSB9ID0gY2VsbDtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q2VsbChyb3csIGNvbHVtbikuc3R5bGUgPSBzdHlsZSB8fCB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbikuc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENlbGwocm93LCBjb2x1bW4pLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pLCBmaWxlTmFtZSk7XHJcbiAgfTtcclxuXHJcbiAgbWVyZ2VQREYgPSBhc3luYyAodXJsczogc3RyaW5nW10pID0+IHtcclxuICAgIGNvbnN0IHsgc2RNZXJnZVBERiB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke3NkTWVyZ2VQREZ9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICB1cmxzLFxyXG4gICAgICB9LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgU2RVdGlsaXR5LmRvd25sb2FkQmxvYihuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KSk7XHJcbiAgfTtcclxuXHJcbiAgdXBsb2FkWGxzeCA9IGFzeW5jICgpOiBQcm9taXNlPHsgaXRlbXM6IGFueVtdOyBmaWxlOiBGaWxlIH0gfCB1bmRlZmluZWQ+ID0+IHtcclxuICAgIHJldHVybiBhd2FpdCBTZFV0aWxpdHkudXBsb2FkKHtcclxuICAgICAgZXh0ZW5zaW9uczogWyd4bHN4J10sXHJcbiAgICAgIG1heFNpemVJbk1iOiAxMCxcclxuICAgIH0pLnRoZW4oZmlsZSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlWGxzeChmaWxlKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHBhcnNlWGxzeCA9IGFzeW5jIChmaWxlOiBGaWxlKTogUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXTsgZmlsZTogRmlsZSB9IHwgdW5kZWZpbmVkPiA9PiB7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8eyBpdGVtczogYW55W107IGZpbGU6IEZpbGUgfT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdiID0gbmV3IFdvcmtib29rKCk7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gcmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICAgIGlmICghYnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHJlamVjdCgnQ8OzIGzhu5dpIHjhuqN5IHJhIGtoaSDEkeG7jWMgZmlsZScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3Yi54bHN4LmxvYWQoYnVmZmVyKS50aGVuKHdvcmtib29rID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay53b3Jrc2hlZXRzWzBdO1xyXG4gICAgICAgICAgICBpZiAoIXNoZWV0KSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KCdLaMO0bmcgdMOsbSB0aOG6pXkgZOG7ryBsaeG7h3UnKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBzaGVldC5nZXRSb3coMSkudmFsdWVzO1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xyXG4gICAgICAgICAgICAgIHNoZWV0LmVhY2hSb3coKHJvdywgcm93SW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaGFzVmFsdWVzLCB2YWx1ZXMgfSA9IHJvdztcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdywgaGFzVmFsdWVzLCB2YWx1ZXMpXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWVzICYmIHJvd0luZGV4ID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChjZWxsVmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjZWxsVmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWVzW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbVtmaWVsZF0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0udHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1bZmllbGRdID09PSAnJyB8fCBpdGVtW2ZpZWxkXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuIl19