mis-crystal-design-system 18.1.5-signal → 18.1.7-signal-1

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.
Files changed (33) hide show
  1. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
  2. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +7 -5
  3. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +2 -34
  4. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +60 -18
  5. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +255 -175
  6. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
  7. package/esm2022/filter/filter-panel/filter-panel.component.mjs +28 -27
  8. package/esm2022/input/mis-input.component.mjs +1 -9
  9. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
  10. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +10 -5
  11. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +23 -19
  12. package/esm2022/table/table.component.mjs +15 -3
  13. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +60 -50
  14. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  15. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +254 -174
  16. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  17. package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
  18. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  19. package/fesm2022/mis-crystal-design-system-filter.mjs +27 -26
  20. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  21. package/fesm2022/mis-crystal-design-system-input.mjs +0 -8
  22. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  23. package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
  24. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  25. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +9 -4
  26. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  27. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +22 -18
  28. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  29. package/fesm2022/mis-crystal-design-system-table.mjs +14 -3
  30. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  31. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  32. package/package.json +12 -12
  33. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
@@ -261,13 +261,18 @@ export class MultiSelectDropdownComponent {
261
261
  * Helper function to sort the data.
262
262
  */
263
263
  sortData(data) {
264
- const checkedValues = data.filter(a => a.checked);
265
- const unCheckedValues = data.filter(a => !a.checked);
264
+ // Separate "Select All" option from other items
265
+ const selectAllItem = data.find(t => t.value === this.SELECT_ALL_ENUM);
266
+ const otherItems = data.filter(t => t.value !== this.SELECT_ALL_ENUM);
267
+ const checkedValues = otherItems.filter(a => a.checked);
268
+ const unCheckedValues = otherItems.filter(a => !a.checked);
266
269
  const sortFn = (a, b) => a.label > b.label ? 1 : -1;
267
- return [
270
+ const sortedItems = [
268
271
  ...checkedValues.sort(sortFn),
269
272
  ...unCheckedValues.sort(sortFn)
270
- ].filter(t => t.value !== this.SELECT_ALL_ENUM);
273
+ ];
274
+ // Add "Select All" at the top if it exists
275
+ return selectAllItem ? [selectAllItem, ...sortedItems] : sortedItems;
271
276
  }
272
277
  /**
273
278
  * Helper function to filter the data.
@@ -440,4 +445,4 @@ export class MultiSelectDropdownComponent {
440
445
  args: ['popupContainer', { static: false }]
441
446
  }] }); })();
442
447
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiSelectDropdownComponent, { className: "MultiSelectDropdownComponent" }); })();
443
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL211bHRpLXNlbGVjdC1kcm9wZG93bi9tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbXVsdGktc2VsZWN0LWRyb3Bkb3duL211bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsT0FBTyxFQUNQLHNCQUFzQixFQUN0QixhQUFhLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEeEIsNkJBQW1GO0lBQ2pGLFlBQ0Y7SUFBQSxpQkFBSTs7O0lBREYsY0FDRjtJQURFLHNFQUNGOzs7SUFKQSw2QkFBNkM7SUFDN0MsNEJBQWdCO0lBQUEsWUFBYTtJQUFBLGlCQUFJO0lBQ2pDLHdGQUFtRjs7OztJQURuRSxlQUFhO0lBQWIsb0NBQWE7SUFDekIsY0FBK0Q7SUFBL0QsOEZBQStEOzs7SUFLbkUsd0JBQ2U7OztJQUZqQiw2QkFBNEM7SUFDMUMsK0dBQXdEOzs7O0lBQXpDLGNBQXVDO0lBQXZDLCtEQUF1Qzs7OztJQW1DcEQsK0JBUUM7SUFDQywyQkFLRTtJQUNKLGlCQUFNOzs7OztJQWFOLCtCQVNDO0lBTkMscU5BQVMsa0NBQTJCLEtBQUM7SUFPckMsMkJBS0U7SUFDSixpQkFBTTs7OztJ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QUNFLDJCQUEyQjtvQkEyQ0csYUFBYTtrQkFBcEQsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ1UsY0FBYztrQkFBN0QsU0FBUzttQkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQXhDbkMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBPdmVybGF5UmVmLFxuICBPdmVybGF5LFxuICBDb25uZWN0aW9uUG9zaXRpb25QYWlyLFxuICBPdmVybGF5Q29uZmlnLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9QVElPTlMge1xuICBzb3J0TGFiZWxzOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0RHJvcGRvd25Db21wb25lbnQge1xuICAvLyBEZXBlbmRlbmNpZXMgSW5qZWN0aW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgZVJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIElucHV0c1xuICBwdWJsaWMgZGF0YSA9IGlucHV0PE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10+KFtdKTtcbiAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBpbnB1dDxNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdPihbXSk7XG4gIHB1YmxpYyBsYWJlbCA9IGlucHV0PHN0cmluZz4oJ1NlbGVjdCcpO1xuICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyB3aWR0aCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZHJvcGRvd25MaXN0SGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyBkcm9wZG93bkxpc3RXaWR0aCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZHJvcGRvd25MaXN0UG9zaXRpb24gPSBpbnB1dDwnTGVmdCcgfCAnUmlnaHQnPignTGVmdCcpO1xuICBwdWJsaWMgZW5hYmxlU2VsZWN0QWxsID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgc2VhcmNoRW5hYmxlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgc2hvd1NlbGVjdGVkQ291bnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBub0RhdGFNZXNzYWdlID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YScpO1xuICBwdWJsaWMgb3B0aW9ucyA9IGlucHV0PE9QVElPTlM+KHtcbiAgICBzb3J0TGFiZWxzOiB0cnVlLFxuICB9KTtcbiAgcHVibGljIGhpZGVBcHBseUJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHNlYXJjaElucHV0UGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdTZWFyY2ggS2V5d29yZCcpO1xuICBwdWJsaWMgY3VzdG9tTGFiZWxUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIE91dHB1dFxuICBwdWJsaWMgb25DaGFuZ2UgPSBvdXRwdXQ8TXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXT4oKTtcblxuICAvLyBJbnRlcm5hbCBTaWduYWxzIGZvciBjb21wb25lbnQgc3RhdGVcbiAgcHVibGljIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBzZWFyY2hJbnB1dCA9IHNpZ25hbCgnJyk7XG4gIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBpbnRlcm5hbFNlbGVjdGVkSXRlbXMgPSBzaWduYWw8TXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXT4oW10pO1xuICBwdWJsaWMgaW50ZXJuYWxEYXRhID0gc2lnbmFsPE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10+KFtdKTtcblxuICAvLyBDb25zdGFudHNcbiAgcHJpdmF0ZSByZWFkb25seSBTRUxFQ1RfQUxMX0VOVU0gPSAnU0VMRUNUX0FMTF9FTkFCTEVEJztcblxuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VsZWN0RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9wdXBDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wdXBDb250YWluZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2VzKCk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLnBvcHVwQ29udGFpbmVyLCB0aGlzLnNlbGVjdEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gbWFuYWdlIHRoZSBjb21wb25lbnQncyBpbnRlcm5hbCBzdGF0ZSBiYXNlZCBvbiBleHRlcm5hbCBpbnB1dHMuXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUlucHV0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmRhdGEoKTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0YSA9IHZhbHVlcz8ubWFwKGl0ZW0gPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBjaGVja2VkOiBzZWxlY3RlZD8uc29tZShzID0+IHMudmFsdWUgPT09IGl0ZW0udmFsdWUpID8/IGZhbHNlXG4gICAgfSkpIHx8IFtdO1xuICAgIFxuICAgIHRoaXMuaW50ZXJuYWxEYXRhLnNldChmb3JtYXR0ZWREYXRhKTtcbiAgICB0aGlzLmludGVybmFsU2VsZWN0ZWRJdGVtcy5zZXQoc2VsZWN0ZWQpO1xuXG4gICAgLy8gQXBwbHkgdGhlICdzZWxlY3QgYWxsJyBsb2dpY1xuICAgIHRoaXMuaW50ZXJuYWxEYXRhLnVwZGF0ZShjdXJyZW50RGF0YSA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdEFsbCA9IHRoaXMuZW5hYmxlU2VsZWN0QWxsKCkgJiYgY3VycmVudERhdGEuZXZlcnkoaXRlbSA9PiBpdGVtLmNoZWNrZWQgfHwgaXRlbS52YWx1ZSA9PT0gdGhpcy5TRUxFQ1RfQUxMX0VOVU0pO1xuICAgICAgY29uc3Qgc2VsZWN0QWxsSXRlbSA9IHtcbiAgICAgICAgbGFiZWw6ICdTZWxlY3QgYWxsJyxcbiAgICAgICAgdmFsdWU6IHRoaXMuU0VMRUNUX0FMTF9FTlVNLFxuICAgICAgICBjaGVja2VkOiBpc1NlbGVjdEFsbFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaGFzU2VsZWN0QWxsID0gY3VycmVudERhdGEuc29tZSh0ID0+IHQudmFsdWUgPT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZVNlbGVjdEFsbCgpKSB7XG4gICAgICAgIGlmICghaGFzU2VsZWN0QWxsKSB7XG4gICAgICAgICAgcmV0dXJuIFtzZWxlY3RBbGxJdGVtLCAuLi5jdXJyZW50RGF0YV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRhLm1hcChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNID8gc2VsZWN0QWxsSXRlbSA6IGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY3VycmVudERhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS52YWx1ZSAhPT0gdGhpcy5TRUxFQ1RfQUxMX0VOVU0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVkIHNpZ25hbCBmb3IgdGhlIGRhdGEgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBGaWx0ZXJzIGJhc2VkIG9uIHNlYXJjaCBpbnB1dCBhbmQgc29ydHMgaWYgdGhlIG9wdGlvbiBpcyBlbmFibGVkLlxuICAgKi9cbiAgcHVibGljIGRpc3BsYXlEYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBkYXRhVG9EaXNwbGF5ID0gdGhpcy5zZWFyY2hFbmFibGVkKCkgJiYgdGhpcy5zZWFyY2hJbnB1dCgpID8gXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckJ5VmFsdWUodGhpcy5pbnRlcm5hbERhdGEoKSwgdGhpcy5zZWFyY2hJbnB1dCgpKSA6IFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbERhdGEoKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMoKS5zb3J0TGFiZWxzKSB7XG4gICAgICBkYXRhVG9EaXNwbGF5ID0gdGhpcy5zb3J0RGF0YShkYXRhVG9EaXNwbGF5KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGRhdGFUb0Rpc3BsYXk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gc29ydCB0aGUgZGF0YS5cbiAgICovXG4gIHByaXZhdGUgc29ydERhdGEoZGF0YTogTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSk6IE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10ge1xuICAgIGNvbnN0IGNoZWNrZWRWYWx1ZXMgPSBkYXRhLmZpbHRlcihhID0+IGEuY2hlY2tlZCk7XG4gICAgY29uc3QgdW5DaGVja2VkVmFsdWVzID0gZGF0YS5maWx0ZXIoYSA9PiAhYS5jaGVja2VkKTtcblxuICAgIGNvbnN0IHNvcnRGbiA9IChhOiBNdWx0aVNlbGVjdERyb3Bkb3duSXRlbSwgYjogTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0pID0+IGEubGFiZWwgPiBiLmxhYmVsID8gMSA6IC0xO1xuICAgIFxuICAgIHJldHVybiBbXG4gICAgICAuLi5jaGVja2VkVmFsdWVzLnNvcnQoc29ydEZuKSxcbiAgICAgIC4uLnVuQ2hlY2tlZFZhbHVlcy5zb3J0KHNvcnRGbilcbiAgICBdLmZpbHRlcih0ID0+IHQudmFsdWUgIT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlsdGVyIHRoZSBkYXRhLlxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJCeVZhbHVlKGFycmF5OiBNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdLCBzZWFyY2g6IHN0cmluZyk6IE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10ge1xuICAgIHJldHVybiBhcnJheS5maWx0ZXIobyA9PiBvPy5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duJ3Mgb3Blbi9jbG9zZSBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3Blbi51cGRhdGUoY3VycmVudCA9PiAhY3VycmVudCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIHNwZWNpZmljIGl0ZW0uXG4gICAqIEhhbmRsZXMgdGhlICdTZWxlY3QgQWxsJyBsb2dpYy5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVTZWxlY3RlZEl0ZW1zKGV2ZW50OiBFdmVudCwgaXRlbTogTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0pOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5lbmFibGVTZWxlY3RBbGwoKSAmJiBpdGVtLnZhbHVlID09PSB0aGlzLlNFTEVDVF9BTExfRU5VTSkge1xuICAgICAgdGhpcy5pbnRlcm5hbERhdGEudXBkYXRlKGl0ZW1zID0+XG4gICAgICAgIGl0ZW1zLm1hcCh0ID0+ICh7IC4uLnQsIGNoZWNrZWQ6ICFpdGVtLmNoZWNrZWQgfSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsRGF0YS51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSBpdGVtcy5tYXAoYSA9PiBcbiAgICAgICAgICBhLnZhbHVlID09PSBpdGVtLnZhbHVlID8geyAuLi5hLCBjaGVja2VkOiAhYS5jaGVja2VkIH0gOiBhXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBhbGxDaGVja2VkID0gdXBkYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihyID0+IHIudmFsdWUgIT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5ldmVyeSh0ID0+IHQuY2hlY2tlZCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdXBkYXRlZEl0ZW1zLm1hcChhID0+IFxuICAgICAgICAgIGEudmFsdWUgPT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNID8geyAuLi5hLCBjaGVja2VkOiBhbGxDaGVja2VkIH0gOiBhXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaWRlQXBwbHlCdXR0b24oKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGl0ZW1zIGFuZCBjbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHVibGljIGFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuaW50ZXJuYWxEYXRhKClcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmNoZWNrZWQgJiYgYS52YWx1ZSAhPT0gdGhpcy5TRUxFQ1RfQUxMX0VOVU0pXG4gICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCB7IGNoZWNrZWQsIC4uLmRhdGEgfSA9IGl0ZW07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSk7XG4gICAgXG4gICAgLy8gVXNlIHRoZSBzaWduYWwgb3V0cHV0J3MgZW1pdCBtZXRob2RcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWQgYXMgTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSk7XG4gICAgdGhpcy5pbnRlcm5hbFNlbGVjdGVkSXRlbXMuc2V0KHNlbGVjdGVkIGFzIE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pO1xuICAgIGlmICghdGhpcy5oaWRlQXBwbHlCdXR0b24oKSkge1xuICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBkcm9wZG93biB0byBhbiBlbXB0eSBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxEYXRhLnVwZGF0ZShpdGVtcyA9PiBcbiAgICAgIGl0ZW1zLm1hcChpdGVtID0+ICh7IC4uLml0ZW0sIGNoZWNrZWQ6IGZhbHNlIH0pKVxuICAgICk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gYW5kIHJldmVydHMgYW55IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldCgnJyk7XG4gICAgLy8gUmV2ZXJ0IGludGVybmFsIGRhdGEgdG8gbWF0Y2ggdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbXNcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBzZWFyY2ggaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoSW5wdXRGb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGlzRm9jdXNlZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWFyY2ggaW5wdXQgYW5kIHVuZm9jdXNlcyBpdC5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hJbnB1dENhbmNlbGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQuc2V0KCcnKTtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2hhbmdlIGV2ZW50IGZyb20gdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hJbnB1dE9uQ2hhbmdlKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldChuZXdWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgZGlzcGxheXMgdGhlIG92ZXJsYXkgZm9yIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKi9cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+LFxuICAgIG9yaWdpbjogSFRNTEVsZW1lbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSwgMCwgNCksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LCAwLCAtNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJyB9LCB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nIH0sIDAsIC00KSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbj8uY2xpZW50V2lkdGgsXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IHdpZHRoOiB0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IGhlaWdodDogdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQoKSB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DYW5jZWwoKSk7XG4gIH1cbn1cblxuIiwiPGRpdlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGhlaWdodCgpLmxlbmd0aCA+IDAgPyBoZWlnaHQoKSA6ICcnLFxuICAgIHdpZHRoOiB3aWR0aCgpLmxlbmd0aCA+IDAgPyB3aWR0aCgpIDogJydcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICAjc2VsZWN0XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQnOiBpc09wZW4oKSA/ICcjRTZFQkY3JyA6ICcnIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUxhYmVsVGVtcGxhdGUoKVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCI+e3sgbGFiZWwoKSB9fTwvcD5cbiAgICAgIDxwICpuZ0lmPVwic2hvd1NlbGVjdGVkQ291bnQoKSAmJiBpbnRlcm5hbFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwXCIgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICB7eyBpbnRlcm5hbFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggfX1cbiAgICAgIDwvcD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTGFiZWxUZW1wbGF0ZSgpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tTGFiZWxUZW1wbGF0ZSgpXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cImhhbmRsZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd0cmFuc2Zvcm0nOiBpc09wZW4oKSA/ICdyb3RhdGUoMTgwZGVnKScgOiAncm90YXRlKDBkZWcpJyB9XCJcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuODI1IDcuMTU4NDVMMTAgMTAuOTc1MUw2LjE3NSA3LjE1ODQ1TDUgOC4zMzM0NUwxMCAxMy4zMzM0TDE1IDguMzMzNDVMMTMuODI1IDcuMTU4NDVaXCJcbiAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBDb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJ2hlaWdodCc6IGRyb3Bkb3duTGlzdEhlaWdodCgpLFxuICAgICAgd2lkdGg6IGRyb3Bkb3duTGlzdFdpZHRoKClcbiAgICB9XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncG9zaXRpb24tbGVmdCc6IGRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdMZWZ0JyxcbiAgICAgICdwb3NpdGlvbi1yaWdodCc6IGRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdSaWdodCdcbiAgICB9XCJcbiAgPlxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaEVuYWJsZWQoKVwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCIhaXNTZWFyY2hJbnB1dEZvY3VzZWQoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXG4gICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk00LjIxNTA4IDExLjE0NTZDNC4yMTUwOCA3LjMxNzkgNy4zMzcyMiA0LjIxMTY1IDExLjE5MjYgNC4yMTE2NUMxNS4wNDggNC4yMTE2NSAxOC4xNzAyIDcuMzE3OSAxOC4xNzAyIDExLjE0NTZDMTguMTcwMiAxMi42OTMxIDE3LjY1OTkgMTQuMTIyNiAxNi43OTcyIDE1LjI3NjdMMTUuMzY4NSAxNi43MDEzQzE0LjIwNDQgMTcuNTY2OCAxMi43NTkgMTguMDc5NiAxMS4xOTI2IDE4LjA3OTZDNy4zMzcyMiAxOC4wNzk2IDQuMjE1MDggMTQuOTczNCA0LjIxNTA4IDExLjE0NTZaTTE1Ljk0MjEgMTcuNzgzNUMxNC42MDIxIDE4LjczMjkgMTIuOTYyNyAxOS4yOTEzIDExLjE5MjYgMTkuMjkxM0M2LjY2OTc3IDE5LjI5MTMgMyAxNS42NDYxIDMgMTEuMTQ1NkMzIDYuNjQ1MTIgNi42Njk3NyAzIDExLjE5MjYgM0MxNS43MTU1IDMgMTkuMzg1MiA2LjY0NTEyIDE5LjM4NTIgMTEuMTQ1NkMxOS4zODUyIDEyLjkzNzEgMTguODAzNyAxNC41OTMxIDE3LjgxODQgMTUuOTM3NUwxOS44MzYxIDE3LjQwNDhDMjAuNjcwNSAxNy45MTIgMjEuNzU1NCAxOC42NTQzIDIwLjI0NTQgMjAuMjE1QzE4LjczNTMgMjEuNzc1NiAxOC4wMDk5IDIwLjY2NjMgMTcuNDk5MSAxOS44MzY0TDE1Ljk0MjEgMTcuNzgzNVpcIlxuICAgICAgICAgICAgZmlsbD1cIiM2QTczN0RcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hJbnB1dCgpXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxMnB4JyA6ICc0NXB4JyxcbiAgICAgICAgICAgIGJvcmRlcjogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxcHggc29saWQgIzA5MzdCMicgOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBpc1NlYXJjaElucHV0Rm9jdXNlZCgpID8gJzQ1cHgnIDogJzEwcHgnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoSW5wdXRPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcnIDogc2VhcmNoSW5wdXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAoZm9jdXMpPVwic2VhcmNoSW5wdXRGb2N1c2VkKHRydWUpXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoSW5wdXRGb2N1c2VkKClcIlxuICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLWljb25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2hJbnB1dENhbmNlbGVkKCRldmVudClcIlxuICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNOC44NzQ0NiA3LjMyMTQ0QzguNDQ1ODggNi44OTI4NSA3Ljc1MSA2Ljg5Mjg1IDcuMzIyNDIgNy4zMjE0NEM2Ljg5MzgzIDcuNzUwMDIgNi44OTM4MyA4LjQ0NDkgNy4zMjI0MiA4Ljg3MzQ5TDEwLjQ0ODggMTEuOTk5OUw3LjMyMzU3IDE1LjEyNTJDNi44OTQ5OCAxNS41NTM4IDYuODk0OTggMTYuMjQ4NiA3LjMyMzU3IDE2LjY3NzJDNy43NTIxNSAxNy4xMDU4IDguNDQ3MDMgMTcuMTA1OCA4Ljg3NTYxIDE2LjY3NzJMMTIuMDAwOSAxMy41NTJMMTUuMTI2MSAxNi42NzcyQzE1LjU1NDcgMTcuMTA1OCAxNi4yNDk2IDE3LjEwNTggMTYuNjc4MSAxNi42NzcyQzE3LjEwNjcgMTYuMjQ4NiAxNy4xMDY3IDE1LjU1MzcgMTYuNjc4MSAxNS4xMjUxTDEzLjU1MjkgMTEuOTk5OUwxNi42NzkzIDguODczNTRDMTcuMTA3OSA4LjQ0NDk2IDE3LjEwNzkgNy43NTAwOCAxNi42NzkzIDcuMzIxNUMxNi4yNTA3IDYuODkyOTEgMTUuNTU1OCA2Ljg5MjkxIDE1LjEyNzMgNy4zMjE1TDEyLjAwMDkgMTAuNDQ3OUw4Ljg3NDQ2IDcuMzIxNDRaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNkE3MzdEXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheURhdGEoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXRlbS5jaGVja2VkXCIgdGFiaW5kZXg9XCItMVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiaXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImRpc3BsYXlEYXRhKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgc2VhcmNoSW5wdXQoKSA9PT0gXCJcIiA/IG5vRGF0YU1lc3NhZ2UoKSA6IFwiTm8gcmVzdWx0c1wiIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImludGVybmFsRGF0YSgpLmxlbmd0aCAhPT0gMCAmJiAhaGlkZUFwcGx5QnV0dG9uKClcIiBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnd2lkdGgnOiAnY2FsYyg1MCUgLSA0cHgpJ31cIiAoY2xpY2spPVwib25SZXNldCgpXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidSZXNldCdcIiBbdHlwZV09XCInVGV4dCdcIiBbd2lkdGhdPVwiJzEwMCUnXCIgPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJ2NhbGMoNTAlIC0gNHB4KSd9XCIgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbdHlwZV09XCInU29saWQnXCIgW3dpZHRoXT1cIicxMDAlJ1wiID48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbiJdfQ==
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL211bHRpLXNlbGVjdC1kcm9wZG93bi9tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbXVsdGktc2VsZWN0LWRyb3Bkb3duL211bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsT0FBTyxFQUNQLHNCQUFzQixFQUN0QixhQUFhLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEeEIsNkJBQW1GO0lBQ2pGLFlBQ0Y7SUFBQSxpQkFBSTs7O0lBREYsY0FDRjtJQURFLHNFQUNGOzs7SUFKQSw2QkFBNkM7SUFDN0MsNEJBQWdCO0lBQUEsWUFBYTtJQUFBLGlCQUFJO0lBQ2pDLHdGQUFtRjs7OztJQURuRSxlQUFhO0lBQWIsb0NBQWE7SUFDekIsY0FBK0Q7SUFBL0QsOEZBQStEOzs7SUFLbkUsd0JBQ2U7OztJQUZqQiw2QkFBNEM7SUFDMUMsK0dBQXdEOzs7O0lBQXpDLGNBQXVDO0lBQXZDLCtEQUF1Qzs7OztJQW1DcEQsK0JBUUM7SUFDQywyQkFLRTtJQUNKLGlCQUFNOzs7OztJQWFOLCtCQVNDO0lBTkMscU5BQVMsa0NBQTJCLEtBQUM7SUFPckMsMkJBS0U7SUFDSixpQkFBTTs7OztJ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QztZQUcxQiw4QkFBbUI7WUFPbkIsQUFORSwrRkFBNkMsa0ZBTUg7WUFJNUMsaUJBQU07O1lBQ04sOEJBUUM7WUFDQywwQkFLRTtZQUdSLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7WUFDTiwrSEFBNkI7O1lBM0MzQiw0SUFHRTtZQVFBLGNBQXVEO1lBQXZELG1GQUF1RDtZQUd0QyxlQUE0QjtZQUE1QixpREFBNEI7WUFNOUIsY0FBMkI7WUFBM0IsZ0RBQTJCO1lBT3hDLGNBQXlFO1lBQXpFLHVHQUF5RTs7O2lGRFNsRSw0QkFBNEI7Y0FMeEMsU0FBUzsyQkFDRSwyQkFBMkI7b0JBMkNHLGFBQWE7a0JBQXBELFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNVLGNBQWM7a0JBQTdELFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkF4Q25DLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheVJlZixcbiAgT3ZlcmxheSxcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgT3ZlcmxheUNvbmZpZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpU2VsZWN0RHJvcGRvd25JdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPUFRJT05TIHtcbiAgc29ydExhYmVsczogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdERyb3Bkb3duQ29tcG9uZW50IHtcbiAgLy8gRGVwZW5kZW5jaWVzIEluamVjdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IGVSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIC8vIFNpZ25hbC1iYXNlZCBJbnB1dHNcbiAgcHVibGljIGRhdGEgPSBpbnB1dDxNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdPihbXSk7XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gaW5wdXQ8TXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXT4oW10pO1xuICBwdWJsaWMgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdTZWxlY3QnKTtcbiAgcHVibGljIGhlaWdodCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIGRyb3Bkb3duTGlzdEhlaWdodCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZHJvcGRvd25MaXN0V2lkdGggPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIGRyb3Bkb3duTGlzdFBvc2l0aW9uID0gaW5wdXQ8J0xlZnQnIHwgJ1JpZ2h0Jz4oJ0xlZnQnKTtcbiAgcHVibGljIGVuYWJsZVNlbGVjdEFsbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHNlYXJjaEVuYWJsZWQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHNob3dTZWxlY3RlZENvdW50ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgbm9EYXRhTWVzc2FnZSA9IGlucHV0PHN0cmluZz4oJ05vIERhdGEnKTtcbiAgcHVibGljIG9wdGlvbnMgPSBpbnB1dDxPUFRJT05TPih7XG4gICAgc29ydExhYmVsczogdHJ1ZSxcbiAgfSk7XG4gIHB1YmxpYyBoaWRlQXBwbHlCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBzZWFyY2hJbnB1dFBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignU2VhcmNoIEtleXdvcmQnKTtcbiAgcHVibGljIGN1c3RvbUxhYmVsVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIC8vIFNpZ25hbC1iYXNlZCBPdXRwdXRcbiAgcHVibGljIG9uQ2hhbmdlID0gb3V0cHV0PE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10+KCk7XG5cbiAgLy8gSW50ZXJuYWwgU2lnbmFscyBmb3IgY29tcG9uZW50IHN0YXRlXG4gIHB1YmxpYyBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgc2VhcmNoSW5wdXQgPSBzaWduYWwoJycpO1xuICBwdWJsaWMgaXNTZWFyY2hJbnB1dEZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgaW50ZXJuYWxTZWxlY3RlZEl0ZW1zID0gc2lnbmFsPE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10+KFtdKTtcbiAgcHVibGljIGludGVybmFsRGF0YSA9IHNpZ25hbDxNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdPihbXSk7XG5cbiAgLy8gQ29uc3RhbnRzXG4gIHByaXZhdGUgcmVhZG9ubHkgU0VMRUNUX0FMTF9FTlVNID0gJ1NFTEVDVF9BTExfRU5BQkxFRCc7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlbGVjdEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcHVwQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlcygpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5wb3B1cENvbnRhaW5lciwgdGhpcy5zZWxlY3RFbGVtZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRWZmZWN0IHRvIG1hbmFnZSB0aGUgY29tcG9uZW50J3MgaW50ZXJuYWwgc3RhdGUgYmFzZWQgb24gZXh0ZXJuYWwgaW5wdXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVJbnB1dENoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5kYXRhKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGEgPSB2YWx1ZXM/Lm1hcChpdGVtID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY2hlY2tlZDogc2VsZWN0ZWQ/LnNvbWUocyA9PiBzLnZhbHVlID09PSBpdGVtLnZhbHVlKSA/PyBmYWxzZVxuICAgIH0pKSB8fCBbXTtcbiAgICBcbiAgICB0aGlzLmludGVybmFsRGF0YS5zZXQoZm9ybWF0dGVkRGF0YSk7XG4gICAgdGhpcy5pbnRlcm5hbFNlbGVjdGVkSXRlbXMuc2V0KHNlbGVjdGVkKTtcblxuICAgIC8vIEFwcGx5IHRoZSAnc2VsZWN0IGFsbCcgbG9naWNcbiAgICB0aGlzLmludGVybmFsRGF0YS51cGRhdGUoY3VycmVudERhdGEgPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RBbGwgPSB0aGlzLmVuYWJsZVNlbGVjdEFsbCgpICYmIGN1cnJlbnREYXRhLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5jaGVja2VkIHx8IGl0ZW0udmFsdWUgPT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKTtcbiAgICAgIGNvbnN0IHNlbGVjdEFsbEl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiAnU2VsZWN0IGFsbCcsXG4gICAgICAgIHZhbHVlOiB0aGlzLlNFTEVDVF9BTExfRU5VTSxcbiAgICAgICAgY2hlY2tlZDogaXNTZWxlY3RBbGxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGhhc1NlbGVjdEFsbCA9IGN1cnJlbnREYXRhLnNvbWUodCA9PiB0LnZhbHVlID09PSB0aGlzLlNFTEVDVF9BTExfRU5VTSk7XG4gICAgICBpZiAodGhpcy5lbmFibGVTZWxlY3RBbGwoKSkge1xuICAgICAgICBpZiAoIWhhc1NlbGVjdEFsbCkge1xuICAgICAgICAgIHJldHVybiBbc2VsZWN0QWxsSXRlbSwgLi4uY3VycmVudERhdGFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0YS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB0aGlzLlNFTEVDVF9BTExfRU5VTSA/IHNlbGVjdEFsbEl0ZW0gOiBpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgIT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBzaWduYWwgZm9yIHRoZSBkYXRhIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogRmlsdGVycyBiYXNlZCBvbiBzZWFyY2ggaW5wdXQgYW5kIHNvcnRzIGlmIHRoZSBvcHRpb24gaXMgZW5hYmxlZC5cbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5RGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgZGF0YVRvRGlzcGxheSA9IHRoaXMuc2VhcmNoRW5hYmxlZCgpICYmIHRoaXMuc2VhcmNoSW5wdXQoKSA/IFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJCeVZhbHVlKHRoaXMuaW50ZXJuYWxEYXRhKCksIHRoaXMuc2VhcmNoSW5wdXQoKSkgOiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxEYXRhKCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zKCkuc29ydExhYmVscykge1xuICAgICAgZGF0YVRvRGlzcGxheSA9IHRoaXMuc29ydERhdGEoZGF0YVRvRGlzcGxheSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBkYXRhVG9EaXNwbGF5O1xuICB9KTtcblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIHNvcnQgdGhlIGRhdGEuXG4gICAqL1xuICBwcml2YXRlIHNvcnREYXRhKGRhdGE6IE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pOiBNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdIHtcbiAgICAvLyBTZXBhcmF0ZSBcIlNlbGVjdCBBbGxcIiBvcHRpb24gZnJvbSBvdGhlciBpdGVtc1xuICAgIGNvbnN0IHNlbGVjdEFsbEl0ZW0gPSBkYXRhLmZpbmQodCA9PiB0LnZhbHVlID09PSB0aGlzLlNFTEVDVF9BTExfRU5VTSk7XG4gICAgY29uc3Qgb3RoZXJJdGVtcyA9IGRhdGEuZmlsdGVyKHQgPT4gdC52YWx1ZSAhPT0gdGhpcy5TRUxFQ1RfQUxMX0VOVU0pO1xuICAgIFxuICAgIGNvbnN0IGNoZWNrZWRWYWx1ZXMgPSBvdGhlckl0ZW1zLmZpbHRlcihhID0+IGEuY2hlY2tlZCk7XG4gICAgY29uc3QgdW5DaGVja2VkVmFsdWVzID0gb3RoZXJJdGVtcy5maWx0ZXIoYSA9PiAhYS5jaGVja2VkKTtcblxuICAgIGNvbnN0IHNvcnRGbiA9IChhOiBNdWx0aVNlbGVjdERyb3Bkb3duSXRlbSwgYjogTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0pID0+IGEubGFiZWwgPiBiLmxhYmVsID8gMSA6IC0xO1xuICAgIFxuICAgIGNvbnN0IHNvcnRlZEl0ZW1zID0gW1xuICAgICAgLi4uY2hlY2tlZFZhbHVlcy5zb3J0KHNvcnRGbiksXG4gICAgICAuLi51bkNoZWNrZWRWYWx1ZXMuc29ydChzb3J0Rm4pXG4gICAgXTtcbiAgICBcbiAgICAvLyBBZGQgXCJTZWxlY3QgQWxsXCIgYXQgdGhlIHRvcCBpZiBpdCBleGlzdHNcbiAgICByZXR1cm4gc2VsZWN0QWxsSXRlbSA/IFtzZWxlY3RBbGxJdGVtLCAuLi5zb3J0ZWRJdGVtc10gOiBzb3J0ZWRJdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlsdGVyIHRoZSBkYXRhLlxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJCeVZhbHVlKGFycmF5OiBNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdLCBzZWFyY2g6IHN0cmluZyk6IE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10ge1xuICAgIHJldHVybiBhcnJheS5maWx0ZXIobyA9PiBvPy5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duJ3Mgb3Blbi9jbG9zZSBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3Blbi51cGRhdGUoY3VycmVudCA9PiAhY3VycmVudCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIHNwZWNpZmljIGl0ZW0uXG4gICAqIEhhbmRsZXMgdGhlICdTZWxlY3QgQWxsJyBsb2dpYy5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVTZWxlY3RlZEl0ZW1zKGV2ZW50OiBFdmVudCwgaXRlbTogTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0pOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5lbmFibGVTZWxlY3RBbGwoKSAmJiBpdGVtLnZhbHVlID09PSB0aGlzLlNFTEVDVF9BTExfRU5VTSkge1xuICAgICAgdGhpcy5pbnRlcm5hbERhdGEudXBkYXRlKGl0ZW1zID0+XG4gICAgICAgIGl0ZW1zLm1hcCh0ID0+ICh7IC4uLnQsIGNoZWNrZWQ6ICFpdGVtLmNoZWNrZWQgfSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsRGF0YS51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSBpdGVtcy5tYXAoYSA9PiBcbiAgICAgICAgICBhLnZhbHVlID09PSBpdGVtLnZhbHVlID8geyAuLi5hLCBjaGVja2VkOiAhYS5jaGVja2VkIH0gOiBhXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBhbGxDaGVja2VkID0gdXBkYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihyID0+IHIudmFsdWUgIT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5ldmVyeSh0ID0+IHQuY2hlY2tlZCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdXBkYXRlZEl0ZW1zLm1hcChhID0+IFxuICAgICAgICAgIGEudmFsdWUgPT09IHRoaXMuU0VMRUNUX0FMTF9FTlVNID8geyAuLi5hLCBjaGVja2VkOiBhbGxDaGVja2VkIH0gOiBhXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaWRlQXBwbHlCdXR0b24oKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGl0ZW1zIGFuZCBjbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHVibGljIGFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuaW50ZXJuYWxEYXRhKClcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmNoZWNrZWQgJiYgYS52YWx1ZSAhPT0gdGhpcy5TRUxFQ1RfQUxMX0VOVU0pXG4gICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCB7IGNoZWNrZWQsIC4uLmRhdGEgfSA9IGl0ZW07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSk7XG4gICAgXG4gICAgLy8gVXNlIHRoZSBzaWduYWwgb3V0cHV0J3MgZW1pdCBtZXRob2RcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWQgYXMgTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSk7XG4gICAgdGhpcy5pbnRlcm5hbFNlbGVjdGVkSXRlbXMuc2V0KHNlbGVjdGVkIGFzIE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pO1xuICAgIGlmICghdGhpcy5oaWRlQXBwbHlCdXR0b24oKSkge1xuICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBkcm9wZG93biB0byBhbiBlbXB0eSBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxEYXRhLnVwZGF0ZShpdGVtcyA9PiBcbiAgICAgIGl0ZW1zLm1hcChpdGVtID0+ICh7IC4uLml0ZW0sIGNoZWNrZWQ6IGZhbHNlIH0pKVxuICAgICk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gYW5kIHJldmVydHMgYW55IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldCgnJyk7XG4gICAgLy8gUmV2ZXJ0IGludGVybmFsIGRhdGEgdG8gbWF0Y2ggdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbXNcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBzZWFyY2ggaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoSW5wdXRGb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGlzRm9jdXNlZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWFyY2ggaW5wdXQgYW5kIHVuZm9jdXNlcyBpdC5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hJbnB1dENhbmNlbGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQuc2V0KCcnKTtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2hhbmdlIGV2ZW50IGZyb20gdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hJbnB1dE9uQ2hhbmdlKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldChuZXdWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgZGlzcGxheXMgdGhlIG92ZXJsYXkgZm9yIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKi9cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+LFxuICAgIG9yaWdpbjogSFRNTEVsZW1lbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSwgMCwgNCksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LCAwLCAtNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJyB9LCB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nIH0sIDAsIC00KSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbj8uY2xpZW50V2lkdGgsXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IHdpZHRoOiB0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IGhlaWdodDogdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQoKSB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DYW5jZWwoKSk7XG4gIH1cbn1cblxuIiwiPGRpdlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGhlaWdodCgpLmxlbmd0aCA+IDAgPyBoZWlnaHQoKSA6ICcnLFxuICAgIHdpZHRoOiB3aWR0aCgpLmxlbmd0aCA+IDAgPyB3aWR0aCgpIDogJydcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICAjc2VsZWN0XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQnOiBpc09wZW4oKSA/ICcjRTZFQkY3JyA6ICcnIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUxhYmVsVGVtcGxhdGUoKVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCI+e3sgbGFiZWwoKSB9fTwvcD5cbiAgICAgIDxwICpuZ0lmPVwic2hvd1NlbGVjdGVkQ291bnQoKSAmJiBpbnRlcm5hbFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwXCIgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICB7eyBpbnRlcm5hbFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggfX1cbiAgICAgIDwvcD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTGFiZWxUZW1wbGF0ZSgpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tTGFiZWxUZW1wbGF0ZSgpXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cImhhbmRsZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd0cmFuc2Zvcm0nOiBpc09wZW4oKSA/ICdyb3RhdGUoMTgwZGVnKScgOiAncm90YXRlKDBkZWcpJyB9XCJcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuODI1IDcuMTU4NDVMMTAgMTAuOTc1MUw2LjE3NSA3LjE1ODQ1TDUgOC4zMzM0NUwxMCAxMy4zMzM0TDE1IDguMzMzNDVMMTMuODI1IDcuMTU4NDVaXCJcbiAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBDb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJ2hlaWdodCc6IGRyb3Bkb3duTGlzdEhlaWdodCgpLFxuICAgICAgd2lkdGg6IGRyb3Bkb3duTGlzdFdpZHRoKClcbiAgICB9XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncG9zaXRpb24tbGVmdCc6IGRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdMZWZ0JyxcbiAgICAgICdwb3NpdGlvbi1yaWdodCc6IGRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdSaWdodCdcbiAgICB9XCJcbiAgPlxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaEVuYWJsZWQoKVwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCIhaXNTZWFyY2hJbnB1dEZvY3VzZWQoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXG4gICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk00LjIxNTA4IDExLjE0NTZDNC4yMTUwOCA3LjMxNzkgNy4zMzcyMiA0LjIxMTY1IDExLjE5MjYgNC4yMTE2NUMxNS4wNDggNC4yMTE2NSAxOC4xNzAyIDcuMzE3OSAxOC4xNzAyIDExLjE0NTZDMTguMTcwMiAxMi42OTMxIDE3LjY1OTkgMTQuMTIyNiAxNi43OTcyIDE1LjI3NjdMMTUuMzY4NSAxNi43MDEzQzE0LjIwNDQgMTcuNTY2OCAxMi43NTkgMTguMDc5NiAxMS4xOTI2IDE4LjA3OTZDNy4zMzcyMiAxOC4wNzk2IDQuMjE1MDggMTQuOTczNCA0LjIxNTA4IDExLjE0NTZaTTE1Ljk0MjEgMTcuNzgzNUMxNC42MDIxIDE4LjczMjkgMTIuOTYyNyAxOS4yOTEzIDExLjE5MjYgMTkuMjkxM0M2LjY2OTc3IDE5LjI5MTMgMyAxNS42NDYxIDMgMTEuMTQ1NkMzIDYuNjQ1MTIgNi42Njk3NyAzIDExLjE5MjYgM0MxNS43MTU1IDMgMTkuMzg1MiA2LjY0NTEyIDE5LjM4NTIgMTEuMTQ1NkMxOS4zODUyIDEyLjkzNzEgMTguODAzNyAxNC41OTMxIDE3LjgxODQgMTUuOTM3NUwxOS44MzYxIDE3LjQwNDhDMjAuNjcwNSAxNy45MTIgMjEuNzU1NCAxOC42NTQzIDIwLjI0NTQgMjAuMjE1QzE4LjczNTMgMjEuNzc1NiAxOC4wMDk5IDIwLjY2NjMgMTcuNDk5MSAxOS44MzY0TDE1Ljk0MjEgMTcuNzgzNVpcIlxuICAgICAgICAgICAgZmlsbD1cIiM2QTczN0RcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hJbnB1dCgpXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxMnB4JyA6ICc0NXB4JyxcbiAgICAgICAgICAgIGJvcmRlcjogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxcHggc29saWQgIzA5MzdCMicgOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBpc1NlYXJjaElucHV0Rm9jdXNlZCgpID8gJzQ1cHgnIDogJzEwcHgnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoSW5wdXRPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcnIDogc2VhcmNoSW5wdXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAoZm9jdXMpPVwic2VhcmNoSW5wdXRGb2N1c2VkKHRydWUpXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoSW5wdXRGb2N1c2VkKClcIlxuICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLWljb25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2hJbnB1dENhbmNlbGVkKCRldmVudClcIlxuICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNOC44NzQ0NiA3LjMyMTQ0QzguNDQ1ODggNi44OTI4NSA3Ljc1MSA2Ljg5Mjg1IDcuMzIyNDIgNy4zMjE0NEM2Ljg5MzgzIDcuNzUwMDIgNi44OTM4MyA4LjQ0NDkgNy4zMjI0MiA4Ljg3MzQ5TDEwLjQ0ODggMTEuOTk5OUw3LjMyMzU3IDE1LjEyNTJDNi44OTQ5OCAxNS41NTM4IDYuODk0OTggMTYuMjQ4NiA3LjMyMzU3IDE2LjY3NzJDNy43NTIxNSAxNy4xMDU4IDguNDQ3MDMgMTcuMTA1OCA4Ljg3NTYxIDE2LjY3NzJMMTIuMDAwOSAxMy41NTJMMTUuMTI2MSAxNi42NzcyQzE1LjU1NDcgMTcuMTA1OCAxNi4yNDk2IDE3LjEwNTggMTYuNjc4MSAxNi42NzcyQzE3LjEwNjcgMTYuMjQ4NiAxNy4xMDY3IDE1LjU1MzcgMTYuNjc4MSAxNS4xMjUxTDEzLjU1MjkgMTEuOTk5OUwxNi42NzkzIDguODczNTRDMTcuMTA3OSA4LjQ0NDk2IDE3LjEwNzkgNy43NTAwOCAxNi42NzkzIDcuMzIxNUMxNi4yNTA3IDYuODkyOTEgMTUuNTU1OCA2Ljg5MjkxIDE1LjEyNzMgNy4zMjE1TDEyLjAwMDkgMTAuNDQ3OUw4Ljg3NDQ2IDcuMzIxNDRaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNkE3MzdEXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheURhdGEoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXRlbS5jaGVja2VkXCIgdGFiaW5kZXg9XCItMVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiaXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImRpc3BsYXlEYXRhKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgc2VhcmNoSW5wdXQoKSA9PT0gXCJcIiA/IG5vRGF0YU1lc3NhZ2UoKSA6IFwiTm8gcmVzdWx0c1wiIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImludGVybmFsRGF0YSgpLmxlbmd0aCAhPT0gMCAmJiAhaGlkZUFwcGx5QnV0dG9uKClcIiBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnd2lkdGgnOiAnY2FsYyg1MCUgLSA0cHgpJ31cIiAoY2xpY2spPVwib25SZXNldCgpXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidSZXNldCdcIiBbdHlwZV09XCInVGV4dCdcIiBbd2lkdGhdPVwiJzEwMCUnXCIgPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJ2NhbGMoNTAlIC0gNHB4KSd9XCIgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbdHlwZV09XCInU29saWQnXCIgW3dpZHRoXT1cIicxMDAlJ1wiID48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbiJdfQ==