@hitsoft/ovolt 0.0.11 → 0.0.13

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 (38) hide show
  1. package/config/providers/ovolt-integration-log-route.provider.d.ts +9 -0
  2. package/esm2020/config/ovolt-config.module.mjs +3 -1
  3. package/esm2020/config/providers/ovolt-integration-log-route.provider.mjs +19 -0
  4. package/esm2020/lib/components/hit-fuel-integration-logs/components/hit-fuel-integration-log.component.mjs +29 -11
  5. package/esm2020/lib/components/hit-ovolt-integration-logs/components/hit-ovolt-integration-log.component.mjs +170 -0
  6. package/esm2020/lib/components/hit-ovolt-integration-logs/hit-ovolt-integration-log-routing.module.mjs +26 -0
  7. package/esm2020/lib/components/hit-ovolt-integration-logs/hit-ovolt-integration-log.module.mjs +71 -0
  8. package/esm2020/lib/components/hit-proxy/hit-ovolt-integration-logs/hit-ovolt-integration-log.service.mjs +40 -0
  9. package/esm2020/lib/components/hit-proxy/hit-ovolt-integration-logs/models.mjs +2 -0
  10. package/esm2020/lib/components/hit-system-parameters/components/hit-system-parameter.component.mjs +6 -4
  11. package/esm2020/lib/ovolt-integration-logs/ovolt-integration-log/components/ovolt-integration-log.component.mjs +113 -0
  12. package/esm2020/lib/ovolt-integration-logs/ovolt-integration-log/ovolt-integration-log-routing.module.mjs +26 -0
  13. package/esm2020/lib/ovolt-integration-logs/ovolt-integration-log/ovolt-integration-log.module.mjs +52 -0
  14. package/esm2020/lib/ovolt-routing.module.mjs +3 -1
  15. package/esm2020/lib/proxy/ovolt-integration-logs/models.mjs +2 -0
  16. package/esm2020/lib/proxy/ovolt-integration-logs/ovolt-integration-log.service.mjs +51 -0
  17. package/esm2020/lib/proxy/system-parameters/models.mjs +1 -1
  18. package/esm2020/lib/proxy/system-parameters/system-parameter.service.mjs +2 -2
  19. package/fesm2015/hitsoft-ovolt-config.mjs +29 -11
  20. package/fesm2015/hitsoft-ovolt-config.mjs.map +1 -1
  21. package/fesm2015/hitsoft-ovolt.mjs +368 -26
  22. package/fesm2015/hitsoft-ovolt.mjs.map +1 -1
  23. package/fesm2020/hitsoft-ovolt-config.mjs +29 -11
  24. package/fesm2020/hitsoft-ovolt-config.mjs.map +1 -1
  25. package/fesm2020/hitsoft-ovolt.mjs +367 -26
  26. package/fesm2020/hitsoft-ovolt.mjs.map +1 -1
  27. package/lib/components/hit-ovolt-integration-logs/components/hit-ovolt-integration-log.component.d.ts +39 -0
  28. package/lib/components/hit-ovolt-integration-logs/hit-ovolt-integration-log-routing.module.d.ts +7 -0
  29. package/lib/components/hit-ovolt-integration-logs/hit-ovolt-integration-log.module.d.ts +16 -0
  30. package/lib/components/hit-proxy/hit-ovolt-integration-logs/hit-ovolt-integration-log.service.d.ts +16 -0
  31. package/lib/components/hit-proxy/hit-ovolt-integration-logs/models.d.ts +3 -0
  32. package/lib/ovolt-integration-logs/ovolt-integration-log/components/ovolt-integration-log.component.d.ts +35 -0
  33. package/lib/ovolt-integration-logs/ovolt-integration-log/ovolt-integration-log-routing.module.d.ts +7 -0
  34. package/lib/ovolt-integration-logs/ovolt-integration-log/ovolt-integration-log.module.d.ts +15 -0
  35. package/lib/proxy/ovolt-integration-logs/models.d.ts +47 -0
  36. package/lib/proxy/ovolt-integration-logs/ovolt-integration-log.service.d.ts +19 -0
  37. package/lib/proxy/system-parameters/models.d.ts +4 -0
  38. package/package.json +1 -1
@@ -0,0 +1,71 @@
1
+ import { CoreModule } from '@abp/ng.core';
2
+ import { ThemeSharedModule } from '@abp/ng.theme.shared';
3
+ import { NgModule } from '@angular/core';
4
+ import { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, } from '@ng-bootstrap/ng-bootstrap';
5
+ import { NgxValidateCoreModule } from '@ngx-validate/core';
6
+ import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
7
+ import { PageModule } from '@abp/ng.components/page';
8
+ import { HitOvoltIntegrationLogRoutingModule } from './hit-ovolt-integration-log-routing.module';
9
+ import { HitOvoltIntegrationLogComponent } from './components/hit-ovolt-integration-log.component';
10
+ import { DxButtonModule, DxDataGridModule, DxDropDownButtonModule, DxPopupModule, DxScrollViewModule, DxTemplateModule } from 'devextreme-angular';
11
+ import * as i0 from "@angular/core";
12
+ export class HitOvoltIntegrationLogModule {
13
+ }
14
+ HitOvoltIntegrationLogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ HitOvoltIntegrationLogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogModule, declarations: [HitOvoltIntegrationLogComponent], imports: [HitOvoltIntegrationLogRoutingModule,
16
+ CoreModule,
17
+ ThemeSharedModule,
18
+ CommercialUiModule,
19
+ NgxValidateCoreModule,
20
+ NgbCollapseModule,
21
+ NgbDatepickerModule,
22
+ NgbDropdownModule,
23
+ PageModule,
24
+ DxDataGridModule,
25
+ DxButtonModule,
26
+ DxPopupModule,
27
+ DxScrollViewModule,
28
+ DxTemplateModule,
29
+ DxDropDownButtonModule] });
30
+ HitOvoltIntegrationLogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogModule, imports: [HitOvoltIntegrationLogRoutingModule,
31
+ CoreModule,
32
+ ThemeSharedModule,
33
+ CommercialUiModule,
34
+ NgxValidateCoreModule,
35
+ NgbCollapseModule,
36
+ NgbDatepickerModule,
37
+ NgbDropdownModule,
38
+ PageModule,
39
+ DxDataGridModule,
40
+ DxButtonModule,
41
+ DxPopupModule,
42
+ DxScrollViewModule,
43
+ DxTemplateModule,
44
+ DxDropDownButtonModule] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogModule, decorators: [{
46
+ type: NgModule,
47
+ args: [{
48
+ declarations: [HitOvoltIntegrationLogComponent],
49
+ imports: [
50
+ HitOvoltIntegrationLogRoutingModule,
51
+ CoreModule,
52
+ ThemeSharedModule,
53
+ CommercialUiModule,
54
+ NgxValidateCoreModule,
55
+ NgbCollapseModule,
56
+ NgbDatepickerModule,
57
+ NgbDropdownModule,
58
+ PageModule,
59
+ DxDataGridModule,
60
+ DxButtonModule,
61
+ DxPopupModule,
62
+ DxScrollViewModule,
63
+ DxTemplateModule,
64
+ DxDropDownButtonModule
65
+ ],
66
+ }]
67
+ }] });
68
+ export function loadHitOvoltIntegrationLogModuleAsChild() {
69
+ return Promise.resolve(HitOvoltIntegrationLogModule);
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW92b2x0LWludGVncmF0aW9uLWxvZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdm9sdC9zcmMvbGliL2NvbXBvbmVudHMvaGl0LW92b2x0LWludGVncmF0aW9uLWxvZ3MvaGl0LW92b2x0LWludGVncmF0aW9uLWxvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNwQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXNCbkosTUFBTSxPQUFPLDRCQUE0Qjs7eUhBQTVCLDRCQUE0QjswSEFBNUIsNEJBQTRCLGlCQW5CdEIsK0JBQStCLGFBRTFDLG1DQUFtQztRQUNuQyxVQUFVO1FBQ1YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsc0JBQXNCOzBIQUdqQiw0QkFBNEIsWUFqQmpDLG1DQUFtQztRQUNuQyxVQUFVO1FBQ1YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsc0JBQXNCOzJGQUdqQiw0QkFBNEI7a0JBcEJ4QyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMvQyxPQUFPLEVBQUU7d0JBQ0wsbUNBQW1DO3dCQUNuQyxVQUFVO3dCQUNWLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjtxQkFDekI7aUJBQ0o7O0FBR0QsTUFBTSxVQUFVLHVDQUF1QztJQUNuRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgTmdiQ29sbGFwc2VNb2R1bGUsXHJcbiAgICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxyXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tZXJjaWFsVWlNb2R1bGUgfSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aSc7XHJcbmltcG9ydCB7IFBhZ2VNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvbXBvbmVudHMvcGFnZSc7XHJcbmltcG9ydCB7IEhpdE92b2x0SW50ZWdyYXRpb25Mb2dSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9oaXQtb3ZvbHQtaW50ZWdyYXRpb24tbG9nLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgSGl0T3ZvbHRJbnRlZ3JhdGlvbkxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oaXQtb3ZvbHQtaW50ZWdyYXRpb24tbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER4QnV0dG9uTW9kdWxlLCBEeERhdGFHcmlkTW9kdWxlLCBEeERyb3BEb3duQnV0dG9uTW9kdWxlLCBEeFBvcHVwTW9kdWxlLCBEeFNjcm9sbFZpZXdNb2R1bGUsIER4VGVtcGxhdGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW0hpdE92b2x0SW50ZWdyYXRpb25Mb2dDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEhpdE92b2x0SW50ZWdyYXRpb25Mb2dSb3V0aW5nTW9kdWxlLFxyXG4gICAgICAgIENvcmVNb2R1bGUsXHJcbiAgICAgICAgVGhlbWVTaGFyZWRNb2R1bGUsXHJcbiAgICAgICAgQ29tbWVyY2lhbFVpTW9kdWxlLFxyXG4gICAgICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcclxuICAgICAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICAgICAgICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxyXG4gICAgICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gICAgICAgIFBhZ2VNb2R1bGUsXHJcbiAgICAgICAgRHhEYXRhR3JpZE1vZHVsZSxcclxuICAgICAgICBEeEJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBEeFBvcHVwTW9kdWxlLFxyXG4gICAgICAgIER4U2Nyb2xsVmlld01vZHVsZSxcclxuICAgICAgICBEeFRlbXBsYXRlTW9kdWxlLFxyXG4gICAgICAgIER4RHJvcERvd25CdXR0b25Nb2R1bGVcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRPdm9sdEludGVncmF0aW9uTG9nTW9kdWxlIHsgfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRIaXRPdm9sdEludGVncmF0aW9uTG9nTW9kdWxlQXNDaGlsZCgpIHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoSGl0T3ZvbHRJbnRlZ3JhdGlvbkxvZ01vZHVsZSk7XHJcbn1cclxuIl19
@@ -0,0 +1,40 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@abp/ng.core";
4
+ import * as i2 from "../devexpress-query-builder/devexpress-query-builder";
5
+ export class HitOvoltIntegrationLogService {
6
+ constructor(restService, devexService) {
7
+ this.restService = restService;
8
+ this.devexService = devexService;
9
+ this.apiName = 'Ovolt';
10
+ this.getRequesteBody = (input) => this.restService.request({
11
+ method: 'POST',
12
+ url: '/api/ovolt/ovolt-integration-logs/get-request-body',
13
+ body: input
14
+ }, { apiName: this.apiName });
15
+ this.getResponseBody = (input) => this.restService.request({
16
+ method: 'POST',
17
+ url: '/api/ovolt/ovolt-integration-logs/get-response-body',
18
+ body: input
19
+ }, { apiName: this.apiName });
20
+ this.deleteAll = () => this.restService.request({
21
+ method: 'POST',
22
+ url: '/api/ovolt/ovolt-integration-logs/delete-all',
23
+ }, { apiName: this.apiName });
24
+ }
25
+ get LoadOvoltIntegrationLogs() {
26
+ return this.devexService.createStore({
27
+ key: 'id',
28
+ loadUrl: 'api/ovolt/ovolt-integration-logs/load',
29
+ });
30
+ }
31
+ }
32
+ HitOvoltIntegrationLogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogService, deps: [{ token: i1.RestService }, { token: i2.DevexpressRestService }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ HitOvoltIntegrationLogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogService, providedIn: 'root' });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitOvoltIntegrationLogService, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'root',
38
+ }]
39
+ }], ctorParameters: function () { return [{ type: i1.RestService }, { type: i2.DevexpressRestService }]; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW92b2x0LWludGVncmF0aW9uLWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3ZvbHQvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wcm94eS9oaXQtb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9oaXQtb3ZvbHQtaW50ZWdyYXRpb24tbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEzQyxNQUFNLE9BQU8sNkJBQTZCO0lBR3RDLFlBQ1ksV0FBd0IsRUFDeEIsWUFBbUM7UUFEbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBSi9DLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFhbEIsb0JBQWUsR0FBRyxDQUFDLEtBQXlCLEVBQUUsRUFBRSxDQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBYztZQUNsQyxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxvREFBb0Q7WUFDekQsSUFBSSxFQUFFLEtBQUs7U0FDZCxFQUNHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRW5DLG9CQUFlLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQWM7WUFDbEMsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUscURBQXFEO1lBQzFELElBQUksRUFBRSxLQUFLO1NBQ2QsRUFDRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVuQyxjQUFTLEdBQUcsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQWU7WUFDbkMsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsOENBQThDO1NBQ3RELEVBQ0csRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUE3Qi9CLENBQUM7SUFFTCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ2pDLEdBQUcsRUFBRSxJQUFJO1lBQ1QsT0FBTyxFQUFFLHVDQUF1QztTQUNuRCxDQUFDLENBQUM7SUFDUCxDQUFDOzswSEFiUSw2QkFBNkI7OEhBQTdCLDZCQUE2QixjQUYxQixNQUFNOzJGQUVULDZCQUE2QjtrQkFIekMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGV2ZXhwcmVzc1Jlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vZGV2ZXhwcmVzcy1xdWVyeS1idWlsZGVyL2RldmV4cHJlc3MtcXVlcnktYnVpbGRlcic7XHJcbmltcG9ydCB7IEdldFJlcXVlc3RNb2RlbER0byB9IGZyb20gJy4vbW9kZWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdE92b2x0SW50ZWdyYXRpb25Mb2dTZXJ2aWNlIHtcclxuICAgIGFwaU5hbWUgPSAnT3ZvbHQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZGV2ZXhTZXJ2aWNlOiBEZXZleHByZXNzUmVzdFNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgZ2V0IExvYWRPdm9sdEludGVncmF0aW9uTG9ncygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZXZleFNlcnZpY2UuY3JlYXRlU3RvcmUoe1xyXG4gICAgICAgICAgICBrZXk6ICdpZCcsXHJcbiAgICAgICAgICAgIGxvYWRVcmw6ICdhcGkvb3ZvbHQvb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9sb2FkJyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldFJlcXVlc3RlQm9keSA9IChpbnB1dDogR2V0UmVxdWVzdE1vZGVsRHRvKSA9PlxyXG4gICAgICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIHN0cmluZz4oe1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgdXJsOiAnL2FwaS9vdm9sdC9vdm9sdC1pbnRlZ3JhdGlvbi1sb2dzL2dldC1yZXF1ZXN0LWJvZHknLFxyXG4gICAgICAgICAgICBib2R5OiBpbnB1dFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xyXG5cclxuICAgIGdldFJlc3BvbnNlQm9keSA9IChpbnB1dDogR2V0UmVxdWVzdE1vZGVsRHRvKSA9PlxyXG4gICAgICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIHN0cmluZz4oe1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgdXJsOiAnL2FwaS9vdm9sdC9vdm9sdC1pbnRlZ3JhdGlvbi1sb2dzL2dldC1yZXNwb25zZS1ib2R5JyxcclxuICAgICAgICAgICAgYm9keTogaW5wdXRcclxuICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcclxuXHJcbiAgICBkZWxldGVBbGwgPSAoKSA9PlxyXG4gICAgICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIGJvb2xlYW4+KHtcclxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgIHVybDogJy9hcGkvb3ZvbHQvb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9kZWxldGUtYWxsJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3ZvbHQvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wcm94eS9oaXQtb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgR2V0UmVxdWVzdE1vZGVsRHRve1xyXG4gICAgbG9nSWQ/OiBzdHJpbmc7XHJcbn0iXX0=
@@ -27,7 +27,7 @@ export class HitSystemParameterComponent {
27
27
  'sharzNetCustomerSeries', 'upEnerjiCustomerSeries', 'sharzNetCustomerGroupCode', 'upEnerjiCustomerGroupCode',
28
28
  'sharzNetCustomerDebitorAccount', 'upEnerjiCustomerDebitorAccount', 'vendorSeries', 'vendorGroupCode',
29
29
  'transactionItemCode', 'cogsCostingCode', 'cogsCostingCode2', 'cogsCostingCode3', 'bplId', 'purchaseOrderItemCode',
30
- 'eFaturaPdfBaseUrl', 'eArsivPdfBaseUrl', 'vendorDebitorAccount'
30
+ 'eFaturaPdfBaseUrl', 'eArsivPdfBaseUrl', 'vendorDebitorAccount', "discountItemCode"
31
31
  ];
32
32
  this.fieldLocalizationMap = {
33
33
  sharzNetCustomerSeries: 'SharzNetCustomerSeries',
@@ -46,7 +46,8 @@ export class HitSystemParameterComponent {
46
46
  purchaseOrderItemCode: 'PurchaseOrderItemCode',
47
47
  eFaturaPdfBaseUrl: 'EFaturaPdfBaseUrl',
48
48
  eArsivPdfBaseUrl: 'EArsivPdfBaseUrl',
49
- vendorDebitorAccount: 'VendorDebitorAccount'
49
+ vendorDebitorAccount: 'VendorDebitorAccount',
50
+ discountItemCode: 'DiscountItemCode'
50
51
  };
51
52
  }
52
53
  ngOnInit() {
@@ -74,7 +75,8 @@ export class HitSystemParameterComponent {
74
75
  eFaturaPdfBaseUrl: [null, [Validators.required]],
75
76
  eArsivPdfBaseUrl: [null, [Validators.required]],
76
77
  vendorDebitorAccount: [null, [Validators.required]],
77
- mailAddresses: ['', this.optionalEmailValidator]
78
+ mailAddresses: ['', this.optionalEmailValidator],
79
+ discountItemCode: [null, [Validators.required]],
78
80
  });
79
81
  }
80
82
  loadData() {
@@ -144,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
144
146
  type: Component,
145
147
  args: [{ selector: 'lib-hit-system-parameter', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'Ovolt::SystemParameters' | abpLocalization\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\r\n <!-- Rest Company Select -->\r\n <div class=\"row mb-2\">\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label\" for=\"system-parameter-selected-rest-company\">\r\n {{ 'Ovolt::SelectedRestCompany' | abpLocalization }}\r\n </label>\r\n <select id=\"selectedRestCompany\" formControlName=\"selectedRestCompany\" class=\"form-select\">\r\n <option *ngFor=\"let option of restCompanyTypeOptions; trackBy: track.by('key')\"\r\n [value]=\"option.key\">\r\n {{ 'Ovolt::Enum:RestCompanyType.' + option.key | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label\" for=\"system-parameter-pokey\">\r\n {{ 'Ovolt::POKey' | abpLocalization }}\r\n </label>\r\n <input id=\"system-parameter-pokey\" formControlName=\"poKey\" class=\"form-control\" />\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <!-- Di\u011Fer Alanlar Grid -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-2\" *ngFor=\"let field of fields\">\r\n <label>{{ ('Ovolt::' + fieldLocalizationMap[field]) | abpLocalization }}</label>\r\n <input [type]=\"(field.includes('GroupCode') ) ? 'number' : 'text'\" class=\"form-control\"\r\n [formControlName]=\"field\" />\r\n <div *ngIf=\"form.get(field)?.touched && form.get(field)?.invalid\" class=\"text-danger\">\r\n {{ 'Ovolt::FieldRequiredOrInvalid' | abpLocalization }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label\" for=\"system-parameter-mail-addresses\">\r\n {{ 'Ovolt::MailAddresses' | abpLocalization }}\r\n </label>\r\n\r\n <textarea id=\"system-parameter-mail-addresses\" formControlName=\"mailAddresses\"\r\n class=\"form-control\" rows=\"3\" placeholder=\"example1@mail.com, example2@mail.com\">\r\n </textarea>\r\n\r\n <div *ngIf=\"form.get('mailAddresses')?.invalid && form.get('mailAddresses')?.touched\"\r\n class=\"text-danger mt-1\">\r\n {{ 'Ovolt::InvalidMailAddresses' | abpLocalization }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"text-end mt-4\">\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"isBusy\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</abp-page>" }]
146
148
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SystemParameterService }, { type: i3.HitSystemParameterService }, { type: i4.ToasterService }, { type: i5.TrackByService }]; } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXN5c3RlbS1wYXJhbWV0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3ZvbHQvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1zeXN0ZW0tcGFyYW1ldGVycy9jb21wb25lbnRzL2hpdC1zeXN0ZW0tcGFyYW1ldGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL292b2x0L3NyYy9saWIvY29tcG9uZW50cy9oaXQtc3lzdGVtLXBhcmFtZXRlcnMvY29tcG9uZW50cy9oaXQtc3lzdGVtLXBhcmFtZXRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sV0FBVyxFQUFrQyxNQUFNLGNBQWMsQ0FBQztBQUVoRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQVUsUUFBUSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBUWxFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOzs7Ozs7Ozs7O0FBUXBHLE1BQU0sT0FBTywyQkFBMkI7SUFrQ3BDLFlBQW9CLEVBQWUsRUFDdkIsT0FBK0IsRUFDL0IsVUFBcUMsRUFDckMsT0FBdUIsRUFDZixLQUFxQjtRQUpyQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7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QVcsRUFBRSxDQUFDLDBCQ2xCaEYsMDhHQWtFVzsyRkQ1Q0UsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNJLDBCQUEwQixtQkFDbkIsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHR5cGUge1xyXG4gICAgR2V0U3lzdGVtUGFyYW1ldGVyc0lucHV0LFxyXG4gICAgU3lzdGVtUGFyYW1ldGVyRHRvLFxyXG59IGZyb20gJy4uLy4uLy4uL3Byb3h5L3N5c3RlbS1wYXJhbWV0ZXJzL21vZGVscyc7XHJcbmltcG9ydCB7IFN5c3RlbVBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9zeXN0ZW0tcGFyYW1ldGVycy9zeXN0ZW0tcGFyYW1ldGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTeXN0ZW1QYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1zeXN0ZW0tcGFyYW1ldGVycy9oaXQtc3lzdGVtLXBhcmFtZXRlci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IHJlc3RDb21wYW55VHlwZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9nZW5lcmFsLXRyYW5zYWN0aW9ucy9yZXN0LWNvbXBhbnktdHlwZS5lbnVtJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1oaXQtc3lzdGVtLXBhcmFtZXRlcicsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpdC1zeXN0ZW0tcGFyYW1ldGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRTeXN0ZW1QYXJhbWV0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgZm9ybTogRm9ybUdyb3VwO1xyXG4gICAgc2VsZWN0ZWQ/OiBTeXN0ZW1QYXJhbWV0ZXJEdG87XHJcbiAgICBpc0J1c3kgPSBmYWxzZTtcclxuXHJcbiAgICByZXN0Q29tcGFueVR5cGVPcHRpb25zID0gcmVzdENvbXBhbnlUeXBlT3B0aW9ucztcclxuXHJcbiAgICBmaWVsZHMgPSBbXHJcbiAgICAgICAgJ3NoYXJ6TmV0Q3VzdG9tZXJTZXJpZXMnLCAndXBFbmVyamlDdXN0b21lclNlcmllcycsICdzaGFyek5ldEN1c3RvbWVyR3JvdXBDb2RlJywgJ3VwRW5lcmppQ3VzdG9tZXJHcm91cENvZGUnLFxyXG4gICAgICAgICdzaGFyek5ldEN1c3RvbWVyRGViaXRvckFjY291bnQnLCAndXBFbmVyamlDdXN0b21lckRlYml0b3JBY2NvdW50JywgJ3ZlbmRvclNlcmllcycsICd2ZW5kb3JHcm91cENvZGUnLFxyXG4gICAgICAgICd0cmFuc2FjdGlvbkl0ZW1Db2RlJywgJ2NvZ3NDb3N0aW5nQ29kZScsICdjb2dzQ29zdGluZ0NvZGUyJywgJ2NvZ3NDb3N0aW5nQ29kZTMnLCAnYnBsSWQnLCAncHVyY2hhc2VPcmRlckl0ZW1Db2RlJyxcclxuICAgICAgICAnZUZhdHVyYVBkZkJhc2VVcmwnLCAnZUFyc2l2UGRmQmFzZVVybCcsICd2ZW5kb3JEZWJpdG9yQWNjb3VudCdcclxuICAgIF07XHJcblxyXG4gICAgZmllbGRMb2NhbGl6YXRpb25NYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgICAgc2hhcnpOZXRDdXN0b21lclNlcmllczogJ1NoYXJ6TmV0Q3VzdG9tZXJTZXJpZXMnLFxyXG4gICAgICAgIHVwRW5lcmppQ3VzdG9tZXJTZXJpZXM6ICdVcEVuZXJqaUN1c3RvbWVyU2VyaWVzJyxcclxuICAgICAgICBzaGFyek5ldEN1c3RvbWVyR3JvdXBDb2RlOiAnU2hhcnpOZXRDdXN0b21lckdyb3VwQ29kZScsXHJcbiAgICAgICAgdXBFbmVyamlDdXN0b21lckdyb3VwQ29kZTogJ1VwRW5lcmppQ3VzdG9tZXJHcm91cENvZGUnLFxyXG4gICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJEZWJpdG9yQWNjb3VudDogJ1NoYXJ6TmV0Q3VzdG9tZXJEZWJpdG9yQWNjb3VudCcsXHJcbiAgICAgICAgdXBFbmVyamlDdXN0b21lckRlYml0b3JBY2NvdW50OiAnVXBFbmVyamlDdXN0b21lckRlYml0b3JBY2NvdW50JyxcclxuICAgICAgICB2ZW5kb3JTZXJpZXM6ICdWZW5kb3JTZXJpZXMnLFxyXG4gICAgICAgIHZlbmRvckdyb3VwQ29kZTogJ1ZlbmRvckdyb3VwQ29kZScsXHJcbiAgICAgICAgdHJhbnNhY3Rpb25JdGVtQ29kZTogJ1RyYW5zYWN0aW9uSXRlbUNvZGUnLFxyXG4gICAgICAgIGNvZ3NDb3N0aW5nQ29kZTogJ0NPR1NDb3N0aW5nQ29kZScsXHJcbiAgICAgICAgY29nc0Nvc3RpbmdDb2RlMjogJ0NPR1NDb3N0aW5nQ29kZTInLFxyXG4gICAgICAgIGNvZ3NDb3N0aW5nQ29kZTM6ICdDT0dTQ29zdGluZ0NvZGUzJyxcclxuICAgICAgICBicGxJZDogJ0JQTElkJyxcclxuICAgICAgICBwdXJjaGFzZU9yZGVySXRlbUNvZGU6ICdQdXJjaGFzZU9yZGVySXRlbUNvZGUnLFxyXG4gICAgICAgIGVGYXR1cmFQZGZCYXNlVXJsOiAnRUZhdHVyYVBkZkJhc2VVcmwnLFxyXG4gICAgICAgIGVBcnNpdlBkZkJhc2VVcmw6ICdFQXJzaXZQZGZCYXNlVXJsJyxcclxuICAgICAgICB2ZW5kb3JEZWJpdG9yQWNjb3VudDogJ1ZlbmRvckRlYml0b3JBY2NvdW50J1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHNlcnZpY2U6IFN5c3RlbVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBoaXRTZXJ2aWNlOiBIaXRTeXN0ZW1QYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3RDb21wYW55OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJTZXJpZXM6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICB1cEVuZXJqaUN1c3RvbWVyU2VyaWVzOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgc2hhcnpOZXRDdXN0b21lckdyb3VwQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigxKV1dLFxyXG4gICAgICAgICAgICB1cEVuZXJqaUN1c3RvbWVyR3JvdXBDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXV0sXHJcbiAgICAgICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJEZWJpdG9yQWNjb3VudDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHVwRW5lcmppQ3VzdG9tZXJEZWJpdG9yQWNjb3VudDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHZlbmRvclNlcmllczogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHZlbmRvckdyb3VwQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSXRlbUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBjb2dzQ29zdGluZ0NvZGU6IFtudWxsXSxcclxuICAgICAgICAgICAgY29nc0Nvc3RpbmdDb2RlMjogW251bGxdLFxyXG4gICAgICAgICAgICBjb2dzQ29zdGluZ0NvZGUzOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIHBvS2V5OiBbbnVsbF0sXHJcbiAgICAgICAgICAgIGJwbElkOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgcHVyY2hhc2VPcmRlckl0ZW1Db2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgZUZhdHVyYVBkZkJhc2VVcmw6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBlQXJzaXZQZGZCYXNlVXJsOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgdmVuZG9yRGViaXRvckFjY291bnQ6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBtYWlsQWRkcmVzc2VzOiBbJycsIHRoaXMub3B0aW9uYWxFbWFpbFZhbGlkYXRvcl1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzQnVzeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5oaXRTZXJ2aWNlLmdldFN5c3RlbVBhcmFtZXRlcigpXHJcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmlzQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSZXN0Q29tcGFueTogcmVzdWx0LnNlbGVjdGVkUmVzdENvbXBhbnkgLy8gemF0ZW4gXCJPdm9sdFwiIHZleWEgXCJFdnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLmVycm9yKCdWZXJpIHnDvGtsZW5pcmtlbiBoYXRhIG9sdcWfdHUuJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLmZvcm0udmFsdWUgYXMgU3lzdGVtUGFyYW1ldGVyRHRvO1xyXG4gICAgICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuc2VsZWN0ZWQ/LmlkXHJcbiAgICAgICAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLnNlbGVjdGVkLmlkLCBwYXlsb2FkKVxyXG4gICAgICAgICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIHJlcXVlc3QucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc0J1c3kgPSBmYWxzZSkpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MoJ0theWRlZGlsZGknKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoJ0theWRldG1lIHPEsXJhc8SxbmRhIGhhdGEgb2x1xZ90dS4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9uYWxFbWFpbFZhbGlkYXRvcihjb250cm9sOiBhbnkpIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHJldHVybiBudWxsOyAvLyBCb8WfIGLEsXJha8SxbGFiaWxpclxyXG5cclxuICAgICAgICBjb25zdCBlbWFpbHMgPSBjb250cm9sLnZhbHVlLnNwbGl0KCcsJykubWFwKChlbWFpbDogc3RyaW5nKSA9PiBlbWFpbC50cmltKCkpO1xyXG4gICAgICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcclxuICAgICAgICBjb25zdCBpbnZhbGlkRW1haWxzID0gZW1haWxzLmZpbHRlcihlbWFpbCA9PiAhZW1haWxSZWdleC50ZXN0KGVtYWlsKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBpbnZhbGlkRW1haWxzLmxlbmd0aCA+IDAgPyB7IGludmFsaWRFbWFpbHM6IHRydWUgfSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2FuaXRpemVFbWFpbHMoKSB7XHJcbiAgICAgICAgbGV0IGVtYWlscyA9IHRoaXMuZm9ybS5nZXQoJ0VtYWlsQWRkcmVzc2VzJyk/LnZhbHVlIHx8ICcnO1xyXG4gICAgICAgIGVtYWlscyA9IGVtYWlsc1xyXG4gICAgICAgICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAgICAgICAubWFwKChlbWFpbDogc3RyaW5nKSA9PiBlbWFpbC50cmltKCkpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZW1haWwgPT4gZW1haWwgIT09ICcnKSAvLyBCb8WfIGUtbWFpbGxlcmkga2FsZMSxclxyXG4gICAgICAgICAgICAuam9pbignLCAnKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnRW1haWxBZGRyZXNzZXMnKT8uc2V0VmFsdWUoZW1haWxzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbn0iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidPdm9sdDo6U3lzdGVtUGFyYW1ldGVycycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBSZXN0IENvbXBhbnkgU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJzeXN0ZW0tcGFyYW1ldGVyLXNlbGVjdGVkLXJlc3QtY29tcGFueVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ092b2x0OjpTZWxlY3RlZFJlc3RDb21wYW55JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic2VsZWN0ZWRSZXN0Q29tcGFueVwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkUmVzdENvbXBhbnlcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcmVzdENvbXBhbnlUeXBlT3B0aW9uczsgdHJhY2tCeTogdHJhY2suYnkoJ2tleScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmtleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6RW51bTpSZXN0Q29tcGFueVR5cGUuJyArIG9wdGlvbi5rZXkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInN5c3RlbS1wYXJhbWV0ZXItcG9rZXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6UE9LZXknIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInN5c3RlbS1wYXJhbWV0ZXItcG9rZXlcIiBmb3JtQ29udHJvbE5hbWU9XCJwb0tleVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBEacSfZXIgQWxhbmxhciBHcmlkIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0yXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgKCdPdm9sdDo6JyArIGZpZWxkTG9jYWxpemF0aW9uTWFwW2ZpZWxkXSkgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwiKGZpZWxkLmluY2x1ZGVzKCdHcm91cENvZGUnKSApID8gJ251bWJlcicgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uZ2V0KGZpZWxkKT8udG91Y2hlZCAmJiBmb3JtLmdldChmaWVsZCk/LmludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6OkZpZWxkUmVxdWlyZWRPckludmFsaWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwic3lzdGVtLXBhcmFtZXRlci1tYWlsLWFkZHJlc3Nlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ092b2x0OjpNYWlsQWRkcmVzc2VzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwic3lzdGVtLXBhcmFtZXRlci1tYWlsLWFkZHJlc3Nlc1wiIGZvcm1Db250cm9sTmFtZT1cIm1haWxBZGRyZXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByb3dzPVwiM1wiIHBsYWNlaG9sZGVyPVwiZXhhbXBsZTFAbWFpbC5jb20sIGV4YW1wbGUyQG1haWwuY29tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybS5nZXQoJ21haWxBZGRyZXNzZXMnKT8uaW52YWxpZCAmJiBmb3JtLmdldCgnbWFpbEFkZHJlc3NlcycpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ092b2x0OjpJbnZhbGlkTWFpbEFkZHJlc3NlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc0J1c3lcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2FicC1wYWdlPiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXN5c3RlbS1wYXJhbWV0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3ZvbHQvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1zeXN0ZW0tcGFyYW1ldGVycy9jb21wb25lbnRzL2hpdC1zeXN0ZW0tcGFyYW1ldGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL292b2x0L3NyYy9saWIvY29tcG9uZW50cy9oaXQtc3lzdGVtLXBhcmFtZXRlcnMvY29tcG9uZW50cy9oaXQtc3lzdGVtLXBhcmFtZXRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sV0FBVyxFQUFrQyxNQUFNLGNBQWMsQ0FBQztBQUVoRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQVUsUUFBUSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBUWxFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOzs7Ozs7Ozs7O0FBUXBHLE1BQU0sT0FBTywyQkFBMkI7SUFtQ3BDLFlBQW9CLEVBQWUsRUFDdkIsT0FBK0IsRUFDL0IsVUFBcUMsRUFDckMsT0FBdUIsRUFDZixLQUFxQjtRQUpyQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFwQ3pDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZiwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUVoRCxXQUFNLEdBQUc7WUFDTCx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkI7WUFDNUcsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsY0FBYyxFQUFFLGlCQUFpQjtZQUNyRyxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2xILG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQjtTQUN0RixDQUFDO1FBRUYseUJBQW9CLEdBQThCO1lBQzlDLHNCQUFzQixFQUFFLHdCQUF3QjtZQUNoRCxzQkFBc0IsRUFBRSx3QkFBd0I7WUFDaEQseUJBQXlCLEVBQUUsMkJBQTJCO1lBQ3RELHlCQUF5QixFQUFFLDJCQUEyQjtZQUN0RCw4QkFBOEIsRUFBRSxnQ0FBZ0M7WUFDaEUsOEJBQThCLEVBQUUsZ0NBQWdDO1lBQ2hFLFlBQVksRUFBRSxjQUFjO1lBQzVCLGVBQWUsRUFBRSxpQkFBaUI7WUFDbEMsbUJBQW1CLEVBQUUscUJBQXFCO1lBQzFDLGVBQWUsRUFBRSxpQkFBaUI7WUFDbEMsZ0JBQWdCLEVBQUUsa0JBQWtCO1lBQ3BDLGdCQUFnQixFQUFFLGtCQUFrQjtZQUNwQyxLQUFLLEVBQUUsT0FBTztZQUNkLHFCQUFxQixFQUFFLHVCQUF1QjtZQUM5QyxpQkFBaUIsRUFBRSxtQkFBbUI7WUFDdEMsZ0JBQWdCLEVBQUUsa0JBQWtCO1lBQ3BDLG9CQUFvQixFQUFFLHNCQUFzQjtZQUM1QyxnQkFBZ0IsRUFBRSxrQkFBa0I7U0FDdkMsQ0FBQztJQU9FLENBQUM7SUFFTCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNoRCxzQkFBc0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxzQkFBc0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCx5QkFBeUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNFLHlCQUF5QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0UsOEJBQThCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsOEJBQThCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxtQkFBbUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDdkIsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2IsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELGlCQUFpQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELGdCQUFnQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLG9CQUFvQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25ELGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDaEQsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFO2FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDM0MsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxNQUFNLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUNqQixHQUFHLE1BQU07d0JBQ1QsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLDJCQUEyQjtxQkFDOUUsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDeEQsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNWO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUEyQixDQUFDO1FBQ3RELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRW5CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5QyxTQUFTLENBQUM7WUFDUCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDVixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQzFELENBQUM7U0FDSixDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBWTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLG9CQUFvQjtRQUVyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sVUFBVSxHQUFHLDRCQUE0QixDQUFDO1FBQ2hELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV0RSxPQUFPLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFELE1BQU0sR0FBRyxNQUFNO2FBQ1YsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7YUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O3dIQTVJUSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtREFKekIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQywwQkNsQmhGLDA4R0FrRVc7MkZENUNFLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBQ25CLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB0eXBlIHtcclxuICAgIEdldFN5c3RlbVBhcmFtZXRlcnNJbnB1dCxcclxuICAgIFN5c3RlbVBhcmFtZXRlckR0byxcclxufSBmcm9tICcuLi8uLi8uLi9wcm94eS9zeXN0ZW0tcGFyYW1ldGVycy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTeXN0ZW1QYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvc3lzdGVtLXBhcmFtZXRlcnMvc3lzdGVtLXBhcmFtZXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0U3lzdGVtUGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtc3lzdGVtLXBhcmFtZXRlcnMvaGl0LXN5c3RlbS1wYXJhbWV0ZXIuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyByZXN0Q29tcGFueVR5cGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZ2VuZXJhbC10cmFuc2FjdGlvbnMvcmVzdC1jb21wYW55LXR5cGUuZW51bSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItaGl0LXN5c3RlbS1wYXJhbWV0ZXInLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtc3lzdGVtLXBhcmFtZXRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0U3lzdGVtUGFyYW1ldGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGZvcm06IEZvcm1Hcm91cDtcclxuICAgIHNlbGVjdGVkPzogU3lzdGVtUGFyYW1ldGVyRHRvO1xyXG4gICAgaXNCdXN5ID0gZmFsc2U7XHJcblxyXG4gICAgcmVzdENvbXBhbnlUeXBlT3B0aW9ucyA9IHJlc3RDb21wYW55VHlwZU9wdGlvbnM7XHJcblxyXG4gICAgZmllbGRzID0gW1xyXG4gICAgICAgICdzaGFyek5ldEN1c3RvbWVyU2VyaWVzJywgJ3VwRW5lcmppQ3VzdG9tZXJTZXJpZXMnLCAnc2hhcnpOZXRDdXN0b21lckdyb3VwQ29kZScsICd1cEVuZXJqaUN1c3RvbWVyR3JvdXBDb2RlJyxcclxuICAgICAgICAnc2hhcnpOZXRDdXN0b21lckRlYml0b3JBY2NvdW50JywgJ3VwRW5lcmppQ3VzdG9tZXJEZWJpdG9yQWNjb3VudCcsICd2ZW5kb3JTZXJpZXMnLCAndmVuZG9yR3JvdXBDb2RlJyxcclxuICAgICAgICAndHJhbnNhY3Rpb25JdGVtQ29kZScsICdjb2dzQ29zdGluZ0NvZGUnLCAnY29nc0Nvc3RpbmdDb2RlMicsICdjb2dzQ29zdGluZ0NvZGUzJywgJ2JwbElkJywgJ3B1cmNoYXNlT3JkZXJJdGVtQ29kZScsXHJcbiAgICAgICAgJ2VGYXR1cmFQZGZCYXNlVXJsJywgJ2VBcnNpdlBkZkJhc2VVcmwnLCAndmVuZG9yRGViaXRvckFjY291bnQnLCBcImRpc2NvdW50SXRlbUNvZGVcIlxyXG4gICAgXTtcclxuXHJcbiAgICBmaWVsZExvY2FsaXphdGlvbk1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgICBzaGFyek5ldEN1c3RvbWVyU2VyaWVzOiAnU2hhcnpOZXRDdXN0b21lclNlcmllcycsXHJcbiAgICAgICAgdXBFbmVyamlDdXN0b21lclNlcmllczogJ1VwRW5lcmppQ3VzdG9tZXJTZXJpZXMnLFxyXG4gICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJHcm91cENvZGU6ICdTaGFyek5ldEN1c3RvbWVyR3JvdXBDb2RlJyxcclxuICAgICAgICB1cEVuZXJqaUN1c3RvbWVyR3JvdXBDb2RlOiAnVXBFbmVyamlDdXN0b21lckdyb3VwQ29kZScsXHJcbiAgICAgICAgc2hhcnpOZXRDdXN0b21lckRlYml0b3JBY2NvdW50OiAnU2hhcnpOZXRDdXN0b21lckRlYml0b3JBY2NvdW50JyxcclxuICAgICAgICB1cEVuZXJqaUN1c3RvbWVyRGViaXRvckFjY291bnQ6ICdVcEVuZXJqaUN1c3RvbWVyRGViaXRvckFjY291bnQnLFxyXG4gICAgICAgIHZlbmRvclNlcmllczogJ1ZlbmRvclNlcmllcycsXHJcbiAgICAgICAgdmVuZG9yR3JvdXBDb2RlOiAnVmVuZG9yR3JvdXBDb2RlJyxcclxuICAgICAgICB0cmFuc2FjdGlvbkl0ZW1Db2RlOiAnVHJhbnNhY3Rpb25JdGVtQ29kZScsXHJcbiAgICAgICAgY29nc0Nvc3RpbmdDb2RlOiAnQ09HU0Nvc3RpbmdDb2RlJyxcclxuICAgICAgICBjb2dzQ29zdGluZ0NvZGUyOiAnQ09HU0Nvc3RpbmdDb2RlMicsXHJcbiAgICAgICAgY29nc0Nvc3RpbmdDb2RlMzogJ0NPR1NDb3N0aW5nQ29kZTMnLFxyXG4gICAgICAgIGJwbElkOiAnQlBMSWQnLFxyXG4gICAgICAgIHB1cmNoYXNlT3JkZXJJdGVtQ29kZTogJ1B1cmNoYXNlT3JkZXJJdGVtQ29kZScsXHJcbiAgICAgICAgZUZhdHVyYVBkZkJhc2VVcmw6ICdFRmF0dXJhUGRmQmFzZVVybCcsXHJcbiAgICAgICAgZUFyc2l2UGRmQmFzZVVybDogJ0VBcnNpdlBkZkJhc2VVcmwnLFxyXG4gICAgICAgIHZlbmRvckRlYml0b3JBY2NvdW50OiAnVmVuZG9yRGViaXRvckFjY291bnQnLFxyXG4gICAgICAgIGRpc2NvdW50SXRlbUNvZGU6ICdEaXNjb3VudEl0ZW1Db2RlJ1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHNlcnZpY2U6IFN5c3RlbVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBoaXRTZXJ2aWNlOiBIaXRTeXN0ZW1QYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3RDb21wYW55OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJTZXJpZXM6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICB1cEVuZXJqaUN1c3RvbWVyU2VyaWVzOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgc2hhcnpOZXRDdXN0b21lckdyb3VwQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigxKV1dLFxyXG4gICAgICAgICAgICB1cEVuZXJqaUN1c3RvbWVyR3JvdXBDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXV0sXHJcbiAgICAgICAgICAgIHNoYXJ6TmV0Q3VzdG9tZXJEZWJpdG9yQWNjb3VudDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHVwRW5lcmppQ3VzdG9tZXJEZWJpdG9yQWNjb3VudDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHZlbmRvclNlcmllczogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHZlbmRvckdyb3VwQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSXRlbUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBjb2dzQ29zdGluZ0NvZGU6IFtudWxsXSxcclxuICAgICAgICAgICAgY29nc0Nvc3RpbmdDb2RlMjogW251bGxdLFxyXG4gICAgICAgICAgICBjb2dzQ29zdGluZ0NvZGUzOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIHBvS2V5OiBbbnVsbF0sXHJcbiAgICAgICAgICAgIGJwbElkOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgcHVyY2hhc2VPcmRlckl0ZW1Db2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgZUZhdHVyYVBkZkJhc2VVcmw6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBlQXJzaXZQZGZCYXNlVXJsOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgdmVuZG9yRGViaXRvckFjY291bnQ6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBtYWlsQWRkcmVzc2VzOiBbJycsIHRoaXMub3B0aW9uYWxFbWFpbFZhbGlkYXRvcl0sXHJcbiAgICAgICAgICAgIGRpc2NvdW50SXRlbUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWREYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhpdFNlcnZpY2UuZ2V0U3lzdGVtUGFyYW1ldGVyKClcclxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNCdXN5ID0gZmFsc2UpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJlc3RDb21wYW55OiByZXN1bHQuc2VsZWN0ZWRSZXN0Q29tcGFueSAvLyB6YXRlbiBcIk92b2x0XCIgdmV5YSBcIkV2c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoJ1ZlcmkgecO8a2xlbmlya2VuIGhhdGEgb2x1xZ90dS4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuZm9ybS52YWx1ZSBhcyBTeXN0ZW1QYXJhbWV0ZXJEdG87XHJcbiAgICAgICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5zZWxlY3RlZD8uaWRcclxuICAgICAgICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMuc2VsZWN0ZWQuaWQsIHBheWxvYWQpXHJcbiAgICAgICAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShwYXlsb2FkKTtcclxuXHJcbiAgICAgICAgcmVxdWVzdC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmlzQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2VzcygnS2F5ZGVkaWxkaScpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcignS2F5ZGV0bWUgc8SxcmFzxLFuZGEgaGF0YSBvbHXFn3R1LicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25hbEVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IGFueSkge1xyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIG51bGw7IC8vIEJvxZ8gYsSxcmFrxLFsYWJpbGlyXHJcblxyXG4gICAgICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2wudmFsdWUuc3BsaXQoJywnKS5tYXAoKGVtYWlsOiBzdHJpbmcpID0+IGVtYWlsLnRyaW0oKSk7XHJcbiAgICAgICAgY29uc3QgZW1haWxSZWdleCA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xyXG4gICAgICAgIGNvbnN0IGludmFsaWRFbWFpbHMgPSBlbWFpbHMuZmlsdGVyKGVtYWlsID0+ICFlbWFpbFJlZ2V4LnRlc3QoZW1haWwpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGludmFsaWRFbWFpbHMubGVuZ3RoID4gMCA/IHsgaW52YWxpZEVtYWlsczogdHJ1ZSB9IDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzYW5pdGl6ZUVtYWlscygpIHtcclxuICAgICAgICBsZXQgZW1haWxzID0gdGhpcy5mb3JtLmdldCgnRW1haWxBZGRyZXNzZXMnKT8udmFsdWUgfHwgJyc7XHJcbiAgICAgICAgZW1haWxzID0gZW1haWxzXHJcbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXHJcbiAgICAgICAgICAgIC5tYXAoKGVtYWlsOiBzdHJpbmcpID0+IGVtYWlsLnRyaW0oKSlcclxuICAgICAgICAgICAgLmZpbHRlcihlbWFpbCA9PiBlbWFpbCAhPT0gJycpIC8vIEJvxZ8gZS1tYWlsbGVyaSBrYWxkxLFyXHJcbiAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdFbWFpbEFkZHJlc3NlcycpPy5zZXRWYWx1ZShlbWFpbHMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxufSIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ092b2x0OjpTeXN0ZW1QYXJhbWV0ZXJzJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFJlc3QgQ29tcGFueSBTZWxlY3QgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInN5c3RlbS1wYXJhbWV0ZXItc2VsZWN0ZWQtcmVzdC1jb21wYW55XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6OlNlbGVjdGVkUmVzdENvbXBhbnknIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzZWxlY3RlZFJlc3RDb21wYW55XCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRSZXN0Q29tcGFueVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiByZXN0Q29tcGFueVR5cGVPcHRpb25zOyB0cmFja0J5OiB0cmFjay5ieSgna2V5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ092b2x0OjpFbnVtOlJlc3RDb21wYW55VHlwZS4nICsgb3B0aW9uLmtleSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwic3lzdGVtLXBhcmFtZXRlci1wb2tleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ092b2x0OjpQT0tleScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwic3lzdGVtLXBhcmFtZXRlci1wb2tleVwiIGZvcm1Db250cm9sTmFtZT1cInBvS2V5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERpxJ9lciBBbGFubGFyIEdyaWQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAoJ092b2x0OjonICsgZmllbGRMb2NhbGl6YXRpb25NYXBbZmllbGRdKSB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbdHlwZV09XCIoZmllbGQuaW5jbHVkZXMoJ0dyb3VwQ29kZScpICkgPyAnbnVtYmVyJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybS5nZXQoZmllbGQpPy50b3VjaGVkICYmIGZvcm0uZ2V0KGZpZWxkKT8uaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6RmllbGRSZXF1aXJlZE9ySW52YWxpZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJzeXN0ZW0tcGFyYW1ldGVyLW1haWwtYWRkcmVzc2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6Ok1haWxBZGRyZXNzZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJzeXN0ZW0tcGFyYW1ldGVyLW1haWwtYWRkcmVzc2VzXCIgZm9ybUNvbnRyb2xOYW1lPVwibWFpbEFkZHJlc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCIzXCIgcGxhY2Vob2xkZXI9XCJleGFtcGxlMUBtYWlsLmNvbSwgZXhhbXBsZTJAbWFpbC5jb21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3JtLmdldCgnbWFpbEFkZHJlc3NlcycpPy5pbnZhbGlkICYmIGZvcm0uZ2V0KCdtYWlsQWRkcmVzc2VzJyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6OkludmFsaWRNYWlsQWRkcmVzc2VzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzQnVzeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+Il19
@@ -0,0 +1,113 @@
1
+ import { downloadBlob, ListService } from '@abp/ng.core';
2
+ import { Confirmation } from '@abp/ng.theme.shared';
3
+ import { DateAdapter } from '@abp/ng.theme.shared/extensions';
4
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
5
+ import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';
6
+ import { filter, finalize, switchMap, tap } from 'rxjs/operators';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@abp/ng.core";
9
+ import * as i2 from "../../../proxy/ovolt-integration-logs/ovolt-integration-log.service";
10
+ import * as i3 from "@abp/ng.theme.shared";
11
+ import * as i4 from "@angular/forms";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@swimlane/ngx-datatable";
14
+ import * as i7 from "@volo/abp.commercial.ng.ui";
15
+ import * as i8 from "@ngx-validate/core";
16
+ import * as i9 from "@ng-bootstrap/ng-bootstrap";
17
+ import * as i10 from "@abp/ng.components/page";
18
+ export class OvoltIntegrationLogComponent {
19
+ constructor(list, track, service, confirmation, fb) {
20
+ this.list = list;
21
+ this.track = track;
22
+ this.service = service;
23
+ this.confirmation = confirmation;
24
+ this.fb = fb;
25
+ this.data = {
26
+ items: [],
27
+ totalCount: 0,
28
+ };
29
+ this.filters = {};
30
+ this.isFiltersHidden = true;
31
+ this.isModalBusy = false;
32
+ this.isModalOpen = false;
33
+ this.isExportToExcelBusy = false;
34
+ }
35
+ ngOnInit() {
36
+ const getData = (query) => this.service.getList({
37
+ ...query,
38
+ ...this.filters,
39
+ filterText: query.filter,
40
+ });
41
+ const setData = (list) => (this.data = list);
42
+ this.list.hookToQuery(getData).subscribe(setData);
43
+ }
44
+ clearFilters() {
45
+ this.filters = {};
46
+ }
47
+ buildForm() {
48
+ const { path, method, requestBody, responseBody, statusCode, requestTime, responseTime } = this.selected || {};
49
+ this.form = this.fb.group({
50
+ path: [path ?? null, []],
51
+ method: [method ?? null, []],
52
+ requestBody: [requestBody ?? null, []],
53
+ responseBody: [responseBody ?? null, []],
54
+ statusCode: [statusCode ?? null, []],
55
+ requestTime: [requestTime ? new Date(requestTime) : null, []],
56
+ responseTime: [responseTime ? new Date(responseTime) : null, []],
57
+ });
58
+ }
59
+ hideForm() {
60
+ this.isModalOpen = false;
61
+ this.form.reset();
62
+ }
63
+ showForm() {
64
+ this.buildForm();
65
+ this.isModalOpen = true;
66
+ }
67
+ submitForm() {
68
+ if (this.form.invalid)
69
+ return;
70
+ const request = this.selected
71
+ ? this.service.update(this.selected.id, {
72
+ ...this.form.value,
73
+ concurrencyStamp: this.selected.concurrencyStamp,
74
+ })
75
+ : this.service.create(this.form.value);
76
+ this.isModalBusy = true;
77
+ request
78
+ .pipe(finalize(() => (this.isModalBusy = false)), tap(() => this.hideForm()))
79
+ .subscribe(this.list.get);
80
+ }
81
+ create() {
82
+ this.selected = undefined;
83
+ this.showForm();
84
+ }
85
+ update(record) {
86
+ this.selected = record;
87
+ this.showForm();
88
+ }
89
+ delete(record) {
90
+ this.confirmation
91
+ .warn('Ovolt::DeleteConfirmationMessage', 'Ovolt::AreYouSure', {
92
+ messageLocalizationParams: [],
93
+ })
94
+ .pipe(filter(status => status === Confirmation.Status.confirm), switchMap(() => this.service.delete(record.id)))
95
+ .subscribe(this.list.get);
96
+ }
97
+ exportToExcel() {
98
+ this.isExportToExcelBusy = true;
99
+ this.service
100
+ .getDownloadToken()
101
+ .pipe(switchMap(({ token }) => this.service.getListAsExcelFile({ downloadToken: token, filterText: this.list.filter })), finalize(() => (this.isExportToExcelBusy = false)))
102
+ .subscribe(result => {
103
+ downloadBlob(result, 'OvoltIntegrationLog.xlsx');
104
+ });
105
+ }
106
+ }
107
+ OvoltIntegrationLogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OvoltIntegrationLogComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.OvoltIntegrationLogService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
108
+ OvoltIntegrationLogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OvoltIntegrationLogComponent, selector: "lib-ovolt-integration-log", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<abp-page [title]=\"'Ovolt::OvoltIntegrationLogs' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'Ovolt::ExportToExcel' | abpLocalization }}\r\n </button>\r\n\r\n <button\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Create'\"\r\n class=\"btn btn-primary btn-sm\"\r\n type=\"button\"\r\n (click)=\"create()\"\r\n >\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'Ovolt::NewOvoltIntegrationLog' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <abp-advanced-entity-filters localizationSourceName=\"Ovolt\" [list]=\"list\">\r\n <abp-advanced-entity-filters-form>\r\n <form #filterForm (keyup.enter)=\"list.get()\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"pathFilter\">\r\n {{ 'Ovolt::Path' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"pathFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.path\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"methodFilter\">\r\n {{ 'Ovolt::Method' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"methodFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.method\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"requestBodyFilter\">\r\n {{ 'Ovolt::RequestBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"requestBodyFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.requestBody\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"responseBodyFilter\">\r\n {{ 'Ovolt::ResponseBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"responseBodyFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.responseBody\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"statusCodeFilter\">\r\n {{ 'Ovolt::StatusCode' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"statusCodeFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.statusCode\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"minRequestTime\">\r\n {{ 'Ovolt::MinRequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"minRequestTime\"\r\n class=\"form-control\"\r\n #minRequestTimeInput\r\n #minRequestTimeDatepicker=\"ngbDatepicker\"\r\n name=\"minRequestTime\"\r\n ngbDatepicker\r\n container=\"body\"\r\n readonly\r\n (click)=\"minRequestTimeDatepicker.toggle()\"\r\n (keyup.space)=\"minRequestTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.requestTimeMin\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"minRequestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n minRequestTimeDatepicker.writeValue(null);\r\n minRequestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"maxRequestTime\">\r\n {{ 'Ovolt::MaxRequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"maxRequestTime\"\r\n class=\"form-control\"\r\n #maxRequestTimeInput\r\n #maxRequestTimeDatepicker=\"ngbDatepicker\"\r\n name=\"maxRequestTime\"\r\n ngbDatepicker\r\n readonly\r\n (click)=\"maxRequestTimeDatepicker.toggle()\"\r\n (keyup.space)=\"maxRequestTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.requestTimeMax\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"maxRequestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n maxRequestTimeDatepicker.writeValue(null);\r\n maxRequestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"minResponseTime\">\r\n {{ 'Ovolt::MinResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"minResponseTime\"\r\n class=\"form-control\"\r\n #minResponseTimeInput\r\n #minResponseTimeDatepicker=\"ngbDatepicker\"\r\n name=\"minResponseTime\"\r\n ngbDatepicker\r\n container=\"body\"\r\n readonly\r\n (click)=\"minResponseTimeDatepicker.toggle()\"\r\n (keyup.space)=\"minResponseTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.responseTimeMin\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"minResponseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n minResponseTimeDatepicker.writeValue(null);\r\n minResponseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"maxResponseTime\">\r\n {{ 'Ovolt::MaxResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"maxResponseTime\"\r\n class=\"form-control\"\r\n #maxResponseTimeInput\r\n #maxResponseTimeDatepicker=\"ngbDatepicker\"\r\n name=\"maxResponseTime\"\r\n ngbDatepicker\r\n readonly\r\n (click)=\"maxResponseTimeDatepicker.toggle()\"\r\n (keyup.space)=\"maxResponseTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.responseTimeMax\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"maxResponseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n maxResponseTimeDatepicker.writeValue(null);\r\n maxResponseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto align-self-end mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-6 col-sm-auto d-grid\">\r\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"clearFilters()\">\r\n <span>{{ 'AbpUi::Clear' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n <div class=\"col-6 col-sm-auto d-grid\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"list.get()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </abp-advanced-entity-filters-form>\r\n </abp-advanced-entity-filters>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ngx-datatable [rows]=\"data.items\" [count]=\"data.totalCount\" [list]=\"list\" default>\r\n <ngx-datatable-column\r\n [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [maxWidth]=\"150\"\r\n [width]=\"150\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"fa fa-cog me-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n\r\n <div ngbDropdownMenu>\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Edit'\"\r\n (click)=\"update(row)\"\r\n >\r\n {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Delete'\"\r\n (click)=\"delete(row)\"\r\n >\r\n {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::Path' | abpLocalization }}\" prop=\"path\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.path }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::Method' | abpLocalization }}\" prop=\"method\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.method }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::RequestBody' | abpLocalization }}\"\r\n prop=\"requestBody\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.requestBody }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::ResponseBody' | abpLocalization }}\"\r\n prop=\"responseBody\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.responseBody }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::StatusCode' | abpLocalization }}\" prop=\"statusCode\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.statusCode }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::RequestTime' | abpLocalization }}\"\r\n prop=\"requestTime\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.requestTime | date }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::ResponseTime' | abpLocalization }}\"\r\n prop=\"responseTime\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.responseTime | date }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ngx-datatable>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'Ovolt::NewOvoltIntegrationLog') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"ovolt-integration-log\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-path\">\r\n {{ 'Ovolt::Path' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-path\"\r\n formControlName=\"path\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-method\">\r\n {{ 'Ovolt::Method' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"ovolt-integration-log-method\" formControlName=\"method\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-request-body\">\r\n {{ 'Ovolt::RequestBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-request-body\"\r\n formControlName=\"requestBody\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-response-body\">\r\n {{ 'Ovolt::ResponseBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-response-body\"\r\n formControlName=\"responseBody\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-status-code\">\r\n {{ 'Ovolt::StatusCode' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-status-code\"\r\n formControlName=\"statusCode\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-request-time\">\r\n {{ 'Ovolt::RequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"ovolt-integration-log-request-time\"\r\n formControlName=\"requestTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #requestTimeInput\r\n #requestTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"requestTimeDatepicker.open()\"\r\n (keyup.space)=\"requestTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"requestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n requestTimeDatepicker.writeValue(null);\r\n requestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-response-time\">\r\n {{ 'Ovolt::ResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"ovolt-integration-log-response-time\"\r\n formControlName=\"responseTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #responseTimeInput\r\n #responseTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"responseTimeDatepicker.open()\"\r\n (keyup.space)=\"responseTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"responseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n responseTimeDatepicker.writeValue(null);\r\n responseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"ovolt-integration-log\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i6.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { kind: "directive", type: i3.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i7.AdvancedEntityFiltersComponent, selector: "abp-advanced-entity-filters", inputs: ["list", "localizationSourceName", "entityFilterPlaceholder"] }, { kind: "component", type: i7.AdvancedEntityFiltersFormComponent, selector: "abp-advanced-entity-filters-form" }, { kind: "directive", type: i8.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i8.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i8.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i9.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i9.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i9.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i9.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i9.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i10.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i10.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OvoltIntegrationLogComponent, decorators: [{
110
+ type: Component,
111
+ args: [{ selector: 'lib-ovolt-integration-log', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'Ovolt::OvoltIntegrationLogs' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'Ovolt::ExportToExcel' | abpLocalization }}\r\n </button>\r\n\r\n <button\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Create'\"\r\n class=\"btn btn-primary btn-sm\"\r\n type=\"button\"\r\n (click)=\"create()\"\r\n >\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'Ovolt::NewOvoltIntegrationLog' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <abp-advanced-entity-filters localizationSourceName=\"Ovolt\" [list]=\"list\">\r\n <abp-advanced-entity-filters-form>\r\n <form #filterForm (keyup.enter)=\"list.get()\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"pathFilter\">\r\n {{ 'Ovolt::Path' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"pathFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.path\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"methodFilter\">\r\n {{ 'Ovolt::Method' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"methodFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.method\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"requestBodyFilter\">\r\n {{ 'Ovolt::RequestBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"requestBodyFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.requestBody\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"responseBodyFilter\">\r\n {{ 'Ovolt::ResponseBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"responseBodyFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.responseBody\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"statusCodeFilter\">\r\n {{ 'Ovolt::StatusCode' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"statusCodeFilter\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"filters.statusCode\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"minRequestTime\">\r\n {{ 'Ovolt::MinRequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"minRequestTime\"\r\n class=\"form-control\"\r\n #minRequestTimeInput\r\n #minRequestTimeDatepicker=\"ngbDatepicker\"\r\n name=\"minRequestTime\"\r\n ngbDatepicker\r\n container=\"body\"\r\n readonly\r\n (click)=\"minRequestTimeDatepicker.toggle()\"\r\n (keyup.space)=\"minRequestTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.requestTimeMin\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"minRequestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n minRequestTimeDatepicker.writeValue(null);\r\n minRequestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"maxRequestTime\">\r\n {{ 'Ovolt::MaxRequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"maxRequestTime\"\r\n class=\"form-control\"\r\n #maxRequestTimeInput\r\n #maxRequestTimeDatepicker=\"ngbDatepicker\"\r\n name=\"maxRequestTime\"\r\n ngbDatepicker\r\n readonly\r\n (click)=\"maxRequestTimeDatepicker.toggle()\"\r\n (keyup.space)=\"maxRequestTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.requestTimeMax\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"maxRequestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n maxRequestTimeDatepicker.writeValue(null);\r\n maxRequestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"minResponseTime\">\r\n {{ 'Ovolt::MinResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"minResponseTime\"\r\n class=\"form-control\"\r\n #minResponseTimeInput\r\n #minResponseTimeDatepicker=\"ngbDatepicker\"\r\n name=\"minResponseTime\"\r\n ngbDatepicker\r\n container=\"body\"\r\n readonly\r\n (click)=\"minResponseTimeDatepicker.toggle()\"\r\n (keyup.space)=\"minResponseTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.responseTimeMin\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"minResponseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n minResponseTimeDatepicker.writeValue(null);\r\n minResponseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"maxResponseTime\">\r\n {{ 'Ovolt::MaxResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n id=\"maxResponseTime\"\r\n class=\"form-control\"\r\n #maxResponseTimeInput\r\n #maxResponseTimeDatepicker=\"ngbDatepicker\"\r\n name=\"maxResponseTime\"\r\n ngbDatepicker\r\n readonly\r\n (click)=\"maxResponseTimeDatepicker.toggle()\"\r\n (keyup.space)=\"maxResponseTimeDatepicker.toggle()\"\r\n [(ngModel)]=\"filters.responseTimeMax\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n />\r\n <div *ngIf=\"maxResponseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n maxResponseTimeDatepicker.writeValue(null);\r\n maxResponseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-auto align-self-end mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-6 col-sm-auto d-grid\">\r\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"clearFilters()\">\r\n <span>{{ 'AbpUi::Clear' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n <div class=\"col-6 col-sm-auto d-grid\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"list.get()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </abp-advanced-entity-filters-form>\r\n </abp-advanced-entity-filters>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ngx-datatable [rows]=\"data.items\" [count]=\"data.totalCount\" [list]=\"list\" default>\r\n <ngx-datatable-column\r\n [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [maxWidth]=\"150\"\r\n [width]=\"150\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"fa fa-cog me-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n\r\n <div ngbDropdownMenu>\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Edit'\"\r\n (click)=\"update(row)\"\r\n >\r\n {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"'Ovolt.OvoltIntegrationLogs.Delete'\"\r\n (click)=\"delete(row)\"\r\n >\r\n {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::Path' | abpLocalization }}\" prop=\"path\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.path }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::Method' | abpLocalization }}\" prop=\"method\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.method }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::RequestBody' | abpLocalization }}\"\r\n prop=\"requestBody\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.requestBody }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::ResponseBody' | abpLocalization }}\"\r\n prop=\"responseBody\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.responseBody }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column name=\"{{ 'Ovolt::StatusCode' | abpLocalization }}\" prop=\"statusCode\">\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.statusCode }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::RequestTime' | abpLocalization }}\"\r\n prop=\"requestTime\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.requestTime | date }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ngx-datatable-column\r\n name=\"{{ 'Ovolt::ResponseTime' | abpLocalization }}\"\r\n prop=\"responseTime\"\r\n >\r\n <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n {{ row.responseTime | date }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ngx-datatable>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'Ovolt::NewOvoltIntegrationLog') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"ovolt-integration-log\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-path\">\r\n {{ 'Ovolt::Path' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-path\"\r\n formControlName=\"path\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-method\">\r\n {{ 'Ovolt::Method' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"ovolt-integration-log-method\" formControlName=\"method\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-request-body\">\r\n {{ 'Ovolt::RequestBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-request-body\"\r\n formControlName=\"requestBody\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-response-body\">\r\n {{ 'Ovolt::ResponseBody' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-response-body\"\r\n formControlName=\"responseBody\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-status-code\">\r\n {{ 'Ovolt::StatusCode' | abpLocalization }}\r\n </label>\r\n\r\n <input\r\n id=\"ovolt-integration-log-status-code\"\r\n formControlName=\"statusCode\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-request-time\">\r\n {{ 'Ovolt::RequestTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"ovolt-integration-log-request-time\"\r\n formControlName=\"requestTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #requestTimeInput\r\n #requestTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"requestTimeDatepicker.open()\"\r\n (keyup.space)=\"requestTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"requestTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n requestTimeDatepicker.writeValue(null);\r\n requestTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"ovolt-integration-log-response-time\">\r\n {{ 'Ovolt::ResponseTime' | abpLocalization }}\r\n </label>\r\n\r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"ovolt-integration-log-response-time\"\r\n formControlName=\"responseTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #responseTimeInput\r\n #responseTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"responseTimeDatepicker.open()\"\r\n (keyup.space)=\"responseTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"responseTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n responseTimeDatepicker.writeValue(null);\r\n responseTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"ovolt-integration-log\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
112
+ }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i1.TrackByService }, { type: i2.OvoltIntegrationLogService }, { type: i3.ConfirmationService }, { type: i4.FormBuilder }]; } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZvbHQtaW50ZWdyYXRpb24tbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL292b2x0L3NyYy9saWIvb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9vdm9sdC1pbnRlZ3JhdGlvbi1sb2cvY29tcG9uZW50cy9vdm9sdC1pbnRlZ3JhdGlvbi1sb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3ZvbHQvc3JjL2xpYi9vdm9sdC1pbnRlZ3JhdGlvbi1sb2dzL292b2x0LWludGVncmF0aW9uLWxvZy9jb21wb25lbnRzL292b2x0LWludGVncmF0aW9uLWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sWUFBWSxFQUFFLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFhbEUsTUFBTSxPQUFPLDRCQUE0QjtJQW9CdkMsWUFDa0IsSUFBaUIsRUFDakIsS0FBcUIsRUFDckIsT0FBbUMsRUFDM0MsWUFBaUMsRUFDakMsRUFBZTtRQUpQLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFDM0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUF4QnpCLFNBQUksR0FBMkM7WUFDN0MsS0FBSyxFQUFFLEVBQUU7WUFDVCxVQUFVLEVBQUUsQ0FBQztTQUNkLENBQUM7UUFFRixZQUFPLEdBQUcsRUFBa0MsQ0FBQztRQUk3QyxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7SUFVekIsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRSxDQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNuQixHQUFHLEtBQUs7WUFDUixHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2YsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3pCLENBQUMsQ0FBQztRQUVMLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBNEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBa0MsQ0FBQztJQUNwRCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FDdEYsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN4QixNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUM1QixXQUFXLEVBQUUsQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QyxZQUFZLEVBQUUsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN4QyxVQUFVLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNwQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzdELFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7U0FDakUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQkFDcEMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQ2xCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO2FBQ2pELENBQUM7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixPQUFPO2FBQ0osSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFDMUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBOEI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBOEI7UUFDbkMsSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsbUJBQW1CLEVBQUU7WUFDN0QseUJBQXlCLEVBQUUsRUFBRTtTQUM5QixDQUFDO2FBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUN4RCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2hEO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPO2FBQ1QsZ0JBQWdCLEVBQUU7YUFDbEIsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUN4RixFQUNELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUNuRDthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixZQUFZLENBQUMsTUFBTSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzt5SEE3SFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsb0RBSjVCLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDZjlFLDYrbkJBMGZBOzJGRHZlYSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGRvd25sb2FkQmxvYiwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIEdldE92b2x0SW50ZWdyYXRpb25Mb2dzSW5wdXQsXHJcbiAgT3ZvbHRJbnRlZ3JhdGlvbkxvZ0R0byxcclxufSBmcm9tICcuLi8uLi8uLi9wcm94eS9vdm9sdC1pbnRlZ3JhdGlvbi1sb2dzL21vZGVscyc7XHJcbmltcG9ydCB7IE92b2x0SW50ZWdyYXRpb25Mb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvb3ZvbHQtaW50ZWdyYXRpb24tbG9ncy9vdm9sdC1pbnRlZ3JhdGlvbi1sb2cuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW92b2x0LWludGVncmF0aW9uLWxvZycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL292b2x0LWludGVncmF0aW9uLWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE92b2x0SW50ZWdyYXRpb25Mb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPE92b2x0SW50ZWdyYXRpb25Mb2dEdG8+ID0ge1xyXG4gICAgaXRlbXM6IFtdLFxyXG4gICAgdG90YWxDb3VudDogMCxcclxuICB9O1xyXG5cclxuICBmaWx0ZXJzID0ge30gYXMgR2V0T3ZvbHRJbnRlZ3JhdGlvbkxvZ3NJbnB1dDtcclxuXHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBpc0ZpbHRlcnNIaWRkZW4gPSB0cnVlO1xyXG5cclxuICBpc01vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xyXG5cclxuICBpc0V4cG9ydFRvRXhjZWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkPzogT3ZvbHRJbnRlZ3JhdGlvbkxvZ0R0bztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IE92b2x0SW50ZWdyYXRpb25Mb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBnZXREYXRhID0gKHF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zKSA9PlxyXG4gICAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdCh7XHJcbiAgICAgICAgLi4ucXVlcnksXHJcbiAgICAgICAgLi4udGhpcy5maWx0ZXJzLFxyXG4gICAgICAgIGZpbHRlclRleHQ6IHF1ZXJ5LmZpbHRlcixcclxuICAgICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxPdm9sdEludGVncmF0aW9uTG9nRHRvPikgPT4gKHRoaXMuZGF0YSA9IGxpc3QpO1xyXG5cclxuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShnZXREYXRhKS5zdWJzY3JpYmUoc2V0RGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlcnMgPSB7fSBhcyBHZXRPdm9sdEludGVncmF0aW9uTG9nc0lucHV0O1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3QgeyBwYXRoLCBtZXRob2QsIHJlcXVlc3RCb2R5LCByZXNwb25zZUJvZHksIHN0YXR1c0NvZGUsIHJlcXVlc3RUaW1lLCByZXNwb25zZVRpbWUgfSA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgfHwge307XHJcblxyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHBhdGg6IFtwYXRoID8/IG51bGwsIFtdXSxcclxuICAgICAgbWV0aG9kOiBbbWV0aG9kID8/IG51bGwsIFtdXSxcclxuICAgICAgcmVxdWVzdEJvZHk6IFtyZXF1ZXN0Qm9keSA/PyBudWxsLCBbXV0sXHJcbiAgICAgIHJlc3BvbnNlQm9keTogW3Jlc3BvbnNlQm9keSA/PyBudWxsLCBbXV0sXHJcbiAgICAgIHN0YXR1c0NvZGU6IFtzdGF0dXNDb2RlID8/IG51bGwsIFtdXSxcclxuICAgICAgcmVxdWVzdFRpbWU6IFtyZXF1ZXN0VGltZSA/IG5ldyBEYXRlKHJlcXVlc3RUaW1lKSA6IG51bGwsIFtdXSxcclxuICAgICAgcmVzcG9uc2VUaW1lOiBbcmVzcG9uc2VUaW1lID8gbmV3IERhdGUocmVzcG9uc2VUaW1lKSA6IG51bGwsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIHNob3dGb3JtKCkge1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnNlbGVjdGVkXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLnNlbGVjdGVkLmlkLCB7XHJcbiAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXHJcbiAgICAgICAgICBjb25jdXJyZW5jeVN0YW1wOiB0aGlzLnNlbGVjdGVkLmNvbmN1cnJlbmN5U3RhbXAsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybS52YWx1ZSk7XHJcblxyXG4gICAgdGhpcy5pc01vZGFsQnVzeSA9IHRydWU7XHJcblxyXG4gICAgcmVxdWVzdFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc01vZGFsQnVzeSA9IGZhbHNlKSksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuaGlkZUZvcm0oKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHRoaXMubGlzdC5nZXQpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZShyZWNvcmQ6IE92b2x0SW50ZWdyYXRpb25Mb2dEdG8pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSByZWNvcmQ7XHJcbiAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUocmVjb3JkOiBPdm9sdEludGVncmF0aW9uTG9nRHRvKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAud2FybignT3ZvbHQ6OkRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnT3ZvbHQ6OkFyZVlvdVN1cmUnLCB7XHJcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW10sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzID09PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNlcnZpY2UuZGVsZXRlKHJlY29yZC5pZCkpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxpc3QuZ2V0KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFRvRXhjZWwoKSB7XHJcbiAgICB0aGlzLmlzRXhwb3J0VG9FeGNlbEJ1c3kgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXREb3dubG9hZFRva2VuKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCh7IHRva2VuIH0pID0+XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdEFzRXhjZWxGaWxlKHsgZG93bmxvYWRUb2tlbjogdG9rZW4sIGZpbHRlclRleHQ6IHRoaXMubGlzdC5maWx0ZXIgfSlcclxuICAgICAgICApLFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLmlzRXhwb3J0VG9FeGNlbEJ1c3kgPSBmYWxzZSkpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGRvd25sb2FkQmxvYihyZXN1bHQsICdPdm9sdEludGVncmF0aW9uTG9nLnhsc3gnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ092b2x0OjpPdm9sdEludGVncmF0aW9uTG9ncycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXgtMlwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRXhwb3J0VG9FeGNlbEJ1c3lcIlxyXG4gICAgICAgIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgJ092b2x0OjpFeHBvcnRUb0V4Y2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqYWJwUGVybWlzc2lvbj1cIidPdm9sdC5Pdm9sdEludGVncmF0aW9uTG9ncy5DcmVhdGUnXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJjcmVhdGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnT3ZvbHQ6Ok5ld092b2x0SW50ZWdyYXRpb25Mb2cnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuXHJcbiAgPGFicC1hZHZhbmNlZC1lbnRpdHktZmlsdGVycyBsb2NhbGl6YXRpb25Tb3VyY2VOYW1lPVwiT3ZvbHRcIiBbbGlzdF09XCJsaXN0XCI+XHJcbiAgICA8YWJwLWFkdmFuY2VkLWVudGl0eS1maWx0ZXJzLWZvcm0+XHJcbiAgICAgIDxmb3JtICNmaWx0ZXJGb3JtIChrZXl1cC5lbnRlcik9XCJsaXN0LmdldCgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXRoRmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6OlBhdGgnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBpZD1cInBhdGhGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLnBhdGhcIlxyXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJtZXRob2RGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6TWV0aG9kJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJtZXRob2RGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLm1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInJlcXVlc3RCb2R5RmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6OlJlcXVlc3RCb2R5JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJyZXF1ZXN0Qm9keUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlcnMucmVxdWVzdEJvZHlcIlxyXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJyZXNwb25zZUJvZHlGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6UmVzcG9uc2VCb2R5JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJyZXNwb25zZUJvZHlGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLnJlc3BvbnNlQm9keVwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInN0YXR1c0NvZGVGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6U3RhdHVzQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGlkPVwic3RhdHVzQ29kZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlcnMuc3RhdHVzQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm1pblJlcXVlc3RUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnT3ZvbHQ6Ok1pblJlcXVlc3RUaW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgaWQ9XCJtaW5SZXF1ZXN0VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgI21pblJlcXVlc3RUaW1lSW5wdXRcclxuICAgICAgICAgICAgICAgICAgI21pblJlcXVlc3RUaW1lRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWluUmVxdWVzdFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWluUmVxdWVzdFRpbWVEYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm1pblJlcXVlc3RUaW1lRGF0ZXBpY2tlci50b2dnbGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVycy5yZXF1ZXN0VGltZU1pblwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1pblJlcXVlc3RUaW1lSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtaW5SZXF1ZXN0VGltZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG1pblJlcXVlc3RUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJtYXhSZXF1ZXN0VGltZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ092b2x0OjpNYXhSZXF1ZXN0VGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGlkPVwibWF4UmVxdWVzdFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICNtYXhSZXF1ZXN0VGltZUlucHV0XHJcbiAgICAgICAgICAgICAgICAgICNtYXhSZXF1ZXN0VGltZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm1heFJlcXVlc3RUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWF4UmVxdWVzdFRpbWVEYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm1heFJlcXVlc3RUaW1lRGF0ZXBpY2tlci50b2dnbGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVycy5yZXF1ZXN0VGltZU1heFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1heFJlcXVlc3RUaW1lSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXhSZXF1ZXN0VGltZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG1heFJlcXVlc3RUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm1pblJlc3BvbnNlVGltZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ092b2x0OjpNaW5SZXNwb25zZVRpbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBpZD1cIm1pblJlc3BvbnNlVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgI21pblJlc3BvbnNlVGltZUlucHV0XHJcbiAgICAgICAgICAgICAgICAgICNtaW5SZXNwb25zZVRpbWVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5SZXNwb25zZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWluUmVzcG9uc2VUaW1lRGF0ZXBpY2tlci50b2dnbGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJtaW5SZXNwb25zZVRpbWVEYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLnJlc3BvbnNlVGltZU1pblwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1pblJlc3BvbnNlVGltZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWluUmVzcG9uc2VUaW1lRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWluUmVzcG9uc2VUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJtYXhSZXNwb25zZVRpbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdPdm9sdDo6TWF4UmVzcG9uc2VUaW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgaWQ9XCJtYXhSZXNwb25zZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICNtYXhSZXNwb25zZVRpbWVJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAjbWF4UmVzcG9uc2VUaW1lRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWF4UmVzcG9uc2VUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWF4UmVzcG9uc2VUaW1lRGF0ZXBpY2tlci50b2dnbGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJtYXhSZXNwb25zZVRpbWVEYXRlcGlja2VyLnRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLnJlc3BvbnNlVGltZU1heFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1heFJlc3BvbnNlVGltZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4UmVzcG9uc2VUaW1lRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4UmVzcG9uc2VUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tYXV0byBhbGlnbi1zZWxmLWVuZCBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgY29sLXNtLWF1dG8gZC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGNvbC1zbS1hdXRvIGQtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibGlzdC5nZXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQWJwVWk6OlJlZnJlc2gnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvYWJwLWFkdmFuY2VkLWVudGl0eS1maWx0ZXJzLWZvcm0+XHJcbiAgPC9hYnAtYWR2YW5jZWQtZW50aXR5LWZpbHRlcnM+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDxuZ3gtZGF0YXRhYmxlIFtyb3dzXT1cImRhdGEuaXRlbXNcIiBbY291bnRdPVwiZGF0YS50b3RhbENvdW50XCIgW2xpc3RdPVwibGlzdFwiIGRlZmF1bHQ+XHJcbiAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICAgICAgICBbbmFtZV09XCInQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgIFttYXhXaWR0aF09XCIxNTBcIlxyXG4gICAgICAgICAgW3dpZHRoXT1cIjE1MFwiXHJcbiAgICAgICAgICBbc29ydGFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJyb3dJbmRleFwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgKmFicFBlcm1pc3Npb249XCInT3ZvbHQuT3ZvbHRJbnRlZ3JhdGlvbkxvZ3MuRWRpdCdcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlKHJvdylcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAqYWJwUGVybWlzc2lvbj1cIidPdm9sdC5Pdm9sdEludGVncmF0aW9uTG9ncy5EZWxldGUnXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyb3cpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblxyXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBuYW1lPVwie3sgJ092b2x0OjpQYXRoJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIHByb3A9XCJwYXRoXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAge3sgcm93LnBhdGggfX1cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIG5hbWU9XCJ7eyAnT3ZvbHQ6Ok1ldGhvZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBwcm9wPVwibWV0aG9kXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAge3sgcm93Lm1ldGhvZCB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cclxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuICAgICAgICAgIG5hbWU9XCJ7eyAnT3ZvbHQ6OlJlcXVlc3RCb2R5JyB8IGFicExvY2FsaXphdGlvbiB9fVwiXHJcbiAgICAgICAgICBwcm9wPVwicmVxdWVzdEJvZHlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICB7eyByb3cucmVxdWVzdEJvZHkgfX1cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICAgICAgICBuYW1lPVwie3sgJ092b2x0OjpSZXNwb25zZUJvZHknIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcclxuICAgICAgICAgIHByb3A9XCJyZXNwb25zZUJvZHlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICB7eyByb3cucmVzcG9uc2VCb2R5IH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblxyXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBuYW1lPVwie3sgJ092b2x0OjpTdGF0dXNDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIHByb3A9XCJzdGF0dXNDb2RlXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAge3sgcm93LnN0YXR1c0NvZGUgfX1cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICAgICAgICBuYW1lPVwie3sgJ092b2x0OjpSZXF1ZXN0VGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxyXG4gICAgICAgICAgcHJvcD1cInJlcXVlc3RUaW1lXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAge3sgcm93LnJlcXVlc3RUaW1lIHwgZGF0ZSB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cclxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuICAgICAgICAgIG5hbWU9XCJ7eyAnT3ZvbHQ6OlJlc3BvbnNlVGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxyXG4gICAgICAgICAgcHJvcD1cInJlc3BvbnNlVGltZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIHt7IHJvdy5yZXNwb25zZVRpbWUgfCBkYXRlIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgICAgIDwvbmd4LWRhdGF0YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgKHNlbGVjdGVkID8gJ0FicFVpOjpFZGl0JyA6ICdPdm9sdDo6TmV3T3ZvbHRJbnRlZ3JhdGlvbkxvZycpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGlkPVwib3ZvbHQtaW50ZWdyYXRpb24tbG9nXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJvdm9sdC1pbnRlZ3JhdGlvbi1sb2ctcGF0aFwiPlxyXG4gICAgICAgICAgICB7eyAnT3ZvbHQ6OlBhdGgnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBpZD1cIm92b2x0LWludGVncmF0aW9uLWxvZy1wYXRoXCJcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwib3ZvbHQtaW50ZWdyYXRpb24tbG9nLW1ldGhvZFwiPlxyXG4gICAgICAgICAgICB7eyAnT3ZvbHQ6Ok1ldGhvZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGlucHV0IGlkPVwib3ZvbHQtaW50ZWdyYXRpb24tbG9nLW1ldGhvZFwiIGZvcm1Db250cm9sTmFtZT1cIm1ldGhvZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm92b2x0LWludGVncmF0aW9uLWxvZy1yZXF1ZXN0LWJvZHlcIj5cclxuICAgICAgICAgICAge3sgJ092b2x0OjpSZXF1ZXN0Qm9keScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGlkPVwib3ZvbHQtaW50ZWdyYXRpb24tbG9nLXJlcXVlc3QtYm9keVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlcXVlc3RCb2R5XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm92b2x0LWludGVncmF0aW9uLWxvZy1yZXNwb25zZS1ib2R5XCI+XHJcbiAgICAgICAgICAgIHt7ICdPdm9sdDo6UmVzcG9uc2VCb2R5JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgaWQ9XCJvdm9sdC1pbnRlZ3JhdGlvbi1sb2ctcmVzcG9uc2UtYm9keVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlc3BvbnNlQm9keVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJvdm9sdC1pbnRlZ3JhdGlvbi1sb2ctc3RhdHVzLWNvZGVcIj5cclxuICAgICAgICAgICAge3sgJ092b2x0OjpTdGF0dXNDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgaWQ9XCJvdm9sdC1pbnRlZ3JhdGlvbi1sb2ctc3RhdHVzLWNvZGVcIlxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNDb2RlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm92b2x0LWludGVncmF0aW9uLWxvZy1yZXF1ZXN0LXRpbWVcIj5cclxuICAgICAgICAgICAge3sgJ092b2x0OjpSZXF1ZXN0VGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICBpZD1cIm92b2x0LWludGVncmF0aW9uLWxvZy1yZXF1ZXN0LXRpbWVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlcXVlc3RUaW1lXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICNyZXF1ZXN0VGltZUlucHV0XHJcbiAgICAgICAgICAgICAgI3JlcXVlc3RUaW1lRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0VGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicmVxdWVzdFRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXF1ZXN0VGltZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVxdWVzdFRpbWVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJvdm9sdC1pbnRlZ3JhdGlvbi1sb2ctcmVzcG9uc2UtdGltZVwiPlxyXG4gICAgICAgICAgICB7eyAnT3ZvbHQ6OlJlc3BvbnNlVGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICBpZD1cIm92b2x0LWludGVncmF0aW9uLWxvZy1yZXNwb25zZS10aW1lXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNwb25zZVRpbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgI3Jlc3BvbnNlVGltZUlucHV0XHJcbiAgICAgICAgICAgICAgI3Jlc3BvbnNlVGltZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVzcG9uc2VUaW1lRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJyZXNwb25zZVRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zZVRpbWVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGltZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwib3ZvbHQtaW50ZWdyYXRpb24tbG9nXCI+XHJcbiAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYWJwLWJ1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuIl19