@yuuvis/client-framework 0.8.0 → 0.9.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 (74) hide show
  1. package/actions/lib/actions/delete-action/delete-action.d.ts +1 -0
  2. package/common/index.d.ts +1 -0
  3. package/common/lib/services/error-messages/error-messages.service.d.ts +7 -0
  4. package/common/lib/services/index.d.ts +1 -0
  5. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +4 -10
  6. package/esm2022/common/index.mjs +2 -1
  7. package/esm2022/common/lib/directives/drag-select.directive.mjs +2 -2
  8. package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +68 -0
  9. package/esm2022/common/lib/services/index.mjs +2 -0
  10. package/esm2022/forms/index.mjs +9 -8
  11. package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +172 -0
  12. package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +95 -0
  13. package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +9 -0
  14. package/esm2022/forms/lib/elements/index.mjs +11 -0
  15. package/esm2022/forms/lib/elements/organization/organization.component.mjs +47 -29
  16. package/esm2022/icons/lib/icons.mjs +3 -2
  17. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +5 -4
  18. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +1 -1
  19. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +7 -52
  20. package/esm2022/object-details/index.mjs +2 -1
  21. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +5 -4
  22. package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +27 -0
  23. package/esm2022/object-form/index.mjs +1 -1
  24. package/esm2022/object-form/lib/object-form.component.mjs +2 -1
  25. package/esm2022/object-form/lib/object-form.service.mjs +5 -2
  26. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +15 -13
  27. package/esm2022/pagination/lib/pagination.component.mjs +4 -6
  28. package/esm2022/sequence-list/index.mjs +1 -3
  29. package/esm2022/sequence-list/lib/sequence-list.component.mjs +11 -16
  30. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +1 -1
  31. package/esm2022/tile-list/lib/tile/tile.component.mjs +3 -3
  32. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +1 -1
  33. package/fesm2022/yuuvis-client-framework-actions.mjs +3 -9
  34. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  35. package/fesm2022/yuuvis-client-framework-common.mjs +69 -4
  36. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  37. package/fesm2022/yuuvis-client-framework-forms.mjs +1194 -909
  38. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  39. package/fesm2022/yuuvis-client-framework-icons.mjs +2 -1
  40. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  41. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +10 -55
  42. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  43. package/fesm2022/yuuvis-client-framework-object-details.mjs +26 -5
  44. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  45. package/fesm2022/yuuvis-client-framework-object-form.mjs +5 -1
  46. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  47. package/fesm2022/yuuvis-client-framework-object-summary.mjs +14 -12
  48. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  49. package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -5
  50. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  51. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +17 -296
  52. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  53. package/fesm2022/yuuvis-client-framework-tile-list.mjs +2 -2
  54. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  55. package/forms/index.d.ts +1 -7
  56. package/forms/lib/elements/data-grid/data-grid/data-grid.component.d.ts +38 -0
  57. package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +21 -0
  58. package/forms/lib/elements/data-grid/model/data-grid.interface.d.ts +14 -0
  59. package/forms/lib/elements/index.d.ts +10 -0
  60. package/forms/lib/elements/organization/organization.component.d.ts +13 -4
  61. package/lib/assets/i18n/de.json +131 -0
  62. package/lib/assets/i18n/en.json +131 -0
  63. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +0 -1
  64. package/object-details/index.d.ts +1 -0
  65. package/object-details/lib/retention-badge/retention-badge.component.d.ts +12 -0
  66. package/package.json +4 -4
  67. package/sequence-list/index.d.ts +0 -2
  68. package/sequence-list/lib/sequence-list.component.d.ts +2 -2
  69. package/sequence-list/lib/sequence-list.interface.d.ts +5 -4
  70. package/styles/client-framework.scss +55 -18
  71. package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +0 -183
  72. package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +0 -114
  73. package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +0 -52
  74. package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +0 -36
@@ -0,0 +1,27 @@
1
+ import { Component, computed, inject, input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { LocaleDatePipe, RetentionService, TranslateModule } from '@yuuvis/client-core';
4
+ import { YvcIconModule } from '@yuuvis/components/icon';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@yuuvis/client-core";
7
+ import * as i2 from "@yuuvis/components/icon";
8
+ export class RetentionBadgeComponent {
9
+ constructor() {
10
+ this.#retention = inject(RetentionService);
11
+ this.icons = {
12
+ lockClosed: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M240-80q-33 0-56.5-23.5T160-160v-400q0-33 23.5-56.5T240-640h40v-80q0-83 58.5-141.5T480-920q83 0 141.5 58.5T680-720v80h40q33 0 56.5 23.5T800-560v400q0 33-23.5 56.5T720-80H240Zm0-80h480v-400H240v400Zm240-120q33 0 56.5-23.5T560-360q0-33-23.5-56.5T480-440q-33 0-56.5 23.5T400-360q0 33 23.5 56.5T480-280ZM360-640h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM240-160v-400 400Z"/></svg>'
13
+ };
14
+ this.dmsObject = input.required();
15
+ this.retentionData = computed(() => {
16
+ return this.#retention.getRetentionState(this.dmsObject());
17
+ });
18
+ }
19
+ #retention;
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RetentionBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RetentionBadgeComponent, isStandalone: true, selector: "yuv-retention-badge", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let rd = retentionData();\n@if (rd.underRetention) {\n <span class=\"badge retention\">\n <yvc-icon [svg]=\"icons.lockClosed\"></yvc-icon>\n {{\n 'yuv.retention-badge.retain'\n | translate\n : {\n from: rd.start | localeDate: 'shortDate',\n until: rd.end | localeDate: 'shortDate'\n }\n }}\n </span>\n}\n", styles: [":host{--_badge-retention-background: var(--badge-retention-background, var(--color-success));--_badge-retention-color: var(--badge-retention-color, #fff)}:host .badge{--icon-size: 16px;font-size:var(--font-hint);display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem .25rem .5rem;line-height:1em;border-radius:.4em}:host .badge.retention{background-color:var(--_badge-retention-background);color:var(--_badge-retention-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RetentionBadgeComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'yuv-retention-badge', standalone: true, imports: [CommonModule, TranslateModule, LocaleDatePipe, YvcIconModule], template: "@let rd = retentionData();\n@if (rd.underRetention) {\n <span class=\"badge retention\">\n <yvc-icon [svg]=\"icons.lockClosed\"></yvc-icon>\n {{\n 'yuv.retention-badge.retain'\n | translate\n : {\n from: rd.start | localeDate: 'shortDate',\n until: rd.end | localeDate: 'shortDate'\n }\n }}\n </span>\n}\n", styles: [":host{--_badge-retention-background: var(--badge-retention-background, var(--color-success));--_badge-retention-color: var(--badge-retention-color, #fff)}:host .badge{--icon-size: 16px;font-size:var(--font-hint);display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem .25rem .5rem;line-height:1em;border-radius:.4em}:host .badge.retention{background-color:var(--_badge-retention-background);color:var(--_badge-retention-color)}\n"] }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0ZW50aW9uLWJhZGdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9yZXRlbnRpb24tYmFkZ2UvcmV0ZW50aW9uLWJhZGdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9yZXRlbnRpb24tYmFkZ2UvcmV0ZW50aW9uLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxjQUFjLEVBQUUsZ0JBQWdCLEVBQWtCLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQVN4RCxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUUUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRDLFVBQUssR0FBRztZQUNOLFVBQVUsRUFBRSxxZkFBcWY7U0FDbGdCLENBQUE7UUFFRCxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsUUFBUSxDQUFpQixHQUFHLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFWQyxVQUFVLENBQTRCOytHQUQzQix1QkFBdUI7bUdBQXZCLHVCQUF1Qiw4TkNacEMsd1hBY0EsNGVETlksWUFBWSw4QkFBRSxlQUFlLHVGQUFFLGNBQWMsa0RBQUUsYUFBYTs7NEZBSTNELHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERtc09iamVjdCwgTG9jYWxlRGF0ZVBpcGUsIFJldGVudGlvblNlcnZpY2UsIFJldGVudGlvblN0YXRlLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFl2Y0ljb25Nb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3l1di1yZXRlbnRpb24tYmFkZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIExvY2FsZURhdGVQaXBlLCBZdmNJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JldGVudGlvbi1iYWRnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yZXRlbnRpb24tYmFkZ2UuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJldGVudGlvbkJhZGdlQ29tcG9uZW50IHtcbiAgI3JldGVudGlvbiA9IGluamVjdChSZXRlbnRpb25TZXJ2aWNlKTtcblxuICBpY29ucyA9IHtcbiAgICBsb2NrQ2xvc2VkOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCIjZThlYWVkXCI+PHBhdGggZD1cIk0yNDAtODBxLTMzIDAtNTYuNS0yMy41VDE2MC0xNjB2LTQwMHEwLTMzIDIzLjUtNTYuNVQyNDAtNjQwaDQwdi04MHEwLTgzIDU4LjUtMTQxLjVUNDgwLTkyMHE4MyAwIDE0MS41IDU4LjVUNjgwLTcyMHY4MGg0MHEzMyAwIDU2LjUgMjMuNVQ4MDAtNTYwdjQwMHEwIDMzLTIzLjUgNTYuNVQ3MjAtODBIMjQwWm0wLTgwaDQ4MHYtNDAwSDI0MHY0MDBabTI0MC0xMjBxMzMgMCA1Ni41LTIzLjVUNTYwLTM2MHEwLTMzLTIzLjUtNTYuNVQ0ODAtNDQwcS0zMyAwLTU2LjUgMjMuNVQ0MDAtMzYwcTAgMzMgMjMuNSA1Ni41VDQ4MC0yODBaTTM2MC02NDBoMjQwdi04MHEwLTUwLTM1LTg1dC04NS0zNXEtNTAgMC04NSAzNXQtMzUgODV2ODBaTTI0MC0xNjB2LTQwMCA0MDBaXCIvPjwvc3ZnPidcbiAgfVxuXG4gIGRtc09iamVjdCA9IGlucHV0LnJlcXVpcmVkPERtc09iamVjdD4oKTtcbiAgcmV0ZW50aW9uRGF0YSA9IGNvbXB1dGVkPFJldGVudGlvblN0YXRlPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuI3JldGVudGlvbi5nZXRSZXRlbnRpb25TdGF0ZSh0aGlzLmRtc09iamVjdCgpKTtcbiAgfSk7XG59XG4iLCJAbGV0IHJkID0gcmV0ZW50aW9uRGF0YSgpO1xuQGlmIChyZC51bmRlclJldGVudGlvbikge1xuICA8c3BhbiBjbGFzcz1cImJhZGdlIHJldGVudGlvblwiPlxuICAgIDx5dmMtaWNvbiBbc3ZnXT1cImljb25zLmxvY2tDbG9zZWRcIj48L3l2Yy1pY29uPlxuICAgIHt7XG4gICAgICAneXV2LnJldGVudGlvbi1iYWRnZS5yZXRhaW4nXG4gICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGZyb206IHJkLnN0YXJ0IHwgbG9jYWxlRGF0ZTogJ3Nob3J0RGF0ZScsXG4gICAgICAgICAgICAgIHVudGlsOiByZC5lbmQgfCBsb2NhbGVEYXRlOiAnc2hvcnREYXRlJ1xuICAgICAgICAgICAgfVxuICAgIH19XG4gIDwvc3Bhbj5cbn1cbiJdfQ==
@@ -2,4 +2,4 @@ export * from './lib/object-form.component';
2
2
  export * from './lib/object-form-extension.interface';
3
3
  export * from './lib/object-form.interface';
4
4
  export * from './lib/object-form-translate.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1mb3JtL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgKiBmcm9tICcuL2xpYi9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LWZvcm0tZXh0ZW5zaW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LWZvcm0tdHJhbnNsYXRlLnNlcnZpY2UnO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1mb3JtL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29iamVjdC1mb3JtLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LWZvcm0uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29iamVjdC1mb3JtLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbiJdfQ==
@@ -277,6 +277,7 @@ export class ObjectFormComponent {
277
277
  }
278
278
  this.form = form;
279
279
  this.#formScriptingApiService.registerActiveForm(this);
280
+ console.log('form', form);
280
281
  setTimeout(() => {
281
282
  if (!this.form)
282
283
  return;
@@ -624,4 +625,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
624
625
  '[attr.inert]': 'inert() ? true : null'
625
626
  }, template: "@let fo = formOptions();\n@if (fo && form) {\n <div class=\"yuv-object-form\" [formGroup]=\"form\">\n <div class=\"form-element-wrap core\">\n <yuv-object-form-group [group]=\"getGroup('core')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n <div class=\"form-element-wrap data\">\n <yuv-object-form-group [group]=\"getGroup('data')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n </div>\n}\n", styles: [".yuv-object-form>.core{padding:calc(var(--app-pane-padding) / 2)}.yuv-object-form>.data>yuv-object-form-group>.form-element.o2mGroupStack{background:transparent;border:0}.yuv-object-form>.data>yuv-object-form-group>.form-element.o2mGroupStack>yuv-object-form-group>.o2mGroup{background-color:var(--panel-background-lightgrey);border-top:1px solid rgba(0,0,0,.1);padding:var(--app-pane-padding)}.yuv-object-form>.data>yuv-object-form-group>.form-element.o2mGroupStack>p-tabview>.p-tabview>.p-tabview-panels{background-color:var(--panel-background-lightgrey)}\n"] }]
626
627
  }], ctorParameters: () => [] });
627
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZm9ybS9zcmMvbGliL29iamVjdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQTBCLHdCQUF3QixFQUE0QyxNQUFNLHlCQUF5QixD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QUFjLEVBQUUsdUJBQXVCO3FCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgb3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaXR1YXRpb24sIFN5c3RlbVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBVdGlscyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtU2NyaXB0aW5nQXBpU2VydmljZSB9IGZyb20gJy4vZm9ybS1zY3JpcHRpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24gfSBmcm9tICcuL29iamVjdC1mb3JtLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9vYmplY3QtZm9ybS1ncm91cC9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2UgfSBmcm9tICcuL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHQuc2VydmljZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUgfSBmcm9tICcuL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHRpbmctc2NvcGUnO1xuaW1wb3J0IHsgRm9ybVN0YXR1c0NoYW5nZWRFdmVudCwgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyLCBPYmplY3RGb3JtTW9kZWxDaGFuZ2UsIE9iamVjdEZvcm1PcHRpb25zIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbnRyb2wsIE9iamVjdEZvcm1Hcm91cCB9IGZyb20gJy4vb2JqZWN0LWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybVNlcnZpY2UgfSBmcm9tICcuL29iamVjdC1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybVV0aWxzIH0gZnJvbSAnLi9vYmplY3QtZm9ybS51dGlscyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdGlvbiB9IGZyb20gJy4vb2JqZWN0LWZvcm0udmFsaWRhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3l1di1vYmplY3QtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE9iamVjdEZvcm1Hcm91cENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW09iamVjdEZvcm1TZXJ2aWNlLCBPYmplY3RGb3JtU2NyaXB0U2VydmljZSwgRm9ybVNjcmlwdGluZ0FwaVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vb2JqZWN0LWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd5dXYtb2JqZWN0LWZvcm0nLFxuICAgICdbYXR0ci5pbmVydF0nOiAnaW5lcnQoKSA/IHRydWUgOiBudWxsJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI3N5c3RlbVNlcnZpY2UgPSBpbmplY3QoU3lzdGVtU2VydmljZSk7XG4gICNmb3JtU2NyaXB0U2VydmljZSA9IGluamVjdChPYmplY3RGb3JtU2NyaXB0U2VydmljZSk7XG4gICNmb3JtSGVscGVyU2VydmljZSA9IGluamVjdChPYmplY3RGb3JtU2VydmljZSk7XG4gICN1c2VyU2VydmljZSA9IGluamVjdChVc2VyU2VydmljZSk7XG4gICNjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNmb3JtU2NyaXB0aW5nQXBpU2VydmljZSA9IGluamVjdChGb3JtU2NyaXB0aW5nQXBpU2VydmljZSk7XG5cbiAgI3NraXBUcmFuc2xhdGlvbnNGb3IgPSBbJ2NvcmUnLCAnZGF0YSddO1xuICAjbmFtZVByZWZpeCA9ICdmZ18nO1xuICBnQ291bnQgPSAwO1xuXG4gIGlkID0gVXRpbHMudXVpZCgpO1xuXG4gIGZvPzogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIGZvcm1PcHRpb25zID0gaW5wdXQ8T2JqZWN0Rm9ybU9wdGlvbnM+KCk7XG4gICNmb3JtT3B0aW9uc0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgdGhpcy4jaW5pdCh0aGlzLmZvcm1PcHRpb25zKCkpO1xuICB9KTtcblxuICBpbmVydCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGVsZW1lbnRFeHRlbnNpb25zID0gaW5wdXQ8SU9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uW10+KFtdKTtcbiAgI2VsZW1lbnRFeHRlbnNpb25zRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLiNmb3JtSGVscGVyU2VydmljZS5zZXRFbGVtZW50RXh0ZW5zaW9ucyh0aGlzLmVsZW1lbnRFeHRlbnNpb25zKCkpO1xuICB9KTtcblxuICAvKipcbiAgICogVGhlcmUgYXJlIHNwZWNpYWwgc2NlbmFyaW9zIHdoZXJlIGZvcm1zIGFyZSB3aXRoaW4gYSBmb3JtIHRoZW1zZWx2ZXMuXG4gICAqIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlLCB3aWxsIGhhbmRsZSB0aGUgY3VycmVudCBmb3JtIGluIGFcbiAgICogc2xpZ2h0bHkgZGlmZmVyZW50IHdheSB3aGVuIGl0IGNvbWVzIHRvIGZvcm0gc2NyaXB0aW5nLlxuICAgKi9cbiAgaXNJbm5lclRhYmxlRm9ybSA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJlZCB3aGVuIHRoZSBmb3JtcyBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBzdGF0dXNDaGFuZ2VkID0gb3V0cHV0PEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIGhhbmRsZXIgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZvcm0gaGFzIGJlZW4gc2V0IHVwXG4gICAqL1xuICBvbkZvcm1SZWFkeSA9IG91dHB1dCgpO1xuXG4gIC8vIHRoZSBhY3R1YWwgZm9ybSBpbnN0YW5jZVxuICBmb3JtPzogT2JqZWN0Rm9ybUdyb3VwO1xuICAvLyBwcm9wZXJ0eSBmb3IgaG9sZGluZyB0aGUgZm9ybXMgZGF0YSB1c2VkIGZvciBjb21wYXJpc29uIHdoZW4gYSBmb3JtLWNoYW5nZWQtZXZlbnRcbiAgLy8gaXMgZmV0Y2hlZCB0byBpbmRpY2F0ZSB3aGVyIG9yIG5vdCB0aGUgaW5kZXhkYXRhIHdlcmUgY2hhbmdlZCBvciBqdXN0IHRoZSBwcm9wZXJ0aWVzXG4gIC8vIG9mIHRoZSBmb3JtIGVsZW1lbnRzIChlZy4gZm9ybSBzY3JpcHQgc2V0dGluZyBmaWVsZHMgdG8gcmVhZG9ubHkpXG4gIGZvcm1EYXRhOiBhbnk7XG4gICNzY3JpcHRNb2RlbDogYW55ID0ge307XG4gICNzY3JpcHRpbmdTY29wZT86IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZTtcbiAgI3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgLy8gbG9jYWwgc3RvcmUgZm9yIGFsbCB0aGUgZm9ybSBjb250cm9sIHJlZmVyZW5jZXNcbiAgI2Zvcm1Db250cm9sczogYW55ID0ge307XG4gICNpbml0aWFsVmFsaWRhdG9yczogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jZm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UuZm9ybUlkID0gdGhpcy5pZDtcbiAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5hcGkuZXZlbnRzXG4gICAgICAub24oRm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UuRVZFTlRfTU9ERUxfQ0hBTkdFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IGV2ZW50LmRhdGEgJiYgdGhpcy4jb25TY3JpcHRpbmdNb2RlbENoYW5nZWQoZXZlbnQuZGF0YS5mb3JtQ29udHJvbE5hbWUsIGV2ZW50LmRhdGEuY2hhbmdlLCBldmVudC5kYXRhLmZvcm1JZCkpO1xuXG4gICAgdGhpcy4jZm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UuZm9ybUlkID0gdGhpcy5pZDsgICAgXG4gIH1cblxuICAvLyBpbml0aWFsaXplIHRoZSBmb3JtIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBmb3JtIG9wdGlvbnNcbiAgI2luaXQoZm86IE9iamVjdEZvcm1PcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5mb3JtID0gdW5kZWZpbmVkO1xuICAgIGlmICghZm8pIHJldHVybjtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2luaXRpYWxWYWxpZGF0b3JzID0ge307XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gICAgICB0aGlzLiNidWlsZFJlYWN0aXZlRm9ybShmbyk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAjaW5pdFNjcmlwdGluZ1Njb3BlKGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucywgZGF0YUZvcm1Nb2RlbDogYW55KSB7XG4gICAgY29uc3QgeyBkYXRhLCBhY3Rpb25zLCBvYmplY3RzLCBjb250ZXh0IH0gPSAoZm9ybU9wdGlvbnMgfHwge30pIGFzIE9iamVjdEZvcm1PcHRpb25zO1xuXG4gICAgaWYgKHRoaXMuI3NjcmlwdGluZ1Njb3BlKSB7XG4gICAgICB0aGlzLiNzY3JpcHRpbmdTY29wZS5zZXRNb2RlbCh0aGlzLiNzY3JpcHRNb2RlbCk7XG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWN0aW9ucyAodXNlZCBpbnNpZGUgb2YgQlBNLUZvcm1zKSAqL1xuICAgICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWRkaXRpb25hbCBvYmplY3RzICh1c2VkIGZvciBleGFtcGxlIGluIEJQTS1TdGFydC1Gb3JtcyB0b1xuICAgICAgICogYWRkIGRhdGEgb2YgRE1TLU9iamVjdHMgdG8gc3RhcnQgdGhlIHByb2Nlc3MgZm9yKVxuICAgICAgICovXG4gICAgICB0aGlzLiNzY3JpcHRpbmdTY29wZS5vYmplY3RzID0gb2JqZWN0cyB8fCBbXTtcbiAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlLmNvbnRleHQgPSBjb250ZXh0IHx8IHsgaWQ6ICcnLCB0aXRsZTogJycsIG9iamVjdFR5cGVJZDogJycgfTtcbiAgICAgIC8qKiBwcm92aWRlIHJlYWRvbmx5IGFjY2VzcyB0byBpbml0aWFsIGZvcm0gZGF0YSAod2hpY2ggbWF5IGFsc28gY29udGFpbiB2YWx1ZXMgdGhhdFxuICAgICAgICogYXJlIG5vdCByZW5kZXJlZCBhcyBmb3JtIGVsZW1lbnRzIChpbnZpc2libGUgdmFsdWVzKSlcbiAgICAgICAqL1xuICAgICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUuZGF0YSA9IGRhdGE7XG5cbiAgICAgIC8qKiBieSBkZWZhdWx0LCBzY3JpcHRpbmcgc2NvcGVzIGFyZSBhcHBsaWVkIHRvIGZvcm1zLiBCdXQgdGFibGUgZWxlbWVudHMgY3JlYXRlIHRoZWlyIG93biBzY29wZVxuICAgICAgICogZm9yIGVkaXRpbmcgcm93cy4gQmVpbmcgb25lIG9mIHRob3NlIGlubmVyIGZvcm1zIHNob3VsZCBub3QgcnVuIHRoZSBmb3JtIHNjcmlwdCBhZ2FpbiwgYnV0XG4gICAgICAgKiBpbnN0ZWFkIGp1c3QgcHJvdmlkZSB0aGUgb2JzZXJ2aW5nIGFiaWxpdGllcyBvZiB0aGUgc2NyaXB0aW5nIHNjb3BlLlxuICAgICAgICovXG4gICAgICBpZiAoIXRoaXMuaXNJbm5lclRhYmxlRm9ybSgpICYmIGRhdGFGb3JtTW9kZWwpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IGRhdGFGb3JtTW9kZWwubmFtZSArICdfJyArIGRhdGFGb3JtTW9kZWwuc2l0dWF0aW9uO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdleGVjdXRpbmcgZm9ybSBzY3JpcHQgJyArIHNjcmlwdE5hbWUpO1xuICAgICAgICB0aGlzLiNmb3JtU2NyaXB0U2VydmljZS5ydW5Gb3JtU2NyaXB0KHRoaXMuI3NjcmlwdGluZ1Njb3BlLCBkYXRhRm9ybU1vZGVsLnNjcmlwdCwgc2NyaXB0TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9jdXNGb3JtKCkge1xuICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKCk7XG4gIH1cblxuICBnZXRHcm91cChpZDogc3RyaW5nKTogT2JqZWN0Rm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoaWQpIGFzIE9iamVjdEZvcm1Hcm91cDtcbiAgfVxuXG4gIHNldEZvcm1EYXRhKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgY29uc3QgZm8gPSB0aGlzLmZvcm1PcHRpb25zKCk7XG4gICAgaWYgKCFmbykgcmV0dXJuO1xuICAgIGZvLmRhdGEgPSBkYXRhO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy4jaW5pdChmbyksIDApO1xuICB9XG5cbiAgcGF0Y2hWYWx1ZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgdGhpcy4jb25TY3JpcHRpbmdNb2RlbENoYW5nZWQoa2V5LCB7XG4gICAgICAgIG5hbWU6ICd2YWx1ZScsXG4gICAgICAgIG5ld1ZhbHVlOiBkYXRhW2tleV1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgZm9ybSBtb2RlbC4gRWFjaCBmb3JtIHZhbHVlIGlzIHJlcHJlc2VudGVkIGJ5IG9uZVxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgcmVzdWx0IG9iamVjdCBob2xkaW5nIHRoZSBmaWVsZHMgdmFsdWUuIFRoZSBrZXlzIChwcm9wZXJ0aWVzKSBhcmUgdGhlIGBuYW1lYFxuICAgKiBwcm9wZXJ0aWVzIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqXG4gICAqIEhvdyB2YWx1ZXMgYXJlIGV4dHJhY3RlZCBpcyBpbmZsdWVuY2VkIGJ5IHRoZSBmb3JtcyBzaXR1YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4gb2JqZWN0IG9mIGtleSB2YWx1ZSBwYWlyc1xuICAgKi9cbiAgZ2V0Rm9ybURhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2Zvcm1Ub0RhdGEoKTtcbiAgfVxuXG4gIGdldEZvcm1FbGVtZW50cygpIHtcbiAgICBjb25zdCBmb3JtRWxlbWVudHM6IGFueSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRoaXMuI2Zvcm1Db250cm9scykuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgZm9ybUVsZW1lbnRzW2tdID0gdGhpcy4jZm9ybUNvbnRyb2xzW2tdLl9fZW9Gb3JtRWxlbWVudDtcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybUVsZW1lbnRzO1xuICB9XG5cbiAgc2V0Rm9ybVByaXN0aW5lKCkge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICAvLyByZXNldCB0aGUgZm9ybSB0byBpdHMgaW5pdGlhbCBzdGF0ZVxuICByZXNldEZvcm0oKSB7XG4gICAgY29uc3QgZm8gPSB0aGlzLmZvcm1PcHRpb25zKCk7XG4gICAgaWYgKCFmbykgcmV0dXJuO1xuICAgIHRoaXMuc2V0Rm9ybURhdGEoZm8uZGF0YSk7XG4gICAgdGhpcy4jZW1pdEZvcm1DaGFuZ2VkRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvYnNlcnZlZCBtb2RlbCB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGN1cnJlbnQgZm9ybSBzY3JpcHQgcnVubmluZy4gSWYgdGhlcmUgaXNcbiAgICogbm8gZm9ybSBzY3JpcHQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIE5VTEwuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLiNzY3JpcHRpbmdTY29wZSA/IHRoaXMuI3NjcmlwdGluZ1Njb3BlLmdldE1vZGVsKCkgOiBudWxsO1xuICB9XG5cbiAgLy8gQ3JlYXRlIGEgcmVhY3RpdmUgZm9ybSBmcm9tIHRoZSBlbmFpbyBmb3JtIG1vZGVsXG4gICNidWlsZFJlYWN0aXZlRm9ybShmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnMpIHtcbiAgICB0aGlzLiNzY3JpcHRpbmdTY29wZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNzY3JpcHRNb2RlbCA9IHt9O1xuICAgIHRoaXMuI2Zvcm1Db250cm9scyA9IHt9O1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IHRoaXMuI2RhdGFUb0Zvcm0oZm9ybU9wdGlvbnMuZm9ybU1vZGVsLCBmb3JtT3B0aW9ucy5kYXRhKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIGEgc2NyaXB0IGlzIGF2YWlsYWJsZSwgd2UnbGwgaW5pdCB0aGUgZm9ybSBzY3JpcHRpbmcgZm9yIHRoZVxuICAgIC8vIGN1cnJlbnQgZm9ybVxuICAgIGlmICh0aGlzLmlzSW5uZXJUYWJsZUZvcm0oKSB8fCAoZm9ybU1vZGVsLnNjcmlwdCAmJiBmb3JtTW9kZWwuc2NyaXB0Lmxlbmd0aCA+IDApKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdhZGRpbmcgZm9ybSBzY3JpcHRpbmcgc2NvcGUnKTtcbiAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlID0gbmV3IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZShcbiAgICAgICAgZm9ybU1vZGVsLnNpdHVhdGlvbixcbiAgICAgICAgdGhpcy4jb25TY3JpcHRpbmdNb2RlbENoYW5nZWQsXG4gICAgICAgIHRoaXMuI2Zvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlLmdldEFwaSgpLFxuICAgICAgICB0aGlzLmlzSW5uZXJUYWJsZUZvcm0oKVxuICAgICAgKTtcbiAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlLm9iamVjdElkID0gdGhpcy5mb3JtT3B0aW9ucygpIS5vYmplY3RJZDtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgaWYgKGZvcm1Nb2RlbD8uZWxlbWVudHNbMF0/LmVsZW1lbnRzKSB7XG4gICAgICB0aGlzLiNhZGRGb3JtQ29udHJvbChmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMF0sICdjb3JlJyk7XG4gICAgfVxuICAgIGlmIChmb3JtTW9kZWw/LmVsZW1lbnRzWzFdPy5lbGVtZW50cykge1xuICAgICAgdGhpcy4jYWRkRm9ybUNvbnRyb2woZm9ybSwgZm9ybU1vZGVsLmVsZW1lbnRzWzFdLCAnZGF0YScpO1xuICAgIH1cbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIHRoaXMuI2Zvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlLnJlZ2lzdGVyQWN0aXZlRm9ybSh0aGlzKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm0pIHJldHVybjtcbiAgICAgIHRoaXMuaW5pdFZhbGlkYXRvcnModGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLiNlbWl0Rm9ybUNoYW5nZWRFdmVudCgpKSk7XG5cbiAgICAgIHRoaXMuI2luaXRTY3JpcHRpbmdTY29wZShmb3JtT3B0aW9ucywgZm9ybU1vZGVsKTtcblxuICAgICAgdGhpcy5vbkZvcm1SZWFkeS5lbWl0KCk7XG4gICAgICB0aGlzLiNlbWl0Rm9ybUNoYW5nZWRFdmVudChmYWxzZSk7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIGluaXRWYWxpZGF0b3JzKGZvcm06IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmNvbnRyb2xzW2tleV07XG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICAgICAgdGhpcy5pbml0VmFsaWRhdG9ycyhjb250cm9sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNpbml0aWFsVmFsaWRhdG9yc1tjb250cm9sLl9lb0Zvcm1FbGVtZW50Lm5hbWVdID0gY29udHJvbC52YWxpZGF0b3I7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh0aGlzLiNnZXRWYWxpZGF0b3JzKGNvbnRyb2wuX2VvRm9ybUVsZW1lbnQpLmNvbmNhdChbdGhpcy4jaW5pdGlhbFZhbGlkYXRvcnNbY29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pKSk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZW1pdEZvcm1DaGFuZ2VkRXZlbnQoY29tcGFyZSA9IHRydWUpIHtcbiAgICAvLyBjaGVjayBpZiBpbmRleGRhdGEgaGFzIGJlZW4gY2hhbmdlZFxuICAgIGNvbnN0IGN1cnJlbnRGb3JtRGF0YSA9IHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICBjb25zdCBpZHhDaGFuZ2UgPSBjb21wYXJlID8gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRGF0YSkgIT09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRGb3JtRGF0YSkgOiBmYWxzZTtcbiAgICB0aGlzLmZvcm1EYXRhID0gY3VycmVudEZvcm1EYXRhO1xuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgaW52YWxpZDogdGhpcy5mb3JtLmludmFsaWQsXG4gICAgICAgIGRpcnR5OiB0aGlzLmZvcm0uZGlydHksXG4gICAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXG4gICAgICAgIGluZGV4ZGF0YUNoYW5nZWQ6IGlkeENoYW5nZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGVhY2ggdGltZSB0aGUgc2NyaXB0IGNoYW5nZXMgaXRzIGludGVybmFsIG1vZGVsLlxuICAgKiBJdCBpcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBzY3JpcHQgY2hhbmdlcyB0byB0aGUgYWN0dWFsIGZvcm0gbW9kZWwuXG4gICAqXG4gICAqIFRvIGVuc3VyZSB0aGUgcmlnaHQgY29udGV4dCwgd2UgZGVmaW5lIGFuIGluc3RhbmNlIG1ldGhvZCBhcyBjYWxsYmFjayBmb3IgdGhlIHNjcmlwdGluZyBzY29wZVxuICAgKiBAc2VlOiBodHRwczovL2Jsb2cuam9obm55cmVpbGx5LmNvbS8yMDE0LzA0L3R5cGVzY3JpcHQtaW5zdGFuY2UtbWV0aG9kcy5odG1sXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtQ29udHJvbE5hbWVcbiAgICogQHBhcmFtIGNoYW5nZVxuICAgKi9cbiAgI29uU2NyaXB0aW5nTW9kZWxDaGFuZ2VkID0gKGZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBjaGFuZ2U6IE9iamVjdEZvcm1Nb2RlbENoYW5nZSwgZm9ybUlkPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCF0aGlzLmZvcm0gfHwgKGZvcm1JZCAmJiB0aGlzLmlkICE9PSBmb3JtSWQpKSByZXR1cm47XG4gICAgLy8gZmluZCB0aGUgdGFyZ2V0IGNvbnRyb2xcbiAgICBjb25zdCBmYzogT2JqZWN0Rm9ybUNvbnRyb2wgPSB0aGlzLiNmb3JtQ29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbDtcbiAgICBpZiAoZmMpIHtcbiAgICAgIC8vIGNoYW5nZSBvbmx5IGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgc3dpdGNoIChjaGFuZ2UubmFtZSkge1xuICAgICAgICBjYXNlICd2YWx1ZSc6IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGFuZ2UubmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLiNwcm9jZXNzQXJyYXlWYWx1ZUNoYW5nZShmYywgY2hhbmdlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICBpZiAoZmMudmFsdWUgIT09IGNoYW5nZS5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICBmYy5wYXRjaFZhbHVlKGNoYW5nZS5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgICAgZmMubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgLy8gYXBwbHkgbmV3IHZhbGlkYXRvcnNcbiAgICAgICAgICAvLyBAc2VlOiBodHRwczovL3Njb3RjaC5pby90dXRvcmlhbHMvaG93LXRvLWltcGxlbWVudC1jb25kaXRpb25hbC12YWxpZGF0aW9uLWluLWFuZ3VsYXItMi1tb2RlbC1kcml2ZW4tZm9ybXNcbiAgICAgICAgICBmYy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh0aGlzLiNnZXRWYWxpZGF0b3JzKGZjLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoW3RoaXMuI2luaXRpYWxWYWxpZGF0b3JzW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdXSkpKTtcbiAgICAgICAgICAvLyBuZWVkIHRvIG1hcmsgZm9ybSBjb250cm9sIGFzIHRvdWNoZWQgYmVjYXVzZSBvdGhlcndpc2UgZm9ybSB2YWxpZGF0aW9uIHdpbGwgbm90IHNob3dcbiAgICAgICAgICAvLyBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgIGZjLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncmVhZG9ubHknOiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgaWYgKGNoYW5nZS5uZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZmMuZGlzYWJsZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmYy5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXJyb3InOiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZXJyb3IgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgZmMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBuZXcgb25yb3dlZGl0IGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcbiAgICAgICAgY2FzZSAnb25yb3dlZGl0Jzoge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50Lm9ucm93ZWRpdCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBuZXcgb25jaGFuZ2UgZnVuY3Rpb24gd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxuICAgICAgICBjYXNlICdvbmNoYW5nZSc6IHtcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5vbmNoYW5nZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy4jY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfTtcblxuICAjcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmM6IGFueSwgY2hhbmdlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWwgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IGZjLl9lb0Zvcm1FbGVtZW50LnR5cGU7XG4gICAgLy8gZm9yIHNvbWUgdHlwZXMgd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCBtZXRhIGRhdGEgYXJlIHByb3ZpZGVkIGFzIHdlbGxcbiAgICBzd2l0Y2ggKHRhcmdldFR5cGUpIHtcbiAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgdGhpcy4jZ2V0RGF0YU1ldGEoZmMuX2VvRm9ybUVsZW1lbnQsIG5ld1ZhbCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBtO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdUQUJMRSc6IHtcbiAgICAgICAgY29uc3QgZGF0YVRvQmVQcm9jZXNzZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmVsZW1lbnRzLmZvckVhY2goKGU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdPUkdBTklaQVRJT04nIHx8IGUudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgICBkYXRhVG9CZVByb2Nlc3NlZFtlLm5hbWVdID0gZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YVRvQmVQcm9jZXNzZWQpLmxlbmd0aCkge1xuICAgICAgICAgIG5ld1ZhbC5mb3JFYWNoKChyb3dEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJvd0RhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGF0YVRvQmVQcm9jZXNzZWRba2V5XSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2dldERhdGFNZXRhKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0sIHJvd0RhdGFba2V5XSkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAobSkge1xuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2tleSArICdfbWV0YSddID0gbTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3dEYXRhW2tleSArICdfbWV0YSddO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdGhpcy4jdXBkYXRlQXJyYXlWYWx1ZShmYywgbmV3VmFsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuI3VwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCk7XG4gIH1cblxuICAjdXBkYXRlQXJyYXlWYWx1ZShmYzogYW55LCBuZXdWYWx1ZTogYW55KSB7XG4gICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBbXS5jb25jYXQobmV3VmFsdWUpO1xuICAgIGZjLnBhdGNoVmFsdWUoW10uY29uY2F0KG5ld1ZhbHVlKSk7XG4gICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIGZjLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICAjZ2V0RGF0YU1ldGEoZm9ybUVsZW1lbnQ6IGFueSwgbmV3VmFsdWU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKGZvcm1FbGVtZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xuICAgICAgICAgIHJldHVybiB0aGlzLiN1c2VyU2VydmljZS5nZXRVc2VyQnlJZChuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgI3BhdGNoRm9ybVZhbHVlKGZvcm1WYWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWU6IGFueTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtVmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IFtdO1xuICAgICAgLy8gY29weSBieSB2YWx1ZSBmb3IgYXJyYXlzIG9mIG9iamVjdHMgKGUuZy4gdGFibGUgZGF0YSlcbiAgICAgIGZvcm1WYWx1ZS5mb3JFYWNoKChvKSA9PiB2YWx1ZS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZm9ybVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlIG1ldGhvZCBhZGRpbmcgYSBuZXcgRm9ybUNvbnRyb2wgKGdyb3VwIG9yIGNvbnRyb2wpIHRvIGEgcGFyZW50IGZvcm0gZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHBhcmVudEdyb3VwIC0gdGhlIHBhcmVudCBncm91cCB0byBhZGQgdGhlIGNvbnRyb2wgdG9cbiAgICogQHBhcmFtIGZvcm1FbGVtZW50IC0gdGhlIGVuYWlvIGZvcm0gbW9kZWwgZWxlbWVudCB0byBjcmVhdGUgdGhlIGNoaWxkIGNvbnRyb2wgZnJvbVxuICAgKiBAcGFyYW0gW3VzZU5hbWVdIC0gdXNlIHRoaXMgbmFtZSBpbnN0ZWFkIG9mIHRoZSBvbmUgZnJvbSB0aGUgbW9kZWxcbiAgICovXG4gICNhZGRGb3JtQ29udHJvbChwYXJlbnRHcm91cDogT2JqZWN0Rm9ybUdyb3VwLCBmb3JtRWxlbWVudDogYW55LCB1c2VOYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZm8gPSB0aGlzLmZvcm1PcHRpb25zKCk7XG4gICAgaWYgKCFmbykgcmV0dXJuO1xuXG4gICAgbGV0IGN0cmw7XG4gICAgbGV0IG5hbWU7XG5cbiAgICAvLyBhZGQgYSBmb3JtIGdyb3VwXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cCcgfHwgZm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snKSB7XG4gICAgICAvLyBkbyBub3QgYWRkIGdyb3VwcyB0aGF0IGFyZSBlbXB0eVxuICAgICAgY29uc3QgaXNSb290R3JvdXAgPSBmb3JtRWxlbWVudC5uYW1lICYmIChmb3JtRWxlbWVudC5uYW1lICE9PSAnZGF0YScgfHwgZm9ybUVsZW1lbnQubmFtZSAhPT0gJ2NvcmUnKTtcbiAgICAgIGlmICghaXNSb290R3JvdXAgJiYgKCFmb3JtRWxlbWVudC5lbGVtZW50cyB8fCBmb3JtRWxlbWVudC5lbGVtZW50cy5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvdW5kIGVtcHR5IGZvcm0gZ3JvdXAnLCBmb3JtRWxlbWVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY3RybCA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xuICAgICAgY3RybC5fZW9Gb3JtR3JvdXAgPSB7XG4gICAgICAgIGxheW91dDogZm9ybUVsZW1lbnQubGF5b3V0LFxuICAgICAgICB0eXBlOiBmb3JtRWxlbWVudC50eXBlXG4gICAgICB9O1xuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQubmFtZSkge1xuICAgICAgICBpZiAodGhpcy4jc2tpcFRyYW5zbGF0aW9uc0Zvci5pbmNsdWRlcyhmb3JtRWxlbWVudC5uYW1lKSkge1xuICAgICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gZm9ybUVsZW1lbnQubmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICghZm9ybUVsZW1lbnQubGFiZWwpIHtcbiAgICAgICAgICAvLyBubyBsYWJlbCwgc28gdHJ5IHRvIHRyYW5zbGF0ZSB0aGUgdGVjaG5pY2FsIG5hbWVcbiAgICAgICAgICBjdHJsLl9lb0Zvcm1Hcm91cC5sYWJlbCA9IHRoaXMuI3N5c3RlbVNlcnZpY2UuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7Zm9ybUVsZW1lbnQubmFtZX1fbGFiZWxgKSB8fCBmb3JtRWxlbWVudC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoZXJlIGlzIGEgbGFiZWwgc28gd2UgdGFrZSB0aGlzIG9uZVxuICAgICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gZm9ybUVsZW1lbnQubGFiZWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVzZU5hbWUgPT09ICdjb3JlJyB8fCB1c2VOYW1lID09PSAnZGF0YScpIHtcbiAgICAgICAgY3RybC5fZW9Gb3JtR3JvdXAubGFiZWwgPSB1c2VOYW1lO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGUgb2YgZm9ybUVsZW1lbnQuZWxlbWVudHMpIHtcbiAgICAgICAgdGhpcy4jYWRkRm9ybUNvbnRyb2woY3RybCwgZSk7XG4gICAgICB9XG4gICAgICBuYW1lID0gdXNlTmFtZSB8fCAnZmcnICsgdGhpcy5nQ291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYWRkIGZvcm0gY29udHJvbFxuICAgICAgLy8gVG8gYmUgYWJsZSB0byBpbnRlZ3JhdGUgcmVjdXJzaXZlIGZvcm0gY29udHJvbHMgaW50byB0aGUgbWFpbiBmb3JtLFxuICAgICAgLy8gd2UgaGF2ZSB0byB3cmFwIHRoZW0gaW4gYSBmb3JtIGdyb3VwXG4gICAgICBjdHJsID0gbmV3IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcih7fSk7XG4gICAgICBjdHJsLl9lb0Zvcm1Db250cm9sV3JhcHBlciA9IHtcbiAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIHdyYXBwZWQgRm9ybUNvbnRyb2xcbiAgICAgICAgY29udHJvbE5hbWU6IGZvcm1FbGVtZW50Lm5hbWUsXG4gICAgICAgIHNpdHVhdGlvbjogZm8uZm9ybU1vZGVsLnNpdHVhdGlvblxuICAgICAgfTtcblxuICAgICAgLy8gZG8gbm90IHNldCBhIHJlZmVyZW5jZSBhcyB0aGUgZm9ybSBjb250cm9scyB2YWx1ZVxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNvdWxkIG5vdCByZXNldCB0aGUgZm9ybVxuICAgICAgY29uc3QgdmFsdWUgPSBmb3JtRWxlbWVudD8udmFsdWVcbiAgICAgICAgPyB0aGlzLiNwYXRjaEZvcm1WYWx1ZShmb3JtRWxlbWVudD8udmFsdWUpXG4gICAgICAgIDogIVV0aWxzLmlzRW1wdHkoZm9ybUVsZW1lbnQ/LmRlZmF1bHR2YWx1ZSkgJiYgZm8uZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gU2l0dWF0aW9uLkNSRUFURVxuICAgICAgICAgID8gdGhpcy4jcGF0Y2hGb3JtVmFsdWUoZm9ybUVsZW1lbnQ/LmRlZmF1bHR2YWx1ZSlcbiAgICAgICAgICA6IGZvcm1FbGVtZW50Py52YWx1ZTtcblxuICAgICAgLy8gY3JlYXRlIHRoZSBhY3R1YWwgZm9ybSBjb250cm9sXG4gICAgICBjb25zdCBjb250cm9sRGlzYWJsZWQgPSBmby5kaXNhYmxlZCB8fCAhIWZvcm1FbGVtZW50LnJlYWRvbmx5O1xuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2woe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGNvbnRyb2xEaXNhYmxlZFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGlmIGZvcm0gZWxlbWVudCBoYXMgYSAnbGFiZWwnIHByb3BlcnR5IGl0IHdpbGwgYmUgc2hvd24gYXMgaXMgLi4uXG4gICAgICBpZiAoIWZvcm1FbGVtZW50LmxhYmVsKSB7XG4gICAgICAgIC8vIC4uLiBpZiB0aGVyZSBpcyBubyBsYWJlbCBidXQgYSAnbGFiZWxLZXknIHByb3BlcnR5IHdlIGFyZSBnb2luZyB0byBsb2NhbGl6ZSB0aGF0IGtleSAuLi5cbiAgICAgICAgaWYgKGZvcm1FbGVtZW50LmxhYmVsa2V5KSB7XG4gICAgICAgICAgZm9ybUVsZW1lbnQubGFiZWwgPSB0aGlzLiNzeXN0ZW1TZXJ2aWNlLmdldExvY2FsaXplZFJlc291cmNlKGAke2Zvcm1FbGVtZW50LmxhYmVsa2V5fV9sYWJlbGApIHx8IGZvcm1FbGVtZW50LmxhYmVsa2V5O1xuICAgICAgICAgIGZvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gdGhpcy4jc3lzdGVtU2VydmljZS5nZXRMb2NhbGl6ZWRSZXNvdXJjZShgJHtmb3JtRWxlbWVudC5sYWJlbGtleX1fZGVzY3JpcHRpb25gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyAuLi4gbm8gJ2xhYmVsJyBhbmQgYWxzbyBubyAnbGFiZWxLZXknIG1lYW5zIHRoYXQgd2UgYXJlIHNob3dpbmcgdGVjaG5pY2FsIG5hbWUgaW5zdGVhZFxuICAgICAgICAgIGZvcm1FbGVtZW50LmxhYmVsID0gZm9ybUVsZW1lbnQubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9ybUVsZW1lbnQucmVhZG9ubHkgPSBjb250cm9sRGlzYWJsZWQ7XG4gICAgICAvLyB3ZSBhcmUgdXNpbmcgYW4gaW50ZXJuYWwgdHlwZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBjb21wb25lbnRzXG4gICAgICAvLyB0byBiZSB1c2VkIHRvIHJlbmRlciBjZXJ0YWluIGZvcm0gZWxlbWVudHNcbiAgICAgIGZvcm1FbGVtZW50Ll9pbnRlcm5hbFR5cGUgPSB0aGlzLiNzeXN0ZW1TZXJ2aWNlLmdldEludGVybmFsRm9ybUVsZW1lbnRUeXBlKGZvcm1FbGVtZW50LnR5cGUsIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9ucyk7XG5cbiAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50ID0gZm9ybUVsZW1lbnQ7XG4gICAgICB0aGlzLiNmb3JtQ29udHJvbHNbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbDtcblxuICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgLy8gQWRkICdvbnJvd2VkaXQnIHByb3BlcnR5IGV2ZW4gaWYgaXQncyBub3Qgc2V0LlxuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIG1vYlgtT2JzZXJ2ZXIgd291bGQgbm90IHJlY29nbml6ZVxuICAgICAgICAvLyBjaGFuZ2VzIHRvIHRoaXMgcHJvcGVydHkgYXBwbGllZCBieSB0aGUgZm9ybSBzY3JpcHRcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudCkuaW5jbHVkZXMoJ29ucm93ZWRpdCcpKSB7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQub25yb3dlZGl0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLiNzY3JpcHRpbmdTY29wZSAmJiBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgIC8vIGhhdmluZyBhIHNjcmlwdGluZyBzY29wZSBhbmQgdGFibGUgcm93cyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gc2V0IGVtcHR5XG4gICAgICAgICAgLy8gY29sdW1ucyB0byBOVUxMLCBiZWNhdXNlIG90aGVyd2lzZSBtb2JYIHdvbid0IGJlIGFibGUgdG8gdHJhY2sgdGhvc2UgdmFsdWVzXG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZHMgPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5tYXAoKGU6IGFueSkgPT4gZS5uYW1lKTtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC52YWx1ZS5mb3JFYWNoKChyb3dWYWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICB2YWx1ZUZpZWxkcy5mb3JFYWNoKCh2YWx1ZUZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyb3dWYWx1ZSkuaW5jbHVkZXModmFsdWVGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICByb3dWYWx1ZVt2YWx1ZUZpZWxkXSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHVwZGF0ZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGFzIHdlbGwgdG8gcmVmbGVjdCB0aGUgb2JzZXJ2ZWQgdmFsdWVcbiAgICAgICAgICBmb3JtQ29udHJvbC5wYXRjaFZhbHVlKGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnZhbHVlLCB7XG4gICAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICAgICAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC5faW50ZXJuYWxUeXBlID09PSAnc3RyaW5nOm9yZ2FuaXphdGlvbicpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuc2V0RmlsdGVyID0gKGZpbHRlck9iamVjdDogYW55KSA9PiB7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZmlsdGVyID0gZmlsdGVyT2JqZWN0O1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBPYmplY3RGb3JtVXRpbHMudXBkYXRlRm9ybUVsZW1lbnQoZm9ybUVsZW1lbnQpO1xuXG4gICAgICAvLyByZW1vdmUgZW1wdHkgZGVzY3JpcHRpb25zXG4gICAgICBjb25zdCBkZXNjID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb247XG4gICAgICBpZiAoZGVzYyAmJiBkZXNjLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb24gPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIGZvcm0gZWxlbWVudCB0byB0aGUgc2NyaXB0IG1vZGVsIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBpbnRvXG4gICAgICAvLyB0aGUgZm9ybXMgc2NyaXB0aW5nIHNjb3BlIGxhdGVyIG9uXG4gICAgICB0aGlzLiNzY3JpcHRNb2RlbFtmb3JtRWxlbWVudC5uYW1lXSA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50O1xuXG4gICAgICAvLyBhcHBseSBjaGFuZ2UgbGlzdGVuZXIgdG8gdGhlIGZvcm0gY29udHJvbCwgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICAgIC8vIHRoZSBmb3JtIGVsZW1lbnRzIG9uQ2hhbmdlIGxpc3RlbmVyXG4gICAgICBjb25zdCBjb250cm9sV2F0Y2ggPSBjdHJsLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKTtcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgY29udHJvbFdhdGNoLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLiNzY3JpcHRpbmdTY29wZSkge1xuICAgICAgICAgICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUubW9kZWxDaGFuZ2VkKHYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGN0cmwuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XG4gICAgICBuYW1lID0gdGhpcy4jbmFtZVByZWZpeCArIGZvcm1FbGVtZW50Lm5hbWU7XG4gICAgfVxuICAgIHBhcmVudEdyb3VwLmFkZENvbnRyb2wobmFtZSwgY3RybCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdmFsaWRhdG9ycyBmb3IgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCB0byBiZSBhdHRhY2hlZCB0b1xuICAgKiBhIHJlYWN0aXZlIGZvcm1Db250cm9sLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSBmb3JtIGVsZW1lbnQgb2JqZWN0XG4gICAqL1xuICAjZ2V0VmFsaWRhdG9ycyhmb3JtRWxlbWVudDogYW55KTogVmFsaWRhdG9yRm5bXSB7XG4gICAgY29uc3QgZm8gPSB0aGlzLmZvcm1PcHRpb25zKCk7XG4gICAgY29uc3QgZWxtVmFsaWRhdG9ycyA9IEZvcm1WYWxpZGF0aW9uLmdldFZhbGlkYXRvcnMoZm9ybUVsZW1lbnQsIGZvPy5mb3JtTW9kZWwuc2l0dWF0aW9uKTtcblxuICAgIC8vIGFkZCBjdXN0b20gdmFsaWRhdG9yIGZvciBzY3JpcHQgZW5hYmxlZCBmb3Jtc1xuICAgIGlmICh0aGlzLiNzY3JpcHRpbmdTY29wZSkge1xuICAgICAgZWxtVmFsaWRhdG9ycy5wdXNoKEZvcm1WYWxpZGF0aW9uLmN1c3RvbVNjcmlwdGluZ1ZhbGlkYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBlbG1WYWxpZGF0b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBmb3JtXG4gICAqL1xuICAjZm9ybVRvRGF0YSgpIHtcbiAgICBjb25zdCBmbyA9IHRoaXMuZm9ybU9wdGlvbnMoKTtcbiAgICByZXR1cm4gZm8gJiYgdGhpcy5mb3JtID8gdGhpcy4jZm9ybUhlbHBlclNlcnZpY2UuZXh0cmFjdEZvcm1EYXRhKHRoaXMuZm9ybSwgZm8uZm9ybU1vZGVsLnNpdHVhdGlvbiwgZm8uZGF0YSwgdGhpcy5pc0lubmVyVGFibGVGb3JtKCkpIDoge307XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgZGF0YSBpbnRvIGEgZm9ybSBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gZm9ybSBtb2RlbFxuICAgKiBAcGFyYW0gZGF0YSAtIGRhdGEgb2JqZWN0IG9yIGFycmF5IG9mIFNlYXJjaEZpbHRlciBvYmplY3RzIGluIGNhc2Ugb2YgYSBzZWFyY2ggZm9ybVxuICAgKi9cbiAgI2RhdGFUb0Zvcm0obW9kZWw6IGFueSwgZGF0YTogYW55KSB7XG4gICAgaWYgKG1vZGVsICYmIGRhdGEpIHtcbiAgICAgIHRoaXMuI3NldEVsZW1lbnRWYWx1ZXMobW9kZWwuZWxlbWVudHMsIGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvLyByZWN1cnNpdmUgbWV0aG9kIGZvciBhZGRpbmcgdmFsdWVzIHRvIG1vZGVsIGVsZW1lbnRzXG4gICNzZXRFbGVtZW50VmFsdWVzKGVsZW1lbnRzOiBhbnlbXSwgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBlbGVtZW50cz8uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuI2hhc1ZhbHVlKGRhdGEsIGVsZW1lbnQpKSB7XG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLiNnZXRWYWx1ZShkYXRhLCBlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ1RBQkxFJyAmJiBlbGVtZW50LmVsZW1lbnRzICYmIGVsZW1lbnQuZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLiNzZXRFbGVtZW50VmFsdWVzKGVsZW1lbnQuZWxlbWVudHMsIGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI2hhc1ZhbHVlKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBlbGVtZW50OiBhbnkpIHtcbiAgICAvLyBkaWZmZXIgYmV0d2VlbiBhcnJheSBvZiBTZWFyY2hGaWx0ZXJzIGFuZCBhIGZvcm0gZGF0YSBvYmplY3RcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuICEhZGF0YS5maW5kKChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eSA9PT0gZWxlbWVudC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5pbmNsdWRlcyhlbGVtZW50Lm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gICNnZXRWYWx1ZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGRhdGFbZWxlbWVudC5uYW1lXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcbiAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS51bnJlZ2lzdGVyQWN0aXZlRm9ybSh0aGlzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLiNjZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyB1bnN1YnNjcmliZSBmcm9tIGFsbCB2YWx1ZSBjaGFuZ2UgbGlzdGVuZXJzIGZvciB0aGUgY3VycmVudCBmb3JtXG4gIC8vIHRvIGF2b2lkIG1lbW9yeSBsZWFrcy4gVGhpcyBtZXRob2Qgd2lsbCBhbHNvIGJlIGNhbGxlZCBldmVyeSB0aW1lXG4gIC8vIGEgbmV3IGZvcm0gaXMgcmVuZGVyZWQgdG8gZ2V0IHJpZCBvZiB0aGUgb2xkIGZvcm0gZWxlbWVudCBzdWJzY3JpcHRpb25zXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwoKSB7XG4gICAgaWYgKHRoaXMuI3N1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCd1bnN1YnNjcmliZWQgZnJvbSAnICsgdGhpcy4jc3Vic2NyaXB0aW9ucy5sZW5ndGggKyAnIHZhbHVlIGNoYW5nZSBsaXN0ZW5lcnMuJyk7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zID0gW107XG4gICAgfVxuICB9XG59XG4iLCJAbGV0IGZvID0gZm9ybU9wdGlvbnMoKTtcbkBpZiAoZm8gJiYgZm9ybSkge1xuICA8ZGl2IGNsYXNzPVwieXV2LW9iamVjdC1mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC13cmFwIGNvcmVcIj5cbiAgICAgIDx5dXYtb2JqZWN0LWZvcm0tZ3JvdXAgW2dyb3VwXT1cImdldEdyb3VwKCdjb3JlJylcIiBbc2l0dWF0aW9uXT1cImZvLmZvcm1Nb2RlbC5zaXR1YXRpb25cIj48L3l1di1vYmplY3QtZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50LXdyYXAgZGF0YVwiPlxuICAgICAgPHl1di1vYmplY3QtZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ2V0R3JvdXAoJ2RhdGEnKVwiIFtzaXR1YXRpb25dPVwiZm8uZm9ybU1vZGVsLnNpdHVhdGlvblwiPjwveXV2LW9iamVjdC1mb3JtLWdyb3VwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
628
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZm9ybS9zcmMvbGliL29iamVjdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQTBCLHdCQUF3QixFQUE0QyxNQUFNLHlCQUF5QixD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QWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixjQUFjLEVBQUUsdUJBQXVCO3FCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BueC9kZXZraXQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBvdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNpdHVhdGlvbiwgU3lzdGVtU2VydmljZSwgVXNlclNlcnZpY2UsIFV0aWxzIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLXNjcmlwdGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbiB9IGZyb20gJy4vb2JqZWN0LWZvcm0tZXh0ZW5zaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL29iamVjdC1mb3JtLWdyb3VwL29iamVjdC1mb3JtLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RGb3JtU2NyaXB0U2VydmljZSB9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZSB9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XG5pbXBvcnQgeyBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50LCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIsIE9iamVjdEZvcm1Nb2RlbENoYW5nZSwgT2JqZWN0Rm9ybU9wdGlvbnMgfSBmcm9tICcuL29iamVjdC1mb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtQ29udHJvbCwgT2JqZWN0Rm9ybUdyb3VwIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBPYmplY3RGb3JtU2VydmljZSB9IGZyb20gJy4vb2JqZWN0LWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtVXRpbHMgfSBmcm9tICcuL29iamVjdC1mb3JtLnV0aWxzJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uIH0gZnJvbSAnLi9vYmplY3QtZm9ybS52YWxpZGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9iamVjdC1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgT2JqZWN0Rm9ybUdyb3VwQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbT2JqZWN0Rm9ybVNlcnZpY2UsIE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlLCBGb3JtU2NyaXB0aW5nQXBpU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYmplY3QtZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3l1di1vYmplY3QtZm9ybScsXG4gICAgJ1thdHRyLmluZXJ0XSc6ICdpbmVydCgpID8gdHJ1ZSA6IG51bGwnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjc3lzdGVtU2VydmljZSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcbiAgI2Zvcm1TY3JpcHRTZXJ2aWNlID0gaW5qZWN0KE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlKTtcbiAgI2Zvcm1IZWxwZXJTZXJ2aWNlID0gaW5qZWN0KE9iamVjdEZvcm1TZXJ2aWNlKTtcbiAgI3VzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgI2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgI2Zvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlID0gaW5qZWN0KEZvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlKTtcblxuICAjc2tpcFRyYW5zbGF0aW9uc0ZvciA9IFsnY29yZScsICdkYXRhJ107XG4gICNuYW1lUHJlZml4ID0gJ2ZnXyc7XG4gIGdDb3VudCA9IDA7XG5cbiAgaWQgPSBVdGlscy51dWlkKCk7XG5cbiAgZm8/OiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybU9wdGlvbnMgPSBpbnB1dDxPYmplY3RGb3JtT3B0aW9ucz4oKTtcbiAgI2Zvcm1PcHRpb25zRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLiNpbml0KHRoaXMuZm9ybU9wdGlvbnMoKSk7XG4gIH0pO1xuXG4gIGluZXJ0ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZWxlbWVudEV4dGVuc2lvbnMgPSBpbnB1dDxJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb25bXT4oW10pO1xuICAjZWxlbWVudEV4dGVuc2lvbnNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuI2Zvcm1IZWxwZXJTZXJ2aWNlLnNldEVsZW1lbnRFeHRlbnNpb25zKHRoaXMuZWxlbWVudEV4dGVuc2lvbnMoKSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUaGVyZSBhcmUgc3BlY2lhbCBzY2VuYXJpb3Mgd2hlcmUgZm9ybXMgYXJlIHdpdGhpbiBhIGZvcm0gdGhlbXNlbHZlcy5cbiAgICogU2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUsIHdpbGwgaGFuZGxlIHRoZSBjdXJyZW50IGZvcm0gaW4gYVxuICAgKiBzbGlnaHRseSBkaWZmZXJlbnQgd2F5IHdoZW4gaXQgY29tZXMgdG8gZm9ybSBzY3JpcHRpbmcuXG4gICAqL1xuICBpc0lubmVyVGFibGVGb3JtID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogdHJpZ2dlcmVkIHdoZW4gdGhlIGZvcm1zIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWRcbiAgICovXG4gIHN0YXR1c0NoYW5nZWQgPSBvdXRwdXQ8Rm9ybVN0YXR1c0NoYW5nZWRFdmVudD4oKTtcblxuICAvKipcbiAgICogaGFuZGxlciB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgZm9ybSBoYXMgYmVlbiBzZXQgdXBcbiAgICovXG4gIG9uRm9ybVJlYWR5ID0gb3V0cHV0KCk7XG5cbiAgLy8gdGhlIGFjdHVhbCBmb3JtIGluc3RhbmNlXG4gIGZvcm0/OiBPYmplY3RGb3JtR3JvdXA7XG4gIC8vIHByb3BlcnR5IGZvciBob2xkaW5nIHRoZSBmb3JtcyBkYXRhIHVzZWQgZm9yIGNvbXBhcmlzb24gd2hlbiBhIGZvcm0tY2hhbmdlZC1ldmVudFxuICAvLyBpcyBmZXRjaGVkIHRvIGluZGljYXRlIHdoZXIgb3Igbm90IHRoZSBpbmRleGRhdGEgd2VyZSBjaGFuZ2VkIG9yIGp1c3QgdGhlIHByb3BlcnRpZXNcbiAgLy8gb2YgdGhlIGZvcm0gZWxlbWVudHMgKGVnLiBmb3JtIHNjcmlwdCBzZXR0aW5nIGZpZWxkcyB0byByZWFkb25seSlcbiAgZm9ybURhdGE6IGFueTtcbiAgI3NjcmlwdE1vZGVsOiBhbnkgPSB7fTtcbiAgI3NjcmlwdGluZ1Njb3BlPzogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xuICAjc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAvLyBsb2NhbCBzdG9yZSBmb3IgYWxsIHRoZSBmb3JtIGNvbnRyb2wgcmVmZXJlbmNlc1xuICAjZm9ybUNvbnRyb2xzOiBhbnkgPSB7fTtcbiAgI2luaXRpYWxWYWxpZGF0b3JzOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5mb3JtSWQgPSB0aGlzLmlkO1xuICAgIHRoaXMuI2Zvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlLmFwaS5ldmVudHNcbiAgICAgIC5vbihGb3JtU2NyaXB0aW5nQXBpU2VydmljZS5FVkVOVF9NT0RFTF9DSEFOR0VEKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gZXZlbnQuZGF0YSAmJiB0aGlzLiNvblNjcmlwdGluZ01vZGVsQ2hhbmdlZChldmVudC5kYXRhLmZvcm1Db250cm9sTmFtZSwgZXZlbnQuZGF0YS5jaGFuZ2UsIGV2ZW50LmRhdGEuZm9ybUlkKSk7XG5cbiAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5mb3JtSWQgPSB0aGlzLmlkO1xuICB9XG5cbiAgLy8gaW5pdGlhbGl6ZSB0aGUgZm9ybSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZm9ybSBvcHRpb25zXG4gICNpbml0KGZvOiBPYmplY3RGb3JtT3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZm9ybSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoIWZvKSByZXR1cm47XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNpbml0aWFsVmFsaWRhdG9ycyA9IHt9O1xuICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCgpO1xuICAgICAgdGhpcy4jYnVpbGRSZWFjdGl2ZUZvcm0oZm8pO1xuICAgIH0sIDApO1xuICB9XG5cbiAgI2luaXRTY3JpcHRpbmdTY29wZShmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnMsIGRhdGFGb3JtTW9kZWw6IGFueSkge1xuICAgIGNvbnN0IHsgZGF0YSwgYWN0aW9ucywgb2JqZWN0cywgY29udGV4dCB9ID0gKGZvcm1PcHRpb25zIHx8IHt9KSBhcyBPYmplY3RGb3JtT3B0aW9ucztcblxuICAgIGlmICh0aGlzLiNzY3JpcHRpbmdTY29wZSkge1xuICAgICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUuc2V0TW9kZWwodGhpcy4jc2NyaXB0TW9kZWwpO1xuICAgICAgLyoqIHByb3ZpZGUgYWNjZXNzIHRvIGFjdGlvbnMgKHVzZWQgaW5zaWRlIG9mIEJQTS1Gb3JtcykgKi9cbiAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgLyoqIHByb3ZpZGUgYWNjZXNzIHRvIGFkZGl0aW9uYWwgb2JqZWN0cyAodXNlZCBmb3IgZXhhbXBsZSBpbiBCUE0tU3RhcnQtRm9ybXMgdG9cbiAgICAgICAqIGFkZCBkYXRhIG9mIERNUy1PYmplY3RzIHRvIHN0YXJ0IHRoZSBwcm9jZXNzIGZvcilcbiAgICAgICAqL1xuICAgICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUub2JqZWN0cyA9IG9iamVjdHMgfHwgW107XG4gICAgICB0aGlzLiNzY3JpcHRpbmdTY29wZS5jb250ZXh0ID0gY29udGV4dCB8fCB7IGlkOiAnJywgdGl0bGU6ICcnLCBvYmplY3RUeXBlSWQ6ICcnIH07XG4gICAgICAvKiogcHJvdmlkZSByZWFkb25seSBhY2Nlc3MgdG8gaW5pdGlhbCBmb3JtIGRhdGEgKHdoaWNoIG1heSBhbHNvIGNvbnRhaW4gdmFsdWVzIHRoYXRcbiAgICAgICAqIGFyZSBub3QgcmVuZGVyZWQgYXMgZm9ybSBlbGVtZW50cyAoaW52aXNpYmxlIHZhbHVlcykpXG4gICAgICAgKi9cbiAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlLmRhdGEgPSBkYXRhO1xuXG4gICAgICAvKiogYnkgZGVmYXVsdCwgc2NyaXB0aW5nIHNjb3BlcyBhcmUgYXBwbGllZCB0byBmb3Jtcy4gQnV0IHRhYmxlIGVsZW1lbnRzIGNyZWF0ZSB0aGVpciBvd24gc2NvcGVcbiAgICAgICAqIGZvciBlZGl0aW5nIHJvd3MuIEJlaW5nIG9uZSBvZiB0aG9zZSBpbm5lciBmb3JtcyBzaG91bGQgbm90IHJ1biB0aGUgZm9ybSBzY3JpcHQgYWdhaW4sIGJ1dFxuICAgICAgICogaW5zdGVhZCBqdXN0IHByb3ZpZGUgdGhlIG9ic2VydmluZyBhYmlsaXRpZXMgb2YgdGhlIHNjcmlwdGluZyBzY29wZS5cbiAgICAgICAqL1xuICAgICAgaWYgKCF0aGlzLmlzSW5uZXJUYWJsZUZvcm0oKSAmJiBkYXRhRm9ybU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdE5hbWUgPSBkYXRhRm9ybU1vZGVsLm5hbWUgKyAnXycgKyBkYXRhRm9ybU1vZGVsLnNpdHVhdGlvbjtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnZXhlY3V0aW5nIGZvcm0gc2NyaXB0ICcgKyBzY3JpcHROYW1lKTtcbiAgICAgICAgdGhpcy4jZm9ybVNjcmlwdFNlcnZpY2UucnVuRm9ybVNjcmlwdCh0aGlzLiNzY3JpcHRpbmdTY29wZSwgZGF0YUZvcm1Nb2RlbC5zY3JpcHQsIHNjcmlwdE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzRm9ybSgpIHtcbiAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICB9XG5cbiAgZ2V0R3JvdXAoaWQ6IHN0cmluZyk6IE9iamVjdEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KGlkKSBhcyBPYmplY3RGb3JtR3JvdXA7XG4gIH1cblxuICBzZXRGb3JtRGF0YShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIGNvbnN0IGZvID0gdGhpcy5mb3JtT3B0aW9ucygpO1xuICAgIGlmICghZm8pIHJldHVybjtcbiAgICBmby5kYXRhID0gZGF0YTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuI2luaXQoZm8pLCAwKTtcbiAgfVxuXG4gIHBhdGNoVmFsdWUoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuI29uU2NyaXB0aW5nTW9kZWxDaGFuZ2VkKGtleSwge1xuICAgICAgICBuYW1lOiAndmFsdWUnLFxuICAgICAgICBuZXdWYWx1ZTogZGF0YVtrZXldXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gbW9kZWwuIEVhY2ggZm9ybSB2YWx1ZSBpcyByZXByZXNlbnRlZCBieSBvbmVcbiAgICogcHJvcGVydHkgb24gdGhlIHJlc3VsdCBvYmplY3QgaG9sZGluZyB0aGUgZmllbGRzIHZhbHVlLiBUaGUga2V5cyAocHJvcGVydGllcykgYXJlIHRoZSBgbmFtZWBcbiAgICogcHJvcGVydGllcyBvZiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKlxuICAgKiBIb3cgdmFsdWVzIGFyZSBleHRyYWN0ZWQgaXMgaW5mbHVlbmNlZCBieSB0aGUgZm9ybXMgc2l0dWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIG9iamVjdCBvZiBrZXkgdmFsdWUgcGFpcnNcbiAgICovXG4gIGdldEZvcm1EYXRhKCkge1xuICAgIHJldHVybiB0aGlzLiNmb3JtVG9EYXRhKCk7XG4gIH1cblxuICBnZXRGb3JtRWxlbWVudHMoKSB7XG4gICAgY29uc3QgZm9ybUVsZW1lbnRzOiBhbnkgPSB7fTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLiNmb3JtQ29udHJvbHMpLmZvckVhY2goKGspID0+IHtcbiAgICAgIGZvcm1FbGVtZW50c1trXSA9IHRoaXMuI2Zvcm1Db250cm9sc1trXS5fX2VvRm9ybUVsZW1lbnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1FbGVtZW50cztcbiAgfVxuXG4gIHNldEZvcm1QcmlzdGluZSgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuO1xuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgLy8gcmVzZXQgdGhlIGZvcm0gdG8gaXRzIGluaXRpYWwgc3RhdGVcbiAgcmVzZXRGb3JtKCkge1xuICAgIGNvbnN0IGZvID0gdGhpcy5mb3JtT3B0aW9ucygpO1xuICAgIGlmICghZm8pIHJldHVybjtcbiAgICB0aGlzLnNldEZvcm1EYXRhKGZvLmRhdGEpO1xuICAgIHRoaXMuI2VtaXRGb3JtQ2hhbmdlZEV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb2JzZXJ2ZWQgbW9kZWwgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBjdXJyZW50IGZvcm0gc2NyaXB0IHJ1bm5pbmcuIElmIHRoZXJlIGlzXG4gICAqIG5vIGZvcm0gc2NyaXB0LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBOVUxMLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0T2JzZXJ2ZWRTY3JpcHRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy4jc2NyaXB0aW5nU2NvcGUgPyB0aGlzLiNzY3JpcHRpbmdTY29wZS5nZXRNb2RlbCgpIDogbnVsbDtcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIHJlYWN0aXZlIGZvcm0gZnJvbSB0aGUgZW5haW8gZm9ybSBtb2RlbFxuICAjYnVpbGRSZWFjdGl2ZUZvcm0oZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zKSB7XG4gICAgdGhpcy4jc2NyaXB0aW5nU2NvcGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jc2NyaXB0TW9kZWwgPSB7fTtcbiAgICB0aGlzLiNmb3JtQ29udHJvbHMgPSB7fTtcbiAgICBjb25zdCBmb3JtTW9kZWwgPSB0aGlzLiNkYXRhVG9Gb3JtKGZvcm1PcHRpb25zLmZvcm1Nb2RlbCwgZm9ybU9wdGlvbnMuZGF0YSk7XG5cbiAgICBpZiAoIWZvcm1Nb2RlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBpZiBhIHNjcmlwdCBpcyBhdmFpbGFibGUsIHdlJ2xsIGluaXQgdGhlIGZvcm0gc2NyaXB0aW5nIGZvciB0aGVcbiAgICAvLyBjdXJyZW50IGZvcm1cbiAgICBpZiAodGhpcy5pc0lubmVyVGFibGVGb3JtKCkgfHwgKGZvcm1Nb2RlbC5zY3JpcHQgJiYgZm9ybU1vZGVsLnNjcmlwdC5sZW5ndGggPiAwKSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnYWRkaW5nIGZvcm0gc2NyaXB0aW5nIHNjb3BlJyk7XG4gICAgICB0aGlzLiNzY3JpcHRpbmdTY29wZSA9IG5ldyBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUoXG4gICAgICAgIGZvcm1Nb2RlbC5zaXR1YXRpb24sXG4gICAgICAgIHRoaXMuI29uU2NyaXB0aW5nTW9kZWxDaGFuZ2VkLFxuICAgICAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5nZXRBcGkoKSxcbiAgICAgICAgdGhpcy5pc0lubmVyVGFibGVGb3JtKClcbiAgICAgICk7XG4gICAgICB0aGlzLiNzY3JpcHRpbmdTY29wZS5vYmplY3RJZCA9IHRoaXMuZm9ybU9wdGlvbnMoKSEub2JqZWN0SWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xuICAgIGlmIChmb3JtTW9kZWw/LmVsZW1lbnRzWzBdPy5lbGVtZW50cykge1xuICAgICAgdGhpcy4jYWRkRm9ybUNvbnRyb2woZm9ybSwgZm9ybU1vZGVsLmVsZW1lbnRzWzBdLCAnY29yZScpO1xuICAgIH1cbiAgICBpZiAoZm9ybU1vZGVsPy5lbGVtZW50c1sxXT8uZWxlbWVudHMpIHtcbiAgICAgIHRoaXMuI2FkZEZvcm1Db250cm9sKGZvcm0sIGZvcm1Nb2RlbC5lbGVtZW50c1sxXSwgJ2RhdGEnKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5yZWdpc3RlckFjdGl2ZUZvcm0odGhpcyk7XG4gICAgY29uc29sZS5sb2coJ2Zvcm0nLCBmb3JtKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgICB0aGlzLmluaXRWYWxpZGF0b3JzKHRoaXMuZm9ybSk7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jZW1pdEZvcm1DaGFuZ2VkRXZlbnQoKSkpO1xuXG4gICAgICB0aGlzLiNpbml0U2NyaXB0aW5nU2NvcGUoZm9ybU9wdGlvbnMsIGZvcm1Nb2RlbCk7XG5cbiAgICAgIHRoaXMub25Gb3JtUmVhZHkuZW1pdCgpO1xuICAgICAgdGhpcy4jZW1pdEZvcm1DaGFuZ2VkRXZlbnQoZmFsc2UpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBpbml0VmFsaWRhdG9ycyhmb3JtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xuICAgICAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgICAgIHRoaXMuaW5pdFZhbGlkYXRvcnMoY29udHJvbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4jaW5pdGlhbFZhbGlkYXRvcnNbY29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXSA9IGNvbnRyb2wudmFsaWRhdG9yO1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy4jZ2V0VmFsaWRhdG9ycyhjb250cm9sLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoW3RoaXMuI2luaXRpYWxWYWxpZGF0b3JzW2NvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV1dKSkpO1xuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2VtaXRGb3JtQ2hhbmdlZEV2ZW50KGNvbXBhcmUgPSB0cnVlKSB7XG4gICAgLy8gY2hlY2sgaWYgaW5kZXhkYXRhIGhhcyBiZWVuIGNoYW5nZWRcbiAgICBjb25zdCBjdXJyZW50Rm9ybURhdGEgPSB0aGlzLmdldEZvcm1EYXRhKCk7XG4gICAgY29uc3QgaWR4Q2hhbmdlID0gY29tcGFyZSA/IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybURhdGEpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpIDogZmFsc2U7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGN1cnJlbnRGb3JtRGF0YTtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLnN0YXR1c0NoYW5nZWQuZW1pdCh7XG4gICAgICAgIGludmFsaWQ6IHRoaXMuZm9ybS5pbnZhbGlkLFxuICAgICAgICBkaXJ0eTogdGhpcy5mb3JtLmRpcnR5LFxuICAgICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhLFxuICAgICAgICBpbmRleGRhdGFDaGFuZ2VkOiBpZHhDaGFuZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgdGhlIHNjcmlwdCBjaGFuZ2VzIGl0cyBpbnRlcm5hbCBtb2RlbC5cbiAgICogSXQgaXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgc2NyaXB0IGNoYW5nZXMgdG8gdGhlIGFjdHVhbCBmb3JtIG1vZGVsLlxuICAgKlxuICAgKiBUbyBlbnN1cmUgdGhlIHJpZ2h0IGNvbnRleHQsIHdlIGRlZmluZSBhbiBpbnN0YW5jZSBtZXRob2QgYXMgY2FsbGJhY2sgZm9yIHRoZSBzY3JpcHRpbmcgc2NvcGVcbiAgICogQHNlZTogaHR0cHM6Ly9ibG9nLmpvaG5ueXJlaWxseS5jb20vMjAxNC8wNC90eXBlc2NyaXB0LWluc3RhbmNlLW1ldGhvZHMuaHRtbFxuICAgKlxuICAgKiBAcGFyYW0gZm9ybUNvbnRyb2xOYW1lXG4gICAqIEBwYXJhbSBjaGFuZ2VcbiAgICovXG4gICNvblNjcmlwdGluZ01vZGVsQ2hhbmdlZCA9IChmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgY2hhbmdlOiBPYmplY3RGb3JtTW9kZWxDaGFuZ2UsIGZvcm1JZD86IHN0cmluZykgPT4ge1xuICAgIGlmICghdGhpcy5mb3JtIHx8IChmb3JtSWQgJiYgdGhpcy5pZCAhPT0gZm9ybUlkKSkgcmV0dXJuO1xuICAgIC8vIGZpbmQgdGhlIHRhcmdldCBjb250cm9sXG4gICAgY29uc3QgZmM6IE9iamVjdEZvcm1Db250cm9sID0gdGhpcy4jZm9ybUNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2w7XG4gICAgaWYgKGZjKSB7XG4gICAgICAvLyBjaGFuZ2Ugb25seSBhbGxvd2VkIHByb3BlcnRpZXNcbiAgICAgIHN3aXRjaCAoY2hhbmdlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAndmFsdWUnOiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hhbmdlLm5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy4jcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmMsIGNoYW5nZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgaWYgKGZjLnZhbHVlICE9PSBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgZmMucGF0Y2hWYWx1ZShjaGFuZ2UubmV3VmFsdWUpO1xuICAgICAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgIGZjLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgIC8vIGFwcGx5IG5ldyB2YWxpZGF0b3JzXG4gICAgICAgICAgLy8gQHNlZTogaHR0cHM6Ly9zY290Y2guaW8vdHV0b3JpYWxzL2hvdy10by1pbXBsZW1lbnQtY29uZGl0aW9uYWwtdmFsaWRhdGlvbi1pbi1hbmd1bGFyLTItbW9kZWwtZHJpdmVuLWZvcm1zXG4gICAgICAgICAgZmMuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy4jZ2V0VmFsaWRhdG9ycyhmYy5fZW9Gb3JtRWxlbWVudCkuY29uY2F0KFt0aGlzLiNpbml0aWFsVmFsaWRhdG9yc1tmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pKSk7XG4gICAgICAgICAgLy8gbmVlZCB0byBtYXJrIGZvcm0gY29udHJvbCBhcyB0b3VjaGVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGZvcm0gdmFsaWRhdGlvbiB3aWxsIG5vdCBzaG93XG4gICAgICAgICAgLy8gZXJyb3IgbWVzc2FnZXNcbiAgICAgICAgICBmYy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3JlYWRvbmx5Jzoge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5ID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgIGlmIChjaGFuZ2UubmV3VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGZjLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmMuZW5hYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Vycm9yJzoge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmVycm9yID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgIGZjLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmV3IG9ucm93ZWRpdCBmdW5jdGlvbiB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgIGNhc2UgJ29ucm93ZWRpdCc6IHtcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5vbnJvd2VkaXQgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmV3IG9uY2hhbmdlIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcbiAgICAgICAgY2FzZSAnb25jaGFuZ2UnOiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQub25jaGFuZ2UgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuI2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH07XG5cbiAgI3Byb2Nlc3NBcnJheVZhbHVlQ2hhbmdlKGZjOiBhbnksIGNoYW5nZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgIGNvbnN0IHRhcmdldFR5cGUgPSBmYy5fZW9Gb3JtRWxlbWVudC50eXBlO1xuICAgIC8vIGZvciBzb21lIHR5cGVzIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbWV0YSBkYXRhIGFyZSBwcm92aWRlZCBhcyB3ZWxsXG4gICAgc3dpdGNoICh0YXJnZXRUeXBlKSB7XG4gICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgIHRoaXMuI2dldERhdGFNZXRhKGZjLl9lb0Zvcm1FbGVtZW50LCBuZXdWYWwpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gbTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnVEFCTEUnOiB7XG4gICAgICAgIGNvbnN0IGRhdGFUb0JlUHJvY2Vzc2VkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKChlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlLnR5cGUgPT09ICdDT0RFU1lTVEVNJykge1xuICAgICAgICAgICAgZGF0YVRvQmVQcm9jZXNzZWRbZS5uYW1lXSA9IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFUb0JlUHJvY2Vzc2VkKS5sZW5ndGgpIHtcbiAgICAgICAgICBuZXdWYWwuZm9yRWFjaCgocm93RGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyb3dEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNnZXREYXRhTWV0YShkYXRhVG9CZVByb2Nlc3NlZFtrZXldLCByb3dEYXRhW2tleV0pLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtrZXkgKyAnX21ldGEnXSA9IG07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93RGF0YVtrZXkgKyAnX21ldGEnXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLiN1cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpO1xuICB9XG5cbiAgI3VwZGF0ZUFycmF5VmFsdWUoZmM6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgIGZjLl9lb0Zvcm1FbGVtZW50LnZhbHVlID0gW10uY29uY2F0KG5ld1ZhbHVlKTtcbiAgICBmYy5wYXRjaFZhbHVlKFtdLmNvbmNhdChuZXdWYWx1ZSkpO1xuICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICBmYy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgI2dldERhdGFNZXRhKGZvcm1FbGVtZW50OiBhbnksIG5ld1ZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgc3dpdGNoIChmb3JtRWxlbWVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy4jdXNlclNlcnZpY2UuZ2V0VXNlckJ5SWQobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gICNwYXRjaEZvcm1WYWx1ZShmb3JtVmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgdmFsdWUgPSBbXTtcbiAgICAgIC8vIGNvcHkgYnkgdmFsdWUgZm9yIGFycmF5cyBvZiBvYmplY3RzIChlLmcuIHRhYmxlIGRhdGEpXG4gICAgICBmb3JtVmFsdWUuZm9yRWFjaCgobykgPT4gdmFsdWUucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGZvcm1WYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZSBtZXRob2QgYWRkaW5nIGEgbmV3IEZvcm1Db250cm9sIChncm91cCBvciBjb250cm9sKSB0byBhIHBhcmVudCBmb3JtIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnRHcm91cCAtIHRoZSBwYXJlbnQgZ3JvdXAgdG8gYWRkIHRoZSBjb250cm9sIHRvXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudCAtIHRoZSBlbmFpbyBmb3JtIG1vZGVsIGVsZW1lbnQgdG8gY3JlYXRlIHRoZSBjaGlsZCBjb250cm9sIGZyb21cbiAgICogQHBhcmFtIFt1c2VOYW1lXSAtIHVzZSB0aGlzIG5hbWUgaW5zdGVhZCBvZiB0aGUgb25lIGZyb20gdGhlIG1vZGVsXG4gICAqL1xuICAjYWRkRm9ybUNvbnRyb2wocGFyZW50R3JvdXA6IE9iamVjdEZvcm1Hcm91cCwgZm9ybUVsZW1lbnQ6IGFueSwgdXNlTmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IGZvID0gdGhpcy5mb3JtT3B0aW9ucygpO1xuICAgIGlmICghZm8pIHJldHVybjtcblxuICAgIGxldCBjdHJsO1xuICAgIGxldCBuYW1lO1xuXG4gICAgLy8gYWRkIGEgZm9ybSBncm91cFxuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnbzJtR3JvdXAnIHx8IGZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJykge1xuICAgICAgLy8gZG8gbm90IGFkZCBncm91cHMgdGhhdCBhcmUgZW1wdHlcbiAgICAgIGNvbnN0IGlzUm9vdEdyb3VwID0gZm9ybUVsZW1lbnQubmFtZSAmJiAoZm9ybUVsZW1lbnQubmFtZSAhPT0gJ2RhdGEnIHx8IGZvcm1FbGVtZW50Lm5hbWUgIT09ICdjb3JlJyk7XG4gICAgICBpZiAoIWlzUm9vdEdyb3VwICYmICghZm9ybUVsZW1lbnQuZWxlbWVudHMgfHwgZm9ybUVsZW1lbnQuZWxlbWVudHMubGVuZ3RoID09PSAwKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGb3VuZCBlbXB0eSBmb3JtIGdyb3VwJywgZm9ybUVsZW1lbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGN0cmwgPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcbiAgICAgIGN0cmwuX2VvRm9ybUdyb3VwID0ge1xuICAgICAgICBsYXlvdXQ6IGZvcm1FbGVtZW50LmxheW91dCxcbiAgICAgICAgdHlwZTogZm9ybUVsZW1lbnQudHlwZVxuICAgICAgfTtcblxuICAgICAgaWYgKGZvcm1FbGVtZW50Lm5hbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuI3NraXBUcmFuc2xhdGlvbnNGb3IuaW5jbHVkZXMoZm9ybUVsZW1lbnQubmFtZSkpIHtcbiAgICAgICAgICBjdHJsLl9lb0Zvcm1Hcm91cC5sYWJlbCA9IGZvcm1FbGVtZW50Lm5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWZvcm1FbGVtZW50LmxhYmVsKSB7XG4gICAgICAgICAgLy8gbm8gbGFiZWwsIHNvIHRyeSB0byB0cmFuc2xhdGUgdGhlIHRlY2huaWNhbCBuYW1lXG4gICAgICAgICAgY3RybC5fZW9Gb3JtR3JvdXAubGFiZWwgPSB0aGlzLiNzeXN0ZW1TZXJ2aWNlLmdldExvY2FsaXplZFJlc291cmNlKGAke2Zvcm1FbGVtZW50Lm5hbWV9X2xhYmVsYCkgfHwgZm9ybUVsZW1lbnQubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVyZSBpcyBhIGxhYmVsIHNvIHdlIHRha2UgdGhpcyBvbmVcbiAgICAgICAgICBjdHJsLl9lb0Zvcm1Hcm91cC5sYWJlbCA9IGZvcm1FbGVtZW50LmxhYmVsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1c2VOYW1lID09PSAnY29yZScgfHwgdXNlTmFtZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gdXNlTmFtZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBlIG9mIGZvcm1FbGVtZW50LmVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMuI2FkZEZvcm1Db250cm9sKGN0cmwsIGUpO1xuICAgICAgfVxuICAgICAgbmFtZSA9IHVzZU5hbWUgfHwgJ2ZnJyArIHRoaXMuZ0NvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkZCBmb3JtIGNvbnRyb2xcbiAgICAgIC8vIFRvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHJlY3Vyc2l2ZSBmb3JtIGNvbnRyb2xzIGludG8gdGhlIG1haW4gZm9ybSxcbiAgICAgIC8vIHdlIGhhdmUgdG8gd3JhcCB0aGVtIGluIGEgZm9ybSBncm91cFxuICAgICAgY3RybCA9IG5ldyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoe30pO1xuICAgICAgY3RybC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XG4gICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSB3cmFwcGVkIEZvcm1Db250cm9sXG4gICAgICAgIGNvbnRyb2xOYW1lOiBmb3JtRWxlbWVudC5uYW1lLFxuICAgICAgICBzaXR1YXRpb246IGZvLmZvcm1Nb2RlbC5zaXR1YXRpb25cbiAgICAgIH07XG5cbiAgICAgIC8vIGRvIG5vdCBzZXQgYSByZWZlcmVuY2UgYXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWVcbiAgICAgIC8vIG90aGVyd2lzZSB3ZSBjb3VsZCBub3QgcmVzZXQgdGhlIGZvcm1cbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybUVsZW1lbnQ/LnZhbHVlXG4gICAgICAgID8gdGhpcy4jcGF0Y2hGb3JtVmFsdWUoZm9ybUVsZW1lbnQ/LnZhbHVlKVxuICAgICAgICA6ICFVdGlscy5pc0VtcHR5KGZvcm1FbGVtZW50Py5kZWZhdWx0dmFsdWUpICYmIGZvLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09IFNpdHVhdGlvbi5DUkVBVEVcbiAgICAgICAgICA/IHRoaXMuI3BhdGNoRm9ybVZhbHVlKGZvcm1FbGVtZW50Py5kZWZhdWx0dmFsdWUpXG4gICAgICAgICAgOiBmb3JtRWxlbWVudD8udmFsdWU7XG5cbiAgICAgIC8vIGNyZWF0ZSB0aGUgYWN0dWFsIGZvcm0gY29udHJvbFxuICAgICAgY29uc3QgY29udHJvbERpc2FibGVkID0gZm8uZGlzYWJsZWQgfHwgISFmb3JtRWxlbWVudC5yZWFkb25seTtcbiAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBjb250cm9sRGlzYWJsZWRcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBmb3JtIGVsZW1lbnQgaGFzIGEgJ2xhYmVsJyBwcm9wZXJ0eSBpdCB3aWxsIGJlIHNob3duIGFzIGlzIC4uLlxuICAgICAgaWYgKCFmb3JtRWxlbWVudC5sYWJlbCkge1xuICAgICAgICAvLyAuLi4gaWYgdGhlcmUgaXMgbm8gbGFiZWwgYnV0IGEgJ2xhYmVsS2V5JyBwcm9wZXJ0eSB3ZSBhcmUgZ29pbmcgdG8gbG9jYWxpemUgdGhhdCBrZXkgLi4uXG4gICAgICAgIGlmIChmb3JtRWxlbWVudC5sYWJlbGtleSkge1xuICAgICAgICAgIGZvcm1FbGVtZW50LmxhYmVsID0gdGhpcy4jc3lzdGVtU2VydmljZS5nZXRMb2NhbGl6ZWRSZXNvdXJjZShgJHtmb3JtRWxlbWVudC5sYWJlbGtleX1fbGFiZWxgKSB8fCBmb3JtRWxlbWVudC5sYWJlbGtleTtcbiAgICAgICAgICBmb3JtRWxlbWVudC5kZXNjcmlwdGlvbiA9IHRoaXMuI3N5c3RlbVNlcnZpY2UuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7Zm9ybUVsZW1lbnQubGFiZWxrZXl9X2Rlc2NyaXB0aW9uYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gLi4uIG5vICdsYWJlbCcgYW5kIGFsc28gbm8gJ2xhYmVsS2V5JyBtZWFucyB0aGF0IHdlIGFyZSBzaG93aW5nIHRlY2huaWNhbCBuYW1lIGluc3RlYWRcbiAgICAgICAgICBmb3JtRWxlbWVudC5sYWJlbCA9IGZvcm1FbGVtZW50Lm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvcm1FbGVtZW50LnJlYWRvbmx5ID0gY29udHJvbERpc2FibGVkO1xuICAgICAgLy8gd2UgYXJlIHVzaW5nIGFuIGludGVybmFsIHR5cGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgY29tcG9uZW50c1xuICAgICAgLy8gdG8gYmUgdXNlZCB0byByZW5kZXIgY2VydGFpbiBmb3JtIGVsZW1lbnRzXG4gICAgICBmb3JtRWxlbWVudC5faW50ZXJuYWxUeXBlID0gdGhpcy4jc3lzdGVtU2VydmljZS5nZXRJbnRlcm5hbEZvcm1FbGVtZW50VHlwZShmb3JtRWxlbWVudC50eXBlLCBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbnMpO1xuXG4gICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50O1xuICAgICAgdGhpcy4jZm9ybUNvbnRyb2xzW2Zvcm1FbGVtZW50Lm5hbWVdID0gZm9ybUNvbnRyb2w7XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAgIC8vIEFkZCAnb25yb3dlZGl0JyBwcm9wZXJ0eSBldmVuIGlmIGl0J3Mgbm90IHNldC5cbiAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIG90aGVyd2lzZSBtb2JYLU9ic2VydmVyIHdvdWxkIG5vdCByZWNvZ25pemVcbiAgICAgICAgLy8gY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IGFwcGxpZWQgYnkgdGhlIGZvcm0gc2NyaXB0XG4gICAgICAgIGlmICghT2JqZWN0LmtleXMoZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQpLmluY2x1ZGVzKCdvbnJvd2VkaXQnKSkge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50Lm9ucm93ZWRpdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy4jc2NyaXB0aW5nU2NvcGUgJiYgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAvLyBoYXZpbmcgYSBzY3JpcHRpbmcgc2NvcGUgYW5kIHRhYmxlIHJvd3MgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHNldCBlbXB0eVxuICAgICAgICAgIC8vIGNvbHVtbnMgdG8gTlVMTCwgYmVjYXVzZSBvdGhlcndpc2UgbW9iWCB3b24ndCBiZSBhYmxlIHRvIHRyYWNrIHRob3NlIHZhbHVlc1xuICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGRzID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZWxlbWVudHMubWFwKChlOiBhbnkpID0+IGUubmFtZSk7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQudmFsdWUuZm9yRWFjaCgocm93VmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdmFsdWVGaWVsZHMuZm9yRWFjaCgodmFsdWVGaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocm93VmFsdWUpLmluY2x1ZGVzKHZhbHVlRmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVbdmFsdWVGaWVsZF0gPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB1cGRhdGUgZm9ybSBjb250cm9scyB2YWx1ZSBhcyB3ZWxsIHRvIHJlZmxlY3QgdGhlIG9ic2VydmVkIHZhbHVlXG4gICAgICAgICAgZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC52YWx1ZSwge1xuICAgICAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZSxcbiAgICAgICAgICAgIGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQuX2ludGVybmFsVHlwZSA9PT0gJ3N0cmluZzpvcmdhbml6YXRpb24nKSB7XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnNldEZpbHRlciA9IChmaWx0ZXJPYmplY3Q6IGFueSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlciA9IGZpbHRlck9iamVjdDtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0Rm9ybVV0aWxzLnVwZGF0ZUZvcm1FbGVtZW50KGZvcm1FbGVtZW50KTtcblxuICAgICAgLy8gcmVtb3ZlIGVtcHR5IGRlc2NyaXB0aW9uc1xuICAgICAgY29uc3QgZGVzYyA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uO1xuICAgICAgaWYgKGRlc2MgJiYgZGVzYy50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIHNjcmlwdCBtb2RlbCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50b1xuICAgICAgLy8gdGhlIGZvcm1zIHNjcmlwdGluZyBzY29wZSBsYXRlciBvblxuICAgICAgdGhpcy4jc2NyaXB0TW9kZWxbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudDtcblxuICAgICAgLy8gYXBwbHkgY2hhbmdlIGxpc3RlbmVyIHRvIHRoZSBmb3JtIGNvbnRyb2wsIHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICAvLyB0aGUgZm9ybSBlbGVtZW50cyBvbkNoYW5nZSBsaXN0ZW5lclxuICAgICAgY29uc3QgY29udHJvbFdhdGNoID0gY3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSk7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIGNvbnRyb2xXYXRjaC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy4jc2NyaXB0aW5nU2NvcGUpIHtcbiAgICAgICAgICAgIHRoaXMuI3NjcmlwdGluZ1Njb3BlLm1vZGVsQ2hhbmdlZCh2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICBjdHJsLmFkZENvbnRyb2woZm9ybUVsZW1lbnQubmFtZSwgZm9ybUNvbnRyb2wpO1xuICAgICAgbmFtZSA9IHRoaXMuI25hbWVQcmVmaXggKyBmb3JtRWxlbWVudC5uYW1lO1xuICAgIH1cbiAgICBwYXJlbnRHcm91cC5hZGRDb250cm9sKG5hbWUsIGN0cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHZhbGlkYXRvcnMgZm9yIHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQgdG8gYmUgYXR0YWNoZWQgdG9cbiAgICogYSByZWFjdGl2ZSBmb3JtQ29udHJvbC5cbiAgICpcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50IC0gZm9ybSBlbGVtZW50IG9iamVjdFxuICAgKi9cbiAgI2dldFZhbGlkYXRvcnMoZm9ybUVsZW1lbnQ6IGFueSk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IGZvID0gdGhpcy5mb3JtT3B0aW9ucygpO1xuICAgIGNvbnN0IGVsbVZhbGlkYXRvcnMgPSBGb3JtVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50LCBmbz8uZm9ybU1vZGVsLnNpdHVhdGlvbik7XG5cbiAgICAvLyBhZGQgY3VzdG9tIHZhbGlkYXRvciBmb3Igc2NyaXB0IGVuYWJsZWQgZm9ybXNcbiAgICBpZiAodGhpcy4jc2NyaXB0aW5nU2NvcGUpIHtcbiAgICAgIGVsbVZhbGlkYXRvcnMucHVzaChGb3JtVmFsaWRhdGlvbi5jdXN0b21TY3JpcHRpbmdWYWxpZGF0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxtVmFsaWRhdG9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZm9ybVxuICAgKi9cbiAgI2Zvcm1Ub0RhdGEoKSB7XG4gICAgY29uc3QgZm8gPSB0aGlzLmZvcm1PcHRpb25zKCk7XG4gICAgcmV0dXJuIGZvICYmIHRoaXMuZm9ybSA/IHRoaXMuI2Zvcm1IZWxwZXJTZXJ2aWNlLmV4dHJhY3RGb3JtRGF0YSh0aGlzLmZvcm0sIGZvLmZvcm1Nb2RlbC5zaXR1YXRpb24sIGZvLmRhdGEsIHRoaXMuaXNJbm5lclRhYmxlRm9ybSgpKSA6IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGRhdGEgaW50byBhIGZvcm0gbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIGZvcm0gbW9kZWxcbiAgICogQHBhcmFtIGRhdGEgLSBkYXRhIG9iamVjdCBvciBhcnJheSBvZiBTZWFyY2hGaWx0ZXIgb2JqZWN0cyBpbiBjYXNlIG9mIGEgc2VhcmNoIGZvcm1cbiAgICovXG4gICNkYXRhVG9Gb3JtKG1vZGVsOiBhbnksIGRhdGE6IGFueSkge1xuICAgIGlmIChtb2RlbCAmJiBkYXRhKSB7XG4gICAgICB0aGlzLiNzZXRFbGVtZW50VmFsdWVzKG1vZGVsLmVsZW1lbnRzLCBkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLy8gcmVjdXJzaXZlIG1ldGhvZCBmb3IgYWRkaW5nIHZhbHVlcyB0byBtb2RlbCBlbGVtZW50c1xuICAjc2V0RWxlbWVudFZhbHVlcyhlbGVtZW50czogYW55W10sIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgZWxlbWVudHM/LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLiNoYXNWYWx1ZShkYXRhLCBlbGVtZW50KSkge1xuICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoZGF0YSwgZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgZWxlbWVudC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdUQUJMRScgJiYgZWxlbWVudC5lbGVtZW50cyAmJiBlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy4jc2V0RWxlbWVudFZhbHVlcyhlbGVtZW50LmVsZW1lbnRzLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gICNoYXNWYWx1ZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZWxlbWVudDogYW55KSB7XG4gICAgLy8gZGlmZmVyIGJldHdlZW4gYXJyYXkgb2YgU2VhcmNoRmlsdGVycyBhbmQgYSBmb3JtIGRhdGEgb2JqZWN0XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiAhIWRhdGEuZmluZCgoZmlsdGVyKSA9PiBmaWx0ZXIucHJvcGVydHkgPT09IGVsZW1lbnQuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YSkuaW5jbHVkZXMoZWxlbWVudC5uYW1lKTtcbiAgICB9XG4gIH1cblxuICAjZ2V0VmFsdWUoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGVsZW1lbnQ6IGFueSkge1xuICAgIHJldHVybiBkYXRhW2VsZW1lbnQubmFtZV07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gICAgdGhpcy4jZm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UudW5yZWdpc3RlckFjdGl2ZUZvcm0odGhpcyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy4jY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8gdW5zdWJzY3JpYmUgZnJvbSBhbGwgdmFsdWUgY2hhbmdlIGxpc3RlbmVycyBmb3IgdGhlIGN1cnJlbnQgZm9ybVxuICAvLyB0byBhdm9pZCBtZW1vcnkgbGVha3MuIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBiZSBjYWxsZWQgZXZlcnkgdGltZVxuICAvLyBhIG5ldyBmb3JtIGlzIHJlbmRlcmVkIHRvIGdldCByaWQgb2YgdGhlIG9sZCBmb3JtIGVsZW1lbnQgc3Vic2NyaXB0aW9uc1xuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLiNzdWJzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygndW5zdWJzY3JpYmVkIGZyb20gJyArIHRoaXMuI3N1YnNjcmlwdGlvbnMubGVuZ3RoICsgJyB2YWx1ZSBjaGFuZ2UgbGlzdGVuZXJzLicpO1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxufVxuIiwiQGxldCBmbyA9IGZvcm1PcHRpb25zKCk7XG5AaWYgKGZvICYmIGZvcm0pIHtcbiAgPGRpdiBjbGFzcz1cInl1di1vYmplY3QtZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWVsZW1lbnQtd3JhcCBjb3JlXCI+XG4gICAgICA8eXV2LW9iamVjdC1mb3JtLWdyb3VwIFtncm91cF09XCJnZXRHcm91cCgnY29yZScpXCIgW3NpdHVhdGlvbl09XCJmby5mb3JtTW9kZWwuc2l0dWF0aW9uXCI+PC95dXYtb2JqZWN0LWZvcm0tZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC13cmFwIGRhdGFcIj5cbiAgICAgIDx5dXYtb2JqZWN0LWZvcm0tZ3JvdXAgW2dyb3VwXT1cImdldEdyb3VwKCdkYXRhJylcIiBbc2l0dWF0aW9uXT1cImZvLmZvcm1Nb2RlbC5zaXR1YXRpb25cIj48L3l1di1vYmplY3QtZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -62,7 +62,10 @@ export class ObjectFormService {
62
62
  return;
63
63
  }
64
64
  if (formControl instanceof ObjectFormControlWrapper) {
65
- const fc = formControl.controls[formControl._eoFormControlWrapper.controlName];
65
+ const fc = formControl._eoFormControlWrapper ? formControl.controls[formControl._eoFormControlWrapper.controlName] : null;
66
+ if (!fc) {
67
+ return;
68
+ }
66
69
  if (fc._eoFormElement.isNotSetValue === true) {
67
70
  // form elements may explicitly set to have NULL value (e.g. from Search form if values are requested that have no values)
68
71
  this.#setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, !isTableRowEditForm);
@@ -124,4 +127,4 @@ export class ObjectFormService {
124
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormService, decorators: [{
125
128
  type: Injectable
126
129
  }] });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXREOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixlQUFlLEdBQWtDLEVBQUUsQ0FBQztJQUVwRCxvQkFBb0IsQ0FBQyxjQUE2QztRQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBb0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG9CQUFvQixDQUFDLE9BQVksRUFBRSxTQUFrQjtRQUNuRCxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQztnQkFDSCxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxlQUFlLENBQUMsSUFBcUIsRUFBRSxTQUFpQixFQUFFLFdBQWlCLEVBQUUsa0JBQTRCO1FBQ3ZHLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsaUJBQWlCLENBQUMsSUFBUyxFQUFFLFdBQTRCLEVBQUUsU0FBaUIsRUFBRSxXQUFpQixFQUFFLGtCQUE0QjtRQUMzSCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxXQUFXLFlBQVksd0JBQXdCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLEVBQUUsR0FBUSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxxQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVyRixJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM3QywwSEFBMEg7Z0JBQzFILElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNqRyxDQUFDO2lCQUFNLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFFckIsUUFBUSxTQUFTLEVBQUUsQ0FBQztvQkFDbEIsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDdEIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO3dCQUNqRyxDQUFDO3dCQUNELE1BQU07b0JBQ1IsQ0FBQztvQkFDRCxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUN0QixJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBQ2pHLENBQUM7d0JBQ0QsTUFBTTtvQkFDUixDQUFDO29CQUNELEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLDZFQUE2RTt3QkFDN0UsMEZBQTBGO3dCQUMxRiw0RkFBNEY7d0JBQzVGLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDOzRCQUN2RixzQ0FBc0M7NEJBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO3dCQUNqRyxDQUFDO3dCQUNELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoRCwwRkFBMEY7Z0JBQzFGLDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbEcsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3ZELE1BQU0sZ0JBQWdCLEdBQW9CLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsR0FBVyxFQUFFLEtBQWMsRUFBRSxJQUE2QixFQUFFLFdBQWdCLEVBQUUsa0JBQTJCO1FBQ3JILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFbEIsSUFBSSxrQkFBa0IsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0MsSUFBSSxXQUFXLENBQUMsYUFBYSxLQUFLLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxDQUFDO1lBQ0QsK0RBQStEO1lBQy9ELHFGQUFxRjtZQUNyRixJQUFJO1FBQ04sQ0FBQztJQUNILENBQUM7K0dBcEhVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2l0dWF0aW9uLCBZdXZVc2VyIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IElPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbiwgT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24gfSBmcm9tICcuL29iamVjdC1mb3JtLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyLCBPYmplY3RGb3JtTW9kZWwgfSBmcm9tICcuL29iamVjdC1mb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtR3JvdXAgfSBmcm9tICcuL29iamVjdC1mb3JtLm1vZGVsJztcbmltcG9ydCB7IE9iamVjdEZvcm1VdGlscyB9IGZyb20gJy4vb2JqZWN0LWZvcm0udXRpbHMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1TZXJ2aWNlIHtcbiAgI2Zvcm1FeHRlbnNpb25zOiBJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb25bXSA9IFtdO1xuXG4gIHNldEVsZW1lbnRFeHRlbnNpb25zKGZvcm1FeHRlbnNpb25zOiBJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb25bXSkge1xuICAgIHRoaXMuI2Zvcm1FeHRlbnNpb25zID0gZm9ybUV4dGVuc2lvbnM7XG4gIH1cblxuICBnZXRFbGVtZW50RXh0ZW5zaW9ucyhwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFR5cGU8T2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24+W10ge1xuICAgIHJldHVybiB0aGlzLiNmb3JtRXh0ZW5zaW9ucy5maWx0ZXIoKGV4dCkgPT4gZXh0LnByb3BlcnR5ID09PSBwcm9wZXJ0eU5hbWUpLm1hcCgoZXh0KSA9PiBleHQuY21wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZvcm0gZWxlbWVudCBvYmplY3QgdG8gYW4gT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHdoaWNoIHRoZW4gY2FuIGJlIHVzZWQgdG9cbiAgICogcmVuZGVyIGEgZnJvbSBjb250cm9sLiBSZXN1bHQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEZvcm1FbGVtZW50Q29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIHRoZSBlbGVtZW50IG9iamVjdCBvciBhIGpzb24gc3RyaW5nXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gLSBvcHRpb25hbCBwcm9wZXJ0eSB0byBzZXQgdXAgYSBmb3JtIHNpdHVhdGlvbiBmb3IgdGhlIGNvbnRyb2wgKGRlZmF1bHQgaXMgRURJVClcbiAgICogQHJldHVybiB0aGUgY29udmVydGVkIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciBvciBudWxsIGluIGNhc2Ugb2YgYW4gZXJyb3JcbiAgICovXG4gIGVsZW1lbnRUb0Zvcm1Db250cm9sKGVsZW1lbnQ6IGFueSwgc2l0dWF0aW9uPzogc3RyaW5nKTogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHwgbnVsbCB7XG4gICAgbGV0IGZvcm1FbGVtZW50O1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvcm1FbGVtZW50ID0gSlNPTi5wYXJzZShlbGVtZW50KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIHBhcnNlIGZvcm0gZWxlbWVudCBmcm9tIGpzb24gJywgZm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBmb3JtRWxlbWVudCA/IE9iamVjdEZvcm1VdGlscy5lbGVtZW50VG9Gb3JtQ29udHJvbChlbGVtZW50LCBzaXR1YXRpb24pIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGRhdGEgZnJvbSBhbiBvYmplY3QgZm9ybSBiYXNlZCBvbiBzaXR1YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtIC0gZm9ybSB0byBleHRyYWN0IGRhdGEgZnJvbVxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIC0gZm9ybSBzaXR1YXRpb25cbiAgICogQHBhcmFtIFtpbml0aWFsRGF0YV0gLSBvcHRpb25hbCBmb3JtIGRhdGEgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWVzIGFnYWluc3RcbiAgICogVGhpcyBpcyByZXF1aXJlZCBmb3IgZWRpdGlnIGluZGV4ZGF0YSAoRURJVCBzaXR1YXRpb24pLCBiZWNhdXNlIHdlIGhhdmUgdG8gY29tcGFyZSBuZXcgdmFsdWVzXG4gICAqIGFnYWluc3QgdGhlIGluaXRpYWwgdmFsdWVzLiBJZiBhIHByb3BlcnR5IHRoYXQgaXMgY29udGFpbmVkIGluIHRoZSBmb3JtcyBpbml0aWFsIGRhdGEgaXMgcmVtb3ZlZFxuICAgKiAoZS5nLiBzZXQgdG8gbnVsbCkgdGhlbiB3ZSBoYXZlIHRvIHNldCB0aGlzIG51bGwgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBzZXJ2ZXIgd291bGRcbiAgICogaWdub3JlIHRoZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaXNUYWJsZVJvd0VkaXRGb3JtIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwcm92aWRlZCBmb3JtIGlzIGFuIGlubGluZSBmb3JtIHVzZWQgYnlcbiAgICogYSBmb3JtcyB0YWJsZSBlbGVtZW50IGZvciBlZGl0aW5nIHJvd3MuIFRob3NlIG5lZWQgYSBzcGVjaWFsIGhhbmRsaW5nLlxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGFzIG9iamVjdFxuICAgKi9cbiAgZXh0cmFjdEZvcm1EYXRhKGZvcm06IE9iamVjdEZvcm1Hcm91cCwgc2l0dWF0aW9uOiBzdHJpbmcsIGluaXRpYWxEYXRhPzogYW55LCBpc1RhYmxlUm93RWRpdEZvcm0/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHt9O1xuICAgIHRoaXMuI2dldEVsZW1lbnRWYWx1ZXMoZXh0cmFjdGVkRGF0YSwgZm9ybSwgc2l0dWF0aW9uIHx8ICdFRElUJywgaW5pdGlhbERhdGEsIGlzVGFibGVSb3dFZGl0Rm9ybSk7XG4gICAgcmV0dXJuIGV4dHJhY3RlZERhdGE7XG4gIH1cblxuICAvLyBSZWN1cnNpdmUgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIGZyb20gZWFjaCBmb3JtIGNvbnRyb2wuXG4gICNnZXRFbGVtZW50VmFsdWVzKGRhdGE6IGFueSwgZm9ybUNvbnRyb2w6IE9iamVjdEZvcm1Nb2RlbCwgc2l0dWF0aW9uOiBzdHJpbmcsIGluaXRpYWxEYXRhPzogYW55LCBpc1RhYmxlUm93RWRpdEZvcm0/OiBib29sZWFuKSB7XG4gICAgaWYgKCFmb3JtQ29udHJvbCB8fCAhZm9ybUNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpIHtcbiAgICAgIGNvbnN0IGZjOiBhbnkgPSBmb3JtQ29udHJvbC5jb250cm9sc1tmb3JtQ29udHJvbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIhLmNvbnRyb2xOYW1lXTtcblxuICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgLy8gZm9ybSBlbGVtZW50cyBtYXkgZXhwbGljaXRseSBzZXQgdG8gaGF2ZSBOVUxMIHZhbHVlIChlLmcuIGZyb20gU2VhcmNoIGZvcm0gaWYgdmFsdWVzIGFyZSByZXF1ZXN0ZWQgdGhhdCBoYXZlIG5vIHZhbHVlcylcbiAgICAgICAgdGhpcy4jc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIG51bGwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCAhaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH0gZWxzZSBpZiAoZmMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB2YWwgPSBmYy52YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHNpdHVhdGlvbikge1xuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLlNFQVJDSDoge1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLkNSRUFURToge1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLkVESVQ6IHtcbiAgICAgICAgICAgIC8vIGluIGVkaXQgc2l0dWF0aW9uIHdlIGhhdmUgdG8gY29tcGFyZSBuZXcgdmFsdWVzIGFnYWluc3QgdGhlIGluaXRpYWwgdmFsdWVzXG4gICAgICAgICAgICAvLyBJZiBhIHByb3BlcnR5IHRoYXQgaXMgY29udGFpbmVkIGluIHRoZSBmb3JtcyBpbml0aWFsIGRhdGEgaXMgcmVtb3ZlZCAoZS5nLiBzZXQgdG8gbnVsbClcbiAgICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdpbGwgaWdub3JlIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsIHx8IChpbml0aWFsRGF0YSAmJiBpbml0aWFsRGF0YVtmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAvLyBkYXRhW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdID0gdmFsO1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAvLyB0cmktc3RhdGUgYm9vbGVhbiBmaWVsZHMgY291bGQgaGF2ZSBhIHZhbHVlIG9mICd1bmRlZmluZWQnIHRoYXQgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWRcbiAgICAgICAgLy8gaW50byAnbnVsbCcgdG8gYmUgY29ycmVjdGx5IGJlIHByb2Nlc3NlZCBieSB0aGUgYmFja2VuZFxuICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgbnVsbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsICEhaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMoZm9ybUNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2xLZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xLZXllZCA9IDxPYmplY3RGb3JtR3JvdXA+Zm9ybUNvbnRyb2wuY29udHJvbHNbY29udHJvbEtleV07XG4gICAgICAgIHRoaXMuI2dldEVsZW1lbnRWYWx1ZXMoZGF0YSwgZm9ybUNvbnRyb2xLZXllZCwgc2l0dWF0aW9uLCBpbml0aWFsRGF0YSwgaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNzZXREYXRhVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZm9ybUVsZW1lbnQ6IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtOiBib29sZWFuKSB7XG4gICAgZGF0YVtrZXldID0gdmFsdWU7XG5cbiAgICBpZiAoaXNUYWJsZVJvd0VkaXRGb3JtICYmIGZvcm1FbGVtZW50LmRhdGFNZXRhKSB7XG4gICAgICBpZiAoZm9ybUVsZW1lbnQuX2ludGVybmFsVHlwZSA9PT0gJ3N0cmluZzpvcmdhbml6YXRpb24nKSB7XG4gICAgICAgIGRhdGFba2V5ICsgJ190aXRsZSddID0gZm9ybUVsZW1lbnQuZGF0YU1ldGEubWFwKChkOiBZdXZVc2VyKSA9PiBkLnRpdGxlKTtcbiAgICAgIH1cbiAgICAgIC8vIGVsc2UgaWYgKGZvcm1FbGVtZW50Ll9pbnRlcm5hbFR5cGUgPT09ICdzdHJpbmc6cmVmZXJlbmNlJykge1xuICAgICAgLy8gICBkYXRhW2tleSArICdfdGl0bGUnXSA9IGZvcm1FbGVtZW50LmRhdGFNZXRhLm1hcCgoZTogUmVmZXJlbmNlRW50cnkpID0+IGUudGl0bGUpO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXREOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixlQUFlLEdBQWtDLEVBQUUsQ0FBQztJQUVwRCxvQkFBb0IsQ0FBQyxjQUE2QztRQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBb0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG9CQUFvQixDQUFDLE9BQVksRUFBRSxTQUFrQjtRQUNuRCxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQztnQkFDSCxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUs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LGFBQWEsS0FBSyxxQkFBcUIsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUNELCtEQUErRDtZQUMvRCxxRkFBcUY7WUFDckYsSUFBSTtRQUNOLENBQUM7SUFDSCxDQUFDOytHQXZIVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpdHVhdGlvbiwgWXV2VXNlciB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24sIE9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi9vYmplY3QtZm9ybS1leHRlbnNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciwgT2JqZWN0Rm9ybU1vZGVsIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUdyb3VwIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBPYmplY3RGb3JtVXRpbHMgfSBmcm9tICcuL29iamVjdC1mb3JtLnV0aWxzJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtU2VydmljZSB7XG4gICNmb3JtRXh0ZW5zaW9uczogSU9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uW10gPSBbXTtcblxuICBzZXRFbGVtZW50RXh0ZW5zaW9ucyhmb3JtRXh0ZW5zaW9uczogSU9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uW10pIHtcbiAgICB0aGlzLiNmb3JtRXh0ZW5zaW9ucyA9IGZvcm1FeHRlbnNpb25zO1xuICB9XG5cbiAgZ2V0RWxlbWVudEV4dGVuc2lvbnMocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBUeXBlPE9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uPltdIHtcbiAgICByZXR1cm4gdGhpcy4jZm9ybUV4dGVuc2lvbnMuZmlsdGVyKChleHQpID0+IGV4dC5wcm9wZXJ0eSA9PT0gcHJvcGVydHlOYW1lKS5tYXAoKGV4dCkgPT4gZXh0LmNtcCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBmb3JtIGVsZW1lbnQgb2JqZWN0IHRvIGFuIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB3aGljaCB0aGVuIGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlbmRlciBhIGZyb20gY29udHJvbC4gUmVzdWx0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBGb3JtRWxlbWVudENvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSB0aGUgZWxlbWVudCBvYmplY3Qgb3IgYSBqc29uIHN0cmluZ1xuICAgKiBAcGFyYW0gc2l0dWF0aW9uIC0gb3B0aW9uYWwgcHJvcGVydHkgdG8gc2V0IHVwIGEgZm9ybSBzaXR1YXRpb24gZm9yIHRoZSBjb250cm9sIChkZWZhdWx0IGlzIEVESVQpXG4gICAqIEByZXR1cm4gdGhlIGNvbnZlcnRlZCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgb3IgbnVsbCBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAqL1xuICBlbGVtZW50VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnksIHNpdHVhdGlvbj86IHN0cmluZyk6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB8IG51bGwge1xuICAgIGxldCBmb3JtRWxlbWVudDtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3JtRWxlbWVudCA9IEpTT04ucGFyc2UoZWxlbWVudCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBmb3JtIGVsZW1lbnQgZnJvbSBqc29uICcsIGZvcm1FbGVtZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUVsZW1lbnQgPSBlbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gZm9ybUVsZW1lbnQgPyBPYmplY3RGb3JtVXRpbHMuZWxlbWVudFRvRm9ybUNvbnRyb2woZWxlbWVudCwgc2l0dWF0aW9uKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBkYXRhIGZyb20gYW4gb2JqZWN0IGZvcm0gYmFzZWQgb24gc2l0dWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybSAtIGZvcm0gdG8gZXh0cmFjdCBkYXRhIGZyb21cbiAgICogQHBhcmFtIHNpdHVhdGlvbiAtIGZvcm0gc2l0dWF0aW9uXG4gICAqIEBwYXJhbSBbaW5pdGlhbERhdGFdIC0gb3B0aW9uYWwgZm9ybSBkYXRhIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlcyBhZ2FpbnN0XG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGVkaXRpZyBpbmRleGRhdGEgKEVESVQgc2l0dWF0aW9uKSwgYmVjYXVzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgbmV3IHZhbHVlc1xuICAgKiBhZ2FpbnN0IHRoZSBpbml0aWFsIHZhbHVlcy4gSWYgYSBwcm9wZXJ0eSB0aGF0IGlzIGNvbnRhaW5lZCBpbiB0aGUgZm9ybXMgaW5pdGlhbCBkYXRhIGlzIHJlbW92ZWRcbiAgICogKGUuZy4gc2V0IHRvIG51bGwpIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdvdWxkXG4gICAqIGlnbm9yZSB0aGUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGlzVGFibGVSb3dFZGl0Rm9ybSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgcHJvdmlkZWQgZm9ybSBpcyBhbiBpbmxpbmUgZm9ybSB1c2VkIGJ5XG4gICAqIGEgZm9ybXMgdGFibGUgZWxlbWVudCBmb3IgZWRpdGluZyByb3dzLiBUaG9zZSBuZWVkIGEgc3BlY2lhbCBoYW5kbGluZy5cbiAgICogQHJldHVybiBleHRyYWN0ZWQgZGF0YSBhcyBvYmplY3RcbiAgICovXG4gIGV4dHJhY3RGb3JtRGF0YShmb3JtOiBPYmplY3RGb3JtR3JvdXAsIHNpdHVhdGlvbjogc3RyaW5nLCBpbml0aWFsRGF0YT86IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSB7fTtcbiAgICB0aGlzLiNnZXRFbGVtZW50VmFsdWVzKGV4dHJhY3RlZERhdGEsIGZvcm0sIHNpdHVhdGlvbiB8fCAnRURJVCcsIGluaXRpYWxEYXRhLCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgIHJldHVybiBleHRyYWN0ZWREYXRhO1xuICB9XG5cbiAgLy8gUmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBmcm9tIGVhY2ggZm9ybSBjb250cm9sLlxuICAjZ2V0RWxlbWVudFZhbHVlcyhkYXRhOiBhbnksIGZvcm1Db250cm9sOiBPYmplY3RGb3JtTW9kZWwsIHNpdHVhdGlvbjogc3RyaW5nLCBpbml0aWFsRGF0YT86IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtPzogYm9vbGVhbikge1xuICAgIGlmICghZm9ybUNvbnRyb2wgfHwgIWZvcm1Db250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG4gICAgICBjb25zdCBmYzogYW55ID0gZm9ybUNvbnRyb2wuX2VvRm9ybUNvbnRyb2xXcmFwcGVyID8gZm9ybUNvbnRyb2wuY29udHJvbHNbZm9ybUNvbnRyb2wuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXSA6IG51bGw7XG4gICAgICBpZiAoIWZjKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgLy8gZm9ybSBlbGVtZW50cyBtYXkgZXhwbGljaXRseSBzZXQgdG8gaGF2ZSBOVUxMIHZhbHVlIChlLmcuIGZyb20gU2VhcmNoIGZvcm0gaWYgdmFsdWVzIGFyZSByZXF1ZXN0ZWQgdGhhdCBoYXZlIG5vIHZhbHVlcylcbiAgICAgICAgdGhpcy4jc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIG51bGwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCAhaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH0gZWxzZSBpZiAoZmMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB2YWwgPSBmYy52YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHNpdHVhdGlvbikge1xuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLlNFQVJDSDoge1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLkNSRUFURToge1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgU2l0dWF0aW9uLkVESVQ6IHtcbiAgICAgICAgICAgIC8vIGluIGVkaXQgc2l0dWF0aW9uIHdlIGhhdmUgdG8gY29tcGFyZSBuZXcgdmFsdWVzIGFnYWluc3QgdGhlIGluaXRpYWwgdmFsdWVzXG4gICAgICAgICAgICAvLyBJZiBhIHByb3BlcnR5IHRoYXQgaXMgY29udGFpbmVkIGluIHRoZSBmb3JtcyBpbml0aWFsIGRhdGEgaXMgcmVtb3ZlZCAoZS5nLiBzZXQgdG8gbnVsbClcbiAgICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdpbGwgaWdub3JlIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsIHx8IChpbml0aWFsRGF0YSAmJiBpbml0aWFsRGF0YVtmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAvLyBkYXRhW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdID0gdmFsO1xuICAgICAgICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgISFpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAvLyB0cmktc3RhdGUgYm9vbGVhbiBmaWVsZHMgY291bGQgaGF2ZSBhIHZhbHVlIG9mICd1bmRlZmluZWQnIHRoYXQgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWRcbiAgICAgICAgLy8gaW50byAnbnVsbCcgdG8gYmUgY29ycmVjdGx5IGJlIHByb2Nlc3NlZCBieSB0aGUgYmFja2VuZFxuICAgICAgICB0aGlzLiNzZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgbnVsbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsICEhaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMoZm9ybUNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2xLZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xLZXllZCA9IDxPYmplY3RGb3JtR3JvdXA+Zm9ybUNvbnRyb2wuY29udHJvbHNbY29udHJvbEtleV07XG4gICAgICAgIHRoaXMuI2dldEVsZW1lbnRWYWx1ZXMoZGF0YSwgZm9ybUNvbnRyb2xLZXllZCwgc2l0dWF0aW9uLCBpbml0aWFsRGF0YSwgaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNzZXREYXRhVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZm9ybUVsZW1lbnQ6IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtOiBib29sZWFuKSB7XG4gICAgZGF0YVtrZXldID0gdmFsdWU7XG5cbiAgICBpZiAoaXNUYWJsZVJvd0VkaXRGb3JtICYmIGZvcm1FbGVtZW50LmRhdGFNZXRhKSB7XG4gICAgICBpZiAoZm9ybUVsZW1lbnQuX2ludGVybmFsVHlwZSA9PT0gJ3N0cmluZzpvcmdhbml6YXRpb24nKSB7XG4gICAgICAgIGRhdGFba2V5ICsgJ190aXRsZSddID0gZm9ybUVsZW1lbnQuZGF0YU1ldGEubWFwKChkOiBZdXZVc2VyKSA9PiBkLnRpdGxlKTtcbiAgICAgIH1cbiAgICAgIC8vIGVsc2UgaWYgKGZvcm1FbGVtZW50Ll9pbnRlcm5hbFR5cGUgPT09ICdzdHJpbmc6cmVmZXJlbmNlJykge1xuICAgICAgLy8gICBkYXRhW2tleSArICdfdGl0bGUnXSA9IGZvcm1FbGVtZW50LmRhdGFNZXRhLm1hcCgoZTogUmVmZXJlbmNlRW50cnkpID0+IGUudGl0bGUpO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxufVxuIl19