@esfaenza/es-charts 13.3.2 → 14.2.0

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 (31) hide show
  1. package/esm2020/lib/adapters/BaseAdapter.mjs +4 -4
  2. package/esm2020/lib/components/base/base-chart.component.mjs +4 -4
  3. package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +4 -4
  4. package/esm2020/lib/components/specializations/es-area-chart.component.mjs +7 -7
  5. package/esm2020/lib/components/specializations/es-chart.component.mjs +7 -7
  6. package/esm2020/lib/components/specializations/es-line-chart.component.mjs +7 -7
  7. package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +7 -7
  8. package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +7 -7
  9. package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +7 -7
  10. package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +7 -7
  11. package/esm2020/lib/es-charts.module.mjs +5 -5
  12. package/esm2020/lib/models/core/ChartDispatcher.mjs +4 -4
  13. package/esm2020/lib/models/data/Vertical2DChartData.mjs +4 -4
  14. package/esm2020/lib/services/LineChartService.mjs +13 -11
  15. package/esm2020/lib/services/Vertical2DChartService.mjs +3 -3
  16. package/fesm2015/esfaenza-es-charts.mjs +63 -61
  17. package/fesm2015/esfaenza-es-charts.mjs.map +1 -1
  18. package/fesm2020/esfaenza-es-charts.mjs +62 -60
  19. package/fesm2020/esfaenza-es-charts.mjs.map +1 -1
  20. package/{esfaenza-es-charts.d.ts → index.d.ts} +0 -0
  21. package/lib/components/base/base-chart.component.d.ts +1 -1
  22. package/lib/components/chart-pager/chart-pager.component.d.ts +1 -1
  23. package/lib/components/specializations/es-area-chart.component.d.ts +1 -1
  24. package/lib/components/specializations/es-chart.component.d.ts +1 -1
  25. package/lib/components/specializations/es-line-chart.component.d.ts +1 -1
  26. package/lib/components/specializations/es-pie-chart.component.d.ts +1 -1
  27. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +1 -1
  28. package/lib/components/specializations/es-vertical-chart.component.d.ts +1 -1
  29. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +1 -1
  30. package/lib/models/data/Vertical2DChartData.d.ts +3 -3
  31. package/package.json +7 -7
@@ -40,8 +40,8 @@ export class EsChartsModule {
40
40
  };
41
41
  }
42
42
  }
43
- EsChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
- EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, declarations: [EsChartComponent,
43
+ EsChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EsChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
+ EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: EsChartsModule, declarations: [EsChartComponent,
45
45
  EsLineChartComponent,
46
46
  EsPieChartComponent,
47
47
  EsVertical2DChartComponent,
@@ -56,8 +56,8 @@ EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
56
56
  EsVerticalStackedChartComponent,
57
57
  PageChartSelector,
58
58
  EsAreaChartComponent] });
59
- EsChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, providers: [ChartDispatcher], imports: [[CommonModule]] });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, decorators: [{
59
+ EsChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EsChartsModule, providers: [ChartDispatcher], imports: [CommonModule] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EsChartsModule, decorators: [{
61
61
  type: NgModule,
62
62
  args: [{
63
63
  imports: [CommonModule],
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
66
66
  exports: [...COMPONENTS]
67
67
  }]
68
68
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtY2hhcnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2VzLWNoYXJ0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBR25GLHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsR0FBRztJQUNqQixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsd0JBQXdCO0lBQ3hCLCtCQUErQjtJQUMvQixpQkFBaUI7SUFDakIsb0JBQW9CO0NBQ3JCLENBQUE7QUFRRCxNQUFNLE9BQU8sY0FBYztJQUV6QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTZCO1FBQzFDLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFO2dCQUM3RixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksY0FBYyxFQUFFO2dCQUNqRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7Z0JBQ3RGLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUU7Z0JBQ2xFLHVEQUF1RDtnQkFDdkQsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUU7YUFDM0c7U0FDRixDQUFDO0lBQ0osQ0FBQzs7MkdBZlUsY0FBYzs0R0FBZCxjQUFjLGlCQWhCekIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQUlWLFlBQVksYUFYdEIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQjs0R0FTVCxjQUFjLGFBSGQsQ0FBQyxlQUFlLENBQUMsWUFGbkIsQ0FBQyxZQUFZLENBQUM7MkZBS1osY0FBYztrQkFOMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBFc0NoYXJ0c01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0VzQ2hhYXJ0c01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IENoYXJ0TG9hZGVyIH0gZnJvbSAnLi9tb2RlbHMvY29yZS9DaGFydExvYWRlcic7XHJcbmltcG9ydCB7IENoYXJ0RGlzcGF0Y2hlciB9IGZyb20gJy4vbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuXHJcbmltcG9ydCB7IEVTQ19MT0NBTEUsIEVTQ19BTklNQVRJT05TLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuaW1wb3J0IHsgRXNMaW5lQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1saW5lLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc0FyZWFDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLWFyZWEtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzUGllQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1waWUtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzVmVydGljYWwyRENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtdmVydGljYWwtMmQtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzVmVydGljYWxDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXZlcnRpY2FsLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc1ZlcnRpY2FsU3RhY2tlZENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtdmVydGljYWwtc3RhY2tlZC1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGFnZUNoYXJ0U2VsZWN0b3IgfSBmcm9tIFwiLi9jb21wb25lbnRzL2NoYXJ0LXBhZ2VyL2NoYXJ0LXBhZ2VyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc0NoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtY2hhcnQuY29tcG9uZW50XCI7XHJcblxyXG5cclxuLyoqIENvbXBvbmVudGkgZXNwb3J0YXRpIGRhbCBtb2R1bG8gKi9cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICBFc0NoYXJ0Q29tcG9uZW50LFxyXG4gIEVzTGluZUNoYXJ0Q29tcG9uZW50LFxyXG4gIEVzUGllQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNWZXJ0aWNhbDJEQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNWZXJ0aWNhbENoYXJ0Q29tcG9uZW50LFxyXG4gIEVzVmVydGljYWxTdGFja2VkQ2hhcnRDb21wb25lbnQsXHJcbiAgUGFnZUNoYXJ0U2VsZWN0b3IsXHJcbiAgRXNBcmVhQ2hhcnRDb21wb25lbnRcclxuXVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcclxuICBwcm92aWRlcnM6IFtDaGFydERpc3BhdGNoZXJdLFxyXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRTXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNDaGFydHNNb2R1bGUge1xyXG5cclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFc0NoYXJ0c01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RXNDaGFydHNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBFc0NoYXJ0c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBFU0NfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVNDX0FOSU1BVElPTlMsIHVzZVZhbHVlOiBjb25maWc/LmFuaW1hdGlvbnMgPT0gbnVsbCA/IHRydWUgOiBjb25maWc/LmFuaW1hdGlvbnMgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19USEVNRSwgdXNlVmFsdWU6IGNvbmZpZz8udGhlbWUgfHwgJ3NwaXJpdGVkYXdheScgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19MT0dTLCB1c2VWYWx1ZTogY29uZmlnPy5kZWJ1Z01vZGUgPT0gbnVsbCA/IGZhbHNlIDogY29uZmlnPy5kZWJ1Z01vZGUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEJhc2VBZGFwdGVyLCB1c2VDbGFzczogY29uZmlnPy5hZGFwdGVyIHx8IEJhc2VBZGFwdGVyIH0sXHJcbiAgICAgICAgLy8gU2luZ2xldG9uIGNhdHRpdmEgYnkgRW1hLiBWZXJpZmljYXJlIHN0cmFkZSBtaWdsaW9yaVxyXG4gICAgICAgIHsgcHJvdmlkZTogQ2hhcnRMb2FkZXIsIHVzZVZhbHVlOiBuZXcgQ2hhcnRMb2FkZXIoY29uZmlnPy5kZWJ1Z01vZGUgPT0gbnVsbCA/IGZhbHNlIDogY29uZmlnPy5kZWJ1Z01vZGUpIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtY2hhcnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2VzLWNoYXJ0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBR25GLHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsR0FBRztJQUNqQixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsd0JBQXdCO0lBQ3hCLCtCQUErQjtJQUMvQixpQkFBaUI7SUFDakIsb0JBQW9CO0NBQ3JCLENBQUE7QUFRRCxNQUFNLE9BQU8sY0FBYztJQUV6QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTZCO1FBQzFDLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFO2dCQUM3RixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksY0FBYyxFQUFFO2dCQUNqRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7Z0JBQ3RGLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUU7Z0JBQ2xFLHVEQUF1RDtnQkFDdkQsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUU7YUFDM0c7U0FDRixDQUFDO0lBQ0osQ0FBQzs7NEdBZlUsY0FBYzs2R0FBZCxjQUFjLGlCQWhCekIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQUlWLFlBQVksYUFYdEIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQjs2R0FTVCxjQUFjLGFBSGQsQ0FBQyxlQUFlLENBQUMsWUFGbEIsWUFBWTs0RkFLWCxjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEVzQ2hhcnRzTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvRXNDaGFhcnRzTW9kdWxlQ29uZmlnJztcclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIgfSBmcm9tICcuL21vZGVscy9jb3JlL0NoYXJ0TG9hZGVyJztcclxuaW1wb3J0IHsgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSAnLi9tb2RlbHMvY29yZS9DaGFydERpc3BhdGNoZXInO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5cclxuaW1wb3J0IHsgRVNDX0xPQ0FMRSwgRVNDX0FOSU1BVElPTlMsIEVTQ19USEVNRSwgRVNDX0xPR1MgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5pbXBvcnQgeyBFc0xpbmVDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLWxpbmUtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzQXJlYUNoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtYXJlYS1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNQaWVDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXBpZS1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNWZXJ0aWNhbDJEQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy12ZXJ0aWNhbC0yZC1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNWZXJ0aWNhbENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtdmVydGljYWwtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzVmVydGljYWxTdGFja2VkQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy12ZXJ0aWNhbC1zdGFja2VkLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBQYWdlQ2hhcnRTZWxlY3RvciB9IGZyb20gXCIuL2NvbXBvbmVudHMvY2hhcnQtcGFnZXIvY2hhcnQtcGFnZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1jaGFydC5jb21wb25lbnRcIjtcclxuXHJcblxyXG4vKiogQ29tcG9uZW50aSBlc3BvcnRhdGkgZGFsIG1vZHVsbyAqL1xyXG5jb25zdCBDT01QT05FTlRTID0gW1xyXG4gIEVzQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNMaW5lQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNQaWVDaGFydENvbXBvbmVudCxcclxuICBFc1ZlcnRpY2FsMkRDaGFydENvbXBvbmVudCxcclxuICBFc1ZlcnRpY2FsQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNWZXJ0aWNhbFN0YWNrZWRDaGFydENvbXBvbmVudCxcclxuICBQYWdlQ2hhcnRTZWxlY3RvcixcclxuICBFc0FyZWFDaGFydENvbXBvbmVudFxyXG5dXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVFNdLFxyXG4gIHByb3ZpZGVyczogW0NoYXJ0RGlzcGF0Y2hlcl0sXHJcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc0NoYXJ0c01vZHVsZSB7XHJcblxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEVzQ2hhcnRzTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFc0NoYXJ0c01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEVzQ2hhcnRzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19MT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBFU0NfQU5JTUFUSU9OUywgdXNlVmFsdWU6IGNvbmZpZz8uYW5pbWF0aW9ucyA9PSBudWxsID8gdHJ1ZSA6IGNvbmZpZz8uYW5pbWF0aW9ucyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVNDX1RIRU1FLCB1c2VWYWx1ZTogY29uZmlnPy50aGVtZSB8fCAnc3Bpcml0ZWRhd2F5JyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVNDX0xPR1MsIHVzZVZhbHVlOiBjb25maWc/LmRlYnVnTW9kZSA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmRlYnVnTW9kZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQmFzZUFkYXB0ZXIsIHVzZUNsYXNzOiBjb25maWc/LmFkYXB0ZXIgfHwgQmFzZUFkYXB0ZXIgfSxcclxuICAgICAgICAvLyBTaW5nbGV0b24gY2F0dGl2YSBieSBFbWEuIFZlcmlmaWNhcmUgc3RyYWRlIG1pZ2xpb3JpXHJcbiAgICAgICAgeyBwcm92aWRlOiBDaGFydExvYWRlciwgdXNlVmFsdWU6IG5ldyBDaGFydExvYWRlcihjb25maWc/LmRlYnVnTW9kZSA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmRlYnVnTW9kZSkgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
@@ -80,12 +80,12 @@ export class ChartDispatcher {
80
80
  console.log("@esfaenza/es-charts: " + text);
81
81
  }
82
82
  }
83
- ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
84
- ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher, decorators: [{
83
+ ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ChartDispatcher });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ChartDispatcher, decorators: [{
86
86
  type: Injectable
87
87
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
88
88
  type: Inject,
89
89
  args: [ESC_LOGS]
90
90
  }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUFzQyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJuRDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtjLENBQUM7SUFFeEQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxxQkFBK0I7UUFDekQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxNQUFNLDRDQUE0QyxHQUFHLElBQUksR0FBRyxnRUFBZ0UsQ0FBQztRQUVqSSxJQUFJLENBQUMsR0FBRyxDQUFDLGdFQUFnRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2Y7WUFDSSx1RkFBdUY7WUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMxRyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBEQUEwRCxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7NEdBbkZRLGVBQWUsa0JBZUosUUFBUTtnSEFmbkIsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFnQk0sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBFU0NfTE9HUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGNoZSBzaSBvY2N1cGEgZGVsIGRpc3BhdGNoIGRlbGxlIG9wZXJhemlvbmkgZGkgcmVuZGVyaW5nIGRlaSBncmFmaWNpIHV0aWxpenphbmRvIHVuYSBjb2RhIHBlciBwZXJtZXR0ZXJlIGFkIG9nbmkgZ3JhZmljbyBkaSBhdmVyZSB0ZW1pIGUgbG9jYWxpenphemlvbmUgY3VzdG9tXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGFydERpc3BhdGNoZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kYSBkaSBpbml6aWFsaXp6YXppb25pIGFuY29yYSBkYSBlc2VndWlyZS4gUXVhbmRvIHF1ZXN0YSDDqCB2dW90YSBzaWduaWZpY2EgY2hlIG5lc3N1bm8gc3RhIGNyZWFuZG8gZ3JhZmljaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIEluaXRpYWxpemF0aW9uczogeyBuYW1lOiBzdHJpbmcsIGZ1bmN0aW9uOiBhbnkgfVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0YSBkZWkgZ3JhZmljaSBpbml6aWFsaXp6YXRpIGUgYXR0aXZpIGluIHVuIGRhdG8gbW9tZW50byAodmllbmUgcmVnaXN0cmF0YSBsYSBwcm9wcmlldMOgICoqbmFtZSoqKS4gTm9uIMOoIHBvc3NpYmlsZSByZWdpc3RyYXJlIGR1ZSBncmFmaWNpIGNvbiBsbyBzdGVzc28gaWRlbnRpZmljYXRpdm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXplZEdyYXBoczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChFU0NfTE9HUykgcHJpdmF0ZSBsb2dzOiBib29sZWFuKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdHJhIHVuIGdyYWZpY28gZGEgdmlzdWFsaXp6YXJlIGluc2llbWUgYWxsYSBwcm9wcmlhIGZ1bnppb25lIGRpIGNyZWF6aW9uZS4gUXVlc3QndWx0aW1hIHNhcsOgIGRpZmZlcml0YSBmaW5vIGEgY2hlIHR1dHRpIGkgZ3JhZmljaVxyXG4gICAgICogcHJlY2VkZW50ZW1lbnRlIHJlZ2lzdGF0aSBub24gaGFubm8gZmluaXRvIGxhIGZhc2UgZGkgaW5pemlhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWwgZ3JhZmljbyBkYSByZWdpc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjaGFydENyZWF0aW9uRnVuY3Rpb24gRnVuemlvbmUgY2hlIGZpc2ljYW1lbnRlIGRvdnLDoCBvY2N1cGFyc2kgZGVsbGEgY3JlYXppb25lIGRlbCBncmFmaWNvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGNoYXJ0Q3JlYXRpb25GdW5jdGlvbjogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpICE9IC0xKVxyXG4gICAgICAgICAgICB0aHJvdyBcIkF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBkdXBsaWNhdGUgY2hhcnQgJ1wiICsgbmFtZSArIFwiJy4gTWFrZSBzdXJlIHRoZSAnbmFtZScgcHJvcGVydGllcyBvZiB5b3VyIGNoYXJ0cyBhcmUgdW5pdm9xdWVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RlcmluZyBjaGFydCBjcmVhdGlvbiBmdW5jdGlvbiBleGVjdXRpb24gZm9yIFwiICsgbmFtZSk7XHJcbiAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMucHVzaCh7IG5hbWU6IG5hbWUsIGZ1bmN0aW9uOiBjaGFydENyZWF0aW9uRnVuY3Rpb24gfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogSW5pdGlhbCBkcmFpbiBzdGFydGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlcmVnaXN0cmEgdW4gZ3JhZmljbyBwcmVzZW50ZS4gQ2hpYW1hdGEgZ2VuZXJhbG1lbnRlIGFsIGRpc3Bvc2UgZGVsIGdyYWZpY28gaW4gcXVlc3Rpb25lIHF1YW5kbyBub24gZGV2J2Vzc2VyZSBwacO5IG1vc3RyYXRvIG5lbGxhIHBhZ2luYSBjb3JyZW50ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWwgZ3JhZmljbyBkYSBkZXJlZ2lzdHJhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlcmVnaXN0ZXJHcmFwaChuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLkluaXRpYWxpemVkR3JhcGhzLmluZGV4T2YobmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy9RdWVzdG8gc3VjY2VkZSBxdWFuZG8gc2kgY2VyY2EgZGkgZGlzdHJ1Z2dlcmUgaWwgZ3JhZmljbyBtZW50cmUgc3RhIHZlbmVuZG8gZ3JhZmljYXRvXHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0cmF0aW9uIG1pc3NpbmcgZm9yIGNoYXJ0IFwiICsgbmFtZSArIFwiIGl0IHdhcyBwcm9iYWJseSBkZXN0cm95ZWQgZHVyaW5nIGxvYWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogQ2hhcnQgZGVyZWdpc3RlcmVkIFwiICsgbmFtZSk7XHJcbiAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGVzZWd1ZSBpbiBtYW5pZXJhIHNlcXVlbnppYWxlIGxlIGZ1bnppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVpIGdyYWZpY2kgZmluY2jDqSBwcmVzZW50aSBcclxuICAgICAqIGluIG1vZG8gY2hlIG5lc3N1biBncmFmaWNvIHBvc3NhIGVzc2VyZSBpbml6aWFsaXp6YXRvIGNvbnRlbXBvcmFuZWFtZW50ZSBhZCB1biBhbHRyby5cclxuICAgICAqIFxyXG4gICAgICogUXVlc3RvIMOoIGlsIHB1bnRvIGNoaWF2ZSBjaGUgcGVybWV0dGUgZGkgYXZlcmUgcGVyIG9nbmkgZ3JhZmljbyB0ZW1pIGUgbG9jYWxlIGRpZmZlcmVudGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkcmFpbkluaXRRdWV1ZXMoKSB7XHJcbiAgICAgICAgbGV0IHRvRXhlY3V0ZSA9IHRoaXMuSW5pdGlhbGl6YXRpb25zWzBdO1xyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRXhlY3V0aW5nIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lKTtcclxuXHJcbiAgICAgICAgdG9FeGVjdXRlLmZ1bmN0aW9uKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogaW5pdGlhbGl6YXRpb24gZm9yIGNoYXJ0IFwiICsgdG9FeGVjdXRlLm5hbWUgKyBcIiBpcyBkb25lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLkluaXRpYWxpemVkR3JhcGhzLnB1c2godG9FeGVjdXRlLm5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBGb3VuZCBxdWV1ZWQgaW5pdGlhbGl6YXRpb25zLiBDb250aW51aW5nXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IHF1ZXVlIGlzIG92ZXIsIG5vdGhpbmcgbW9yZSB0byBkb1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2codGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIHRleHQpO1xyXG4gICAgfVxyXG59Il19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUFzQyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJuRDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtjLENBQUM7SUFFeEQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxxQkFBK0I7UUFDekQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxNQUFNLDRDQUE0QyxHQUFHLElBQUksR0FBRyxnRUFBZ0UsQ0FBQztRQUVqSSxJQUFJLENBQUMsR0FBRyxDQUFDLGdFQUFnRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2Y7WUFDSSx1RkFBdUY7WUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMxRyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBEQUEwRCxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7NkdBbkZRLGVBQWUsa0JBZUosUUFBUTtpSEFmbkIsZUFBZTs0RkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFnQk0sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBFU0NfTE9HUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGNoZSBzaSBvY2N1cGEgZGVsIGRpc3BhdGNoIGRlbGxlIG9wZXJhemlvbmkgZGkgcmVuZGVyaW5nIGRlaSBncmFmaWNpIHV0aWxpenphbmRvIHVuYSBjb2RhIHBlciBwZXJtZXR0ZXJlIGFkIG9nbmkgZ3JhZmljbyBkaSBhdmVyZSB0ZW1pIGUgbG9jYWxpenphemlvbmUgY3VzdG9tXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGFydERpc3BhdGNoZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kYSBkaSBpbml6aWFsaXp6YXppb25pIGFuY29yYSBkYSBlc2VndWlyZS4gUXVhbmRvIHF1ZXN0YSDDqCB2dW90YSBzaWduaWZpY2EgY2hlIG5lc3N1bm8gc3RhIGNyZWFuZG8gZ3JhZmljaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIEluaXRpYWxpemF0aW9uczogeyBuYW1lOiBzdHJpbmcsIGZ1bmN0aW9uOiBhbnkgfVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0YSBkZWkgZ3JhZmljaSBpbml6aWFsaXp6YXRpIGUgYXR0aXZpIGluIHVuIGRhdG8gbW9tZW50byAodmllbmUgcmVnaXN0cmF0YSBsYSBwcm9wcmlldMOgICoqbmFtZSoqKS4gTm9uIMOoIHBvc3NpYmlsZSByZWdpc3RyYXJlIGR1ZSBncmFmaWNpIGNvbiBsbyBzdGVzc28gaWRlbnRpZmljYXRpdm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXplZEdyYXBoczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChFU0NfTE9HUykgcHJpdmF0ZSBsb2dzOiBib29sZWFuKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdHJhIHVuIGdyYWZpY28gZGEgdmlzdWFsaXp6YXJlIGluc2llbWUgYWxsYSBwcm9wcmlhIGZ1bnppb25lIGRpIGNyZWF6aW9uZS4gUXVlc3QndWx0aW1hIHNhcsOgIGRpZmZlcml0YSBmaW5vIGEgY2hlIHR1dHRpIGkgZ3JhZmljaVxyXG4gICAgICogcHJlY2VkZW50ZW1lbnRlIHJlZ2lzdGF0aSBub24gaGFubm8gZmluaXRvIGxhIGZhc2UgZGkgaW5pemlhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWwgZ3JhZmljbyBkYSByZWdpc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjaGFydENyZWF0aW9uRnVuY3Rpb24gRnVuemlvbmUgY2hlIGZpc2ljYW1lbnRlIGRvdnLDoCBvY2N1cGFyc2kgZGVsbGEgY3JlYXppb25lIGRlbCBncmFmaWNvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGNoYXJ0Q3JlYXRpb25GdW5jdGlvbjogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpICE9IC0xKVxyXG4gICAgICAgICAgICB0aHJvdyBcIkF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBkdXBsaWNhdGUgY2hhcnQgJ1wiICsgbmFtZSArIFwiJy4gTWFrZSBzdXJlIHRoZSAnbmFtZScgcHJvcGVydGllcyBvZiB5b3VyIGNoYXJ0cyBhcmUgdW5pdm9xdWVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RlcmluZyBjaGFydCBjcmVhdGlvbiBmdW5jdGlvbiBleGVjdXRpb24gZm9yIFwiICsgbmFtZSk7XHJcbiAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMucHVzaCh7IG5hbWU6IG5hbWUsIGZ1bmN0aW9uOiBjaGFydENyZWF0aW9uRnVuY3Rpb24gfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogSW5pdGlhbCBkcmFpbiBzdGFydGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlcmVnaXN0cmEgdW4gZ3JhZmljbyBwcmVzZW50ZS4gQ2hpYW1hdGEgZ2VuZXJhbG1lbnRlIGFsIGRpc3Bvc2UgZGVsIGdyYWZpY28gaW4gcXVlc3Rpb25lIHF1YW5kbyBub24gZGV2J2Vzc2VyZSBwacO5IG1vc3RyYXRvIG5lbGxhIHBhZ2luYSBjb3JyZW50ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWwgZ3JhZmljbyBkYSBkZXJlZ2lzdHJhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlcmVnaXN0ZXJHcmFwaChuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLkluaXRpYWxpemVkR3JhcGhzLmluZGV4T2YobmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy9RdWVzdG8gc3VjY2VkZSBxdWFuZG8gc2kgY2VyY2EgZGkgZGlzdHJ1Z2dlcmUgaWwgZ3JhZmljbyBtZW50cmUgc3RhIHZlbmVuZG8gZ3JhZmljYXRvXHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0cmF0aW9uIG1pc3NpbmcgZm9yIGNoYXJ0IFwiICsgbmFtZSArIFwiIGl0IHdhcyBwcm9iYWJseSBkZXN0cm95ZWQgZHVyaW5nIGxvYWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogQ2hhcnQgZGVyZWdpc3RlcmVkIFwiICsgbmFtZSk7XHJcbiAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGVzZWd1ZSBpbiBtYW5pZXJhIHNlcXVlbnppYWxlIGxlIGZ1bnppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVpIGdyYWZpY2kgZmluY2jDqSBwcmVzZW50aSBcclxuICAgICAqIGluIG1vZG8gY2hlIG5lc3N1biBncmFmaWNvIHBvc3NhIGVzc2VyZSBpbml6aWFsaXp6YXRvIGNvbnRlbXBvcmFuZWFtZW50ZSBhZCB1biBhbHRyby5cclxuICAgICAqIFxyXG4gICAgICogUXVlc3RvIMOoIGlsIHB1bnRvIGNoaWF2ZSBjaGUgcGVybWV0dGUgZGkgYXZlcmUgcGVyIG9nbmkgZ3JhZmljbyB0ZW1pIGUgbG9jYWxlIGRpZmZlcmVudGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkcmFpbkluaXRRdWV1ZXMoKSB7XHJcbiAgICAgICAgbGV0IHRvRXhlY3V0ZSA9IHRoaXMuSW5pdGlhbGl6YXRpb25zWzBdO1xyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRXhlY3V0aW5nIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lKTtcclxuXHJcbiAgICAgICAgdG9FeGVjdXRlLmZ1bmN0aW9uKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogaW5pdGlhbGl6YXRpb24gZm9yIGNoYXJ0IFwiICsgdG9FeGVjdXRlLm5hbWUgKyBcIiBpcyBkb25lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLkluaXRpYWxpemVkR3JhcGhzLnB1c2godG9FeGVjdXRlLm5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBGb3VuZCBxdWV1ZWQgaW5pdGlhbGl6YXRpb25zLiBDb250aW51aW5nXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IHF1ZXVlIGlzIG92ZXIsIG5vdGhpbmcgbW9yZSB0byBkb1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2codGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIHRleHQpO1xyXG4gICAgfVxyXG59Il19
@@ -6,11 +6,11 @@ export class Vertical2DChartData {
6
6
  * Costruttore
7
7
  *
8
8
  * @param {{ name: string; values: KeyValue[]; }[]} groups Gruppi di valori raggruppati per nome
9
- * @param {{ color: string }[]} colorInfos Lista dei colori da utilizzare. Vanno a sovrascrivere quelli di default di amcharts
9
+ * @param {{ color: string }[]} colorinfos Lista dei colori da utilizzare. Vanno a sovrascrivere quelli di default di amcharts
10
10
  */
11
- constructor(groups = [], colorInfos) {
11
+ constructor(groups = [], colorinfos) {
12
12
  this.groups = groups;
13
- this.colorInfos = colorInfos;
13
+ this.colorinfos = colorinfos;
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9kYXRhL1ZlcnRpY2FsMkRDaGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTVCOzs7OztPQUtHO0lBQ0gsWUFBbUIsU0FBaUQsRUFBRSxFQUFTLFVBQWdDO1FBQTVGLFdBQU0sR0FBTixNQUFNLENBQTZDO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7SUFBSSxDQUFDO0NBQ3ZIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuL2Jhc2UvS2V5VmFsdWUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGkgcmVsYXRpdmkgYSB1biBncmFmaWNvIGRpIHRpcG8gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0RGF0YSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgbmFtZTogc3RyaW5nOyB2YWx1ZXM6IEtleVZhbHVlW107IH1bXX0gZ3JvdXBzIEdydXBwaSBkaSB2YWxvcmkgcmFnZ3J1cHBhdGkgcGVyIG5vbWVcclxuICAgICAqIEBwYXJhbSB7eyBjb2xvcjogc3RyaW5nIH1bXX0gY29sb3JJbmZvcyBMaXN0YSBkZWkgY29sb3JpIGRhIHV0aWxpenphcmUuIFZhbm5vIGEgc292cmFzY3JpdmVyZSBxdWVsbGkgZGkgZGVmYXVsdCBkaSBhbWNoYXJ0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JvdXBzOiB7IG5hbWU6IHN0cmluZywgdmFsdWVzOiBLZXlWYWx1ZVtdIH1bXSA9IFtdLCBwdWJsaWMgY29sb3JJbmZvcz86IHsgY29sb3I6IHN0cmluZyB9W10pIHsgfVxyXG59Il19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9kYXRhL1ZlcnRpY2FsMkRDaGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTVCOzs7OztPQUtHO0lBQ0gsWUFBbUIsU0FBaUQsRUFBRSxFQUFTLFVBQWdDO1FBQTVGLFdBQU0sR0FBTixNQUFNLENBQTZDO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7SUFBSSxDQUFDO0NBQ3ZIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuL2Jhc2UvS2V5VmFsdWUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGkgcmVsYXRpdmkgYSB1biBncmFmaWNvIGRpIHRpcG8gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0RGF0YSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgbmFtZTogc3RyaW5nOyB2YWx1ZXM6IEtleVZhbHVlW107IH1bXX0gZ3JvdXBzIEdydXBwaSBkaSB2YWxvcmkgcmFnZ3J1cHBhdGkgcGVyIG5vbWVcclxuICAgICAqIEBwYXJhbSB7eyBjb2xvcjogc3RyaW5nIH1bXX0gY29sb3JpbmZvcyBMaXN0YSBkZWkgY29sb3JpIGRhIHV0aWxpenphcmUuIFZhbm5vIGEgc292cmFzY3JpdmVyZSBxdWVsbGkgZGkgZGVmYXVsdCBkaSBhbWNoYXJ0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JvdXBzOiB7IG5hbWU6IHN0cmluZywgdmFsdWVzOiBLZXlWYWx1ZVtdIH1bXSA9IFtdLCBwdWJsaWMgY29sb3JpbmZvcz86IHsgY29sb3I6IHN0cmluZyB9W10pIHsgfVxyXG59Il19
@@ -127,14 +127,8 @@ export class LineChartService {
127
127
  let seriesToPush = [];
128
128
  let seriesColors = [];
129
129
  let defaultIndex = 0;
130
- //-- Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
131
- if (this.singleDataSet) {
132
- this.ChartInstance.data = this.generateSingleDataset(dataConverted);
133
- ;
134
- dateAxis.cursorTooltipEnabled = false;
135
- }
136
- //-- Fine generazione
137
- dataConverted.series.forEach((s, index) => {
130
+ // Ordinamento dei dati se serve
131
+ dataConverted.series.forEach((s) => {
138
132
  if (s.values[0] && !(s.values[0].d instanceof Date)) {
139
133
  for (let v = 0; v < s.values.length; v++)
140
134
  s.values[v].d = new Date(s.values[v].d);
@@ -151,6 +145,14 @@ export class LineChartService {
151
145
  }
152
146
  if (!correctOrder)
153
147
  s.values.sort((d1, d2) => d1.d.getTime() - d2.d.getTime());
148
+ });
149
+ // Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
150
+ if (this.singleDataSet) {
151
+ this.ChartInstance.data = this.generateSingleDataset(dataConverted);
152
+ ;
153
+ dateAxis.cursorTooltipEnabled = false;
154
+ }
155
+ dataConverted.series.forEach((s, index) => {
154
156
  let fill = s.fill != null && s.fill != undefined ? s.fill : (settings?.Fill ?? false);
155
157
  let series = settings?.Step ? new am4charts.StepLineSeries() : new am4charts.LineSeries();
156
158
  series.dataFields.valueY = "v" + (this.singleDataSet ? index : "");
@@ -176,7 +178,7 @@ export class LineChartService {
176
178
  series.tooltip.hiddenState.transitionDuration = 0;
177
179
  //Utilizzo il mio dateService per la formattazione della data in modo che non debba mai gestire n formati fra n librerie... bellissimo
178
180
  series.dateFormatter.format = (source) => {
179
- if (interval && finalInstant) {
181
+ if (interval && finalInstant && ["hour", "minute", "second"].includes(interval.timeunit)) {
180
182
  let timepart = null;
181
183
  switch (interval.timeunit) {
182
184
  case "hour":
@@ -193,7 +195,7 @@ export class LineChartService {
193
195
  return this.dateExts.adjustDateToFinalInstant(source, timepart, interval ? interval.timeunit == "second" : false);
194
196
  }
195
197
  else
196
- return this.dateExts.getFormatted(source, false, interval ? interval.timeunit == "second" : false);
198
+ return this.dateExts.getFormatted(source, interval ? ["day", "week", "month", "year"].includes(interval.timeunit) : false, interval ? interval.timeunit == "second" : false);
197
199
  };
198
200
  series.adapter.add("tooltipText", () => {
199
201
  var text = "[bold]{dateX.formatDate()}[/]\n";
@@ -362,4 +364,4 @@ export class LineChartService {
362
364
  this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
363
365
  }
364
366
  }
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVN6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVB0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBc1l2Qyx1R0FBdUc7UUFDdkcsK0RBQStEO1FBQy9ELGNBQWM7UUFDTixvQkFBZSxHQUE2QixFQUFFLENBQUM7SUF2WW1CLENBQUM7SUFLM0U7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUNwRSxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENB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QUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJO2dCQUNMLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFNRCxjQUFjO0lBQ04sUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUFjLEVBQUUsWUFBb0I7UUFDN0QsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQywrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcblxyXG5pbXBvcnQgeyBMaW1pdCB9IGZyb20gXCIuLi9tb2RlbHMvZGF0YS9iYXNlL0xpbWl0XCI7XHJcbmltcG9ydCB7IExpbmVDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9MaW5lQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvTGluZUNoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gTGluZUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGluZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgRGF0YUdyb3VwQnVja2V0U2l6ZTogbnVtYmVyID0gMTUwMDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIE9wYWNpdHlPblNlbGVjdGVkOiBudW1iZXIgPSAwLjM7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBzaW5nbGVEYXRhU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyLCBwcml2YXRlIGRhdGVFeHRzOiBEYXRlU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqIFJpZmVpcm1lbnRvIGludGVybm8gYWxsJ2Fzc2UgZGVsbGUgRGF0ZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuICAgIHByaXZhdGUgZGF0ZUF4aXM6IGFtNGNoYXJ0cy5EYXRlQXhpcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBMaW5lQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IExpbmVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBsZXQgdGhyZXNob2xkID0gc2V0dGluZ3MuRGF0YUdyb3VwaW5nVGhyZXNob2xkID8/IDMwMDA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVEYXRhU2V0ID0gc2V0dGluZ3MuTWVyZ2VEYXRhc2V0cyA/PyBmYWxzZTtcclxuICAgICAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgICAgICBsZXQgZGF0YVNob3VsZEJlR3JvdXBlZCA9IE1hdGgubWF4KC4uLmRhdGFDb252ZXJ0ZWQuc2VyaWVzLm1hcCh0ID0+IHQudmFsdWVzLmxlbmd0aCkpID4gdGhyZXNob2xkO1xyXG4gICAgICAgIGxldCBzaG93VGltZWxpbmUgPSBzZXR0aW5ncy5UaW1lbGluZSB8fCBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGxldCBzZXJpZXNXaXRoSW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLnNlcmllcy5zb21lKHQgPT4gdC5pbnRlcnZhbCk7XHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2VyaWVzV2l0aEludGVydmFsID8gZGF0YUNvbnZlcnRlZC5zZXJpZXMuZmluZCh0ID0+IHQuaW50ZXJ2YWwpLmludGVydmFsIDogbnVsbDtcclxuICAgICAgICBsZXQgZ2Fwc0FsbG93ZWQgPSBzZXR0aW5ncz8uQWxsb3dHYXBzID09IG51bGwgPyBzZXJpZXNXaXRoSW50ZXJ2YWwgOiBzZXR0aW5ncz8uQWxsb3dHYXBzO1xyXG4gICAgICAgIGxldCBmaW5hbEluc3RhbnQgPSBzZXR0aW5ncz8uRmluYWxJbnN0YW50cyA/PyB0cnVlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBsZXQgbGltaXROdWxsT3JVbmRlZiA9IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gbnVsbCB8fCBkYXRhQ29udmVydGVkLmxpbWl0ID09IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgbGltaXRzID0gbGltaXROdWxsT3JVbmRlZiA/IFtdIDogISg8YW55PmRhdGFDb252ZXJ0ZWQubGltaXQpLmxlbmd0aCA/IFs8TGltaXQ+ZGF0YUNvbnZlcnRlZC5saW1pdF0gOiA8TGltaXRbXT5kYXRhQ29udmVydGVkLmxpbWl0O1xyXG4gICAgICAgIGlmIChsaW1pdHMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbWl0cy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbGltaXQgPSBsaW1pdHNbaV1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kVmFsdWUgPSBsaW1pdC51cHBlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0LmZpbGxDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5jb250ZW50cy5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LmZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLmZpbGwgPSByYW5nZS5jb250ZW50cy5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC5sb3dlciA9PSBudWxsIHx8IGxpbWl0Lmxvd2VyID09IHVuZGVmaW5lZCkgJiYgbGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQudXBwZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQudXBwZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgobGltaXQudXBwZXIgPT0gbnVsbCB8fCBsaW1pdC51cHBlciA9PSB1bmRlZmluZWQpICYmIGxpbWl0Lmxvd2VyICE9IG51bGwgJiYgbGltaXQubG93ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS52YWx1ZSA9IGxpbWl0Lmxvd2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0Lmxvd2VybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC5sb3dlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuXHJcbiAgICAgICAgLy8gUGVyIGNvbWF0aWJpbGl0w6AgY29sIGNvZGljZSBzY3JpdHRvIHF1YW5kbyBub24gZXJhIGEgbGl2ZWxsbyBnbG9iYWxlLCBtaSBzY29jY2lhIHNvc3RpdHVpcmVcclxuICAgICAgICBsZXQgZGF0ZUF4aXMgPSB0aGlzLmRhdGVBeGlzO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclggPSBuZXcgYW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllc1RvUHVzaCA9IFtdO1xyXG4gICAgICAgIGxldCBzZXJpZXNDb2xvcnM6IGFtNGNvcmUuQ29sb3JbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG5cclxuICAgICAgICAvLy0tIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8tLSBGaW5lIGdlbmVyYXppb25lXHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzLnZhbHVlc1swXSAmJiAhKHMudmFsdWVzWzBdLmQgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKylcclxuICAgICAgICAgICAgICAgICAgICBzLnZhbHVlc1t2XS5kID0gbmV3IERhdGUocy52YWx1ZXNbdl0uZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjb3JyZWN0T3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgcHJldkRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZEYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZEYXRlID0gcy52YWx1ZXNbdl0uZDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy52YWx1ZXNbdl0uZCA8IHByZXZEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RPcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghY29ycmVjdE9yZGVyKVxyXG4gICAgICAgICAgICAgICAgcy52YWx1ZXMuc29ydCgoZDEsIGQyKSA9PiBkMS5kLmdldFRpbWUoKSAtIGQyLmQuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gcy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0ID0gcy51b207XHJcbiAgICAgICAgICAgIHNlcmllcy5uYW1lID0gcy5uYW1lO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSBzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuY29ubmVjdCA9ICFnYXBzQWxsb3dlZDtcclxuICAgICAgICAgICAgc2VyaWVzLm1pbkJ1bGxldERpc3RhbmNlID0gMTA7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwVGV4dCA9IHRoaXMuc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBzLm5hbWUgPyBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIiA6IFwiW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbFxyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBmYWxzZSwgaW50ZXJ2YWwgPyBpbnRlcnZhbC50aW1ldW5pdCA9PSBcInNlY29uZFwiIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICg8YW55PnNlcmllcy5hZGFwdGVyKS5hZGQoXCJ0b29sdGlwVGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBcIltib2xkXXtkYXRlWC5mb3JtYXREYXRlKCl9Wy9dXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1b20gPSBcIiBbZm9udC1zdHlsZTogaXRhbGljXVwiICsgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0IHx8IFwiXCIgKyBcIlsvXVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IFwiW1wiICsgKDxhbnk+aXRlbS5zdHJva2UpLmhleCArIFwiXeKXj1svXSBcIiArIChpdGVtLm5hbWUgPyAoaXRlbS5uYW1lICsgXCI6IFwiKSA6IFwiXCIpICsgXCJbYm9sZF17XCIgKyBpdGVtLmRhdGFGaWVsZHMudmFsdWVZICsgXCJ9Wy9dXCIgKyB1b20gKyBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGEgPSBzLnZhbHVlcztcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50ID0gc2VyaWVzLnNlZ21lbnRzLnRlbXBsYXRlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhvdmVyU3RhdGUgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaG92ZXJTdGF0ZS5wcm9wZXJ0aWVzLnN0cm9rZVdpZHRoID0gKHNldHRpbmdzPy5TdHJva2VTaXplID8/IDEpICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBkaW1tZWQgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgIGRpbW1lZC5wcm9wZXJ0aWVzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZGFkYWRhXCIpO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBzZXJpZSBoYSB1biBjb2xvcmUsIHVzbyBxdWVsbG8sIGFsdHJpbWVudGkgcGVzY28gZGFpIGNvbG9yaSBkaSBkZWZhdWx0IGFuZGFuZG8gaW4gb3JkaW5lXHJcbiAgICAgICAgICAgIGlmIChzLmNvbG9yKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goYW00Y29yZS5jb2xvcihzLmNvbG9yKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0Lmxlbmd0aF0pXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VyaWVzVG9QdXNoLnB1c2goc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBzZXJpZXNDb2xvcnM7XHJcbiAgICAgICAgLy9TY3Jpdm8gbGUgc2VyaWUgbmVsIGdyYWZpY29cclxuICAgICAgICBzZXJpZXNUb1B1c2guZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXI+Q2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYKS5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnNjcm9sbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9XCI7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3ZlclwiLCAoZXZlbnQpID0+IHsgdGhpcy5wcm9jZXNzT3Zlcig8YW00Y2hhcnRzLkxpbmVTZXJpZXM+ZXZlbnQudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3V0XCIsICgpID0+IHsgdGhpcy5wcm9jZXNzT3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuXHJcbiAgICAgICAgLy9Qcm92ZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IuZXZlbnRzLm9uKFwiY3Vyc29ycG9zaXRpb25jaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIC8vICAgICAvL3ZhciB2YWx1ZSA9IGRhdGVBeGlzLnBvc2l0aW9uVG9EYXRlKGRhdGVBeGlzLnRvQXhpc1Bvc2l0aW9uKGV2LnRhcmdldC54UG9zaXRpb24pKTtcclxuICAgICAgICAvLyAgICAgdmFyIGR0ID0gZGF0ZUF4aXMuc2VyaWVzLnZhbHVlcy5maW5kKHQgPT4gdC5kYXRhSXRlbS52YWx1ZXMuZGF0ZVgpO1xyXG4gICAgICAgIC8vICAgICBpZiAoZHQgJiYgZHQuZGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGR0LmRhdGFJdGVtLnZhbHVlcyk7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBkdDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci55QXhpcyA9IHlBeGlzO1xyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVBeGlzLnpvb21Ub0RhdGVzKGZyb20sIHRvLCB0cnVlLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IExpbmVDaGFydERhdGEgfCBhbnkpIHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5nZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YUNvbnZlcnRlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5hZGREYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBcIkltcG9zc2liaWxlIGFnZ2lvcm5hcmUgaSBkYXRpIHNlbnphIHVuaXJlIGlsIGRhdGFzZXQuIFNpIHByZWdhIGRpIGltcG9zdGFyZSBbTWVyZ2VEYXRhc2V0c10gYSB0cnVlXCJcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBhcnRlbmRvIGRhIGRhdGkgZGl2aXNpIHBlciBzZXJpdWUgZ2VuZXJhIHVuIGRhdGFzZXQgdW5pdG8gY29uIGxhIGRhdGEgY29tZSBjaGlhdmUgZSBpIHZhcmkgdmFsb3JpIGRvcG8gKi9cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGE6IExpbmVDaGFydERhdGEpOiBhbnkge1xyXG4gICAgICAgIGxldCBkdG86IHsgW2luZGV4OiBudW1iZXJdOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9IH0gPSB7fTtcclxuICAgICAgICBkYXRhLnNlcmllcy5mb3JFYWNoKCh2cywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhaXRlbSA9IHZzLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleGVyID0gbmV3IERhdGUoZGF0YWl0ZW0uZCkudmFsdWVPZigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghZHRvW2luZGV4ZXJdKVxyXG4gICAgICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXVsndicgKyBpbmRleF0gPSBkYXRhaXRlbS52O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhciBkYXRlcyA9IE9iamVjdC5rZXlzKGR0byk7XHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlczogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IGR0b1tkYXRlc1tpXV07XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0geyBkOiBuZXcgRGF0ZShwYXJzZUludChkYXRlc1tpXSkpIH1cclxuXHJcbiAgICAgICAgICAgIHZhciB2YWxzID0gT2JqZWN0LmtleXModmFsdWVzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHZhbHMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VyaWVzID0gdmFsc1tpaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgc2luZ2xlVmFsID0gdmFsdWVzW3Nlcmllc107XHJcbiAgICAgICAgICAgICAgICBpdGVtW3Nlcmllc10gPSBzaW5nbGVWYWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZWQoZXYsIHNldHRpbmdzKSB7XHJcbiAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBheGlzID0gPGFtNGNoYXJ0cy5EYXRlQXhpcz5ldi50YXJnZXRcclxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdGlhbCA9IGF4aXMubWluID09IGF4aXMubWluWm9vbWVkICYmIGF4aXMubWF4ID09IGF4aXMubWF4Wm9vbWVkO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgICAgICAgIH0sIDE1MClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc092ZXIoaG92ZXJlZFNlcmllczogYW00Y2hhcnRzLkxpbmVTZXJpZXMpIHtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnRvRnJvbnQoKTtcclxuICAgICAgICBsZXQgZmlsbCA9IGhvdmVyZWRTZXJpZXMuc3RhY2tlZDtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgaG92ZXJlZFNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VyaWVzICE9IGhvdmVyZWRTZXJpZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzT3V0KCkge1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgICAgICg8YW00Y2hhcnRzLkxpbmVTZXJpZXM+c2VyaWVzKS5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGVmYXVsdFwiKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmxlZ2VuZERhdGFJdGVtLm1hcmtlci5jaGlsZHJlbi5nZXRJbmRleCgxKS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gICAgLy9UT0RPOiBzcG9zdGFybGEgaW4gdW4gbWV0b2RvIGRpIHV0aWxpdMOgIChlc2ZhZW56YS9leHRlbnNpb25zKVxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgZnVuemlvbmUgY2hlIHZ1b2xlIGVzZWd1aXJlIHJpcHVsaXNjbyBxdWVsIHRpbWVvdXRcclxuICAgICAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IG51bGw7IH0sIHRocm90dGxlVGltZSk7XHJcbiAgICB9XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVN6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVB0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBd1l2Qyx1R0FBdUc7UUFDdkcsK0RBQStEO1FBQy9ELGNBQWM7UUFDTixvQkFBZSxHQUE2QixFQUFFLENBQUM7SUF6WW1CLENBQUM7SUFLM0U7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUNwRSxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENB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RUQsY0FBYztJQUNOLFVBQVU7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ0gsTUFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUk7b0JBQ0wsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUk7Z0JBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU1ELGNBQWM7SUFDTixRQUFRLENBQUMsRUFBVSxFQUFFLElBQWMsRUFBRSxZQUFvQjtRQUM3RCw2REFBNkQ7UUFDN0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNDLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuXHJcbmltcG9ydCB7IExpbWl0IH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL2Jhc2UvTGltaXRcIjtcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9MaW5lQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEYXRhR3JvdXBCdWNrZXRTaXplOiBudW1iZXIgPSAxNTAwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uU2VsZWN0ZWQ6IG51bWJlciA9IDAuMztcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGFTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKiogUmlmZWlybWVudG8gaW50ZXJubyBhbGwnYXNzZSBkZWxsZSBEYXRlIHBlciBzZW1wbGljaXTDoCAqL1xyXG4gICAgcHJpdmF0ZSBkYXRlQXhpczogYW00Y2hhcnRzLkRhdGVBeGlzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIExpbmVDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogTGluZUNoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG4gICAgICAgIGxldCB0aHJlc2hvbGQgPSBzZXR0aW5ncy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQgPz8gMzAwMDtcclxuICAgICAgICB0aGlzLnNpbmdsZURhdGFTZXQgPSBzZXR0aW5ncy5NZXJnZURhdGFzZXRzID8/IGZhbHNlO1xyXG4gICAgICAgIGxldCBzaG93VGlja3MgPSBzZXR0aW5ncy5TaG93VGlja3MgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uU2hvd1RpY2tzO1xyXG4gICAgICAgIGxldCBkYXRhU2hvdWxkQmVHcm91cGVkID0gTWF0aC5tYXgoLi4uZGF0YUNvbnZlcnRlZC5zZXJpZXMubWFwKHQgPT4gdC52YWx1ZXMubGVuZ3RoKSkgPiB0aHJlc2hvbGQ7XHJcbiAgICAgICAgbGV0IHNob3dUaW1lbGluZSA9IHNldHRpbmdzLlRpbWVsaW5lIHx8IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgbGV0IHNlcmllc1dpdGhJbnRlcnZhbCA9IGRhdGFDb252ZXJ0ZWQuc2VyaWVzLnNvbWUodCA9PiB0LmludGVydmFsKTtcclxuICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXJpZXNXaXRoSW50ZXJ2YWwgPyBkYXRhQ29udmVydGVkLnNlcmllcy5maW5kKHQgPT4gdC5pbnRlcnZhbCkuaW50ZXJ2YWwgOiBudWxsO1xyXG4gICAgICAgIGxldCBnYXBzQWxsb3dlZCA9IHNldHRpbmdzPy5BbGxvd0dhcHMgPT0gbnVsbCA/IHNlcmllc1dpdGhJbnRlcnZhbCA6IHNldHRpbmdzPy5BbGxvd0dhcHM7XHJcbiAgICAgICAgbGV0IGZpbmFsSW5zdGFudCA9IHNldHRpbmdzPy5GaW5hbEluc3RhbnRzID8/IHRydWU7XHJcblxyXG4gICAgICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICAgICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICAgICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5NaW4pXHJcbiAgICAgICAgICAgIHlBeGlzLm1pbiA9IHNldHRpbmdzLk1pbjtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWF4KVxyXG4gICAgICAgICAgICB5QXhpcy5tYXggPSBzZXR0aW5ncy5NYXg7XHJcblxyXG4gICAgICAgIGxldCBsaW1pdE51bGxPclVuZGVmID0gZGF0YUNvbnZlcnRlZC5saW1pdCA9PSBudWxsIHx8IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGxldCBsaW1pdHMgPSBsaW1pdE51bGxPclVuZGVmID8gW10gOiAhKDxhbnk+ZGF0YUNvbnZlcnRlZC5saW1pdCkubGVuZ3RoID8gWzxMaW1pdD5kYXRhQ29udmVydGVkLmxpbWl0XSA6IDxMaW1pdFtdPmRhdGFDb252ZXJ0ZWQubGltaXQ7XHJcbiAgICAgICAgaWYgKGxpbWl0cy5sZW5ndGggPiAwKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGltaXRzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBsaW1pdCA9IGxpbWl0c1tpXVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsaW1pdC51cHBlciAhPSBudWxsICYmIGxpbWl0LnVwcGVyICE9IHVuZGVmaW5lZCAmJiBsaW1pdC5sb3dlciAhPSBudWxsICYmIGxpbWl0Lmxvd2VyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHlBeGlzLmF4aXNSYW5nZXMuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBsaW1pdC5sb3dlcjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmRWYWx1ZSA9IGxpbWl0LnVwcGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobGltaXQuZmlsbENvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQuZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuY29udGVudHMuZmlsbCA9IHJhbmdlLmNvbnRlbnRzLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0LnVwcGVybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKGxpbWl0Lmxvd2VyID09IG51bGwgfHwgbGltaXQubG93ZXIgPT0gdW5kZWZpbmVkKSAmJiBsaW1pdC51cHBlciAhPSBudWxsICYmIGxpbWl0LnVwcGVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHlBeGlzLmF4aXNSYW5nZXMuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBsaW1pdC51cHBlcjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC51cHBlciA9PSBudWxsIHx8IGxpbWl0LnVwcGVyID09IHVuZGVmaW5lZCkgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQubG93ZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQubG93ZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG5cclxuICAgICAgICAvLyBQZXIgY29tYXRpYmlsaXTDoCBjb2wgY29kaWNlIHNjcml0dG8gcXVhbmRvIG5vbiBlcmEgYSBsaXZlbGxvIGdsb2JhbGUsIG1pIHNjb2NjaWEgc29zdGl0dWlyZVxyXG4gICAgICAgIGxldCBkYXRlQXhpcyA9IHRoaXMuZGF0ZUF4aXM7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5YQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzaG93VGlja3MpIHtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjNDk1QzQzXCIpO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxlbmd0aCA9IDEwO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDUwO1xyXG4gICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLmdyaWQudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIGRhdGVBeGlzLm1pblpvb21Db3VudCA9IDU7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBEYXRhID0gZGF0YVNob3VsZEJlR3JvdXBlZDtcclxuICAgICAgICBkYXRlQXhpcy5ncm91cENvdW50ID0gc2V0dGluZ3MuRGF0YUdyb3VwQnVja2V0U2l6ZSA/PyB0aGlzLkRhdGFHcm91cEJ1Y2tldFNpemU7XHJcblxyXG4gICAgICAgIC8vU2UgaG8gYWxtZW5vIHVuYSBzZXJpZSBhZCBpbnRlcnZhbGxvIGUgaSBzZXR0aW5ncyBub24gbWkgaW1wZWRpc2Nvbm8gZXNwbGljaXRhbWVudGUgZGkgdXNhcmUgaSBnYXBzLCB2aXN1YWxpenpvIGkgZGF0aSBjb2wgZ2FwXHJcblxyXG4gICAgICAgIGlmIChnYXBzQWxsb3dlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXNlcmllc1dpdGhJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlBlciB1dGlsaXp6YXJlIGxhIGZ1bnppb25hbGl0w6AgZGVpIGdhcCDDqCBvYmJsaWdhdG9yaW8gZGVmaW5pcmUgdW4gaW50ZXJ2YWxsbyBuZWxsZSBzZXJpZSBkZWwgZ3JhZmljb1wiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBkYXRlQXhpcy5iYXNlSW50ZXJ2YWwgPSB7IGNvdW50OiBpbnRlcnZhbC5jb3VudCwgdGltZVVuaXQ6IGludGVydmFsLnRpbWV1bml0IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaG93VGltZWxpbmUpXHJcbiAgICAgICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2Nyb2xsYmFyWCA9IG5ldyBhbTRjaGFydHMuWFlDaGFydFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgICBsZXQgc2VyaWVzVG9QdXNoID0gW107XHJcbiAgICAgICAgbGV0IHNlcmllc0NvbG9yczogYW00Y29yZS5Db2xvcltdID0gW107XHJcbiAgICAgICAgbGV0IGRlZmF1bHRJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIC8vIE9yZGluYW1lbnRvIGRlaSBkYXRpIHNlIHNlcnZlXHJcbiAgICAgICAgZGF0YUNvbnZlcnRlZC5zZXJpZXMuZm9yRWFjaCgocykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocy52YWx1ZXNbMF0gJiYgIShzLnZhbHVlc1swXS5kIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcy52YWx1ZXMubGVuZ3RoOyB2KyspXHJcbiAgICAgICAgICAgICAgICAgICAgcy52YWx1ZXNbdl0uZCA9IG5ldyBEYXRlKHMudmFsdWVzW3ZdLmQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgY29ycmVjdE9yZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHByZXZEYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2RGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBwcmV2RGF0ZSA9IHMudmFsdWVzW3ZdLmQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMudmFsdWVzW3ZdLmQgPCBwcmV2RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0T3JkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvcnJlY3RPcmRlcilcclxuICAgICAgICAgICAgICAgIHMudmFsdWVzLnNvcnQoKGQxLCBkMikgPT4gZDEuZC5nZXRUaW1lKCkgLSBkMi5kLmdldFRpbWUoKSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gcy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0ID0gcy51b207XHJcbiAgICAgICAgICAgIHNlcmllcy5uYW1lID0gcy5uYW1lO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSBzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuY29ubmVjdCA9ICFnYXBzQWxsb3dlZDtcclxuICAgICAgICAgICAgc2VyaWVzLm1pbkJ1bGxldERpc3RhbmNlID0gMTA7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwVGV4dCA9IHRoaXMuc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBzLm5hbWUgPyBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIiA6IFwiW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbFxyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQgJiYgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiXS5pbmNsdWRlcyhpbnRlcnZhbC50aW1ldW5pdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBpbnRlcnZhbCA/IFtcImRheVwiLCBcIndlZWtcIiwgXCJtb250aFwiLCBcInllYXJcIl0uaW5jbHVkZXMoaW50ZXJ2YWwudGltZXVuaXQpIDogZmFsc2UsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAoPGFueT5zZXJpZXMuYWRhcHRlcikuYWRkKFwidG9vbHRpcFRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gXCJbYm9sZF17ZGF0ZVguZm9ybWF0RGF0ZSgpfVsvXVxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdW9tID0gXCIgW2ZvbnQtc3R5bGU6IGl0YWxpY11cIiArICg8YW55PnNlcmllcy5kYXRhRmllbGRzKS5tZWFzdXJlVW5pdCB8fCBcIlwiICsgXCJbL11cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSBcIltcIiArICg8YW55Pml0ZW0uc3Ryb2tlKS5oZXggKyBcIl3il49bL10gXCIgKyAoaXRlbS5uYW1lID8gKGl0ZW0ubmFtZSArIFwiOiBcIikgOiBcIlwiKSArIFwiW2JvbGRde1wiICsgaXRlbS5kYXRhRmllbGRzLnZhbHVlWSArIFwifVsvXVwiICsgdW9tICsgXCJcXG5cIjtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRhID0gcy52YWx1ZXM7XHJcblxyXG4gICAgICAgICAgICBsZXQgc2VnbWVudCA9IHNlcmllcy5zZWdtZW50cy50ZW1wbGF0ZTtcclxuXHJcbiAgICAgICAgICAgIGxldCBob3ZlclN0YXRlID0gc2VnbWVudC5zdGF0ZXMuY3JlYXRlKFwiaG92ZXJcIik7XHJcbiAgICAgICAgICAgIGhvdmVyU3RhdGUucHJvcGVydGllcy5zdHJva2VXaWR0aCA9IChzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxKSArIDE7XHJcblxyXG4gICAgICAgICAgICBsZXQgZGltbWVkID0gc2VnbWVudC5zdGF0ZXMuY3JlYXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICBkaW1tZWQucHJvcGVydGllcy5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiI2RhZGFkYVwiKTtcclxuXHJcbiAgICAgICAgICAgIC8vU2UgbGEgc2VyaWUgaGEgdW4gY29sb3JlLCB1c28gcXVlbGxvLCBhbHRyaW1lbnRpIHBlc2NvIGRhaSBjb2xvcmkgZGkgZGVmYXVsdCBhbmRhbmRvIGluIG9yZGluZVxyXG4gICAgICAgICAgICBpZiAocy5jb2xvcilcclxuICAgICAgICAgICAgICAgIHNlcmllc0NvbG9ycy5wdXNoKGFtNGNvcmUuY29sb3Iocy5jb2xvcikpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNlcmllc0NvbG9ycy5wdXNoKENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3RbZGVmYXVsdEluZGV4ICUgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdC5sZW5ndGhdKVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdEluZGV4Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNlcmllc1RvUHVzaC5wdXNoKHNlcmllcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0ID0gc2VyaWVzQ29sb3JzO1xyXG4gICAgICAgIC8vU2NyaXZvIGxlIHNlcmllIG5lbCBncmFmaWNvXHJcbiAgICAgICAgc2VyaWVzVG9QdXNoLmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLnB1c2gocyk7XHJcbiAgICAgICAgICAgIGlmIChzaG93VGltZWxpbmUpXHJcbiAgICAgICAgICAgICAgICAoPGFtNGNoYXJ0cy5YWUNoYXJ0U2Nyb2xsYmFyPkNoYXJ0SW5zdGFuY2VDYXN0ZWQuc2Nyb2xsYmFyWCkuc2VyaWVzLnB1c2gocyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZCA9IG5ldyBhbTRjaGFydHMuTGVnZW5kKCk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5zY3JvbGxhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntuYW1lfVwiO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLmV2ZW50cy5vbihcIm92ZXJcIiwgKGV2ZW50KSA9PiB7IHRoaXMucHJvY2Vzc092ZXIoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPmV2ZW50LnRhcmdldC5kYXRhSXRlbS5kYXRhQ29udGV4dCk7IH0pO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLmV2ZW50cy5vbihcIm91dFwiLCAoKSA9PiB7IHRoaXMucHJvY2Vzc091dCgpOyB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IgPSBuZXcgYW00Y2hhcnRzLlhZQ3Vyc29yKCk7XHJcblxyXG4gICAgICAgIC8vUHJvdmUqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLmV2ZW50cy5vbihcImN1cnNvcnBvc2l0aW9uY2hhbmdlZFwiLCAoZXYpID0+IHtcclxuICAgICAgICAvLyAgICAgLy92YXIgdmFsdWUgPSBkYXRlQXhpcy5wb3NpdGlvblRvRGF0ZShkYXRlQXhpcy50b0F4aXNQb3NpdGlvbihldi50YXJnZXQueFBvc2l0aW9uKSk7XHJcbiAgICAgICAgLy8gICAgIHZhciBkdCA9IGRhdGVBeGlzLnNlcmllcy52YWx1ZXMuZmluZCh0ID0+IHQuZGF0YUl0ZW0udmFsdWVzLmRhdGVYKTtcclxuICAgICAgICAvLyAgICAgaWYgKGR0ICYmIGR0LmRhdGFJdGVtKSB7XHJcbiAgICAgICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhkdC5kYXRhSXRlbS52YWx1ZXMpO1xyXG4gICAgICAgIC8vICAgICAgICAgLy8gdGhpcy5DaGFydEluc3RhbmNlLnRvb2x0aXBUZXh0ID0gZHQ7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBcIlwiO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci54QXhpcyA9IGRhdGVBeGlzO1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IueUF4aXMgPSB5QXhpcztcclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVEYXRhU2V0KVxyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLm1heFRvb2x0aXBEaXN0YW5jZSA9IC0xO1xyXG5cclxuICAgICAgICAvL1RPRE86IENlcmNhcmUgZGkgY2FwaXJlIHBlcmNow6kgw6ggZmlnbGlvIGRpIHB1dHRhbmEuLi4uLi5cclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJzdGFydGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICAgICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwiZW5kY2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kYXRlQXhpcy56b29tVG9EYXRlcyhmcm9tLCB0bywgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyByZWZyZXNoRGF0YShkYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuYWRkRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhyb3cgXCJJbXBvc3NpYmlsZSBhZ2dpb3JuYXJlIGkgZGF0aSBzZW56YSB1bmlyZSBpbCBkYXRhc2V0LiBTaSBwcmVnYSBkaSBpbXBvc3RhcmUgW01lcmdlRGF0YXNldHNdIGEgdHJ1ZVwiXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQYXJ0ZW5kbyBkYSBkYXRpIGRpdmlzaSBwZXIgc2VyaXVlIGdlbmVyYSB1biBkYXRhc2V0IHVuaXRvIGNvbiBsYSBkYXRhIGNvbWUgY2hpYXZlIGUgaSB2YXJpIHZhbG9yaSBkb3BvICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhOiBMaW5lQ2hhcnREYXRhKTogYW55IHtcclxuICAgICAgICBsZXQgZHRvOiB7IFtpbmRleDogbnVtYmVyXTogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSB9ID0ge307XHJcbiAgICAgICAgZGF0YS5zZXJpZXMuZm9yRWFjaCgodnMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YWl0ZW0gPSB2cy52YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXhlciA9IG5ldyBEYXRlKGRhdGFpdGVtLmQpLnZhbHVlT2YoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWR0b1tpbmRleGVyXSlcclxuICAgICAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl0gPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl1bJ3YnICsgaW5kZXhdID0gZGF0YWl0ZW0udjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB2YXIgZGF0ZXMgPSBPYmplY3Qua2V5cyhkdG8pO1xyXG4gICAgICAgIHZhciByZXQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXM6IHsgW3NpbmRleDogc3RyaW5nXTogbnVtYmVyIH0gPSBkdG9bZGF0ZXNbaV1dO1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHsgZDogbmV3IERhdGUocGFyc2VJbnQoZGF0ZXNbaV0pKSB9XHJcblxyXG4gICAgICAgICAgICB2YXIgdmFscyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB2YWxzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IHZhbHNbaWldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpbmdsZVZhbCA9IHZhbHVlc1tzZXJpZXNdO1xyXG4gICAgICAgICAgICAgICAgaXRlbVtzZXJpZXNdID0gc2luZ2xlVmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZShheGlzLm1pblpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayh7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbml0aWFsOiBpbml0aWFsIH0pO1xyXG4gICAgICAgICAgICB9LCAxNTApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdmVyKGhvdmVyZWRTZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKSB7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy50b0Zyb250KCk7XHJcbiAgICAgICAgbGV0IGZpbGwgPSBob3ZlcmVkU2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgIGhvdmVyZWRTZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlcmllcyAhPSBob3ZlcmVkU2VyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc091dCgpIHtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRlZmF1bHRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAgIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSB0aHJvdHRsYShpZDogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgdGhyb3R0bGVUaW1lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgICAgIC8vUmljcmVvIGlsIHRpbWVvdXQgcGVyIGVzZWd1aXJlIHF1ZWxsYSBmdW56aW9uZSBkb3BvIHRocm90dGxlVGltZSBtaWxsaXNlY29uZGlcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gICAgfVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=
@@ -97,8 +97,8 @@ export class Vertical2DChartService {
97
97
  dataConverted.push(obj);
98
98
  }
99
99
  ChartInstanceCasted.data = dataConverted;
100
- if (dataPreConverted.colorInfos)
101
- ChartInstanceCasted.colors.list = dataPreConverted.colorInfos.map(c => am4core.color(c.color));
100
+ if (dataPreConverted.colorinfos)
101
+ ChartInstanceCasted.colors.list = dataPreConverted.colorinfos.map(c => am4core.color(c.color));
102
102
  //Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
103
103
  for (let prop in dataConverted[0])
104
104
  if (prop !== "key")
@@ -160,4 +160,4 @@ export class Vertical2DChartService {
160
160
  }
161
161
  }
162
162
  }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL1ZlcnRpY2FsMkRDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFkdkMsY0FBYztRQUNOLGtDQUE2QixHQUFXLENBQUMsQ0FBQztRQUNsRCxjQUFjO1FBQ04sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFjO1FBQ04sZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUNqQyxjQUFjO1FBQ04sNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQzlDLGNBQWM7UUFDTiwyQkFBc0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1QyxjQUFjO1FBQ04saUNBQTRCLEdBQVcsRUFBRSxDQUFDO0lBR1AsQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUErQixFQUFFLFFBQWlDO1FBRWxGLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELHVFQUF1RTtRQUN2RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLElBQUksbUJBQW1CLEdBQXNCLElB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TUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtvQkFFNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFDckcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDeEgsQ0FBQyxDQUFDLENBQUE7YUFDSDtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbDJEQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvVmVydGljYWwyRENoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL1ZlcnRpY2FsMkRDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIFZlcnRpY2FsMkRDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsMkRDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+e1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBEZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZTogbnVtYmVyID0gNTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZGFuZ2VyWm9uZTogbnVtYmVyID0gNTA7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIExhYmVsV2lkdGg6IG51bWJlciA9IDE1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAyMDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDogbnVtYmVyID0gLTU7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2U6IG51bWJlciA9IDg1O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBWZXJ0aWNhbDJEQ2hhcnRcclxuICAgKi9cclxuICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBWZXJ0aWNhbDJEQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogVmVydGljYWwyRENoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHZlcnRpY2FsIGNoYXJ0XCIpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkNoYXJ0SW5zdGFuY2UgPSBhbTRjb3JlLmNyZWF0ZShzZXR0aW5ncy5OYW1lLCBhbTRjaGFydHMuWFlDaGFydCk7XHJcbiAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZCA9IG5ldyBhbTRjaGFydHMuTGVnZW5kKCk7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnlBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5WYWx1ZUF4aXMoKSk7XHJcbiAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcbiAgICBsZXQgY2F0ZWdvcnlBeGlzOiBhbTRjaGFydHMuQ2F0ZWdvcnlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuQ2F0ZWdvcnlBeGlzKCkpXHJcbiAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLlhBeGlzVGl0bGVcclxuICAgICAgY2F0ZWdvcnlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuXHJcbiAgICB5QXhpcy5taW4gPSAwO1xyXG4gICAgY2F0ZWdvcnlBeGlzLmRhdGFGaWVsZHMuY2F0ZWdvcnkgPSAna2V5J1xyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmNlbGxTdGFydExvY2F0aW9uID0gYW00Y29yZS5wZXJjZW50KHNldHRpbmdzLkdyb3VwUGFkZGluZ1BlcmNlbnRhZ2UgPz8gdGhpcy5EZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZSkudmFsdWVcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5jZWxsRW5kTG9jYXRpb24gPSBhbTRjb3JlLnBlcmNlbnQoMTAwIC0gKHNldHRpbmdzLkdyb3VwUGFkZGluZ1BlcmNlbnRhZ2UgPz8gdGhpcy5EZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZSkpLnZhbHVlXHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuZ3JpZC50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyAzMDtcclxuXHJcbiAgICBsZXQgbGFiZWwgPSBjYXRlZ29yeUF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlO1xyXG4gICAgbGFiZWwudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgbGFiZWwubWF4V2lkdGggPSBzZXR0aW5ncy5MYWJlbFdpZHRoID8/IHRoaXMuTGFiZWxXaWR0aDtcclxuICAgIGxhYmVsLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzPy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24pIHtcclxuICAgICAgY2F0ZWdvcnlBeGlzLmV2ZW50cy5vbihcInNpemVjaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIGxldCBheGlzID0gZXYudGFyZ2V0O1xyXG4gICAgICAgIHZhciBjZWxsV2lkdGggPSBheGlzLnBpeGVsV2lkdGggLyAoYXhpcy5lbmRJbmRleCAtIGF4aXMuc3RhcnRJbmRleCk7XHJcbiAgICAgICAgaWYgKGNlbGxXaWR0aCA8IGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLm1heFdpZHRoKSB7XHJcbiAgICAgICAgICBsZXQgYXJlV2VJbkRhbmdlclpvbmUgPSBjZWxsV2lkdGggPCAoc2V0dGluZ3M/LkxhYmVsVmVydGljYWxPcmllbnRhdGlvbkN1dG9mZldpZHRoID8/IHRoaXMuZGFuZ2VyWm9uZSk7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IGFyZVdlSW5EYW5nZXJab25lID8gLTkwIDogLTQ1O1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHggPSBzZXR0aW5ncy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQgPz8gYXJlV2VJbkRhbmdlclpvbmUgPyAwIDogdGhpcy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keSA9IHNldHRpbmdzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQgPz8gdGhpcy5MYWJlbFRvcFdoZW5Db21wcmVzc2VkO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuaG9yaXpvbnRhbENlbnRlciA9IFwicmlnaHRcIjtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keSA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJ0b3BcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhUHJlQ29udmVydGVkOiBWZXJ0aWNhbDJEQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvclZlcnRpY2FsMkRDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgbGV0IGRhdGFDb252ZXJ0ZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YVByZUNvbnZlcnRlZC5ncm91cHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBkYXRhUHJlQ29udmVydGVkLmdyb3Vwc1tpXTtcclxuICAgICAgbGV0IG9iaiA9IHsga2V5OiBpdGVtLm5hbWUgfTtcclxuICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCBpdGVtLnZhbHVlcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGl0ZW0udmFsdWVzW3BdO1xyXG4gICAgICAgIG9ialt2YWx1ZS5rXSA9IHZhbHVlLnY7XHJcbiAgICAgIH1cclxuICAgICAgZGF0YUNvbnZlcnRlZC5wdXNoKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5kYXRhID0gZGF0YUNvbnZlcnRlZDtcclxuICAgIGlmIChkYXRhUHJlQ29udmVydGVkLmNvbG9ySW5mb3MpXHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBkYXRhUHJlQ29udmVydGVkLmNvbG9ySW5mb3MubWFwKGMgPT4gYW00Y29yZS5jb2xvcihjLmNvbG9yKSk7XHJcblxyXG4gICAgLy9QcmVuZG8gbGEgcHJpbWEgY2F0ZWdvcmlhIGUgbWkgYmFzbyBzdWxsZSBwcm9wcmlldMOgIHBlciBkZmVpbmlyZSBsZSBzZXJpZVxyXG4gICAgZm9yIChsZXQgcHJvcCBpbiBkYXRhQ29udmVydGVkWzBdKVxyXG4gICAgICBpZiAocHJvcCAhPT0gXCJrZXlcIilcclxuICAgICAgICB0aGlzLmNyZWF0ZVNlcmllcyhDaGFydEluc3RhbmNlQ2FzdGVkLCBzZXR0aW5ncywgcHJvcCwgcHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFZlcnRpY2FsMkRDaGFydERhdGEgfCBhbnkpIHtcclxuICAgIC8vVE9ETzpJTVBMXHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2VyaWVzKGNoYXJ0LCBzZXR0aW5nczogVmVydGljYWwyRENoYXJ0U2V0dGluZ3MsIHZhbHVlLCBuYW1lKSB7XHJcbiAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuQ29sdW1uU2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMoKSlcclxuICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IHZhbHVlO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMuY2F0ZWdvcnlYID0gJ2tleSc7XHJcbiAgICBzZXJpZXMubmFtZSA9IG5hbWU7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9IHtjYXRlZ29yeVh9OiBbYm9sZF17dmFsdWVZfVsvXVwiO1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUuZmlsbE9wYWNpdHkgPSAuODtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLndpZHRoID0gYW00Y29yZS5wZXJjZW50KHNldHRpbmdzLkNvbHVtbldpZHRoUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2UpO1xyXG5cclxuICAgIHNlcmllcy5ldmVudHMub24oXCJoaWRkZW5cIiwgKCkgPT4gdGhpcy5hcnJhbmdlQ29sdW1ucyk7XHJcbiAgICBzZXJpZXMuZXZlbnRzLm9uKFwic2hvd25cIiwgKCkgPT4gdGhpcy5hcnJhbmdlQ29sdW1ucyk7XHJcblxyXG4gICAgcmV0dXJuIHNlcmllcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBhcnJhbmdlQ29sdW1ucygpIHtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuICAgIGxldCBzZXJpZXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5nZXRJbmRleCgwKTtcclxuICAgIGxldCB4QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMuZ2V0SW5kZXgoMCk7XHJcblxyXG4gICAgbGV0IHcgPSAxIC0geEF4aXMucmVuZGVyZXIuY2VsbFN0YXJ0TG9jYXRpb24gLSAoMSAtIHhBeGlzLnJlbmRlcmVyLmNlbGxFbmRMb2NhdGlvbik7XHJcbiAgICBpZiAoc2VyaWVzLmRhdGFJdGVtcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB4MCA9IHhBeGlzLmdldFgoc2VyaWVzLmRhdGFJdGVtcy5nZXRJbmRleCgwKSwgXCJjYXRlZ29yeVhcIik7XHJcbiAgICAgIGxldCB4MSA9IHhBeGlzLmdldFgoc2VyaWVzLmRhdGFJdGVtcy5nZXRJbmRleCgxKSwgXCJjYXRlZ29yeVhcIik7XHJcbiAgICAgIGxldCBkZWx0YSA9ICgoeDEgLSB4MCkgLyBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5sZW5ndGgpICogdztcclxuICAgICAgaWYgKGFtNGNvcmUuaXNOdW1iZXIoZGVsdGEpKSB7XHJcbiAgICAgICAgbGV0IG1pZGRsZSA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmxlbmd0aCAvIDI7XHJcblxyXG4gICAgICAgIGxldCBuZXdJbmRleCA9IDA7XHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXNlcmllcy5pc0hpZGRlbiAmJiAhc2VyaWVzLmlzSGlkaW5nKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5kdW1teURhdGEgPSBuZXdJbmRleDtcclxuICAgICAgICAgICAgbmV3SW5kZXgrKztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXJpZXMuZHVtbXlEYXRhID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMuaW5kZXhPZihzZXJpZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IHZpc2libGVDb3VudCA9IG5ld0luZGV4O1xyXG4gICAgICAgIGxldCBuZXdNaWRkbGUgPSB2aXNpYmxlQ291bnQgLyAyO1xyXG5cclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgIGxldCB0cnVlSW5kZXggPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5pbmRleE9mKHNlcmllcyk7XHJcbiAgICAgICAgICBsZXQgbmV3SW5kZXggPSBzZXJpZXMuZHVtbXlEYXRhO1xyXG5cclxuICAgICAgICAgIGxldCBkeCA9IChuZXdJbmRleCAtIHRydWVJbmRleCArIG1pZGRsZSAtIG5ld01pZGRsZSkgKiBkZWx0YVxyXG5cclxuICAgICAgICAgIHNlcmllcy5hbmltYXRlKHsgcHJvcGVydHk6IFwiZHhcIiwgdG86IGR4IH0sIHNlcmllcy5pbnRlcnBvbGF0aW9uRHVyYXRpb24sIHNlcmllcy5pbnRlcnBvbGF0aW9uRWFzaW5nKTtcclxuICAgICAgICAgIHNlcmllcy5idWxsZXRzQ29udGFpbmVyLmFuaW1hdGUoeyBwcm9wZXJ0eTogXCJkeFwiLCB0bzogZHggfSwgc2VyaWVzLmludGVycG9sYXRpb25EdXJhdGlvbiwgc2VyaWVzLmludGVycG9sYXRpb25FYXNpbmcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL1ZlcnRpY2FsMkRDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFkdkMsY0FBYztRQUNOLGtDQUE2QixHQUFXLENBQUMsQ0FBQztRQUNsRCxjQUFjO1FBQ04sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFjO1FBQ04sZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUNqQyxjQUFjO1FBQ04sNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQzlDLGNBQWM7UUFDTiwyQkFBc0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1QyxjQUFjO1FBQ04saUNBQTRCLEdBQVcsRUFBRSxDQUFDO0lBR1AsQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUErQixFQUFFLFFBQWlDO1FBRWxGLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELHVFQUF1RTtRQUN2RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLElBQUksbUJBQW1CLEdBQXNCLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEUsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ25CLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsRUFBRSxjQUFjLElBQUksT0FBTyxDQUFDO1lBQzFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7WUFFOUUsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFO2dCQUMxQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO2dCQUNqRSxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDdEQsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBQzVELFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxRQUFRLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQzthQUMzRDtTQUNGO1FBRUQsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFBO1lBQ3RDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztTQUNqQztRQUNELElBQUksWUFBWSxHQUEyQixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDdkcsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUE7WUFDN0MsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1NBQ3hDO1FBRUQsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDZCxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFDeEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDdEksWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDNUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsUUFBUSxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFFeEUsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBRWpDLElBQUksUUFBUSxFQUFFLDRCQUE0QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7WUFDbEcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDdEQsSUFBSSxpQkFBaUIsR0FBRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsbUNBQW1DLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN2RyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztvQkFDOUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO29CQUNsRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO29CQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztpQkFDekQ7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7aUJBQ3REO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksZ0JBQWdCLEdBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVqSCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN4QjtZQUNELGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3pDLElBQUksZ0JBQWdCLENBQUMsVUFBVTtZQUM3QixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpHLDJFQUEyRTtRQUMzRSxLQUFLLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxJQUFJLEtBQUssS0FBSztnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsSUFBVSxFQUFFLEVBQVE7SUFFakMsQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBK0I7UUFDaEQsV0FBVztJQUNiLENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFpQyxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3hFLElBQUksTUFBTSxHQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNqQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLHVDQUF1QyxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRXJILE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYztJQUNOLGNBQWM7UUFDcEIsSUFBSSxtQkFBbUIsR0FBc0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNoRSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBRW5ELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDakIsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7d0JBQ3hDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO3dCQUM1QixRQUFRLEVBQUUsQ0FBQztxQkFDWjt5QkFDSTt3QkFDSCxNQUFNLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQy9EO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQztnQkFDNUIsSUFBSSxTQUFTLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFFakMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QyxJQUFJLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzRCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxTQUFTLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtvQkFFNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFDckcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDeEgsQ0FBQyxDQUFDLENBQUE7YUFDSDtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbDJEQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvVmVydGljYWwyRENoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL1ZlcnRpY2FsMkRDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIFZlcnRpY2FsMkRDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsMkRDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+e1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBEZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZTogbnVtYmVyID0gNTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZGFuZ2VyWm9uZTogbnVtYmVyID0gNTA7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIExhYmVsV2lkdGg6IG51bWJlciA9IDE1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAyMDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDogbnVtYmVyID0gLTU7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2U6IG51bWJlciA9IDg1O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBWZXJ0aWNhbDJEQ2hhcnRcclxuICAgKi9cclxuICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBWZXJ0aWNhbDJEQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogVmVydGljYWwyRENoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHZlcnRpY2FsIGNoYXJ0XCIpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkNoYXJ0SW5zdGFuY2UgPSBhbTRjb3JlLmNyZWF0ZShzZXR0aW5ncy5OYW1lLCBhbTRjaGFydHMuWFlDaGFydCk7XHJcbiAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZCA9IG5ldyBhbTRjaGFydHMuTGVnZW5kKCk7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnlBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5WYWx1ZUF4aXMoKSk7XHJcbiAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcbiAgICBsZXQgY2F0ZWdvcnlBeGlzOiBhbTRjaGFydHMuQ2F0ZWdvcnlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuQ2F0ZWdvcnlBeGlzKCkpXHJcbiAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLlhBeGlzVGl0bGVcclxuICAgICAgY2F0ZWdvcnlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuXHJcbiAgICB5QXhpcy5taW4gPSAwO1xyXG4gICAgY2F0ZWdvcnlBeGlzLmRhdGFGaWVsZHMuY2F0ZWdvcnkgPSAna2V5J1xyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmNlbGxTdGFydExvY2F0aW9uID0gYW00Y29yZS5wZXJjZW50KHNldHRpbmdzLkdyb3VwUGFkZGluZ1BlcmNlbnRhZ2UgPz8gdGhpcy5EZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZSkudmFsdWVcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5jZWxsRW5kTG9jYXRpb24gPSBhbTRjb3JlLnBlcmNlbnQoMTAwIC0gKHNldHRpbmdzLkdyb3VwUGFkZGluZ1BlcmNlbnRhZ2UgPz8gdGhpcy5EZWZhdWx0R3JvdXBQYWRkaW5nUGVyY2VudGFnZSkpLnZhbHVlXHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuZ3JpZC50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyAzMDtcclxuXHJcbiAgICBsZXQgbGFiZWwgPSBjYXRlZ29yeUF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlO1xyXG4gICAgbGFiZWwudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgbGFiZWwubWF4V2lkdGggPSBzZXR0aW5ncy5MYWJlbFdpZHRoID8/IHRoaXMuTGFiZWxXaWR0aDtcclxuICAgIGxhYmVsLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzPy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24pIHtcclxuICAgICAgY2F0ZWdvcnlBeGlzLmV2ZW50cy5vbihcInNpemVjaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIGxldCBheGlzID0gZXYudGFyZ2V0O1xyXG4gICAgICAgIHZhciBjZWxsV2lkdGggPSBheGlzLnBpeGVsV2lkdGggLyAoYXhpcy5lbmRJbmRleCAtIGF4aXMuc3RhcnRJbmRleCk7XHJcbiAgICAgICAgaWYgKGNlbGxXaWR0aCA8IGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLm1heFdpZHRoKSB7XHJcbiAgICAgICAgICBsZXQgYXJlV2VJbkRhbmdlclpvbmUgPSBjZWxsV2lkdGggPCAoc2V0dGluZ3M/LkxhYmVsVmVydGljYWxPcmllbnRhdGlvbkN1dG9mZldpZHRoID8/IHRoaXMuZGFuZ2VyWm9uZSk7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IGFyZVdlSW5EYW5nZXJab25lID8gLTkwIDogLTQ1O1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHggPSBzZXR0aW5ncy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQgPz8gYXJlV2VJbkRhbmdlclpvbmUgPyAwIDogdGhpcy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keSA9IHNldHRpbmdzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQgPz8gdGhpcy5MYWJlbFRvcFdoZW5Db21wcmVzc2VkO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuaG9yaXpvbnRhbENlbnRlciA9IFwicmlnaHRcIjtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keSA9IDA7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJ0b3BcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhUHJlQ29udmVydGVkOiBWZXJ0aWNhbDJEQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvclZlcnRpY2FsMkRDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgbGV0IGRhdGFDb252ZXJ0ZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YVByZUNvbnZlcnRlZC5ncm91cHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBkYXRhUHJlQ29udmVydGVkLmdyb3Vwc1tpXTtcclxuICAgICAgbGV0IG9iaiA9IHsga2V5OiBpdGVtLm5hbWUgfTtcclxuICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCBpdGVtLnZhbHVlcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGl0ZW0udmFsdWVzW3BdO1xyXG4gICAgICAgIG9ialt2YWx1ZS5rXSA9IHZhbHVlLnY7XHJcbiAgICAgIH1cclxuICAgICAgZGF0YUNvbnZlcnRlZC5wdXNoKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5kYXRhID0gZGF0YUNvbnZlcnRlZDtcclxuICAgIGlmIChkYXRhUHJlQ29udmVydGVkLmNvbG9yaW5mb3MpXHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBkYXRhUHJlQ29udmVydGVkLmNvbG9yaW5mb3MubWFwKGMgPT4gYW00Y29yZS5jb2xvcihjLmNvbG9yKSk7XHJcblxyXG4gICAgLy9QcmVuZG8gbGEgcHJpbWEgY2F0ZWdvcmlhIGUgbWkgYmFzbyBzdWxsZSBwcm9wcmlldMOgIHBlciBkZmVpbmlyZSBsZSBzZXJpZVxyXG4gICAgZm9yIChsZXQgcHJvcCBpbiBkYXRhQ29udmVydGVkWzBdKVxyXG4gICAgICBpZiAocHJvcCAhPT0gXCJrZXlcIilcclxuICAgICAgICB0aGlzLmNyZWF0ZVNlcmllcyhDaGFydEluc3RhbmNlQ2FzdGVkLCBzZXR0aW5ncywgcHJvcCwgcHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFZlcnRpY2FsMkRDaGFydERhdGEgfCBhbnkpIHtcclxuICAgIC8vVE9ETzpJTVBMXHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2VyaWVzKGNoYXJ0LCBzZXR0aW5nczogVmVydGljYWwyRENoYXJ0U2V0dGluZ3MsIHZhbHVlLCBuYW1lKSB7XHJcbiAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuQ29sdW1uU2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMoKSlcclxuICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IHZhbHVlO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMuY2F0ZWdvcnlYID0gJ2tleSc7XHJcbiAgICBzZXJpZXMubmFtZSA9IG5hbWU7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9IHtjYXRlZ29yeVh9OiBbYm9sZF17dmFsdWVZfVsvXVwiO1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUuZmlsbE9wYWNpdHkgPSAuODtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLndpZHRoID0gYW00Y29yZS5wZXJjZW50KHNldHRpbmdzLkNvbHVtbldpZHRoUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2UpO1xyXG5cclxuICAgIHNlcmllcy5ldmVudHMub24oXCJoaWRkZW5cIiwgKCkgPT4gdGhpcy5hcnJhbmdlQ29sdW1ucyk7XHJcbiAgICBzZXJpZXMuZXZlbnRzLm9uKFwic2hvd25cIiwgKCkgPT4gdGhpcy5hcnJhbmdlQ29sdW1ucyk7XHJcblxyXG4gICAgcmV0dXJuIHNlcmllcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBhcnJhbmdlQ29sdW1ucygpIHtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuICAgIGxldCBzZXJpZXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5nZXRJbmRleCgwKTtcclxuICAgIGxldCB4QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMuZ2V0SW5kZXgoMCk7XHJcblxyXG4gICAgbGV0IHcgPSAxIC0geEF4aXMucmVuZGVyZXIuY2VsbFN0YXJ0TG9jYXRpb24gLSAoMSAtIHhBeGlzLnJlbmRlcmVyLmNlbGxFbmRMb2NhdGlvbik7XHJcbiAgICBpZiAoc2VyaWVzLmRhdGFJdGVtcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB4MCA9IHhBeGlzLmdldFgoc2VyaWVzLmRhdGFJdGVtcy5nZXRJbmRleCgwKSwgXCJjYXRlZ29yeVhcIik7XHJcbiAgICAgIGxldCB4MSA9IHhBeGlzLmdldFgoc2VyaWVzLmRhdGFJdGVtcy5nZXRJbmRleCgxKSwgXCJjYXRlZ29yeVhcIik7XHJcbiAgICAgIGxldCBkZWx0YSA9ICgoeDEgLSB4MCkgLyBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5sZW5ndGgpICogdztcclxuICAgICAgaWYgKGFtNGNvcmUuaXNOdW1iZXIoZGVsdGEpKSB7XHJcbiAgICAgICAgbGV0IG1pZGRsZSA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmxlbmd0aCAvIDI7XHJcblxyXG4gICAgICAgIGxldCBuZXdJbmRleCA9IDA7XHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXNlcmllcy5pc0hpZGRlbiAmJiAhc2VyaWVzLmlzSGlkaW5nKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5kdW1teURhdGEgPSBuZXdJbmRleDtcclxuICAgICAgICAgICAgbmV3SW5kZXgrKztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXJpZXMuZHVtbXlEYXRhID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMuaW5kZXhPZihzZXJpZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IHZpc2libGVDb3VudCA9IG5ld0luZGV4O1xyXG4gICAgICAgIGxldCBuZXdNaWRkbGUgPSB2aXNpYmxlQ291bnQgLyAyO1xyXG5cclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgIGxldCB0cnVlSW5kZXggPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5pbmRleE9mKHNlcmllcyk7XHJcbiAgICAgICAgICBsZXQgbmV3SW5kZXggPSBzZXJpZXMuZHVtbXlEYXRhO1xyXG5cclxuICAgICAgICAgIGxldCBkeCA9IChuZXdJbmRleCAtIHRydWVJbmRleCArIG1pZGRsZSAtIG5ld01pZGRsZSkgKiBkZWx0YVxyXG5cclxuICAgICAgICAgIHNlcmllcy5hbmltYXRlKHsgcHJvcGVydHk6IFwiZHhcIiwgdG86IGR4IH0sIHNlcmllcy5pbnRlcnBvbGF0aW9uRHVyYXRpb24sIHNlcmllcy5pbnRlcnBvbGF0aW9uRWFzaW5nKTtcclxuICAgICAgICAgIHNlcmllcy5idWxsZXRzQ29udGFpbmVyLmFuaW1hdGUoeyBwcm9wZXJ0eTogXCJkeFwiLCB0bzogZHggfSwgc2VyaWVzLmludGVycG9sYXRpb25EdXJhdGlvbiwgc2VyaWVzLmludGVycG9sYXRpb25FYXNpbmcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iXX0=