@hestia-earth/ui-components 0.26.0 → 0.26.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 (84) hide show
  1. package/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.d.ts +21 -28
  2. package/common/click-outside.directive.d.ts +8 -9
  3. package/common/issue-confirm/issue-confirm.component.d.ts +14 -13
  4. package/common/maps-drawing-confirm/maps-drawing-confirm.component.d.ts +8 -8
  5. package/common/node-utils.d.ts +4 -3
  6. package/common/popover/popover.component.d.ts +1 -1
  7. package/common/popover-confirm/popover-confirm.component.d.ts +15 -13
  8. package/common/resized.directive.d.ts +3 -3
  9. package/common/responsive.service.d.ts +1 -1
  10. package/common/search-extend/search-extend.component.d.ts +1 -1
  11. package/cycles/cycles-nodes/cycles-nodes.component.d.ts +26 -25
  12. package/engine/engine.service.d.ts +0 -1
  13. package/esm2022/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.mjs +47 -63
  14. package/esm2022/common/blank-node-state/blank-node-state.component.mjs +3 -3
  15. package/esm2022/common/blank-node-state-notice/blank-node-state-notice.component.mjs +3 -4
  16. package/esm2022/common/blank-node-value-delta/blank-node-value-delta.component.mjs +5 -5
  17. package/esm2022/common/click-outside.directive.mjs +13 -17
  18. package/esm2022/common/issue-confirm/issue-confirm.component.mjs +26 -28
  19. package/esm2022/common/link-key-value/link-key-value.component.mjs +3 -3
  20. package/esm2022/common/maps-drawing-confirm/maps-drawing-confirm.component.mjs +9 -11
  21. package/esm2022/common/mobile-shell/mobile-shell.component.mjs +3 -3
  22. package/esm2022/common/navigation-menu/navigation-menu.component.mjs +3 -3
  23. package/esm2022/common/node-utils.mjs +1 -1
  24. package/esm2022/common/popover/popover.component.mjs +6 -6
  25. package/esm2022/common/popover-confirm/popover-confirm.component.mjs +13 -25
  26. package/esm2022/common/resized.directive.mjs +8 -10
  27. package/esm2022/common/schema-version-link/schema-version-link.component.mjs +5 -6
  28. package/esm2022/common/search-extend/search-extend.component.mjs +8 -11
  29. package/esm2022/common/shell/shell.component.mjs +3 -3
  30. package/esm2022/common/toast/toast.component.mjs +3 -4
  31. package/esm2022/common/unit-converter/unit-converter.component.mjs +6 -7
  32. package/esm2022/common/utils.mjs +2 -2
  33. package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +12 -13
  34. package/esm2022/cycles/cycles-emissions-chart/cycles-emissions-chart.component.mjs +4 -5
  35. package/esm2022/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.mjs +3 -4
  36. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +6 -3
  37. package/esm2022/cycles/cycles-nodes-timeline/cycles-nodes-timeline.component.mjs +5 -5
  38. package/esm2022/engine/engine-models-stage/engine-models-stage.component.mjs +3 -4
  39. package/esm2022/engine/engine-models-version-link/engine-models-version-link.component.mjs +3 -3
  40. package/esm2022/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.mjs +3 -3
  41. package/esm2022/engine/engine-requirements-form/engine-requirements-form.component.mjs +7 -8
  42. package/esm2022/engine/engine.service.mjs +1 -6
  43. package/esm2022/files/files-error.model.mjs +2 -1
  44. package/esm2022/files/files-form/files-form.component.mjs +5 -11
  45. package/esm2022/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +6 -7
  46. package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +5 -6
  47. package/esm2022/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.mjs +4 -5
  48. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +22 -23
  49. package/esm2022/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +32 -57
  50. package/esm2022/node/node-csv-select-headers/node-csv-select-headers.component.mjs +130 -88
  51. package/esm2022/node/node-diffs/node-diffs.component.mjs +43 -38
  52. package/esm2022/node/node-icon/node-icon.component.mjs +4 -5
  53. package/esm2022/node/node-link/node-link.component.mjs +3 -3
  54. package/esm2022/node/node-logs-file/node-logs-file.component.mjs +8 -8
  55. package/esm2022/node/node-logs-models/node-logs-models.component.mjs +3 -3
  56. package/esm2022/node/node-logs-models/node-logs-models.model.mjs +1 -1
  57. package/esm2022/node/node-missing-lookup-factors/node-missing-lookup-factors.component.mjs +4 -5
  58. package/esm2022/node/node-recommendations/node-recommendations.component.mjs +35 -51
  59. package/esm2022/node/node-value-details/node-value-details.component.mjs +5 -7
  60. package/esm2022/node/node.module.mjs +5 -4
  61. package/esm2022/schema/schema-info/schema-info.component.mjs +6 -7
  62. package/esm2022/schema/schema.service.mjs +3 -9
  63. package/esm2022/sites/sites-maps/sites-maps.component.mjs +5 -5
  64. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +21 -20
  65. package/esm2022/sites/sites.model.mjs +2 -3
  66. package/esm2022/terms/terms-property-content/terms-property-content.component.mjs +3 -3
  67. package/esm2022/terms/terms-sub-class-of-content/terms-sub-class-of-content.component.mjs +5 -6
  68. package/esm2022/terms/terms-units-description/terms-units-description.component.mjs +3 -3
  69. package/fesm2022/hestia-earth-ui-components.mjs +441 -494
  70. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  71. package/files/files-form/files-form.component.d.ts +7 -3
  72. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +1 -1
  73. package/node/node-csv-export-confirm/node-csv-export-confirm.component.d.ts +18 -24
  74. package/node/node-csv-select-headers/node-csv-select-headers.component.d.ts +36 -33
  75. package/node/node-diffs/node-diffs.component.d.ts +16 -17
  76. package/node/node-link/node-link.component.d.ts +1 -1
  77. package/node/node-logs-models/node-logs-models.model.d.ts +7 -6
  78. package/node/node-recommendations/node-recommendations.component.d.ts +24 -18
  79. package/node/node.module.d.ts +4 -3
  80. package/package.json +1 -1
  81. package/schema/schema.service.d.ts +1 -1
  82. package/sites/sites-maps/sites-maps.component.d.ts +1 -1
  83. package/sites/sites-nodes/sites-nodes.component.d.ts +1 -0
  84. package/styles.scss +2 -2
@@ -15,9 +15,8 @@ import * as i0 from "@angular/core";
15
15
  import * as i1 from "@angular/platform-browser";
16
16
  import * as i2 from "../../search/search.service";
17
17
  import * as i3 from "../../node/node.service";
18
- import * as i4 from "@angular/common";
19
- import * as i5 from "@angular/forms";
20
- import * as i6 from "@fortawesome/angular-fontawesome";
18
+ import * as i4 from "@angular/forms";
19
+ import * as i5 from "@fortawesome/angular-fontawesome";
21
20
  const parseLog = (data) => ({
22
21
  modelId: data.model,
23
22
  impactTermId: data['key/term'] || data.term || data.indicator,
@@ -212,13 +211,13 @@ export class ImpactAssessmentsIndicatorBreakdownChartComponent {
212
211
  this.selectedMethod.set(term);
213
212
  }
214
213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i0.NgZone }, { token: i1.DomSanitizer }, { token: i2.HeSearchService }, { token: i3.HeNodeService }], target: i0.ɵɵFactoryTarget.Component }); }
215
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<div class=\"p-3\" *ngIf=\"!loading(); else loader\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\" *ngIf=\"terms()?.length\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n <option *ngFor=\"let term of terms()\" [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n </select>\n </div>\n </div>\n <div class=\"control is-expanded\" *ngIf=\"methods()?.length\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methods()\" [value]=\"term['@id']\">{{ term.name }}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon icon=\"download\"></fa-icon>\n </a>\n </div>\n </div>\n\n <p class=\"is-size-7\" *ngIf=\"!selectedMethod()\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n</div>\n\n<div class=\"is-mt-1\">\n <p *ngIf=\"!loading() && noData()\" class=\"has-text-centered\">\n <span>No breakdown available for</span>\n <span class=\"is-pl-1\" *ngIf=\"selectedTerm()\">{{ selectedTerm().name }}</span>\n <span class=\"is-pl-1\" *ngIf=\"selectedMethod()\">({{ selectedMethod().name }})</span>\n <span>.</span>\n </p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i6.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "@if (!loading()) {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon icon=\"download\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n} @else {\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], dependencies: [{ kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
216
215
  }
217
216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
218
217
  type: Component,
219
- args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" *ngIf=\"!loading(); else loader\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\" *ngIf=\"terms()?.length\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n <option *ngFor=\"let term of terms()\" [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n </select>\n </div>\n </div>\n <div class=\"control is-expanded\" *ngIf=\"methods()?.length\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methods()\" [value]=\"term['@id']\">{{ term.name }}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon icon=\"download\"></fa-icon>\n </a>\n </div>\n </div>\n\n <p class=\"is-size-7\" *ngIf=\"!selectedMethod()\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n</div>\n\n<div class=\"is-mt-1\">\n <p *ngIf=\"!loading() && noData()\" class=\"has-text-centered\">\n <span>No breakdown available for</span>\n <span class=\"is-pl-1\" *ngIf=\"selectedTerm()\">{{ selectedTerm().name }}</span>\n <span class=\"is-pl-1\" *ngIf=\"selectedMethod()\">({{ selectedMethod().name }})</span>\n <span>.</span>\n </p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"] }]
218
+ args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading()) {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon icon=\"download\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n} @else {\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"] }]
220
219
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.DomSanitizer }, { type: i2.HeSearchService }, { type: i3.HeNodeService }], propDecorators: { chartRef: [{
221
220
  type: ViewChild,
222
221
  args: ['chart']
223
222
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUdULFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBbUQsUUFBUSxFQUFRLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFC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QUU7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQXZPVSxpREFBaUQ7a0dBQWpELGlEQUFpRCxzZUNuRjlELG1yRUEwREE7OzJGRHlCYSxpREFBaUQ7a0JBTjdELFNBQVM7K0JBQ0UsaURBQWlELG1CQUcxQyx1QkFBdUIsQ0FBQyxNQUFNO2dLQUl2QyxRQUFRO3NCQURmLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE5nWm9uZSxcbiAgVmlld0NoaWxkLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgdGFrZSwgdGFwLCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgQ2hhcnREYXRhTGFiZWxzIGZyb20gJ2NoYXJ0anMtcGx1Z2luLWRhdGFsYWJlbHMnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b1ByZWNpc2lvbiwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBtYXRjaFRlcm1UeXBlLCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwIH0gZnJvbSAnLi4vLi4vY29tbW9uL3J4anMtdXRpbHMnO1xuaW1wb3J0IHsgTGV2ZWwsIHBhcnNlTGluZXMsIHBhcnNlTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9sb2dzLXV0aWxzJztcbmltcG9ydCB7IGxpc3RDb2xvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb2xvcic7XG5cbmludGVyZmFjZSBJTG9nIHtcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBpbXBhY3RUZXJtSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybVVuaXRzPzogc3RyaW5nO1xuICBibGFua05vZGVUZXJtSWQ6IHN0cmluZztcbiAgY29lZmZpY2llbnQ6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgLy8gc3RvcmUgYWxsIGluZGljYXRvcnMgd2l0aCBpbnB1dHNcbiAgaW5wdXRzPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9W107XG4gIGlucHV0c1ZhbHVlPzogbnVtYmVyO1xufVxuXG5jb25zdCBwYXJzZUxvZyA9IChkYXRhOiBhbnkpOiBJTG9nID0+ICh7XG4gIG1vZGVsSWQ6IGRhdGEubW9kZWwsXG4gIGltcGFjdFRlcm1JZDogZGF0YVsna2V5L3Rlcm0nXSB8fCBkYXRhLnRlcm0gfHwgZGF0YS5pbmRpY2F0b3IsXG4gIGJsYW5rTm9kZVRlcm1JZDogZGF0YS5ub2RlLFxuICBjb2VmZmljaWVudDogK2RhdGEuY29lZmZpY2llbnQsXG4gIHZhbHVlOiArZGF0YS52YWx1ZSAqICtkYXRhLmNvZWZmaWNpZW50XG59KTtcblxuY29uc3QgZmlsdGVyVGVybVR5cGVzID0gW1Rlcm1UZXJtVHlwZS5lbWlzc2lvbiwgVGVybVRlcm1UeXBlLmNoYXJhY3RlcmlzZWRJbmRpY2F0b3JdO1xuXG5jb25zdCBjc3ZIZWFkZXJzID0gW1xuICAnSW1wYWN0JyxcbiAgJ0ltcGFjdCBVbml0JyxcbiAgJ01ldGhvZCcsXG4gICdFbWlzc2lvbicsXG4gICdWYWx1ZScsXG4gICdJbnB1dHMnLFxuICAnSW5wdXRzIHZhbHVlJyxcbiAgJ0Z1bmN0aW9uYWwgVW5pdCdcbl07XG5cbmNvbnN0IGxvZ1RvQ3N2ID0gKGxvZ3M6IElMb2dbXSwgaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkgPT5cbiAgW1xuICAgIGNzdkhlYWRlcnMuam9pbignLCcpLFxuICAgIC4uLmxvZ3NcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmltcGFjdFRlcm1JZC5sb2NhbGVDb21wYXJlKGIuaW1wYWN0VGVybUlkKSlcbiAgICAgIC5mbGF0TWFwKCh7IGltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCBpbnB1dHMgfSkgPT4gW1xuICAgICAgICBbaW1wYWN0VGVybUlkLCBpbXBhY3RUZXJtVW5pdHMsIG1vZGVsSWQsIGJsYW5rTm9kZVRlcm1JZCwgdmFsdWUsICcnLCAnJ10sXG4gICAgICAgIC4uLmlucHV0cy5tYXAodiA9PiBbaW1wYWN0VGVybUlkLCBpbXBhY3RUZXJtVW5pdHMsIG1vZGVsSWQsIGJsYW5rTm9kZVRlcm1JZCwgJycsIHYubmFtZSwgdi52YWx1ZV0pXG4gICAgICBdKVxuICAgICAgLm1hcCh2ID0+IFsuLi52LCBpbXBhY3QucHJvZHVjdD8udGVybT8udW5pdHNdLmpvaW4oJywnKSlcbiAgXS5qb2luKCdcXG4nKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBJbXBhY3RBc3Nlc3NtZW50c0luZGljYXRvckJyZWFrZG93bkNoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2hhcnQ6IGFueTtcblxuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudCA9IGlucHV0KHVuZGVmaW5lZCBhcyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCk7XG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudCQgPSB0b09ic2VydmFibGUodGhpcy5pbXBhY3RBc3Nlc3NtZW50KTtcblxuICBwcm90ZWN0ZWQgaW5kaWNhdG9ycyA9IGlucHV0KFtdIGFzIEluZGljYXRvcltdKTtcblxuICBwcml2YXRlIGFsbExvZ3MgPSBzaWduYWwoW10gYXMgSUxvZ1tdKTtcbiAgcHJpdmF0ZSBsb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmFsbExvZ3MoKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgaW1wYWN0VGVybUlkLCBtb2RlbElkIH0pID0+XG4gICAgICAgICAgaW1wYWN0VGVybUlkID09PSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddICYmXG4gICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTWV0aG9kKCkgfHwgbW9kZWxJZCA9PT0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpPy5bJ0BpZCddKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKVxuICApO1xuXG4gIHByaXZhdGUgZW1pc3Npb25zID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuc2VhcmNoJDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oe1xuICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT4gdW5pcXVlKCh0aGlzLmluZGljYXRvcnMoKSB8fCBbXSkubWFwKCh7IHRlcm0gfSkgPT4gdGVybSEpLmZpbHRlcihCb29sZWFuKSkpO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZE1ldGhvZCA9IHNpZ25hbCh1bmRlZmluZWQgYXMgVGVybSk7XG4gIHByb3RlY3RlZCBtZXRob2RzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxdWUoKHRoaXMuaW5kaWNhdG9ycygpIHx8IFtdKS5tYXAoKHsgbWV0aG9kTW9kZWwgfSkgPT4gbWV0aG9kTW9kZWwhKS5maWx0ZXIoQm9vbGVhbikpXG4gICk7XG5cbiAgcHJpdmF0ZSBpbXBhY3RzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIC4uLih0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyB8fCBbXSksXG4gICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5lbmRwb2ludHMgfHwgW10pXG4gIF0pO1xuICBwcm90ZWN0ZWQgbm9EYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2dzKCk/Lmxlbmd0aCA9PT0gMCk7XG5cbiAgcHJvdGVjdGVkIGNzdkNvbnRlbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcbiAgICAgIGBkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04LCR7ZW5jb2RlVVJJQ29tcG9uZW50KGxvZ1RvQ3N2KHRoaXMubG9ncygpLCB0aGlzLmltcGFjdEFzc2Vzc21lbnQoKSkpfWBcbiAgICApXG4gICk7XG4gIHByaXZhdGUgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uWydAaWQnXSB8fCAodGhpcy5pbXBhY3RBc3Nlc3NtZW50KCkgYXMgYW55KT8uaWQpO1xuICBwcm90ZWN0ZWQgZG93bmxvYWRGaWxlbmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuaWQoKX0tbG9ncy5jc3ZgKTtcblxuICBwcml2YXRlIHRvdGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2dzKCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vyci52YWx1ZSwgMCkpO1xuICBwcml2YXRlIGxhYmVscyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5sb2dzKCkubWFwKFxuICAgICAgKHsgYmxhbmtOb2RlVGVybUlkIH0pID0+IHRoaXMuZW1pc3Npb25zKCk/LmZpbmQodiA9PiB2WydAaWQnXSA9PT0gYmxhbmtOb2RlVGVybUlkKT8ubmFtZSB8fCBibGFua05vZGVUZXJtSWRcbiAgICApXG4gICk7XG4gIHByaXZhdGUgZGF0YXNldHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMuc2VsZWN0ZWRUZXJtKCk/Lm5hbWUgPz8gJycsXG4gICAgICBkYXRhOiB0aGlzLmxvZ3MoKS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmxvZ3MoKS5tYXAobGlzdENvbG9yKSxcbiAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmxvZ3MoKS5tYXAobGlzdENvbG9yKVxuICAgIH1cbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gKG5vZGUgPyB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyh7IC4uLm5vZGUsIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCB9KSA6IG9mKCcnKSkpLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiBbXSkpLFxuICAgICAgICBtZXJnZUFsbCgpLFxuICAgICAgICBmaWx0ZXIoKHsgZGF0YSB9KSA9PiBkYXRhLmxvZ2dlciA9PT0gJ2hlc3RpYV9lYXJ0aC5tb2RlbHMnICYmIGRhdGEubGV2ZWwgPT09IExldmVsLmRlYnVnKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgICAgIG1hcCgoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiBwYXJzZU1lc3NhZ2UobWVzc2FnZSkpLFxuICAgICAgICBmaWx0ZXIobWVzc2FnZSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cuaW1wYWN0VGVybUlkICYmICEhbG9nLmJsYW5rTm9kZVRlcm1JZCAmJiAhaXNOYU4obG9nLnZhbHVlKSAmJiBsb2cudmFsdWUgPiAwKSxcbiAgICAgICAgZ3JvdXBCeShsb2cgPT4gW2xvZy5pbXBhY3RUZXJtSWQsIGxvZy5ibGFua05vZGVUZXJtSWQsIGxvZy5tb2RlbElkXS5qb2luKCcvJykpLFxuICAgICAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHRvdGFsID0gdmFsdWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuICAgICAgICAgIGNvbnN0IGJsYW5rTm9kZXMgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVtaXNzaW9uc1Jlc291cmNlVXNlID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyA/PyBbXSlcbiAgICAgICAgICBdLmZpbHRlcih2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5ibGFua05vZGVUZXJtSWQpO1xuXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0gYmxhbmtOb2Rlc1xuICAgICAgICAgICAgLmZpbHRlcih2ID0+IHYuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgICAubWFwKHYgPT4gKHsgbmFtZTogdi5pbnB1dHMubWFwKGkgPT4gaVsnQGlkJ10pLmpvaW4oJzsnKSwgdmFsdWU6IHYudmFsdWUgKiBsb2cuY29lZmZpY2llbnQgfSkpO1xuICAgICAgICAgIGNvbnN0IGlucHV0c1ZhbHVlID0gaW5wdXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuXG4gICAgICAgICAgY29uc3QgaW1wYWN0ID0gdGhpcy5pbXBhY3RzKCkuZmluZCh2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5pbXBhY3RUZXJtSWQpO1xuXG4gICAgICAgICAgLy8gbG9ncyBtaWdodCBleGlzdCBidXQgaW1wYWN0IHdhcyBub3QgYWRkZWQgPT4gc2tpcCBsb2dzXG4gICAgICAgICAgcmV0dXJuIGltcGFjdFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4ubG9nLFxuICAgICAgICAgICAgICAgIGltcGFjdFRlcm1Vbml0czogaW1wYWN0LnRlcm0/LnVuaXRzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0b3RhbCxcbiAgICAgICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICAgICAgaW5wdXRzVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKGxvZyA9PiAhIWxvZyksXG4gICAgICAgIHRvQXJyYXkoKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobG9nczogSUxvZ1tdKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsTG9ncy5zZXQobG9ncyk7XG4gICAgICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gICAgICB9KTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIHNlbGVjdGVkIHRlcm0gZXhpc3RzXG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGhpcy50ZXJtcygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRlcm1JZCA9IHRoaXMuc2VsZWN0ZWRUZXJtKCk/LlsnQGlkJ107XG4gICAgICAgIGlmICghc2VsZWN0ZWRUZXJtSWQgfHwgIXRlcm1zLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gc2VsZWN0ZWRUZXJtSWQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm0uc2V0KHRlcm1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YXNldHMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbml0Q2hhcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2hhcnQoKSB7XG4gICAgaWYgKCF0aGlzLmNoYXJ0UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5sYWJlbHMoKTtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuZGF0YXNldHMoKTtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWwoKTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgIGRhdGFzZXRzXG4gICAgICAgIH0sXG4gICAgICAgIHBsdWdpbnM6IFtDaGFydERhdGFMYWJlbHNdLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGx1Z2luczoge1xuICAgICAgICAgICAgZGF0YWxhYmVsczoge1xuICAgICAgICAgICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSB0b1ByZWNpc2lvbigodmFsdWUgKiAxMDApIC8gdG90YWwsIDIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IDAgPyBgJHt0b1ByZWNpc2lvbih2YWx1ZSwgMyl9ICgke3JhdGlvfSUpYCA6ICcnO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdG9vbHRpcHM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICAgIHRpdGxlOiAodG9vbHRpcEl0ZW1zLCBkYXRhKSA9PiBkYXRhLmRhdGFzZXRzIVt0b29sdGlwSXRlbXNbMF0uZGF0YXNldEluZGV4IV0/LmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKyh0b29sdGlwSXRlbS52YWx1ZSB8fCAnMCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gdG9QcmVjaXNpb24oKHZhbHVlICogMTAwKSAvIHRvdGFsLCAyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiAwID8gYCR7dG9QcmVjaXNpb24odmFsdWUsIDMpfSAoJHtyYXRpb30lKWAgOiAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgICB4QXhlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0VGVybSh7IHRhcmdldDogeyB2YWx1ZSB9IH0pIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RNZXRob2QoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMubWV0aG9kcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXRob2Quc2V0KHRlcm0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zXCIgKm5nSWY9XCIhbG9hZGluZygpOyBlbHNlIGxvYWRlclwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXRlcm1zKCk/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhbiBJbmRpY2F0b3I8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiICpuZ0lmPVwidGVybXMoKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1mdWxsd2lkdGggaXMtc21hbGwgaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0VGVybSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRlcm0gb2YgdGVybXMoKVwiIFt2YWx1ZV09XCJ0ZXJtWydAaWQnXVwiPnt7IHRlcm0ubmFtZSB9fSAoe3sgdGVybS51bml0cyB9fSk8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIiAqbmdJZj1cIm1ldGhvZHMoKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1mdWxsd2lkdGggaXMtc21hbGwgaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TWV0aG9kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5GaWx0ZXIgTW9kZWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiBtZXRob2RzKClcIiBbdmFsdWVdPVwidGVybVsnQGlkJ11cIj57eyB0ZXJtLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdCBpcy1zbWFsbFwiXG4gICAgICAgIFtocmVmXT1cImNzdkNvbnRlbnQoKVwiXG4gICAgICAgIFtkb3dubG9hZF09XCJkb3dubG9hZEZpbGVuYW1lKClcIlxuICAgICAgICBuYmdUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHAgY2xhc3M9XCJpcy1zaXplLTdcIiAqbmdJZj1cIiFzZWxlY3RlZE1ldGhvZCgpXCI+XG4gICAgPGk+U2VsZWN0aW5nIGEgTW9kZWwgaXMgcmVjb21tZW5kZWQgdG8gYXZvaWQgZHVwbGljYXRlZCBlbnRyaWVzLjwvaT5cbiAgPC9wPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJpcy1tdC0xXCI+XG4gIDxwICpuZ0lmPVwiIWxvYWRpbmcoKSAmJiBub0RhdGEoKVwiIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICA8c3Bhbj5ObyBicmVha2Rvd24gYXZhaWxhYmxlIGZvcjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIiAqbmdJZj1cInNlbGVjdGVkVGVybSgpXCI+e3sgc2VsZWN0ZWRUZXJtKCkubmFtZSB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIiAqbmdJZj1cInNlbGVjdGVkTWV0aG9kKClcIj4oe3sgc2VsZWN0ZWRNZXRob2QoKS5uYW1lIH19KTwvc3Bhbj5cbiAgICA8c3Bhbj4uPC9zcGFuPlxuICA8L3A+XG4gIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXIgaC0xMDBcIj5cbiAgICA8Y2FudmFzICNjaGFydD48L2NhbnZhcz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkZXI+XG4gIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXIgcHktM1wiPlxuICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUdULFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBbUQsUUFBUSxFQUFRLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFC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RTtRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBdk9VLGlEQUFpRDtrR0FBakQsaURBQWlELHNlQ25GOUQsazhFQXlFQTs7MkZEVWEsaURBQWlEO2tCQU43RCxTQUFTOytCQUNFLGlEQUFpRCxtQkFHMUMsdUJBQXVCLENBQUMsTUFBTTtnS0FJdkMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIFZpZXdDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRha2UsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vY29sb3InO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybUlkOiBzdHJpbmc7XG4gIGltcGFjdFRlcm1Vbml0cz86IHN0cmluZztcbiAgYmxhbmtOb2RlVGVybUlkOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8vIHN0b3JlIGFsbCBpbmRpY2F0b3JzIHdpdGggaW5wdXRzXG4gIGlucHV0cz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xuICBpbnB1dHNWYWx1ZT86IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBtb2RlbElkOiBkYXRhLm1vZGVsLFxuICBpbXBhY3RUZXJtSWQ6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBibGFua05vZGVUZXJtSWQ6IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtUZXJtVGVybVR5cGUuZW1pc3Npb24sIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTtcblxuY29uc3QgY3N2SGVhZGVycyA9IFtcbiAgJ0ltcGFjdCcsXG4gICdJbXBhY3QgVW5pdCcsXG4gICdNZXRob2QnLFxuICAnRW1pc3Npb24nLFxuICAnVmFsdWUnLFxuICAnSW5wdXRzJyxcbiAgJ0lucHV0cyB2YWx1ZScsXG4gICdGdW5jdGlvbmFsIFVuaXQnXG5dO1xuXG5jb25zdCBsb2dUb0NzdiA9IChsb2dzOiBJTG9nW10sIGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gIFtcbiAgICBjc3ZIZWFkZXJzLmpvaW4oJywnKSxcbiAgICAuLi5sb2dzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbXBhY3RUZXJtSWQubG9jYWxlQ29tcGFyZShiLmltcGFjdFRlcm1JZCkpXG4gICAgICAuZmxhdE1hcCgoeyBpbXBhY3RUZXJtSWQsIGltcGFjdFRlcm1Vbml0cywgbW9kZWxJZCwgYmxhbmtOb2RlVGVybUlkLCB2YWx1ZSwgaW5wdXRzIH0pID0+IFtcbiAgICAgICAgW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCAnJywgJyddLFxuICAgICAgICAuLi5pbnB1dHMubWFwKHYgPT4gW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsICcnLCB2Lm5hbWUsIHYudmFsdWVdKVxuICAgICAgXSlcbiAgICAgIC5tYXAodiA9PiBbLi4udiwgaW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXS5qb2luKCcsJykpXG4gIF0uam9pbignXFxuJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjaGFydCcpXG4gIHByaXZhdGUgY2hhcnRSZWY/OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGNoYXJ0OiBhbnk7XG5cbiAgcHJvdGVjdGVkIGltcGFjdEFzc2Vzc21lbnQgPSBpbnB1dCh1bmRlZmluZWQgYXMgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpO1xuICBwcml2YXRlIGltcGFjdEFzc2Vzc21lbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuaW1wYWN0QXNzZXNzbWVudCk7XG5cbiAgcHJvdGVjdGVkIGluZGljYXRvcnMgPSBpbnB1dChbXSBhcyBJbmRpY2F0b3JbXSk7XG5cbiAgcHJpdmF0ZSBhbGxMb2dzID0gc2lnbmFsKFtdIGFzIElMb2dbXSk7XG4gIHByaXZhdGUgbG9ncyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5hbGxMb2dzKClcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh7IGltcGFjdFRlcm1JZCwgbW9kZWxJZCB9KSA9PlxuICAgICAgICAgIGltcGFjdFRlcm1JZCA9PT0gdGhpcy5zZWxlY3RlZFRlcm0oKT8uWydAaWQnXSAmJlxuICAgICAgICAgICghdGhpcy5zZWxlY3RlZE1ldGhvZCgpIHx8IG1vZGVsSWQgPT09IHRoaXMuc2VsZWN0ZWRNZXRob2QoKT8uWydAaWQnXSlcbiAgICAgIClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSlcbiAgKTtcblxuICBwcml2YXRlIGVtaXNzaW9ucyA9IHRvU2lnbmFsKFxuICAgIHRoaXMuc2VhcmNoU2VydmljZVxuICAgICAgLnNlYXJjaCQ8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KHtcbiAgICAgICAgZmllbGRzOiBbJ0B0eXBlJywgJ0BpZCcsICduYW1lJ10sXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIGJvb2w6IHtcbiAgICAgICAgICAgIG11c3Q6IFttYXRjaFR5cGUoTm9kZVR5cGUuVGVybSldLFxuICAgICAgICAgICAgc2hvdWxkOiBmaWx0ZXJUZXJtVHlwZXMubWFwKHRlcm1UeXBlID0+IG1hdGNoVGVybVR5cGUodGVybVR5cGUpKSxcbiAgICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKCh7IHJlc3VsdHMgfSkgPT4gcmVzdWx0cykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkVGVybSA9IHNpZ25hbCh1bmRlZmluZWQgYXMgVGVybSk7XG4gIHByb3RlY3RlZCB0ZXJtcyA9IGNvbXB1dGVkKCgpID0+IHVuaXF1ZSgodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0hKS5maWx0ZXIoQm9vbGVhbikpKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRNZXRob2QgPSBzaWduYWwodW5kZWZpbmVkIGFzIFRlcm0pO1xuICBwcm90ZWN0ZWQgbWV0aG9kcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdW5pcXVlKCh0aGlzLmluZGljYXRvcnMoKSB8fCBbXSkubWFwKCh7IG1ldGhvZE1vZGVsIH0pID0+IG1ldGhvZE1vZGVsISkuZmlsdGVyKEJvb2xlYW4pKVxuICApO1xuXG4gIHByaXZhdGUgaW1wYWN0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmltcGFjdHMgfHwgW10pLFxuICAgIC4uLih0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uZW5kcG9pbnRzIHx8IFtdKVxuICBdKTtcbiAgcHJvdGVjdGVkIG5vRGF0YSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9ncygpPy5sZW5ndGggPT09IDApO1xuXG4gIHByb3RlY3RlZCBjc3ZDb250ZW50ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBgZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChsb2dUb0Nzdih0aGlzLmxvZ3MoKSwgdGhpcy5pbXBhY3RBc3Nlc3NtZW50KCkpKX1gXG4gICAgKVxuICApO1xuICBwcml2YXRlIGlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LlsnQGlkJ10gfHwgKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpIGFzIGFueSk/LmlkKTtcbiAgcHJvdGVjdGVkIGRvd25sb2FkRmlsZW5hbWUgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLmlkKCl9LWxvZ3MuY3N2YCk7XG5cbiAgcHJpdmF0ZSB0b3RhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9ncygpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApKTtcbiAgcHJpdmF0ZSBsYWJlbHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubG9ncygpLm1hcChcbiAgICAgICh7IGJsYW5rTm9kZVRlcm1JZCB9KSA9PiB0aGlzLmVtaXNzaW9ucygpPy5maW5kKHYgPT4gdlsnQGlkJ10gPT09IGJsYW5rTm9kZVRlcm1JZCk/Lm5hbWUgfHwgYmxhbmtOb2RlVGVybUlkXG4gICAgKVxuICApO1xuICBwcml2YXRlIGRhdGFzZXRzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnNlbGVjdGVkVGVybSgpPy5uYW1lID8/ICcnLFxuICAgICAgZGF0YTogdGhpcy5sb2dzKCkubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5sb2dzKCkubWFwKGxpc3RDb2xvciksXG4gICAgICBib3JkZXJDb2xvcjogdGhpcy5sb2dzKCkubWFwKGxpc3RDb2xvcilcbiAgICB9XG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEhlU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudCRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIodiA9PiAhIXYpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAoKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQodHJ1ZSkpLFxuICAgICAgICBtZXJnZU1hcChub2RlID0+IChub2RlID8gdGhpcy5ub2RlU2VydmljZS5nZXRMb2coeyAuLi5ub2RlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgfSkgOiBvZignJykpKSxcbiAgICAgICAgbWFwKHZhbHVlID0+ICh2YWx1ZSA/IHBhcnNlTGluZXModmFsdWUpIDogW10pKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICAgIGZpbHRlcigoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiAhIW1lc3NhZ2UpLFxuICAgICAgICBtYXAoKHsgZGF0YTogeyBtZXNzYWdlIH0gfSkgPT4gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpKSxcbiAgICAgICAgZmlsdGVyKG1lc3NhZ2UgPT4gJ25vZGUnIGluIG1lc3NhZ2UpLFxuICAgICAgICBtYXAocGFyc2VMb2cpLFxuICAgICAgICBmaWx0ZXIobG9nID0+ICEhbG9nLmltcGFjdFRlcm1JZCAmJiAhIWxvZy5ibGFua05vZGVUZXJtSWQgJiYgIWlzTmFOKGxvZy52YWx1ZSkgJiYgbG9nLnZhbHVlID4gMCksXG4gICAgICAgIGdyb3VwQnkobG9nID0+IFtsb2cuaW1wYWN0VGVybUlkLCBsb2cuYmxhbmtOb2RlVGVybUlkLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgICAgbWFwKCh2YWx1ZXM6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZyA9IHZhbHVlc1swXTtcbiAgICAgICAgICBjb25zdCB0b3RhbCA9IHZhbHVlcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICAgICAgICBjb25zdCBibGFua05vZGVzID0gW1xuICAgICAgICAgICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5lbWlzc2lvbnNSZXNvdXJjZVVzZSA/PyBbXSksXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmltcGFjdHMgPz8gW10pXG4gICAgICAgICAgXS5maWx0ZXIodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuYmxhbmtOb2RlVGVybUlkKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IGJsYW5rTm9kZXNcbiAgICAgICAgICAgIC5maWx0ZXIodiA9PiB2LmlucHV0cz8ubGVuZ3RoKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh7IG5hbWU6IHYuaW5wdXRzLm1hcChpID0+IGlbJ0BpZCddKS5qb2luKCc7JyksIHZhbHVlOiB2LnZhbHVlICogbG9nLmNvZWZmaWNpZW50IH0pKTtcbiAgICAgICAgICBjb25zdCBpbnB1dHNWYWx1ZSA9IGlucHV0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGltcGFjdCA9IHRoaXMuaW1wYWN0cygpLmZpbmQodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuaW1wYWN0VGVybUlkKTtcblxuICAgICAgICAgIC8vIGxvZ3MgbWlnaHQgZXhpc3QgYnV0IGltcGFjdCB3YXMgbm90IGFkZGVkID0+IHNraXAgbG9nc1xuICAgICAgICAgIHJldHVybiBpbXBhY3RcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmxvZyxcbiAgICAgICAgICAgICAgICBpbXBhY3RUZXJtVW5pdHM6IGltcGFjdC50ZXJtPy51bml0cyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdG90YWwsXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgICAgIGlucHV0c1ZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cpLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICB0aGlzLmFsbExvZ3Muc2V0KGxvZ3MpO1xuICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgfSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzZWxlY3RlZCB0ZXJtIGV4aXN0c1xuICAgICAgICBjb25zdCB0ZXJtcyA9IHRoaXMudGVybXMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtSWQgPSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddO1xuICAgICAgICBpZiAoIXNlbGVjdGVkVGVybUlkIHx8ICF0ZXJtcy5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHNlbGVjdGVkVGVybUlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0Q2hhcnQoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFzZXRzKCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0Q2hhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENoYXJ0KCkge1xuICAgIGlmICghdGhpcy5jaGFydFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMubGFiZWxzKCk7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmRhdGFzZXRzKCk7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsKCk7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGxhYmVscyxcbiAgICAgICAgICBkYXRhc2V0c1xuICAgICAgICB9LFxuICAgICAgICBwbHVnaW5zOiBbQ2hhcnREYXRhTGFiZWxzXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICAgIGRhdGFsYWJlbHM6IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgICAgIGZvcm1hdHRlcjogdmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gdG9QcmVjaXNpb24oKHZhbHVlICogMTAwKSAvIHRvdGFsLCAyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiAwID8gYCR7dG9QcmVjaXNpb24odmFsdWUsIDMpfSAoJHtyYXRpb30lKWAgOiAnJztcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWxpZ246ICdlbmQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWw6IHRvb2x0aXBJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICsodG9vbHRpcEl0ZW0udmFsdWUgfHwgJzAnKTtcbiAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0b3RhbCwgMik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHNjYWxlczoge1xuICAgICAgICAgICAgeEF4ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHlBeGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFRlcm0oeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkVGVybS5zZXQodGVybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0TWV0aG9kKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLm1ldGhvZHMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkTWV0aG9kLnNldCh0ZXJtKTtcbiAgfVxufVxuIiwiQGlmICghbG9hZGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJwLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiF0ZXJtcygpPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEluZGljYXRvcjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKHRlcm1zKCk/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1mdWxsd2lkdGggaXMtc21hbGwgaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdFRlcm0oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAodGVybSBvZiB0ZXJtcygpOyB0cmFjayB0ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19ICh7eyB0ZXJtLnVuaXRzIH19KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKG1ldGhvZHMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TWV0aG9kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+RmlsdGVyIE1vZGVsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0ZXJtIG9mIG1ldGhvZHMoKTsgdHJhY2sgdGVybSkge1xuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ0ZXJtWydAaWQnXVwiPnt7IHRlcm0ubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3QgaXMtc21hbGxcIlxuICAgICAgICAgIFtocmVmXT1cImNzdkNvbnRlbnQoKVwiXG4gICAgICAgICAgW2Rvd25sb2FkXT1cImRvd25sb2FkRmlsZW5hbWUoKVwiXG4gICAgICAgICAgbmJnVG9vbHRpcD1cIkRvd25sb2FkIGFzIENTVlwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICA8cCBjbGFzcz1cImlzLXNpemUtN1wiPlxuICAgICAgICA8aT5TZWxlY3RpbmcgYSBNb2RlbCBpcyByZWNvbW1lbmRlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGVudHJpZXMuPC9pPlxuICAgICAgPC9wPlxuICAgIH1cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJpcy1tdC0xXCI+XG4gIEBpZiAoIWxvYWRpbmcoKSAmJiBub0RhdGEoKSkge1xuICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICAgIDxzcGFuPk5vIGJyZWFrZG93biBhdmFpbGFibGUgZm9yPC9zcGFuPlxuICAgICAgQGlmIChzZWxlY3RlZFRlcm0oKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIj57eyBzZWxlY3RlZFRlcm0oKS5uYW1lIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiPih7eyBzZWxlY3RlZE1ldGhvZCgpLm5hbWUgfX0pPC9zcGFuPlxuICAgICAgfVxuICAgICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICA8L3A+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBoLTEwMFwiPlxuICAgIDxjYW52YXMgI2NoYXJ0PjwvY2FudmFzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -10,8 +10,7 @@ import { defaultLabel } from '../../common/utils';
10
10
  import { listColor } from '../../common/color';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "../../node/node-store.service";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "@angular/forms";
13
+ import * as i2 from "@angular/forms";
15
14
  const impactValue = (impact, values) => (values[impact['@id']]?.nodes[0] || { value: 0 }).value;
16
15
  const impactName = (impact, index) => `${index + 1}. ${defaultLabel(impact)} (${impact.product?.term?.units})`;
17
16
  const termAllowed = (filterTermTypes = [], term) => !filterTermTypes?.length || (filterTermTypes || []).includes(term?.termType);
@@ -110,13 +109,13 @@ export class ImpactAssessmentsIndicatorsChartComponent {
110
109
  this.selectedTerm.set(term);
111
110
  }
112
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorsChartComponent, deps: [{ token: i0.NgZone }, { token: i1.HeNodeStoreService }], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, filterTermTypes: { classPropertyName: "filterTermTypes", publicName: "filterTermTypes", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectTerm($event)\">\n <option *ngFor=\"let term of terms()\" [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, filterTermTypes: { classPropertyName: "filterTermTypes", publicName: "filterTermTypes", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], dependencies: [{ kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
114
113
  }
115
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorsChartComponent, decorators: [{
116
115
  type: Component,
117
- args: [{ selector: 'he-impact-assessments-indicators-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectTerm($event)\">\n <option *ngFor=\"let term of terms()\" [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"] }]
116
+ args: [{ selector: 'he-impact-assessments-indicators-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"] }]
118
117
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.HeNodeStoreService }], propDecorators: { chartRef: [{
119
118
  type: ViewChild,
120
119
  args: ['chart']
121
120
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUdULFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLE1BQU0sRUFFTixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBc0IsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFHL0MsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUErQixFQUFFLE1BQXNDLEVB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QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0F4SFUseUNBQXlDO2tHQUF6Qyx5Q0FBeUMscWNDeEN0RCxvckJBb0JBOzsyRkRvQmEseUNBQXlDO2tCQU5yRCxTQUFTOytCQUNFLHdDQUF3QyxtQkFHakMsdUJBQXVCLENBQUMsTUFBTTs0R0FJdkMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBjb21wdXRlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIHNpZ25hbCxcbiAgZWZmZWN0LFxuICBBZnRlclZpZXdJbml0LFxuICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgQ2hhcnREYXRhTGFiZWxzIGZyb20gJ2NoYXJ0anMtcGx1Z2luLWRhdGFsYWJlbHMnO1xuXG5pbXBvcnQgeyBIZU5vZGVTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZE5vZGVzVmFsdWVzIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGxpc3RDb2xvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb2xvcic7XG5pbXBvcnQgeyBtb2RlbEtleSB9IGZyb20gJy4uL2ltcGFjdC1hc3Nlc3NtZW50cy5tb2RlbCc7XG5cbmNvbnN0IGltcGFjdFZhbHVlID0gKGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxJbmRpY2F0b3I+KSA9PlxuICAodmFsdWVzW2ltcGFjdFsnQGlkJ11dPy5ub2Rlc1swXSB8fCB7IHZhbHVlOiAwIH0pLnZhbHVlO1xuXG5jb25zdCBpbXBhY3ROYW1lID0gKGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIGluZGV4OiBudW1iZXIpID0+XG4gIGAke2luZGV4ICsgMX0uICR7ZGVmYXVsdExhYmVsKGltcGFjdCl9ICgke2ltcGFjdC5wcm9kdWN0Py50ZXJtPy51bml0c30pYDtcblxuY29uc3QgdGVybUFsbG93ZWQgPSAoZmlsdGVyVGVybVR5cGVzOiBUZXJtVGVybVR5cGVbXSA9IFtdLCB0ZXJtPzogVGVybSB8IElUZXJtSlNPTkxEKSA9PlxuICAhZmlsdGVyVGVybVR5cGVzPy5sZW5ndGggfHwgKGZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzSW5kaWNhdG9yc0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2hhcnQ6IGFueTtcblxuICBwcm90ZWN0ZWQga2V5ID0gaW5wdXQoJ2ltcGFjdHMnIGFzIG1vZGVsS2V5KTtcbiAgcHJvdGVjdGVkIGZpbHRlclRlcm1UeXBlcyA9IGlucHV0KFtdIGFzIFRlcm1UZXJtVHlwZVtdKTtcblxuICBwcml2YXRlIGltcGFjdEFzc2Vzc21lbnRzID0gdG9TaWduYWwoXG4gICAgdGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmRCeVN0YXRlJDxJSW1wYWN0QXNzZXNzbWVudEpTT05MRD4oTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCwgRGF0YVN0YXRlLnJlY2FsY3VsYXRlZClcbiAgKTtcblxuICBwcml2YXRlIGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4odGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLCB0aGlzLmtleSgpKVxuICApO1xuXG4gIHByb3RlY3RlZCB0ZXJtcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQoKSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh7IHRlcm0sIHZhbHVlcyB9KSA9PlxuICAgICAgICAgIHRlcm1BbGxvd2VkKHRoaXMuZmlsdGVyVGVybVR5cGVzKCksIHRlcm0pICYmXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyh2YWx1ZXMpLnNvbWUoKHsgbm9kZXM6IFt7IHZhbHVlIH1dIH0pID0+IHZhbHVlID49IDApXG4gICAgICApXG4gICAgICAubWFwKCh7IHRlcm0gfTogYW55KSA9PiB0ZXJtIGFzIFRlcm0pXG4gICk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFRlcm0gPSBzaWduYWwodW5kZWZpbmVkIGFzIFRlcm0pO1xuICBwcml2YXRlIGxhYmVscyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKS5tYXAoaW1wYWN0TmFtZSkpO1xuICBwcml2YXRlIGNvbG9ycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKS5tYXAobGlzdENvbG9yKSk7XG4gIHByaXZhdGUgdmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbmRpY2F0b3JQZXJJbXBhY3RBc3Nlc3NtZW50KCk/Llt0aGlzLnNlbGVjdGVkVGVybSgpPy5uYW1lXT8udmFsdWVzIHx8IHt9KTtcbiAgcHJpdmF0ZSBkYXRhc2V0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0oKT8ubmFtZSB8fCAnJyxcbiAgICAgIGRhdGE6IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKS5tYXAoaW1wYWN0ID0+IGltcGFjdFZhbHVlKGltcGFjdCwgdGhpcy52YWx1ZXMoKSkpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmNvbG9ycygpLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuY29sb3JzKClcbiAgICB9XG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBub2RlU3RvcmVTZXJ2aWNlOiBIZU5vZGVTdG9yZVNlcnZpY2VcbiAgKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBtYWtlIHN1cmUgc2VsZWN0ZWQgdGVybSBleGlzdHNcbiAgICAgICAgY29uc3QgdGVybXMgPSB0aGlzLnRlcm1zKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGVybUlkID0gdGhpcy5zZWxlY3RlZFRlcm0oKT8uWydAaWQnXTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFRlcm1JZCB8fCAhdGVybXMuZmluZCh0ZXJtID0+IHRlcm1bJ0BpZCddID09PSBzZWxlY3RlZFRlcm1JZCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGVybS5zZXQodGVybXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2hhcnQoKSB7XG4gICAgaWYgKCF0aGlzLmNoYXJ0UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5sYWJlbHMoKTtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuZGF0YXNldHMoKTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHR5cGU6ICdiYXInLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgIGRhdGFzZXRzXG4gICAgICAgIH0sXG4gICAgICAgIHBsdWdpbnM6IFtDaGFydERhdGFMYWJlbHNdLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGx1Z2luczoge1xuICAgICAgICAgICAgZGF0YWxhYmVsczoge1xuICAgICAgICAgICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB0b1ByZWNpc2lvbih2YWx1ZSwgMyksXG4gICAgICAgICAgICAgIGFuY2hvcjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGNsYW1wOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0b29sdGlwczoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgICB4QXhlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0VGVybSh7IHRhcmdldDogeyB2YWx1ZSB9IH0pIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXRlcm1zKCk/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhbiBJbmRpY2F0b3I8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0VGVybSgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiB0ZXJtcygpXCIgW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19ICh7eyB0ZXJtLnVuaXRzIH19KTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgI2NoYXJ0PjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUdULFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLE1BQU0sRUFFTixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBc0IsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUcvQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQStCLEVBQUUsTUFBc0MsRUFB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LElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQXhIVSx5Q0FBeUM7a0dBQXpDLHlDQUF5QyxxY0N4Q3RELG90QkFzQkE7OzJGRGtCYSx5Q0FBeUM7a0JBTnJELFNBQVM7K0JBQ0Usd0NBQXdDLG1CQUdqQyx1QkFBdUIsQ0FBQyxNQUFNOzRHQUl2QyxRQUFRO3NCQURmLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIGNvbXB1dGVkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIGlucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSW5kaWNhdG9yLCBJVGVybUpTT05MRCwgTm9kZVR5cGUsIFRlcm0sIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHRvUHJlY2lzaW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBDaGFydERhdGFMYWJlbHMgZnJvbSAnY2hhcnRqcy1wbHVnaW4tZGF0YWxhYmVscyc7XG5cbmltcG9ydCB7IEhlTm9kZVN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkTm9kZXNWYWx1ZXMgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgbGlzdENvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbG9yJztcbmltcG9ydCB7IG1vZGVsS2V5IH0gZnJvbSAnLi4vaW1wYWN0LWFzc2Vzc21lbnRzLm1vZGVsJztcblxuY29uc3QgaW1wYWN0VmFsdWUgPSAoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgdmFsdWVzOiBJR3JvdXBlZE5vZGVzVmFsdWVzPEluZGljYXRvcj4pID0+XG4gICh2YWx1ZXNbaW1wYWN0WydAaWQnXV0/Lm5vZGVzWzBdIHx8IHsgdmFsdWU6IDAgfSkudmFsdWU7XG5cbmNvbnN0IGltcGFjdE5hbWUgPSAoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgaW5kZXg6IG51bWJlcikgPT5cbiAgYCR7aW5kZXggKyAxfS4gJHtkZWZhdWx0TGFiZWwoaW1wYWN0KX0gKCR7aW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzfSlgO1xuXG5jb25zdCB0ZXJtQWxsb3dlZCA9IChmaWx0ZXJUZXJtVHlwZXM6IFRlcm1UZXJtVHlwZVtdID0gW10sIHRlcm0/OiBUZXJtIHwgSVRlcm1KU09OTEQpID0+XG4gICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCAoZmlsdGVyVGVybVR5cGVzIHx8IFtdKS5pbmNsdWRlcyh0ZXJtPy50ZXJtVHlwZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JzQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuXG4gIHByb3RlY3RlZCBrZXkgPSBpbnB1dCgnaW1wYWN0cycgYXMgbW9kZWxLZXkpO1xuICBwcm90ZWN0ZWQgZmlsdGVyVGVybVR5cGVzID0gaW5wdXQoW10gYXMgVGVybVRlcm1UeXBlW10pO1xuXG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudHMgPSB0b1NpZ25hbChcbiAgICB0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZEJ5U3RhdGUkPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEPihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50LCBEYXRhU3RhdGUucmVjYWxjdWxhdGVkKVxuICApO1xuXG4gIHByaXZhdGUgaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgZ3JvdXBOb2Rlc0J5VGVybTxJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSW5kaWNhdG9yPih0aGlzLmltcGFjdEFzc2Vzc21lbnRzKCksIHRoaXMua2V5KCkpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT5cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCgpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgdGVybSwgdmFsdWVzIH0pID0+XG4gICAgICAgICAgdGVybUFsbG93ZWQodGhpcy5maWx0ZXJUZXJtVHlwZXMoKSwgdGVybSkgJiZcbiAgICAgICAgICBPYmplY3QudmFsdWVzKHZhbHVlcykuc29tZSgoeyBub2RlczogW3sgdmFsdWUgfV0gfSkgPT4gdmFsdWUgPj0gMClcbiAgICAgIClcbiAgICAgIC5tYXAoKHsgdGVybSB9OiBhbnkpID0+IHRlcm0gYXMgVGVybSlcbiAgKTtcblxuICBwcml2YXRlIHNlbGVjdGVkVGVybSA9IHNpZ25hbCh1bmRlZmluZWQgYXMgVGVybSk7XG4gIHByaXZhdGUgbGFiZWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLm1hcChpbXBhY3ROYW1lKSk7XG4gIHByaXZhdGUgY29sb3JzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLm1hcChsaXN0Q29sb3IpKTtcbiAgcHJpdmF0ZSB2YWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQoKT8uW3RoaXMuc2VsZWN0ZWRUZXJtKCk/Lm5hbWVdPy52YWx1ZXMgfHwge30pO1xuICBwcml2YXRlIGRhdGFzZXRzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnNlbGVjdGVkVGVybSgpPy5uYW1lIHx8ICcnLFxuICAgICAgZGF0YTogdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLm1hcChpbXBhY3QgPT4gaW1wYWN0VmFsdWUoaW1wYWN0LCB0aGlzLnZhbHVlcygpKSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuY29sb3JzKCksXG4gICAgICBib3JkZXJDb2xvcjogdGhpcy5jb2xvcnMoKVxuICAgIH1cbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIG5vZGVTdG9yZVNlcnZpY2U6IEhlTm9kZVN0b3JlU2VydmljZVxuICApIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzZWxlY3RlZCB0ZXJtIGV4aXN0c1xuICAgICAgICBjb25zdCB0ZXJtcyA9IHRoaXMudGVybXMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtSWQgPSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddO1xuICAgICAgICBpZiAoIXNlbGVjdGVkVGVybUlkIHx8ICF0ZXJtcy5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHNlbGVjdGVkVGVybUlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0Q2hhcnQoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDaGFydCgpIHtcbiAgICBpZiAoIXRoaXMuY2hhcnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmxhYmVscygpO1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5kYXRhc2V0cygpO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgdHlwZTogJ2JhcicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgZGF0YXNldHNcbiAgICAgICAgfSxcbiAgICAgICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgICAgICAgICBmb3JtYXR0ZXI6IHZhbHVlID0+IHRvUHJlY2lzaW9uKHZhbHVlLCAzKSxcbiAgICAgICAgICAgICAgYW5jaG9yOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgY2xhbXA6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB5QXhlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RUZXJtKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnRlcm1zKCkuZmluZCh0ZXJtID0+IHRlcm1bJ0BpZCddID09PSB2YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFRlcm0uc2V0KHRlcm0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhdGVybXMoKT8ubGVuZ3RoXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEluZGljYXRvcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RUZXJtKCRldmVudClcIj5cbiAgICAgICAgICBAZm9yICh0ZXJtIG9mIHRlcm1zKCk7IHRyYWNrIHRlcm0pIHtcbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19ICh7eyB0ZXJtLnVuaXRzIH19KTwvb3B0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm10LTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XG4gICAgICA8Y2FudmFzICNjaGFydD48L2NhbnZhcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==