@esfaenza/admin-module 13.1.0-beta7 → 13.1.2

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 (43) hide show
  1. package/README.md +1 -24
  2. package/esm2020/lib/admin-module.module.mjs +13 -15
  3. package/esm2020/lib/components/audits/adm_audits.component.mjs +19 -25
  4. package/esm2020/lib/components/enqueues/adm_enq.component.mjs +19 -18
  5. package/esm2020/lib/components/logs/adm_logs.component.mjs +12 -9
  6. package/esm2020/lib/components/metrics/metrics_search.component.mjs +18 -15
  7. package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +2 -2
  8. package/esm2020/lib/components/profiler/adm_profiler.component.mjs +20 -20
  9. package/esm2020/lib/components/topact/topact_search.component.mjs +18 -16
  10. package/esm2020/lib/components/workers/adm_wrk.component.mjs +16 -15
  11. package/esm2020/lib/models/components/AuditsView.mjs +1 -1
  12. package/esm2020/lib/models/components/LocksView.mjs +1 -1
  13. package/esm2020/lib/models/components/ProfilerDataNode.mjs +3 -3
  14. package/esm2020/lib/models/components/ProfilerDataNodesView.mjs +1 -1
  15. package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
  16. package/esm2020/lib/models/components/TopActivity.mjs +1 -1
  17. package/esm2020/lib/tokens.mjs +2 -1
  18. package/fesm2015/esfaenza-admin-module.mjs +658 -751
  19. package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
  20. package/fesm2020/esfaenza-admin-module.mjs +609 -698
  21. package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
  22. package/lib/admin-module.module.d.ts +23 -16
  23. package/lib/components/audits/adm_audits.component.d.ts +4 -2
  24. package/lib/components/enqueues/adm_enq.component.d.ts +5 -4
  25. package/lib/components/logs/adm_logs.component.d.ts +3 -1
  26. package/lib/components/metrics/metrics_search.component.d.ts +8 -4
  27. package/lib/components/profiler/adm_profiler.component.d.ts +5 -4
  28. package/lib/components/topact/topact_search.component.d.ts +8 -4
  29. package/lib/components/workers/adm_wrk.component.d.ts +5 -3
  30. package/lib/models/components/AuditsView.d.ts +1 -1
  31. package/lib/models/components/ProfilerDataNodesView.d.ts +1 -1
  32. package/lib/models/components/TopActivitiesDataView.d.ts +1 -1
  33. package/lib/models/components/TopActivity.d.ts +3 -1
  34. package/lib/tokens.d.ts +1 -0
  35. package/package.json +10 -2
  36. package/esm2020/lib/components/index.mjs +0 -14
  37. package/esm2020/lib/models/components/Lock.loc.mjs +0 -13
  38. package/esm2020/lib/models/components/Lock.mjs +0 -48
  39. package/esm2020/lib/models/index.mjs +0 -22
  40. package/lib/components/index.d.ts +0 -13
  41. package/lib/models/components/Lock.d.ts +0 -12
  42. package/lib/models/components/Lock.loc.d.ts +0 -42
  43. package/lib/models/index.d.ts +0 -21
package/README.md CHANGED
@@ -1,24 +1 @@
1
- # AdminModule
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.6.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project admin-module` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project admin-module`.
8
- > Note: Don't forget to add `--project admin-module` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build admin-module` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build admin-module`, go to the dist folder `cd dist/admin-module` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test admin-module` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
1
+ # AdminModule
@@ -6,6 +6,7 @@ import { RouterModule } from "@angular/router";
6
6
  // Material
7
7
  import { MatIconModule } from '@angular/material/icon';
8
8
  import { MatDatepickerModule } from '@angular/material/datepicker';
9
+ import { MatDayjsDateModule } from "@esfaenza/material-dayjs-adapter";
9
10
  import { MatInputModule } from "@angular/material/input";
10
11
  // Libs
11
12
  import { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';
@@ -21,7 +22,13 @@ import { EsGertrudeModule } from "@esfaenza/gertrude";
21
22
  import { LocalizationModule } from "@esfaenza/localizations";
22
23
  import { ContextMenuModule } from "@esfaenza/ngx-contextmenu";
23
24
  // Components
24
- import { AdmWrkComponent, AdmProfilerComponent, AdmTopActivitiesComponent, AdmLogsComponent, AdmAuditsComponent, AdmEnqComponent, AdmMetricsComponent } from "./components";
25
+ import { AdmAuditsComponent } from "./components/audits/adm_audits.component";
26
+ import { AdmWrkComponent } from "./components/workers/adm_wrk.component";
27
+ import { AdmProfilerComponent } from "./components/profiler/adm_profiler.component";
28
+ import { AdmTopActivitiesComponent } from "./components/topact/topact_search.component";
29
+ import { AdmEnqComponent } from "./components/enqueues/adm_enq.component";
30
+ import { AdmMetricsComponent } from "./components/metrics/metrics_search.component";
31
+ import { AdmLogsComponent } from "./components/logs/adm_logs.component";
25
32
  import * as i0 from "@angular/core";
26
33
  import * as i1 from "@angular/router";
27
34
  export const routeConfig = [
@@ -43,6 +50,7 @@ const MODULES = [
43
50
  FormsModule,
44
51
  // Material
45
52
  MatDatepickerModule,
53
+ MatDayjsDateModule,
46
54
  MatIconModule,
47
55
  MatInputModule,
48
56
  // Bootstrap
@@ -57,11 +65,6 @@ const MODULES = [
57
65
  FormsAndValidationsModule,
58
66
  EsGertrudeModule,
59
67
  EsChartsModule,
60
- EsTableModule,
61
- FormsAndValidationsModule,
62
- EsChartsModule,
63
- FormsAndValidationsModule,
64
- EsChartsModule,
65
68
  NgxMatDatetimePickerModule,
66
69
  RouterModule.forChild(routeConfig),
67
70
  ];
@@ -89,6 +92,7 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
89
92
  FormsModule,
90
93
  // Material
91
94
  MatDatepickerModule,
95
+ MatDayjsDateModule,
92
96
  MatIconModule,
93
97
  MatInputModule,
94
98
  // Bootstrap
@@ -103,19 +107,13 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
103
107
  FormsAndValidationsModule,
104
108
  EsGertrudeModule,
105
109
  EsChartsModule,
106
- EsTableModule,
107
- FormsAndValidationsModule,
108
- EsChartsModule,
109
- FormsAndValidationsModule,
110
- EsChartsModule,
111
110
  NgxMatDatetimePickerModule, i1.RouterModule] });
112
- AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, providers: [], imports: [[...MODULES]] });
111
+ AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, imports: [[...MODULES]] });
113
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, decorators: [{
114
113
  type: NgModule,
115
114
  args: [{
116
115
  imports: [...MODULES],
117
- declarations: [...COMPONENTS],
118
- providers: []
116
+ declarations: [...COMPONENTS]
119
117
  }]
120
118
  }] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL2FkbWluLW1vZHVsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsV0FBVztBQUNYLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTztBQUNQLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxXQUFXO0FBQ1gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0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Q1osV0FBVztRQUNYLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsU0FBUztRQUVULGdDQUFnQztRQUNoQyxpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYix5QkFBeUI7UUFDekIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxhQUFhO1FBQ2IseUJBQXlCO1FBQ3pCLGNBQWM7UUFDZCx5QkFBeUI7UUFDekIsY0FBYztRQUNkLDBCQUEwQjt1R0FvQmYsU0FBUyxhQUZULEVBQUcsWUFGTCxDQUFDLEdBQUcsT0FBTyxDQUFDOzJGQUlWLFNBQVM7a0JBTHJCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3JCLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUM3QixTQUFTLEVBQUUsRUFBRztpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbi8vIE1hdGVyaWFsXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IERheUpzRGF0ZUFkYXB0ZXIsIE1hdERheWpzRGF0ZU1vZHVsZSB9IGZyb20gJ0Blc2ZhZW56YS9tYXRlcmlhbC1kYXlqcy1hZGFwdGVyJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5cbi8vIExpYnNcbmltcG9ydCB7IE5neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXInO1xuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xuaW1wb3J0IHsgQ3N2TW9kdWxlIH0gZnJvbSBcIkBjdHJsL25neC1jc3ZcIjtcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kcm9wZG93blwiO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Rvb2x0aXBcIjtcblxuLy8gRXNmYWVuemFcbmltcG9ydCB7IEVzVGFibGVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2VzLXRhYmxlXCI7XG5pbXBvcnQgeyBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9mb3Jtcy1hbmQtdmFsaWRhdGlvbnNcIjtcbmltcG9ydCB7IEVzQ2hhcnRzTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy1jaGFydHNcIjtcbmltcG9ydCB7IEVzR2VydHJ1ZGVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2dlcnRydWRlXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Nb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcbmltcG9ydCB7IENvbnRleHRNZW51TW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9uZ3gtY29udGV4dG1lbnVcIjtcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHtcbiAgQWRtV3JrQ29tcG9uZW50LFxuICBBZG1Qcm9maWxlckNvbXBvbmVudCxcbiAgQWRtVG9wQWN0aXZpdGllc0NvbXBvbmVudCxcbiAgQWRtTG9nc0NvbXBvbmVudCxcbiAgQWRtQXVkaXRzQ29tcG9uZW50LFxuICBBZG1FbnFDb21wb25lbnQsXG4gIEFkbU1ldHJpY3NDb21wb25lbnRcbn0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuXG5leHBvcnQgY29uc3Qgcm91dGVDb25maWcgPSBbXG4gIHtcbiAgICBwYXRoOiBcIlwiLCBjaGlsZHJlbjogW1xuICAgICAgIHsgcGF0aDogXCJzZXJ2ZXJ3b3JrZXJzXCIsIGNvbXBvbmVudDogQWRtV3JrQ29tcG9uZW50LCBkYXRhOiB7IHRpdGxlOiBcIlNlYXJjaCBBcHBsaWNhdGlvbiBQcm9jZXNzZXNcIiwgaW50ZXJuYWxOYXZpZ2F0aW9uOiBmYWxzZSB9IH0sXG4gICAgICAgeyBwYXRoOiBcInByb2ZpbGVyXCIsIGNvbXBvbmVudDogQWRtUHJvZmlsZXJDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6IFwiU2VydmVyIFByb2ZpbGVyXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgICAgIHsgcGF0aDogXCJ0b3BhY3RcIiwgY29tcG9uZW50OiBBZG1Ub3BBY3Rpdml0aWVzQ29tcG9uZW50LCBkYXRhOiB7IHRpdGxlOiBcIlRvcCBBY3Rpdml0aWVzXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgICAgIHsgcGF0aDogXCJtZXRyaWNzXCIsIGNvbXBvbmVudDogQWRtTWV0cmljc0NvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogXCJTeXN0ZW0gTWV0cmljc1wiLCBpbnRlcm5hbE5hdmlnYXRpb246IGZhbHNlIH0gfSxcbiAgICAgICB7IHBhdGg6IFwic2VydmVybG9nc1wiLCBjb21wb25lbnQ6IEFkbUxvZ3NDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6IFwiU2VydmVyIExvZ3NcIiwgaW50ZXJuYWxOYXZpZ2F0aW9uOiBmYWxzZSB9IH0sXG4gICAgICAgeyBwYXRoOiBcInNlcnZlcmF1ZGl0c1wiLCBjb21wb25lbnQ6IEFkbUF1ZGl0c0NvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogXCJTZWFyY2ggQXBwbGljYXRpb24gQXVkaXRzXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgICAgIHsgcGF0aDogXCJzZXJ2ZXJlbnF1ZXVlc1wiLCBjb21wb25lbnQ6IEFkbUVucUNvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogXCJTZWFyY2ggQXBwbGljYXRpb24gTG9ja3NcIiwgaW50ZXJuYWxOYXZpZ2F0aW9uOiBmYWxzZSB9IH0sXG4gICAgXVxuICB9XG5dO1xuXG5jb25zdCBNT0RVTEVTID0gW1xuICAvLyBCYXNlXG4gIENvbW1vbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG5cbiAgLy8gTWF0ZXJpYWxcbiAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgTWF0SWNvbk1vZHVsZSxcbiAgTWF0SW5wdXRNb2R1bGUsXG5cbiAgLy8gQm9vdHN0cmFwXG4gIE1vZGFsTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxuICBCc0Ryb3Bkb3duTW9kdWxlLFxuICBDc3ZNb2R1bGUsXG5cbiAgLy8gRXNmYWVuemEgZSBjb21wb25lbnRpIHZpc3VhbGlcbiAgQ29udGV4dE1lbnVNb2R1bGUsXG4gIExvY2FsaXphdGlvbk1vZHVsZSxcbiAgRXNUYWJsZU1vZHVsZSxcbiAgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSxcbiAgRXNHZXJ0cnVkZU1vZHVsZSxcbiAgRXNDaGFydHNNb2R1bGUsXG4gIEVzVGFibGVNb2R1bGUsXG4gIEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUsXG4gIEVzQ2hhcnRzTW9kdWxlLFxuICBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlLFxuICBFc0NoYXJ0c01vZHVsZSxcbiAgTmd4TWF0RGF0ZXRpbWVQaWNrZXJNb2R1bGUsXG5cbiAgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlQ29uZmlnKSxcbl07XG5cbmNvbnN0IENPTVBPTkVOVFMgPSBbXG4gIEFkbVdya0NvbXBvbmVudCxcbiAgQWRtUHJvZmlsZXJDb21wb25lbnQsXG4gIEFkbVRvcEFjdGl2aXRpZXNDb21wb25lbnQsXG4gIEFkbUxvZ3NDb21wb25lbnQsXG4gIEFkbUF1ZGl0c0NvbXBvbmVudCxcbiAgQWRtRW5xQ29tcG9uZW50LFxuICBBZG1NZXRyaWNzQ29tcG9uZW50XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFU10sXG4gIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVFNdLFxuICBwcm92aWRlcnM6IFsgXVxufSlcbmV4cG9ydCBjbGFzcyBBZG1Nb2R1bGUgeyB9Il19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL2FkbWluLW1vZHVsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsV0FBVztBQUNYLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTztBQUNQLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxXQUFXO0FBQ1gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNy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OztzR0FBVCxTQUFTO3VHQUFULFNBQVMsaUJBYnBCLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLG1CQUFtQjtRQW5DbkIsT0FBTztRQUNQLFlBQVk7UUFDWixXQUFXO1FBRVgsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFFZCxZQUFZO1FBQ1osV0FBVztRQUNYLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsU0FBUztRQUVULGdDQUFnQztRQUNoQyxpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYix5QkFBeUI7UUFDekIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCwwQkFBMEI7dUdBbUJmLFNBQVMsWUFIWCxDQUFDLEdBQUcsT0FBTyxDQUFDOzJGQUdWLFNBQVM7a0JBSnJCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3JCLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbi8vIE1hdGVyaWFsXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdERheWpzRGF0ZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlclwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcblxuLy8gTGlic1xuaW1wb3J0IHsgTmd4TWF0RGF0ZXRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBNb2RhbE1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL21vZGFsXCI7XG5pbXBvcnQgeyBDc3ZNb2R1bGUgfSBmcm9tIFwiQGN0cmwvbmd4LWNzdlwiO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG4vLyBFc2ZhZW56YVxuaW1wb3J0IHsgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcbmltcG9ydCB7IEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2Zvcm1zLWFuZC12YWxpZGF0aW9uc1wiO1xuaW1wb3J0IHsgRXNDaGFydHNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2VzLWNoYXJ0c1wiO1xuaW1wb3J0IHsgRXNHZXJ0cnVkZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZ2VydHJ1ZGVcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL25neC1jb250ZXh0bWVudVwiO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBBZG1BdWRpdHNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2F1ZGl0cy9hZG1fYXVkaXRzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQWRtV3JrQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy93b3JrZXJzL2FkbV93cmsuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBBZG1Qcm9maWxlckNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvcHJvZmlsZXIvYWRtX3Byb2ZpbGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQWRtVG9wQWN0aXZpdGllc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvdG9wYWN0L3RvcGFjdF9zZWFyY2guY29tcG9uZW50XCI7XG5pbXBvcnQgeyBBZG1FbnFDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2VucXVldWVzL2FkbV9lbnEuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBBZG1NZXRyaWNzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9tZXRyaWNzL21ldHJpY3Nfc2VhcmNoLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQWRtTG9nc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbG9ncy9hZG1fbG9ncy5jb21wb25lbnRcIjtcblxuZXhwb3J0IGNvbnN0IHJvdXRlQ29uZmlnID0gW1xuICB7XG4gICAgcGF0aDogXCJcIiwgY2hpbGRyZW46IFtcbiAgICAgICB7IHBhdGg6IFwic2VydmVyd29ya2Vyc1wiLCBjb21wb25lbnQ6IEFkbVdya0NvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogXCJTZWFyY2ggQXBwbGljYXRpb24gUHJvY2Vzc2VzXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgICAgIHsgcGF0aDogXCJwcm9maWxlclwiLCBjb21wb25lbnQ6IEFkbVByb2ZpbGVyQ29tcG9uZW50LCBkYXRhOiB7IHRpdGxlOiBcIlNlcnZlciBQcm9maWxlclwiLCBpbnRlcm5hbE5hdmlnYXRpb246IGZhbHNlIH0gfSxcbiAgICAgICB7IHBhdGg6IFwidG9wYWN0XCIsIGNvbXBvbmVudDogQWRtVG9wQWN0aXZpdGllc0NvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogXCJUb3AgQWN0aXZpdGllc1wiLCBpbnRlcm5hbE5hdmlnYXRpb246IGZhbHNlIH0gfSxcbiAgICAgICB7IHBhdGg6IFwibWV0cmljc1wiLCBjb21wb25lbnQ6IEFkbU1ldHJpY3NDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6IFwiU3lzdGVtIE1ldHJpY3NcIiwgaW50ZXJuYWxOYXZpZ2F0aW9uOiBmYWxzZSB9IH0sXG4gICAgICAgeyBwYXRoOiBcInNlcnZlcmxvZ3NcIiwgY29tcG9uZW50OiBBZG1Mb2dzQ29tcG9uZW50LCBkYXRhOiB7IHRpdGxlOiBcIlNlcnZlciBMb2dzXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgICAgIHsgcGF0aDogXCJzZXJ2ZXJhdWRpdHNcIiwgY29tcG9uZW50OiBBZG1BdWRpdHNDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6IFwiU2VhcmNoIEFwcGxpY2F0aW9uIEF1ZGl0c1wiLCBpbnRlcm5hbE5hdmlnYXRpb246IGZhbHNlIH0gfSxcbiAgICAgICB7IHBhdGg6IFwic2VydmVyZW5xdWV1ZXNcIiwgY29tcG9uZW50OiBBZG1FbnFDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6IFwiU2VhcmNoIEFwcGxpY2F0aW9uIExvY2tzXCIsIGludGVybmFsTmF2aWdhdGlvbjogZmFsc2UgfSB9LFxuICAgIF1cbiAgfVxuXTtcblxuY29uc3QgTU9EVUxFUyA9IFtcbiAgLy8gQmFzZVxuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuXG4gIC8vIE1hdGVyaWFsXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gIE1hdERheWpzRGF0ZU1vZHVsZSxcbiAgTWF0SWNvbk1vZHVsZSxcbiAgTWF0SW5wdXRNb2R1bGUsXG5cbiAgLy8gQm9vdHN0cmFwXG4gIE1vZGFsTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxuICBCc0Ryb3Bkb3duTW9kdWxlLFxuICBDc3ZNb2R1bGUsXG5cbiAgLy8gRXNmYWVuemEgZSBjb21wb25lbnRpIHZpc3VhbGlcbiAgQ29udGV4dE1lbnVNb2R1bGUsXG4gIExvY2FsaXphdGlvbk1vZHVsZSxcbiAgRXNUYWJsZU1vZHVsZSxcbiAgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSxcbiAgRXNHZXJ0cnVkZU1vZHVsZSxcbiAgRXNDaGFydHNNb2R1bGUsXG4gIE5neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlLFxuXG4gIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZUNvbmZpZyksXG5dO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICBBZG1XcmtDb21wb25lbnQsXG4gIEFkbVByb2ZpbGVyQ29tcG9uZW50LFxuICBBZG1Ub3BBY3Rpdml0aWVzQ29tcG9uZW50LFxuICBBZG1Mb2dzQ29tcG9uZW50LFxuICBBZG1BdWRpdHNDb21wb25lbnQsXG4gIEFkbUVucUNvbXBvbmVudCxcbiAgQWRtTWV0cmljc0NvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1PRFVMRVNdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXVxufSlcbmV4cG9ydCBjbGFzcyBBZG1Nb2R1bGUgeyB9Il19
@@ -1,13 +1,12 @@
1
+ // Angular
1
2
  import { Component, Inject } from "@angular/core";
2
3
  // Configurazioni
3
4
  import { LocalizationService } from "@esfaenza/localizations";
4
- // Classi
5
- import { AuditsView, Repository } from "../../models";
6
- // Applicazione
7
- import { AdmAuditLoc } from "../";
8
- import { ADM_BACKEND_URL } from "../../tokens";
9
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
10
- import { DayJsDateAdapter, MAT_DAYJS_DATE_FORMATS } from "@esfaenza/material-dayjs-adapter";
5
+ import { AuditsView } from "../../models/components/AuditsView";
6
+ import { Repository } from "../../models/externals/Repository";
7
+ import { ADM_BACKEND_URL, ADM_MODULE_PATH } from "../../tokens";
8
+ // Localizzazione
9
+ import { AdmAuditLoc } from "./adm_audits.component.loc";
11
10
  import * as i0 from "@angular/core";
12
11
  import * as i1 from "@esfaenza/localizations";
13
12
  import * as i2 from "@esfaenza/preferences";
@@ -19,7 +18,7 @@ import * as i7 from "@esfaenza/forms-and-validations";
19
18
  import * as i8 from "@esfaenza/es-table";
20
19
  import * as i9 from "@angular/forms";
21
20
  export class AdmAuditsComponent {
22
- constructor(lc, localStorage, _state, http, route, location, backend) {
21
+ constructor(lc, localStorage, _state, http, route, location, backend, mod) {
23
22
  this.lc = lc;
24
23
  this.localStorage = localStorage;
25
24
  this._state = _state;
@@ -27,11 +26,12 @@ export class AdmAuditsComponent {
27
26
  this.route = route;
28
27
  this.location = location;
29
28
  this.backend = backend;
29
+ this.mod = mod;
30
30
  this.searchView = new AuditsView();
31
31
  this.Actions = [];
32
32
  this.HttpMethods = [];
33
33
  this.searchInProgress = false;
34
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
34
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
35
35
  this.HttpMethods = [
36
36
  { id: "GET", description: "GET" },
37
37
  { id: "POST", description: "POST" },
@@ -46,9 +46,7 @@ export class AdmAuditsComponent {
46
46
  ];
47
47
  }
48
48
  ngOnInit() {
49
- this.storageSub = this.route.queryParams.subscribe(params => {
50
- this.Init(params["ignoreStorage"]);
51
- });
49
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
52
50
  }
53
51
  ngOnDestroy() {
54
52
  if (this.storageSub)
@@ -61,7 +59,7 @@ export class AdmAuditsComponent {
61
59
  }
62
60
  else {
63
61
  this.init(null);
64
- this.location.replaceState("/pages/adm/serveraudits");
62
+ this.location.replaceState(`/pages/${this.mod}/serveraudits`);
65
63
  this.route.snapshot.queryParams = [];
66
64
  await this.localStorage.removeItem("HotAudittato").toPromise();
67
65
  }
@@ -77,8 +75,7 @@ export class AdmAuditsComponent {
77
75
  this.searchView = new AuditsView();
78
76
  this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
79
77
  this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
80
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
81
- setTimeout(() => this.sendSearch());
78
+ this.sendSearch();
82
79
  }
83
80
  }
84
81
  sendSearch(resetPage = true) {
@@ -95,19 +92,16 @@ export class AdmAuditsComponent {
95
92
  });
96
93
  }
97
94
  }
98
- AdmAuditsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PreferencesService }, { token: i3.BaseModuleCommunicationsConsumer }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: i6.Location }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
99
- AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", providers: [
100
- { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS },
101
- { provide: DateAdapter, useClass: DayJsDateAdapter, deps: [MAT_DATE_LOCALE] }
102
- ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i1.LocalizePipe, "loc_date": i1.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
95
+ AdmAuditsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PreferencesService }, { token: i3.BaseModuleCommunicationsConsumer }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: i6.Location }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
96
+ AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'Timestamp'\">{{'Date' | localize : lc}}</span>\r\n <span *th=\"'User'\">{{'User' | localize : lc}}</span>\r\n <span *th=\"'Action'\">{{'Action' | localize : lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'HTTP Method' | localize : lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Arguments' | localize : lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'HTTP Response' | localize : lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Application Error Code' | localize : lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Object Type' | localize : lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'Object ID' | localize : lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Object Data' | localize : lc}}</span>\r\n \r\n <strong *td=\"'Timestamp'; let pro\">{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let pro\">{{pro.user}}</span>\r\n <span *td=\"'Action'; let pro\">{{pro.action}}</span>\r\n <span *td=\"'HttpMethod'; let pro\">{{pro.httpmethod}}</span>\r\n <span *td=\"'Route'; let pro\">{{pro.route}}</span>\r\n <span *td=\"'Args'; let pro\">{{pro.args}}</span>\r\n <span *td=\"'HttpResponse'; let pro\">{{pro.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let pro\">{{pro.mdmerrorcode}}</span>\r\n <span *td=\"'ObjectType'; let pro\">{{pro.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let pro\">{{pro.objectid}}</span>\r\n <span *td=\"'ObjectData'; let pro\">{{pro.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation"] }, { type: i8.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }], pipes: { "localize": i1.LocalizePipe, "loc_date": i1.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
103
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
104
98
  type: Component,
105
- args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], providers: [
106
- { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS },
107
- { provide: DateAdapter, useClass: DayJsDateAdapter, deps: [MAT_DATE_LOCALE] }
108
- ], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
99
+ args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'Timestamp'\">{{'Date' | localize : lc}}</span>\r\n <span *th=\"'User'\">{{'User' | localize : lc}}</span>\r\n <span *th=\"'Action'\">{{'Action' | localize : lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'HTTP Method' | localize : lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Arguments' | localize : lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'HTTP Response' | localize : lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Application Error Code' | localize : lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Object Type' | localize : lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'Object ID' | localize : lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Object Data' | localize : lc}}</span>\r\n \r\n <strong *td=\"'Timestamp'; let pro\">{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let pro\">{{pro.user}}</span>\r\n <span *td=\"'Action'; let pro\">{{pro.action}}</span>\r\n <span *td=\"'HttpMethod'; let pro\">{{pro.httpmethod}}</span>\r\n <span *td=\"'Route'; let pro\">{{pro.route}}</span>\r\n <span *td=\"'Args'; let pro\">{{pro.args}}</span>\r\n <span *td=\"'HttpResponse'; let pro\">{{pro.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let pro\">{{pro.mdmerrorcode}}</span>\r\n <span *td=\"'ObjectType'; let pro\">{{pro.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let pro\">{{pro.objectid}}</span>\r\n <span *td=\"'ObjectData'; let pro\">{{pro.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
109
100
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PreferencesService }, { type: i3.BaseModuleCommunicationsConsumer }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: i6.Location }, { type: undefined, decorators: [{
110
101
  type: Inject,
111
102
  args: [ADM_BACKEND_URL]
103
+ }] }, { type: undefined, decorators: [{
104
+ type: Inject,
105
+ args: [ADM_MODULE_PATH]
112
106
  }] }]; } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtX2F1ZGl0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0cy9hZG1fYXVkaXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXRzL2FkbV9hdWRpdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTlELFNBQVM7QUFDVCxPQUFPLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxlQUFlO0FBQ2YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUlsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBaUI1RixNQUFNLE9BQU8sa0JBQWtCO0lBUTNCLFlBQ1csRUFBdUIsRUFDdEIsWUFBZ0MsRUFDaEMsTUFBd0MsRUFDeEMsSUFBaUIsRUFDakIsS0FBcUIsRUFDckIsUUFBa0IsRUFDTyxPQUFlO1FBTnpDLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFrQztRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pC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Q0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBekZRLGtCQUFrQix3TkFlZixlQUFlO21HQWZsQixrQkFBa0IscUNBTGhCO1FBQ1AsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO1FBQy9ELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDaEYsMEJDbkNMLGsvUEEwRk0sK3pFRDVEYSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzsyRkFPL0Qsa0JBQWtCO2tCQVQ5QixTQUFTOytCQUNJLFlBQVksaUJBQ1AsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsYUFFN0Q7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO3dCQUMvRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO3FCQUNoRjs7MEJBaUJJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvcHJlZmVyZW5jZXNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgS2V5VmFsdWUsIEF1ZGl0c1ZpZXcsIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQWRtQXVkaXRMb2MgfSBmcm9tIFwiLi4vXCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmltcG9ydCB7IEJhc2VNb2R1bGVDb21tdW5pY2F0aW9uc0NvbnN1bWVyIH0gZnJvbSBcIi4uLy4uL2NvbW11bmljYXRpb25zL2Jhc2UvQmFzZU1vZHVsZUNvbW11bmljYXRpb25zQ29uc3VtZXJcIjtcclxuaW1wb3J0IHsgQURNX0JBQ0tFTkRfVVJMIH0gZnJvbSBcIi4uLy4uL3Rva2Vuc1wiO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF5SnNEYXRlQWRhcHRlciwgTUFUX0RBWUpTX0RBVEVfRk9STUFUUyB9IGZyb20gXCJAZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlclwiO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiYWRtX2F1ZGl0c1wiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEFkbUF1ZGl0TG9jIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hZG1fYXVkaXRzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfREFZSlNfREFURV9GT1JNQVRTIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERheUpzRGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFkbUF1ZGl0c0NvbXBvbmVudCB7XHJcblxyXG4gICAgcHVibGljIHNlYXJjaFZpZXc6IEF1ZGl0c1ZpZXcgPSBuZXcgQXVkaXRzVmlldygpO1xyXG4gICAgcHVibGljIEFjdGlvbnM6IEtleVZhbHVlW10gPSBbXTtcclxuICAgIHB1YmxpYyBIdHRwTWV0aG9kczogS2V5VmFsdWVbXSA9IFtdO1xyXG4gICAgcHVibGljIHNlYXJjaEluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzdG9yYWdlU3ViOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlOiBQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhdGU6IEJhc2VNb2R1bGVDb21tdW5pY2F0aW9uc0NvbnN1bWVyLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSFRUUFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgQEluamVjdChBRE1fQkFDS0VORF9VUkwpIHByaXZhdGUgYmFja2VuZDogc3RyaW5nKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLmhhbmRsZU5hdmlnYXRpb24odGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhW1widGl0bGVcIl0sIGZhbHNlKTtcclxuXHJcbiAgICAgICAgdGhpcy5IdHRwTWV0aG9kcyA9IFtcclxuICAgICAgICAgICAgeyBpZDogXCJHRVRcIiwgZGVzY3JpcHRpb246IFwiR0VUXCIgfSxcclxuICAgICAgICAgICAgeyBpZDogXCJQT1NUXCIsIGRlc2NyaXB0aW9uOiBcIlBPU1RcIiB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlBVVFwiLCBkZXNjcmlwdGlvbjogXCJQVVRcIiB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlBBVENIXCIsIGRlc2NyaXB0aW9uOiBcIlBBVENIXCIgfSxcclxuICAgICAgICAgICAgeyBpZDogXCJERUxFVEVcIiwgZGVzY3JpcHRpb246IFwiREVMRVRFXCIgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBpZDogXCJDXCIsIGRlc2NyaXB0aW9uOiB0aGlzLmxjLmxvYyhcIlJFU1QgQ2FsbFwiKSB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlVcIiwgZGVzY3JpcHRpb246IHRoaXMubGMubG9jKFwiVXBkYXRlXCIpIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IFwiRFwiLCBkZXNjcmlwdGlvbjogdGhpcy5sYy5sb2MoXCJEZWxldGVcIikgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Jbml0KHBhcmFtc1tcImlnbm9yZVN0b3JhZ2VcIl0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2VTdWIpXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIEluaXQoaWdub3JlU3RvcmFnZSkge1xyXG4gICAgICAgIGxldCBpdGVtID0gYXdhaXQgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbTxBdWRpdHNWaWV3PihcIkhvdEF1ZGl0dGF0b1wiKS50b1Byb21pc2UoKTtcclxuICAgICAgICBpZiAoIWlnbm9yZVN0b3JhZ2UgJiYgaXRlbSkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0KG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShcIi9wYWdlcy9hZG0vc2VydmVyYXVkaXRzXCIpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zID0gW107XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJIb3RBdWRpdHRhdG9cIikudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoSG90UG90YXRvOiBBdWRpdHNWaWV3KSB7XHJcbiAgICAgICAgLy9TZSBobyBsYSBIb3RQb3RhdG8gdnVvbCBkaXJlIGNoZSBzb25vIGFwcGVuYSB0b3JuYXRvIGRhbGwnZWRpdC9udW92by4gUmlmYWNjaW8gbGEgcmljZXJjYSBpbiBiYXNlIGFpIGZpbHRyaSBwcmVjZWRlbnRpXHJcbiAgICAgICAgLy9BbHRpcm1lbnRpIGdlbmVybyBpbCBtb2RlbGxvIG51b3ZvIG5vcm1hbG1lbnRlXHJcbiAgICAgICAgaWYgKEhvdFBvdGF0bykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZpZXcgPSBIb3RQb3RhdG87XHJcblxyXG4gICAgICAgICAgICB0aGlzLlBPU1RHZXRQcm9jZXNzZXModGhpcy5iYWNrZW5kICsgUmVwb3NpdG9yeVtcIlBPU1RfQWRtX0dldFNlcnZlckF1ZGl0c1wiXSwgdGhpcy5zZWFyY2hWaWV3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldyA9IG5ldyBBdWRpdHNWaWV3KCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldy5maWx0ZXJkYSA9IGRheWpzKCkuYWRkKC0xLCBcIm1vbnRoXCIpLmZvcm1hdCh0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaWV3LmZpbHRlcmEgPSBkYXlqcygpLmZvcm1hdCh0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpKTtcclxuXHJcbiAgICAgICAgICAgIC8vUGVyIGZhcmUgdW4gcHJpbW8gZ2lybyBkaSBiaW5kaW5nIHN1bGxhIFZpZXcgY2hlIHNlcnZlIGEgdmFsb3JpenphcmUgbGUgY29sb25uZSBkZWwgbW9kZWxsbyBhbmNoZSBwZXIgbGEgcHJpbWEgY2hpYW1hdGFcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbmRTZWFyY2goKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbmRTZWFyY2gocmVzZXRQYWdlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHJlc2V0UGFnZSlcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaWV3LnBhZ2UgPSAxO1xyXG5cclxuICAgICAgICB0aGlzLlBPU1RHZXRQcm9jZXNzZXModGhpcy5iYWNrZW5kICsgUmVwb3NpdG9yeVtcIlBPU1RfQWRtX0dldFNlcnZlckF1ZGl0c1wiXSwgdGhpcy5zZWFyY2hWaWV3KTtcclxuICAgIH1cclxuXHJcbiAgICBQT1NUR2V0UHJvY2Vzc2VzKHVybDogc3RyaW5nLCBkYXRhOiBBdWRpdHNWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8QXVkaXRzVmlldz4odXJsLCBkYXRhKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldyA9IHQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiSG90QXVkaXR0YXRvXCIsIHRoaXMuc2VhcmNoVmlldykuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYXBwLW92ZXJmbG93LXZpc2libGVcIiB3aWRnZXQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZVwiPnt7J1NlYXJjaCBBcHBsaWNhdGlvbiBBdWRpdHMnIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSB3aWRnZXQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBib3R0b20tMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSByb2xlPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiByb3cgYXBwLW5vLXBhZGRpbmcgYXBwLWZpcnN0LWZpbHRlci1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMiBjb2wtbGctMiBjb2wtbWQtMTIgYXBwLWZpbHRlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybS1kYXRlIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyZGFcIiBuYW1lPVwiZmlsdGVyZGFcIiBbUGxhY2Vob2xkZXJdPVwiJ0Zyb20nIHwgbG9jYWxpemUgOiBsY1wiPjwvZm9ybS1kYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWRhdGUgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmlldy5maWx0ZXJhXCIgbmFtZT1cImZpbHRlcmFcIiBbUGxhY2Vob2xkZXJdPVwiJ1RvJyB8IGxvY2FsaXplIDogbGNcIj48L2Zvcm0tZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMiBjb2wtbGctMiBjb2wtbWQtMTIgYXBwLWZpbHRlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybS1pbnB1dCBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcnVzZXJcIiBuYW1lPVwiZmlsdGVydXNlclwiIFtQbGFjZWhvbGRlcl09XCInVXNlcicgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVycm91dGVcIiBuYW1lPVwiZmlsdGVycm91dGVcIiBbUGxhY2Vob2xkZXJdPVwiJ1JvdXRlJyB8IGxvY2FsaXplIDogbGNcIj48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTIgY29sLWxnLTIgY29sLW1kLTEyIGFwcC1maWx0ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0tc2VsZWN0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbU2VsZWN0TGFiZWxdPVwiJ0FjdGlvbicgfCBsb2NhbGl6ZSA6IGxjXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcmFjdGlvblwiIG5hbWU9XCJmaWx0ZXJhY3Rpb25cIiBbU291cmNlXT1cIkFjdGlvbnNcIj48L2Zvcm0tc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLXNlbGVjdCBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgW1NlbGVjdExhYmVsXT1cIidIVFRQIE1ldGhvZCcgfCBsb2NhbGl6ZSA6IGxjXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcmh0dHBcIiBuYW1lPVwiZmlsdGVyaHR0cFwiIFtTb3VyY2VdPVwiSHR0cE1ldGhvZHNcIj48L2Zvcm0tc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIHJvdyBhcHAtbm8tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTIgY29sLWxnLTIgY29sLW1kLTEyIGFwcC1maWx0ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0taW5wdXQgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmlldy5maWx0ZXJhcmdzXCIgbmFtZT1cImZpbHRlcmFyZ3NcIiBbUGxhY2Vob2xkZXJdPVwiJ0FyZ3VtZW50cycgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyb2JqaWRcIiBuYW1lPVwiZmlsdGVyb2JqaWRcIiBbUGxhY2Vob2xkZXJdPVwiJ09iamVjdCBJRCcgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyb2JqdHlwZVwiIG5hbWU9XCJmaWx0ZXJvYmp0eXBlXCIgW1BsYWNlaG9sZGVyXT1cIidPYmplY3QgVHlwZScgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIGFwcC1uby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwic2VhcmNoSW5Qcm9ncmVzc1wiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gYnRuIGFwcC1idG4tc2VhcmNoXCIgKGNsaWNrKT1cInNlbmRTZWFyY2goKVwiIHR5cGU9XCJzdWJtaXRcIj48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiIXNlYXJjaFZpZXdcIj48ZW0+e3snTG9hZGluZyBBcHBsaWNhdGlvbiBBdWRpdHMnIHwgbG9jYWxpemUgOiBsY319Li4uPC9lbT48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3XCIgW1VzZUN1c3RvbUNlbGxzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtIaWRkZW5Db2x1bW5zXSA9XCJ0cnVlXCIgW0NvbHVtbnNPcmRlcmluZ109XCJ0cnVlXCIgW09yZGVyQnlDb2x1bW5dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW011bHRpcGxlT3JkZXJpbmdEaXJlY3RpdmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlYXJjaFJlcXVlc3QpPVwic2VuZFNlYXJjaCgkZXZlbnQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggZXMtdGg9XCJUaW1lc3RhbXBcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57eydEYXRlJyB8IGxvY2FsaXplIDogbGN9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBlcy10aD1cIlVzZXJcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57eydVc2VyJyB8IGxvY2FsaXplIDogbGN9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBlcy10aD1cIkFjdGlvblwiIGNsYXNzPVwiYXBwLW5vd3JhcFwiPnt7J0FjdGlvbicgfCBsb2NhbGl6ZSA6IGxjfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggZXMtdGg9XCJIdHRwTWV0aG9kXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3snSFRUUCBNZXRob2QnIHwgbG9jYWxpemUgOiBsY319PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGVzLXRoPVwiUm91dGVcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57eydSb3V0ZScgfCBsb2NhbGl6ZSA6IGxjfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggZXMtdGg9XCJBcmdzXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3snQXJndW1lbnRzJyB8IGxvY2FsaXplIDogbGN9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBlcy10aD1cIkh0dHBSZXNwb25zZVwiIGNsYXNzPVwiYXBwLW5vd3JhcFwiPnt7J0hUVFAgUmVzcG9uc2UnIHwgbG9jYWxpemUgOiBsY319PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGVzLXRoPVwiTm9uU3RkRXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3snQXBwbGljYXRpb24gRXJyb3IgQ29kZScgfCBsb2NhbGl6ZSA6IGxjfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggZXMtdGg9XCJPYmplY3RUeXBlXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3snT2JqZWN0IFR5cGUnIHwgbG9jYWxpemUgOiBsY319PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGVzLXRoPVwiT2JqZWN0SWRcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57eydPYmplY3QgSUQnIHwgbG9jYWxpemUgOiBsY319PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGVzLXRoPVwiT2JqZWN0RGF0YVwiIGNsYXNzPVwiYXBwLW5vd3JhcFwiPnt7J09iamVjdCBEYXRhJyB8IGxvY2FsaXplIDogbGN9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2JvZHkgbGV0LXBybz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGVzLXRkPVwiVGltZXN0YW1wXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+PHN0cm9uZz57e3Byby50aW1lc3RhbXAgfCBsb2NfZGF0ZTonREQvTU0vWVlZWSBISDptbTpzcyd9fTwvc3Ryb25nPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBlcy10ZD1cIlVzZXJcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57e3Byby51c2VyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJBY3Rpb25cIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57e3Byby5hY3Rpb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBlcy10ZD1cIkh0dHBNZXRob2RcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57e3Byby5odHRwbWV0aG9kfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJSb3V0ZVwiIGNsYXNzPVwiYXBwLW5vd3JhcFwiPnt7cHJvLnJvdXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJBcmdzXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3twcm8uYXJnc319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGVzLXRkPVwiSHR0cFJlc3BvbnNlXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3twcm8uaHR0cHJlc3BvbnNlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJOb25TdGRFcnJvck1lc3NhZ2VcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57e3Byby5tZG1lcnJvcmNvZGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBlcy10ZD1cIk9iamVjdFR5cGVcIiBjbGFzcz1cImFwcC1ub3dyYXBcIj57e3Byby5vYmplY3R0eXBlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJPYmplY3RJZFwiIGNsYXNzPVwiYXBwLW5vd3JhcFwiPnt7cHJvLm9iamVjdGlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgZXMtdGQ9XCJPYmplY3REYXRhXCIgY2xhc3M9XCJhcHAtbm93cmFwXCI+e3twcm8ub2JqZWN0ZGF0YX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtX2F1ZGl0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0cy9hZG1fYXVkaXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXRzL2FkbV9hdWRpdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxELGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU05RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7O0FBYXpELE1BQU0sT0FBTyxrQkFBa0I7SUFRM0IsWUFDVyxFQUF1QixFQUN0QixZQUFnQyxFQUNoQyxNQUF3QyxFQUN4QyxJQUFpQixFQUNqQixLQUFxQixFQUNyQixRQUFrQixFQUNPLE9BQWUsRUFDZixHQUFXO1FBUHJDLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFrQztRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTyxZQUFPLEdBQVAs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RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OytHQXJGUSxrQkFBa0Isd05BZWYsZUFBZSxhQUNmLGVBQWU7bUdBaEJsQixrQkFBa0Isa0RDL0IvQiwydk9BcUZNLDByRkR6RGEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7MkZBRy9ELGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxZQUFZLGlCQUNQLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOzswQkFrQm5FLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvcHJlZmVyZW5jZXNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZU1vZHVsZUNvbW11bmljYXRpb25zQ29uc3VtZXIgfSBmcm9tIFwiLi4vLi4vY29tbXVuaWNhdGlvbnMvYmFzZS9CYXNlTW9kdWxlQ29tbXVuaWNhdGlvbnNDb25zdW1lclwiO1xyXG5pbXBvcnQgeyBBdWRpdHNWaWV3IH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb21wb25lbnRzL0F1ZGl0c1ZpZXdcIjtcclxuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NoYXJlZC9LZXlWYWx1ZVwiO1xyXG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uLy4uL21vZGVscy9leHRlcm5hbHMvUmVwb3NpdG9yeVwiO1xyXG5pbXBvcnQgeyBBRE1fQkFDS0VORF9VUkwsIEFETV9NT0RVTEVfUEFUSCB9IGZyb20gXCIuLi8uLi90b2tlbnNcIjtcclxuXHJcbi8vIExvY2FsaXp6YXppb25lXHJcbmltcG9ydCB7IEFkbUF1ZGl0TG9jIH0gZnJvbSBcIi4vYWRtX2F1ZGl0cy5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbiBkZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhZG1fYXVkaXRzXCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQWRtQXVkaXRMb2MgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FkbV9hdWRpdHMuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtQXVkaXRzQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgc2VhcmNoVmlldzogQXVkaXRzVmlldyA9IG5ldyBBdWRpdHNWaWV3KCk7XHJcbiAgICBwdWJsaWMgQWN0aW9uczogS2V5VmFsdWVbXSA9IFtdO1xyXG4gICAgcHVibGljIEh0dHBNZXRob2RzOiBLZXlWYWx1ZVtdID0gW107XHJcbiAgICBwdWJsaWMgc2VhcmNoSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0b3JhZ2VTdWI6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2U6IFByZWZlcmVuY2VzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9zdGF0ZTogQmFzZU1vZHVsZUNvbW11bmljYXRpb25zQ29uc3VtZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgICAgICBASW5qZWN0KEFETV9CQUNLRU5EX1VSTCkgcHJpdmF0ZSBiYWNrZW5kOiBzdHJpbmcsXHJcbiAgICAgICAgQEluamVjdChBRE1fTU9EVUxFX1BBVEgpIHByaXZhdGUgbW9kOiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuaGFuZGxlTmF2aWdhdGlvbih0aGlzLmxjLmxvYyh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbXCJ0aXRsZVwiXSksIGZhbHNlKTtcclxuXHJcbiAgICAgICAgdGhpcy5IdHRwTWV0aG9kcyA9IFtcclxuICAgICAgICAgICAgeyBpZDogXCJHRVRcIiwgZGVzY3JpcHRpb246IFwiR0VUXCIgfSxcclxuICAgICAgICAgICAgeyBpZDogXCJQT1NUXCIsIGRlc2NyaXB0aW9uOiBcIlBPU1RcIiB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlBVVFwiLCBkZXNjcmlwdGlvbjogXCJQVVRcIiB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlBBVENIXCIsIGRlc2NyaXB0aW9uOiBcIlBBVENIXCIgfSxcclxuICAgICAgICAgICAgeyBpZDogXCJERUxFVEVcIiwgZGVzY3JpcHRpb246IFwiREVMRVRFXCIgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBpZDogXCJDXCIsIGRlc2NyaXB0aW9uOiB0aGlzLmxjLmxvYyhcIlJFU1QgQ2FsbFwiKSB9LFxyXG4gICAgICAgICAgICB7IGlkOiBcIlVcIiwgZGVzY3JpcHRpb246IHRoaXMubGMubG9jKFwiVXBkYXRlXCIpIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IFwiRFwiLCBkZXNjcmlwdGlvbjogdGhpcy5sYy5sb2MoXCJEZWxldGVcIikgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHsgdGhpcy5Jbml0KHBhcmFtc1tcImlnbm9yZVN0b3JhZ2VcIl0pOyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdG9yYWdlU3ViKVxyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBJbml0KGlnbm9yZVN0b3JhZ2UpIHtcclxuICAgICAgICBsZXQgaXRlbSA9IGF3YWl0IHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW08QXVkaXRzVmlldz4oXCJIb3RBdWRpdHRhdG9cIikudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgaWYgKCFpZ25vcmVTdG9yYWdlICYmIGl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdChudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoYC9wYWdlcy8ke3RoaXMubW9kfS9zZXJ2ZXJhdWRpdHNgKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyA9IFtdO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiSG90QXVkaXR0YXRvXCIpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0KEhvdFBvdGF0bzogQXVkaXRzVmlldykge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgSG90UG90YXRvIHZ1b2wgZGlyZSBjaGUgc29ubyBhcHBlbmEgdG9ybmF0byBkYWxsJ2VkaXQvbnVvdm8uIFJpZmFjY2lvIGxhIHJpY2VyY2EgaW4gYmFzZSBhaSBmaWx0cmkgcHJlY2VkZW50aVxyXG4gICAgICAgIC8vQWx0aXJtZW50aSBnZW5lcm8gaWwgbW9kZWxsbyBudW92byBub3JtYWxtZW50ZVxyXG4gICAgICAgIGlmIChIb3RQb3RhdG8pIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaWV3ID0gSG90UG90YXRvO1xyXG4gICAgICAgICAgICB0aGlzLlBPU1RHZXRQcm9jZXNzZXModGhpcy5iYWNrZW5kICsgUmVwb3NpdG9yeVtcIlBPU1RfQWRtX0dldFNlcnZlckF1ZGl0c1wiXSwgdGhpcy5zZWFyY2hWaWV3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldyA9IG5ldyBBdWRpdHNWaWV3KCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldy5maWx0ZXJkYSA9IGRheWpzKCkuYWRkKC0xLCBcIm1vbnRoXCIpLmZvcm1hdCh0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaWV3LmZpbHRlcmEgPSBkYXlqcygpLmZvcm1hdCh0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbmRTZWFyY2gocmVzZXRQYWdlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHJlc2V0UGFnZSlcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaWV3LnBhZ2UgPSAxO1xyXG5cclxuICAgICAgICB0aGlzLlBPU1RHZXRQcm9jZXNzZXModGhpcy5iYWNrZW5kICsgUmVwb3NpdG9yeVtcIlBPU1RfQWRtX0dldFNlcnZlckF1ZGl0c1wiXSwgdGhpcy5zZWFyY2hWaWV3KTtcclxuICAgIH1cclxuXHJcbiAgICBQT1NUR2V0UHJvY2Vzc2VzKHVybDogc3RyaW5nLCBkYXRhOiBBdWRpdHNWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8QXVkaXRzVmlldz4odXJsLCBkYXRhKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlldyA9IHQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiSG90QXVkaXR0YXRvXCIsIHRoaXMuc2VhcmNoVmlldykuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYXBwLW92ZXJmbG93LXZpc2libGVcIiB3aWRnZXQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZVwiPnt7J1NlYXJjaCBBcHBsaWNhdGlvbiBBdWRpdHMnIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSB3aWRnZXQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBib3R0b20tMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSByb2xlPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiByb3cgYXBwLW5vLXBhZGRpbmcgYXBwLWZpcnN0LWZpbHRlci1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMiBjb2wtbGctMiBjb2wtbWQtMTIgYXBwLWZpbHRlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybS1kYXRlIFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyZGFcIiBuYW1lPVwiZmlsdGVyZGFcIiBbUGxhY2Vob2xkZXJdPVwiJ0Zyb20nIHwgbG9jYWxpemUgOiBsY1wiPjwvZm9ybS1kYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWRhdGUgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmlldy5maWx0ZXJhXCIgbmFtZT1cImZpbHRlcmFcIiBbUGxhY2Vob2xkZXJdPVwiJ1RvJyB8IGxvY2FsaXplIDogbGNcIj48L2Zvcm0tZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMiBjb2wtbGctMiBjb2wtbWQtMTIgYXBwLWZpbHRlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybS1pbnB1dCBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcnVzZXJcIiBuYW1lPVwiZmlsdGVydXNlclwiIFtQbGFjZWhvbGRlcl09XCInVXNlcicgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVycm91dGVcIiBuYW1lPVwiZmlsdGVycm91dGVcIiBbUGxhY2Vob2xkZXJdPVwiJ1JvdXRlJyB8IGxvY2FsaXplIDogbGNcIj48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTIgY29sLWxnLTIgY29sLW1kLTEyIGFwcC1maWx0ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0tc2VsZWN0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbU2VsZWN0TGFiZWxdPVwiJ0FjdGlvbicgfCBsb2NhbGl6ZSA6IGxjXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcmFjdGlvblwiIG5hbWU9XCJmaWx0ZXJhY3Rpb25cIiBbU291cmNlXT1cIkFjdGlvbnNcIj48L2Zvcm0tc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLXNlbGVjdCBbRm9ybUxheW91dF09XCJmYWxzZVwiIFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgW1NlbGVjdExhYmVsXT1cIidIVFRQIE1ldGhvZCcgfCBsb2NhbGl6ZSA6IGxjXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3LmZpbHRlcmh0dHBcIiBuYW1lPVwiZmlsdGVyaHR0cFwiIFtTb3VyY2VdPVwiSHR0cE1ldGhvZHNcIj48L2Zvcm0tc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIHJvdyBhcHAtbm8tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTIgY29sLWxnLTIgY29sLW1kLTEyIGFwcC1maWx0ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0taW5wdXQgW0Zvcm1MYXlvdXRdPVwiZmFsc2VcIiBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmlldy5maWx0ZXJhcmdzXCIgbmFtZT1cImZpbHRlcmFyZ3NcIiBbUGxhY2Vob2xkZXJdPVwiJ0FyZ3VtZW50cycgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyb2JqaWRcIiBuYW1lPVwiZmlsdGVyb2JqaWRcIiBbUGxhY2Vob2xkZXJdPVwiJ09iamVjdCBJRCcgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0yIGNvbC1sZy0yIGNvbC1tZC0xMiBhcHAtZmlsdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLWlucHV0IFtGb3JtTGF5b3V0XT1cImZhbHNlXCIgW1ZhbGlkYXRpb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZpZXcuZmlsdGVyb2JqdHlwZVwiIG5hbWU9XCJmaWx0ZXJvYmp0eXBlXCIgW1BsYWNlaG9sZGVyXT1cIidPYmplY3QgVHlwZScgfCBsb2NhbGl6ZSA6IGxjXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIGFwcC1uby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwic2VhcmNoSW5Qcm9ncmVzc1wiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gYnRuIGFwcC1idG4tc2VhcmNoXCIgKGNsaWNrKT1cInNlbmRTZWFyY2goKVwiIHR5cGU9XCJzdWJtaXRcIj48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiIXNlYXJjaFZpZXdcIj48ZW0+e3snTG9hZGluZyBBcHBsaWNhdGlvbiBBdWRpdHMnIHwgbG9jYWxpemUgOiBsY319Li4uPC9lbT48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJzZWFyY2hWaWV3XCIgW011bHRpcGxlT3JkZXJpbmdEaXJlY3RpdmVzXT1cInRydWVcIiAob25TZWFyY2hSZXF1ZXN0KT1cInNlbmRTZWFyY2goJGV2ZW50KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICp0aD1cIidUaW1lc3RhbXAnXCI+e3snRGF0ZScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRoPVwiJ1VzZXInXCI+e3snVXNlcicgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRoPVwiJ0FjdGlvbidcIj57eydBY3Rpb24nIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICp0aD1cIidIdHRwTWV0aG9kJ1wiPnt7J0hUVFAgTWV0aG9kJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGg9XCInUm91dGUnXCI+e3snUm91dGUnIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICp0aD1cIidBcmdzJ1wiPnt7J0FyZ3VtZW50cycgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRoPVwiJ0h0dHBSZXNwb25zZSdcIj57eydIVFRQIFJlc3BvbnNlJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGg9XCInTm9uU3RkRXJyb3JNZXNzYWdlJ1wiPnt7J0FwcGxpY2F0aW9uIEVycm9yIENvZGUnIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICp0aD1cIidPYmplY3RUeXBlJ1wiPnt7J09iamVjdCBUeXBlJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGg9XCInT2JqZWN0SWQnXCI+e3snT2JqZWN0IElEJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGg9XCInT2JqZWN0RGF0YSdcIj57eydPYmplY3QgRGF0YScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nICp0ZD1cIidUaW1lc3RhbXAnOyBsZXQgcHJvXCI+e3twcm8udGltZXN0YW1wIHwgbG9jX2RhdGU6J0REL01NL1lZWVkgSEg6bW06c3MnfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGQ9XCInVXNlcic7IGxldCBwcm9cIj57e3Byby51c2VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ0FjdGlvbic7IGxldCBwcm9cIj57e3Byby5hY3Rpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGQ9XCInSHR0cE1ldGhvZCc7IGxldCBwcm9cIj57e3Byby5odHRwbWV0aG9kfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ1JvdXRlJzsgbGV0IHByb1wiPnt7cHJvLnJvdXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ0FyZ3MnOyBsZXQgcHJvXCI+e3twcm8uYXJnc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICp0ZD1cIidIdHRwUmVzcG9uc2UnOyBsZXQgcHJvXCI+e3twcm8uaHR0cHJlc3BvbnNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ05vblN0ZEVycm9yTWVzc2FnZSc7IGxldCBwcm9cIj57e3Byby5tZG1lcnJvcmNvZGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqdGQ9XCInT2JqZWN0VHlwZSc7IGxldCBwcm9cIj57e3Byby5vYmplY3R0eXBlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ09iamVjdElkJzsgbGV0IHByb1wiPnt7cHJvLm9iamVjdGlkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKnRkPVwiJ09iamVjdERhdGEnOyBsZXQgcHJvXCI+e3twcm8ub2JqZWN0ZGF0YX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19