tin-spa 14.4.2 → 14.13.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 (162) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +57 -32
  3. package/esm2020/lib/classes/LibClasses.mjs +2 -1
  4. package/esm2020/lib/classes/TinCore.mjs +194 -44
  5. package/esm2020/lib/components/alert/alert.component.mjs +12 -6
  6. package/esm2020/lib/components/attach/attach.component.mjs +49 -33
  7. package/esm2020/lib/components/capsules/capsules.component.mjs +63 -0
  8. package/esm2020/lib/components/cards/cards.component.mjs +103 -0
  9. package/esm2020/lib/components/date/date.component.mjs +4 -4
  10. package/esm2020/lib/components/email/email.component.mjs +19 -17
  11. package/esm2020/lib/components/form/form.component.mjs +142 -57
  12. package/esm2020/lib/components/html/html.component.mjs +34 -0
  13. package/esm2020/lib/components/label/label.component.mjs +9 -3
  14. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
  15. package/esm2020/lib/components/money/money.component.mjs +26 -9
  16. package/esm2020/lib/components/multi-select/multi-select.component.mjs +165 -0
  17. package/esm2020/lib/components/multi-text/multi-text.component.mjs +208 -0
  18. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +31 -27
  19. package/esm2020/lib/components/notes/notes.component.mjs +62 -0
  20. package/esm2020/lib/components/number/number.component.mjs +23 -8
  21. package/esm2020/lib/components/option/option.component.mjs +36 -14
  22. package/esm2020/lib/components/page/page.component.mjs +101 -0
  23. package/esm2020/lib/components/search/search.component.mjs +10 -5
  24. package/esm2020/lib/components/select/select.component.mjs +56 -129
  25. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +87 -0
  26. package/esm2020/lib/components/select-common/select-common.component.mjs +208 -0
  27. package/esm2020/lib/components/select-internal/select-internal.component.mjs +75 -0
  28. package/esm2020/lib/components/select-lite/select-lite.component.mjs +18 -0
  29. package/esm2020/lib/components/steps/steps.component.mjs +83 -61
  30. package/esm2020/lib/components/suffix/suffix.component.mjs +70 -0
  31. package/esm2020/lib/components/table/detailsDialog.component.mjs +169 -37
  32. package/esm2020/lib/components/table/table.component.mjs +136 -111
  33. package/esm2020/lib/components/table-action/table-action.component.mjs +42 -8
  34. package/esm2020/lib/components/table-header/table-header.component.mjs +12 -8
  35. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +169 -35
  36. package/esm2020/lib/components/table-internal/table-internal.component.mjs +138 -112
  37. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +371 -0
  38. package/esm2020/lib/components/table-lite/table-lite.component.mjs +441 -0
  39. package/esm2020/lib/components/table-row/table-row.component.mjs +23 -4
  40. package/esm2020/lib/components/tabs/tabs.component.mjs +83 -0
  41. package/esm2020/lib/components/text/text.component.mjs +85 -40
  42. package/esm2020/lib/components/tiles/tiles.component.mjs +32 -20
  43. package/esm2020/lib/components/viewer/viewer.component.mjs +7 -3
  44. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +20 -13
  45. package/esm2020/lib/modules/admin/admin-routing.module.mjs +11 -1
  46. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +1 -1
  47. package/esm2020/lib/pages/app-models/app-models.component.mjs +56 -0
  48. package/esm2020/lib/pages/approvals/approvals.component.mjs +19 -0
  49. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +165 -0
  50. package/esm2020/lib/pages/bug/bug.component.mjs +3 -3
  51. package/esm2020/lib/pages/change-password/change-password.component.mjs +1 -1
  52. package/esm2020/lib/pages/create-account/create-account.component.mjs +1 -1
  53. package/esm2020/lib/pages/customers/customers.component.mjs +9 -48
  54. package/esm2020/lib/pages/departments/departments.component.mjs +2 -4
  55. package/esm2020/lib/pages/employees/employees.component.mjs +3 -4
  56. package/esm2020/lib/pages/grades/grades.component.mjs +3 -3
  57. package/esm2020/lib/pages/inventory/inventory.component.mjs +3 -3
  58. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +1 -1
  59. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +11 -10
  60. package/esm2020/lib/pages/login/login.component.mjs +52 -14
  61. package/esm2020/lib/pages/logs/logs.component.mjs +27 -22
  62. package/esm2020/lib/pages/membership/membership.component.mjs +15 -19
  63. package/esm2020/lib/pages/notifications/notifications.component.mjs +82 -6
  64. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +113 -0
  65. package/esm2020/lib/pages/plans/plans.component.mjs +16 -19
  66. package/esm2020/lib/pages/positions/positions.component.mjs +4 -4
  67. package/esm2020/lib/pages/profile/profile.component.mjs +4 -3
  68. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +1 -1
  69. package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +2 -2
  70. package/esm2020/lib/pages/roles/roles.component.mjs +77 -17
  71. package/esm2020/lib/pages/settings/settings.component.mjs +5 -13
  72. package/esm2020/lib/pages/signup/signup.component.mjs +1 -1
  73. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +3 -31
  74. package/esm2020/lib/pages/tasks/tasks.component.mjs +9 -9
  75. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +145 -72
  76. package/esm2020/lib/pages/tenants/tenants.component.mjs +10 -10
  77. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +1 -1
  78. package/esm2020/lib/pages/transactions/transactions.component.mjs +3 -3
  79. package/esm2020/lib/pages/users/users.component.mjs +115 -92
  80. package/esm2020/lib/pages/welcome/welcome.component.mjs +9 -9
  81. package/esm2020/lib/select-context.directive.mjs +23 -0
  82. package/esm2020/lib/services/button.service.mjs +90 -30
  83. package/esm2020/lib/services/csv.service.mjs +1 -1
  84. package/esm2020/lib/services/datalib.service.mjs +504 -76
  85. package/esm2020/lib/services/dialog.service.mjs +24 -7
  86. package/esm2020/lib/services/notifications.service.mjs +33 -0
  87. package/esm2020/lib/services/table-config.service.mjs +55 -7
  88. package/esm2020/lib/tin-spa.module.mjs +47 -11
  89. package/esm2020/public-api.mjs +9 -1
  90. package/fesm2015/tin-spa.mjs +6333 -2671
  91. package/fesm2015/tin-spa.mjs.map +1 -1
  92. package/fesm2020/tin-spa.mjs +6492 -2770
  93. package/fesm2020/tin-spa.mjs.map +1 -1
  94. package/lib/classes/Classes.d.ts +233 -127
  95. package/lib/classes/LibClasses.d.ts +1 -0
  96. package/lib/classes/TinCore.d.ts +11 -3
  97. package/lib/components/attach/attach.component.d.ts +13 -6
  98. package/lib/components/capsules/capsules.component.d.ts +26 -0
  99. package/lib/components/cards/cards.component.d.ts +39 -0
  100. package/lib/components/email/email.component.d.ts +4 -3
  101. package/lib/components/form/form.component.d.ts +20 -11
  102. package/lib/components/html/html.component.d.ts +16 -0
  103. package/lib/components/label/label.component.d.ts +3 -1
  104. package/lib/components/money/money.component.d.ts +8 -1
  105. package/lib/components/multi-select/multi-select.component.d.ts +47 -0
  106. package/lib/components/multi-text/multi-text.component.d.ts +56 -0
  107. package/lib/components/nav-menu/nav-menu.component.d.ts +6 -2
  108. package/lib/components/notes/notes.component.d.ts +19 -0
  109. package/lib/components/number/number.component.d.ts +7 -1
  110. package/lib/components/option/option.component.d.ts +10 -2
  111. package/lib/components/page/page.component.d.ts +38 -0
  112. package/lib/components/search/search.component.d.ts +3 -1
  113. package/lib/components/select/select.component.d.ts +16 -37
  114. package/lib/components/select-bitwise/select-bitwise.component.d.ts +31 -0
  115. package/lib/components/select-common/select-common.component.d.ts +53 -0
  116. package/lib/components/select-internal/select-internal.component.d.ts +23 -0
  117. package/lib/components/select-lite/select-lite.component.d.ts +8 -0
  118. package/lib/components/steps/steps.component.d.ts +18 -9
  119. package/lib/components/suffix/suffix.component.d.ts +23 -0
  120. package/lib/components/table/detailsDialog.component.d.ts +24 -7
  121. package/lib/components/table/table.component.d.ts +15 -9
  122. package/lib/components/table-action/table-action.component.d.ts +4 -1
  123. package/lib/components/table-header/table-header.component.d.ts +3 -1
  124. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +24 -7
  125. package/lib/components/table-internal/table-internal.component.d.ts +15 -9
  126. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +81 -0
  127. package/lib/components/table-lite/table-lite.component.d.ts +91 -0
  128. package/lib/components/table-row/table-row.component.d.ts +4 -1
  129. package/lib/components/tabs/tabs.component.d.ts +32 -0
  130. package/lib/components/text/text.component.d.ts +16 -7
  131. package/lib/components/tiles/tiles.component.d.ts +4 -3
  132. package/lib/components/viewer/viewerDialog.component.d.ts +3 -1
  133. package/lib/pages/app-models/app-models.component.d.ts +15 -0
  134. package/lib/pages/approvals/approvals.component.d.ts +10 -0
  135. package/lib/pages/approvals-config/approvals-config.component.d.ts +24 -0
  136. package/lib/pages/customers/customers.component.d.ts +2 -8
  137. package/lib/pages/invitations-table/invitations-table.component.d.ts +1 -1
  138. package/lib/pages/login/login.component.d.ts +7 -1
  139. package/lib/pages/logs/logs.component.d.ts +2 -6
  140. package/lib/pages/membership/membership.component.d.ts +2 -6
  141. package/lib/pages/notifications/notifications.component.d.ts +9 -1
  142. package/lib/pages/notifications-config/notifications-config.component.d.ts +17 -0
  143. package/lib/pages/plans/plans.component.d.ts +2 -6
  144. package/lib/pages/roles/roles.component.d.ts +14 -2
  145. package/lib/pages/suppliers/suppliers.component.d.ts +1 -4
  146. package/lib/pages/tasks/tasks.component.d.ts +1 -1
  147. package/lib/pages/tenant-settings/tenant-settings.component.d.ts +12 -7
  148. package/lib/pages/tenants/tenants.component.d.ts +2 -2
  149. package/lib/pages/users/users.component.d.ts +8 -16
  150. package/lib/select-context.directive.d.ts +10 -0
  151. package/lib/services/button.service.d.ts +10 -7
  152. package/lib/services/datalib.service.d.ts +54 -10
  153. package/lib/services/dialog.service.d.ts +2 -2
  154. package/lib/services/notifications.service.d.ts +12 -0
  155. package/lib/services/table-config.service.d.ts +9 -1
  156. package/lib/tin-spa.module.d.ts +51 -33
  157. package/package.json +1 -1
  158. package/public-api.d.ts +8 -0
  159. package/esm2020/lib/pages/invitations/invitations.component.mjs +0 -14
  160. package/esm2020/lib/pages/tenant-settings/inviteDialog.component.mjs +0 -60
  161. package/lib/pages/invitations/invitations.component.d.ts +0 -8
  162. package/lib/pages/tenant-settings/inviteDialog.component.d.ts +0 -28
@@ -1,30 +1,56 @@
1
- import { AppConfig } from './../../classes/Classes';
1
+ import { AppConfig, RoleAccess } from './../../classes/Classes';
2
2
  import { Component } from "@angular/core";
3
3
  import { addRoleDialog } from "./addRoleDialog.component";
4
+ import { DetailsDialog } from '../../components/table/detailsDialog.component';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../../services/http.service";
6
7
  import * as i2 from "@angular/router";
7
8
  import * as i3 from "../../services/auth.service";
8
9
  import * as i4 from "../../services/datalib.service";
9
- import * as i5 from "@angular/material/dialog";
10
- import * as i6 from "../../services/message.service";
11
- import * as i7 from "@angular/forms";
12
- import * as i8 from "@angular/common";
13
- import * as i9 from "@angular/material/checkbox";
14
- import * as i10 from "@angular/material/button";
15
- import * as i11 from "@angular/material/icon";
16
- import * as i12 from "@angular/material/card";
17
- import * as i13 from "@angular/material/tooltip";
10
+ import * as i5 from "../../services/dialog.service";
11
+ import * as i6 from "@angular/material/dialog";
12
+ import * as i7 from "../../services/message.service";
13
+ import * as i8 from "@angular/forms";
14
+ import * as i9 from "@angular/common";
15
+ import * as i10 from "@angular/material/checkbox";
16
+ import * as i11 from "@angular/material/button";
17
+ import * as i12 from "@angular/material/icon";
18
+ import * as i13 from "@angular/material/card";
19
+ import * as i14 from "@angular/material/tooltip";
20
+ import * as i15 from "../../components/select/select.component";
18
21
  export class RolesComponent {
19
- constructor(httpService, router, authService, dataService, dialog, messageService) {
22
+ constructor(httpService, router, authService, dataService, dialogService, dialog, messageService) {
20
23
  this.httpService = httpService;
21
24
  this.router = router;
22
25
  this.authService = authService;
23
26
  this.dataService = dataService;
27
+ this.dialogService = dialogService;
24
28
  this.dialog = dialog;
25
29
  this.messageService = messageService;
26
30
  this.isProcessing = false;
31
+ this.RoleAccess = RoleAccess;
27
32
  this.appConfig = new AppConfig();
33
+ this.roleAccessOptions = [
34
+ { value: RoleAccess.None, name: 'None' },
35
+ { value: RoleAccess.View, name: 'View' },
36
+ { value: RoleAccess.Edit, name: 'Edit' },
37
+ { value: RoleAccess.Create, name: 'Create' },
38
+ { value: RoleAccess.Full, name: 'Full' }
39
+ ];
40
+ this.renameDialogConfig = {
41
+ formConfig: {
42
+ title: 'Rename Role',
43
+ fixedTitle: true,
44
+ fields: [
45
+ { name: 'roleName', type: 'text', required: true, span: true, alias: 'Role Name' }
46
+ ]
47
+ },
48
+ mode: 'edit',
49
+ buttons: [
50
+ { name: 'edit', dialog: true, action: { url: 'role?action=edit', method: 'post', successMessage: 'Role renamed successfully' } }
51
+ ]
52
+ };
53
+ this.renameButton = { name: 'edit', dialog: true, detailsConfig: this.renameDialogConfig };
28
54
  }
29
55
  ngOnInit() {
30
56
  this.authService.isAuthorised(this.dataService.capRoles.name);
@@ -33,12 +59,36 @@ export class RolesComponent {
33
59
  }
34
60
  loadRoles() {
35
61
  this.dataService.GetRole("all", "").subscribe((apiResponse) => {
36
- this.roles = apiResponse;
62
+ this.roles = apiResponse.data;
37
63
  });
38
64
  }
39
65
  refresh() {
40
66
  this.loadRoles();
41
67
  }
68
+ onCapItemChange(capItem, checked, role) {
69
+ return; //disabled to allow sub component access without granting whole menu access
70
+ if (!checked && capItem.capSubItems) {
71
+ // When parent is unchecked, set all subitems to Restricted
72
+ capItem.capSubItems.forEach(subItem => {
73
+ role[subItem.name] = RoleAccess.None;
74
+ });
75
+ }
76
+ }
77
+ hasSubItemsAccess(capItem, role) {
78
+ if (!capItem.capSubItems)
79
+ return false;
80
+ // Check if any sub-item has access
81
+ return capItem.capSubItems.some(subItem => {
82
+ // Check direct sub-items
83
+ if (role[subItem.name] > 0)
84
+ return true;
85
+ // Check sub-sub-items recursively
86
+ if (subItem.capSubItems) {
87
+ return subItem.capSubItems.some(subSubItem => role[subSubItem.name] > 0);
88
+ }
89
+ return false;
90
+ });
91
+ }
42
92
  addRole() {
43
93
  const dialogRef = this.dialog.open(addRoleDialog, {
44
94
  width: "1100px",
@@ -81,11 +131,21 @@ export class RolesComponent {
81
131
  }
82
132
  });
83
133
  }
134
+ renameRole(role) {
135
+ // Create role copy to avoid modifying the original during editing
136
+ const roleData = { ...role };
137
+ // Open rename dialog
138
+ const dialogRef = this.dialogService.openConfiguredDetailsDialog(this.renameButton, roleData, DetailsDialog).subscribe(result => {
139
+ if (result.message === 'success') {
140
+ this.loadRoles();
141
+ }
142
+ });
143
+ }
84
144
  }
85
- RolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RolesComponent, deps: [{ token: i1.HttpService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.DataServiceLib }, { token: i5.MatDialog }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component });
86
- RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RolesComponent, selector: "spa-roles", ngImport: i0, template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i12.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
145
+ RolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RolesComponent, deps: [{ token: i1.HttpService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.DataServiceLib }, { token: i5.DialogService }, { token: i6.MatDialog }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component });
146
+ RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RolesComponent, selector: "spa-roles", ngImport: i0, template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <label style=\"font-size: 16px;\">{{role.roleName}}</label>\r\n\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Rename Role\" (click)=\"renameRole(role)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 0px;\">\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <!-- Main item-->\r\n <mat-checkbox *ngIf=\"capItem.isBool || capItem.capSubItems\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\" (ngModelChange)=\"onCapItemChange(capItem, $event, role)\">\r\n {{capItem.display}}\r\n <span *ngIf=\"!role[capItem.name] && hasSubItemsAccess(capItem, role)\" class=\"asterisk\" style=\"color: red;\">*</span>\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capItem.isBool && !capItem.capSubItems\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capItem.display\"\r\n [(value)]=\"role[capItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n\r\n <ng-container *ngIf=\"capItem.capSubItems && role[capItem.name]\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n\r\n <!-- Sub Item -->\r\n <mat-checkbox *ngIf=\"capSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">\r\n {{capSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubItem.display\"\r\n [(value)]=\"role[capSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n <ng-container *ngIf=\"capSubItem.capSubItems\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <!-- Sub Sub Items -->\r\n <mat-checkbox *ngIf=\"capSubSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">\r\n {{capSubSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubSubItem.display\"\r\n [(value)]=\"role[capSubSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i13.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i15.SelectComponent, selector: "spa-select", inputs: ["detailsConfig"] }] });
87
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RolesComponent, decorators: [{
88
148
  type: Component,
89
- args: [{ selector: "spa-roles", template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
90
- }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.DataServiceLib }, { type: i5.MatDialog }, { type: i6.MessageService }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9yb2xlcy9yb2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFhMUQsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsV0FBd0IsRUFBVSxNQUFjLEVBQVUsV0FBd0IsRUFBVSxXQUEyQixFQUFTLE1BQWlCLEVBQVUsY0FBOEI7UUFBekwsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUTdNLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBWHFMLENBQUM7SUFFbE4sUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFPRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEQsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1NBQzlCLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBRW5CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFFNUUsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO2dCQUVuQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBRWhFLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDbEI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO3FCQUNwRDtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUVKO1FBRUgsQ0FBQyxDQUFDLENBQUE7SUFHSixDQUFDO0lBQUEsQ0FBQztJQUVGLFVBQVUsQ0FBQyxJQUFVO1FBRW5CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFFNUUsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO2dCQUVuQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2xFLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDbEI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO3FCQUNwRDtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUVKO1FBRUgsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDOzsyR0EvRVUsY0FBYzsrRkFBZCxjQUFjLGlEQ2pCM0IscW1FQW9FQTsyRkRuRGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBhZGRSb2xlRGlhbG9nIH0gZnJvbSBcIi4vYWRkUm9sZURpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9MaWJDbGFzc2VzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzcGEtcm9sZXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JvbGVzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3JvbGVzLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcmlzZWQodGhpcy5kYXRhU2VydmljZS5jYXBSb2xlcy5uYW1lKTtcclxuICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwcENvbmZpZ09ic2Vydi5zdWJzY3JpYmUoeCA9PiB0aGlzLmFwcENvbmZpZyA9IHgpO1xyXG4gIH1cclxuXHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgcm9sZXM6IFJvbGVbXTtcclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG5cclxuICBsb2FkUm9sZXMoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkdldFJvbGUoXCJhbGxcIiwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnJvbGVzID0gYXBpUmVzcG9uc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmxvYWRSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgYWRkUm9sZSgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oYWRkUm9sZURpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCIxMTAwcHhcIixcclxuICAgICAgZGF0YTogdGhpcy5hcHBDb25maWcuY2FwSXRlbXMsXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSb2xlKHJvbGU6IFJvbGUpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYFVQREFURSAke3JvbGUucm9sZU5hbWV9ID9gKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuUG9zdFJvbGUocm9sZSwgXCJlZGl0XCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUm9sZSBVcGRhdGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRSb2xlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfTtcclxuXHJcbiAgZGVsZXRlUm9sZShyb2xlOiBSb2xlKSB7XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGBERUxFVEUgJHtyb2xlLnJvbGVOYW1lfSA/YCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLlBvc3RSb2xlKHJvbGUsIFwiZGVsZXRlXCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJSb2xlIERlbGV0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDQ+IFJvbGVzIDwvaDQ+XHJcbjxociAvPlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBtYi01XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxyXG5cclxuICAgIDxkaXYgPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiYnRuTmV3Um9sZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhZGRSb2xlKClcIj5OZXcgUm9sZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxidXR0b24gaWQ9XCJidG5SZWZyZXNoXCIgbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJyZWZyZXNoKClcIiAgbWF0VG9vbHRpcD1cInJlZnJlc2ggZGF0YVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+PG1hdC1pY29uIGNsYXNzPVwicmVmcmVzaEljb25cIj5yZWZyZXNoPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgbXQtMiBtYi0xXCIgICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzXCI+XHJcblxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPlxyXG5cclxuICAgICAgPGg0Pnt7cm9sZS5yb2xlTmFtZX19PC9oND5cclxuICAgICAgPGhyIC8+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLXJvd1wiIHN0eWxlPVwiIGZvbnQtc2l6ZToxMnB4O1wiPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1yb3dcIiAgKm5nRm9yPVwibGV0IGNhcEl0ZW0gb2YgYXBwQ29uZmlnLmNhcEl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCIgWyhuZ01vZGVsKV09XCJyb2xlW2NhcEl0ZW0ubmFtZV1cIj57e2NhcEl0ZW0uZGlzcGxheX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1yb3dcIiAgKm5nRm9yPVwibGV0IGNhcFN1Ykl0ZW0gb2YgY2FwSXRlbS5jYXBTdWJJdGVtc1wiPlxyXG5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCIgWyhuZ01vZGVsKV09XCJyb2xlW2NhcFN1Ykl0ZW0ubmFtZV1cIj57e2NhcFN1Ykl0ZW0uZGlzcGxheX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLXJvd1wiICAqbmdGb3I9XCJsZXQgY2FwU3ViU3ViSXRlbSBvZiBjYXBTdWJJdGVtLmNhcFN1Ykl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMHB4O1wiIFsobmdNb2RlbCldPVwicm9sZVtjYXBTdWJTdWJJdGVtLm5hbWVdXCI+e3tjYXBTdWJTdWJJdGVtLmRpc3BsYXl9fTwvbWF0LWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPG1hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICAgIDxidXR0b24gIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBkYXRlUm9sZShyb2xlKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7XCI+XHJcbiAgICAgICAgICAgPG1hdC1pY29uPmRvbmVfYWxsPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImRlbGV0ZVJvbGUocm9sZSlcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgICA8L21hdC1jYXJkPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
149
+ args: [{ selector: "spa-roles", template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <label style=\"font-size: 16px;\">{{role.roleName}}</label>\r\n\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Rename Role\" (click)=\"renameRole(role)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 0px;\">\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <!-- Main item-->\r\n <mat-checkbox *ngIf=\"capItem.isBool || capItem.capSubItems\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\" (ngModelChange)=\"onCapItemChange(capItem, $event, role)\">\r\n {{capItem.display}}\r\n <span *ngIf=\"!role[capItem.name] && hasSubItemsAccess(capItem, role)\" class=\"asterisk\" style=\"color: red;\">*</span>\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capItem.isBool && !capItem.capSubItems\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capItem.display\"\r\n [(value)]=\"role[capItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n\r\n <ng-container *ngIf=\"capItem.capSubItems && role[capItem.name]\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n\r\n <!-- Sub Item -->\r\n <mat-checkbox *ngIf=\"capSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">\r\n {{capSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubItem.display\"\r\n [(value)]=\"role[capSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n <ng-container *ngIf=\"capSubItem.capSubItems\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <!-- Sub Sub Items -->\r\n <mat-checkbox *ngIf=\"capSubSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">\r\n {{capSubSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubSubItem.display\"\r\n [(value)]=\"role[capSubSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
150
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.DataServiceLib }, { type: i5.DialogService }, { type: i6.MatDialog }, { type: i7.MessageService }]; } });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9yb2xlcy9yb2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsU0FBUyxFQUF3QyxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVUvRSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixXQUF3QixFQUFVLE1BQWMsRUFBVSxXQUF3QixFQUFVLFdBQTJCLEVBQVUsYUFBNkIsRUFBUyxNQUFpQixFQUFVLGNBQThCO1FBQWhPLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVFwUCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBRXhCLGNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBRTVCLHNCQUFpQixHQUFHO1lBQ2xCLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN4QyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDeEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUM1QyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDekMsQ0FBQztRQW9HRix1QkFBa0IsR0FBd0I7WUFDeEMsVUFBVSxFQUFFO2dCQUNWLEtBQUssRUFBRSxhQUFhO2dCQUNwQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsTUFBTSxFQUFFO29CQUNOLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2lCQUNuRjthQUNGO1lBQ0QsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLDJCQUEyQixFQUFFLEVBQUU7YUFDakk7U0FDRixDQUFDO1FBRUYsaUJBQVksR0FBWSxFQUFDLElBQUksRUFBRyxNQUFNLEVBQUUsTUFBTSxFQUFHLElBQUksRUFBRSxhQUFhLEVBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7SUF0SXdKLENBQUM7SUFFelAsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFrQkQsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUF5QixFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQixFQUFFLE9BQWdCLEVBQUUsSUFBUztRQUUzRCxPQUFPLENBQUMsMkVBQTJFO1FBRW5GLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNuQywyREFBMkQ7WUFDM0QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWdCLEVBQUUsSUFBUztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2QyxtQ0FBbUM7UUFDbkMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4Qyx5QkFBeUI7WUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFeEMsa0NBQWtDO1lBQ2xDLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUU7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEQsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1NBQzlCLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBRW5CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFFNUUsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO2dCQUVuQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO29CQUU3RSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ2xCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztxQkFDcEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFFSjtRQUVILENBQUMsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQUFBLENBQUM7SUFFRixVQUFVLENBQUMsSUFBVTtRQUVuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRTVFLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtvQkFDL0UsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO3dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3FCQUNsQjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7cUJBQ3BEO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBRUo7UUFFSCxDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFrQkQsVUFBVSxDQUFDLElBQVU7UUFDbkIsa0VBQWtFO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUU3QixxQkFBcUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FDOUQsSUFBSSxDQUFDLFlBQVksRUFDakIsUUFBUSxFQUNSLGFBQWEsQ0FDZCxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJHQXhKVSxjQUFjOytGQUFkLGNBQWMsaURDbkIzQixpL0lBbUlBOzJGRGhIYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlSZXNwb25zZSwgQXBwQ29uZmlnLCBCdXR0b24sIENhcEl0ZW0sIERldGFpbHNEaWFsb2dDb25maWcsIFJvbGVBY2Nlc3MgfSBmcm9tICcuLy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGFkZFJvbGVEaWFsb2cgfSBmcm9tIFwiLi9hZGRSb2xlRGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IERldGFpbHNEaWFsb2cgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3RhYmxlL2RldGFpbHNEaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvTGliQ2xhc3Nlcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic3BhLXJvbGVzXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9yb2xlcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9yb2xlcy5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm9sZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgOiBEaWFsb2dTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXNlZCh0aGlzLmRhdGFTZXJ2aWNlLmNhcFJvbGVzLm5hbWUpO1xyXG4gICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBwQ29uZmlnT2JzZXJ2LnN1YnNjcmliZSh4ID0+IHRoaXMuYXBwQ29uZmlnID0geCk7XHJcbiAgfVxyXG5cclxuICBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuICByb2xlczogUm9sZVtdO1xyXG4gIFJvbGVBY2Nlc3MgPSBSb2xlQWNjZXNzO1xyXG5cclxuICBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcblxyXG4gIHJvbGVBY2Nlc3NPcHRpb25zID0gW1xyXG4gICAgeyB2YWx1ZTogUm9sZUFjY2Vzcy5Ob25lLCBuYW1lOiAnTm9uZScgfSxcclxuICAgIHsgdmFsdWU6IFJvbGVBY2Nlc3MuVmlldywgbmFtZTogJ1ZpZXcnIH0sXHJcbiAgICB7IHZhbHVlOiBSb2xlQWNjZXNzLkVkaXQsIG5hbWU6ICdFZGl0JyB9LFxyXG4gICAgeyB2YWx1ZTogUm9sZUFjY2Vzcy5DcmVhdGUsIG5hbWU6ICdDcmVhdGUnIH0sXHJcbiAgICB7IHZhbHVlOiBSb2xlQWNjZXNzLkZ1bGwsIG5hbWU6ICdGdWxsJyB9XHJcbiAgXTtcclxuXHJcblxyXG5cclxuICBsb2FkUm9sZXMoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkdldFJvbGUoXCJhbGxcIiwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSA6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXMgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ2FwSXRlbUNoYW5nZShjYXBJdGVtOiBDYXBJdGVtLCBjaGVja2VkOiBib29sZWFuLCByb2xlOiBhbnkpIHtcclxuXHJcbiAgICByZXR1cm47IC8vZGlzYWJsZWQgdG8gYWxsb3cgc3ViIGNvbXBvbmVudCBhY2Nlc3Mgd2l0aG91dCBncmFudGluZyB3aG9sZSBtZW51IGFjY2Vzc1xyXG5cclxuICAgIGlmICghY2hlY2tlZCAmJiBjYXBJdGVtLmNhcFN1Ykl0ZW1zKSB7XHJcbiAgICAgIC8vIFdoZW4gcGFyZW50IGlzIHVuY2hlY2tlZCwgc2V0IGFsbCBzdWJpdGVtcyB0byBSZXN0cmljdGVkXHJcbiAgICAgIGNhcEl0ZW0uY2FwU3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHtcclxuICAgICAgICByb2xlW3N1Ykl0ZW0ubmFtZV0gPSBSb2xlQWNjZXNzLk5vbmU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzU3ViSXRlbXNBY2Nlc3MoY2FwSXRlbTogQ2FwSXRlbSwgcm9sZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWNhcEl0ZW0uY2FwU3ViSXRlbXMpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBhbnkgc3ViLWl0ZW0gaGFzIGFjY2Vzc1xyXG4gICAgcmV0dXJuIGNhcEl0ZW0uY2FwU3ViSXRlbXMuc29tZShzdWJJdGVtID0+IHtcclxuICAgICAgLy8gQ2hlY2sgZGlyZWN0IHN1Yi1pdGVtc1xyXG4gICAgICBpZiAocm9sZVtzdWJJdGVtLm5hbWVdID4gMCkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAvLyBDaGVjayBzdWItc3ViLWl0ZW1zIHJlY3Vyc2l2ZWx5XHJcbiAgICAgIGlmIChzdWJJdGVtLmNhcFN1Ykl0ZW1zKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1Ykl0ZW0uY2FwU3ViSXRlbXMuc29tZShzdWJTdWJJdGVtID0+IHJvbGVbc3ViU3ViSXRlbS5uYW1lXSA+IDApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGFkZFJvbGUoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKGFkZFJvbGVEaWFsb2csIHtcclxuICAgICAgd2lkdGg6IFwiMTEwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHRoaXMuYXBwQ29uZmlnLmNhcEl0ZW1zLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUm9sZShyb2xlOiBSb2xlKSB7XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGBVUERBVEUgJHtyb2xlLnJvbGVOYW1lfSA/YCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLlBvc3RSb2xlKHJvbGUsIFwiZWRpdFwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJSb2xlIFVwZGF0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICB9O1xyXG5cclxuICBkZWxldGVSb2xlKHJvbGU6IFJvbGUpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYERFTEVURSAke3JvbGUucm9sZU5hbWV9ID9gKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuUG9zdFJvbGUocm9sZSwgXCJkZWxldGVcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJSb2xlIERlbGV0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcmVuYW1lRGlhbG9nQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzoge1xyXG4gICAgICB0aXRsZTogJ1JlbmFtZSBSb2xlJyxcclxuICAgICAgZml4ZWRUaXRsZTogdHJ1ZSxcclxuICAgICAgZmllbGRzOiBbXHJcbiAgICAgICAgeyBuYW1lOiAncm9sZU5hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlLCBzcGFuOiB0cnVlLCBhbGlhczogJ1JvbGUgTmFtZScgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgbW9kZTogJ2VkaXQnLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAncm9sZT9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ1JvbGUgcmVuYW1lZCBzdWNjZXNzZnVsbHknIH0gfVxyXG4gICAgXVxyXG4gIH07XHJcblxyXG4gIHJlbmFtZUJ1dHRvbiA6IEJ1dHRvbiA9IHtuYW1lIDogJ2VkaXQnLCBkaWFsb2cgOiB0cnVlLCBkZXRhaWxzQ29uZmlnIDogdGhpcy5yZW5hbWVEaWFsb2dDb25maWd9O1xyXG5cclxuICByZW5hbWVSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIC8vIENyZWF0ZSByb2xlIGNvcHkgdG8gYXZvaWQgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbCBkdXJpbmcgZWRpdGluZ1xyXG4gICAgY29uc3Qgcm9sZURhdGEgPSB7IC4uLnJvbGUgfTtcclxuXHJcbiAgICAvLyBPcGVuIHJlbmFtZSBkaWFsb2dcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlndXJlZERldGFpbHNEaWFsb2coXHJcbiAgICAgIHRoaXMucmVuYW1lQnV0dG9uLFxyXG4gICAgICByb2xlRGF0YSxcclxuICAgICAgRGV0YWlsc0RpYWxvZ1xyXG4gICAgKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5tZXNzYWdlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLmxvYWRSb2xlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcbiIsIjxoND4gUm9sZXMgPC9oND5cclxuPGhyIC8+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIG1iLTVcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XHJcblxyXG4gICAgPGRpdiA+XHJcbiAgICAgIDxidXR0b24gaWQ9XCJidG5OZXdSb2xlXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFkZFJvbGUoKVwiPk5ldyBSb2xlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiBpZD1cImJ0blJlZnJlc2hcIiBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInJlZnJlc2goKVwiICBtYXRUb29sdGlwPVwicmVmcmVzaCBkYXRhXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj48bWF0LWljb24gY2xhc3M9XCJyZWZyZXNoSWNvblwiPnJlZnJlc2g8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtdC0yIG1iLTFcIiAgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNcIj5cclxuXHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCI+e3tyb2xlLnJvbGVOYW1lfX08L2xhYmVsPlxyXG5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRUb29sdGlwPVwiUmVuYW1lIFJvbGVcIiAoY2xpY2spPVwicmVuYW1lUm9sZShyb2xlKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxociBzdHlsZT1cIm1hcmdpbi10b3A6IDBweDtcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW4tcm93XCIgc3R5bGU9XCIgZm9udC1zaXplOjEycHg7XCI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGluLXJvd1wiICAqbmdGb3I9XCJsZXQgY2FwSXRlbSBvZiBhcHBDb25maWcuY2FwSXRlbXNcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1haW4gaXRlbS0tPlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCAgKm5nSWY9XCJjYXBJdGVtLmlzQm9vbCB8fCBjYXBJdGVtLmNhcFN1Ykl0ZW1zXCJcclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMHB4O1wiIFsobmdNb2RlbCldPVwicm9sZVtjYXBJdGVtLm5hbWVdXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DYXBJdGVtQ2hhbmdlKGNhcEl0ZW0sICRldmVudCwgcm9sZSlcIj5cclxuICAgICAgICAgICAge3tjYXBJdGVtLmRpc3BsYXl9fVxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyb2xlW2NhcEl0ZW0ubmFtZV0gJiYgaGFzU3ViSXRlbXNBY2Nlc3MoY2FwSXRlbSwgcm9sZSlcIiBjbGFzcz1cImFzdGVyaXNrXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPio8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICA8c3BhLXNlbGVjdFxyXG4gICAgICAgICAgICpuZ0lmPVwiIWNhcEl0ZW0uaXNCb29sICYmICFjYXBJdGVtLmNhcFN1Ykl0ZW1zXCJcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwicm9sZUFjY2Vzc09wdGlvbnNcIlxyXG4gICAgICAgICAgICBvcHRpb25EaXNwbGF5PVwibmFtZVwiXHJcbiAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICBbZGlzcGxheV09XCJjYXBJdGVtLmRpc3BsYXlcIlxyXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJyb2xlW2NhcEl0ZW0ubmFtZV1cIlxyXG4gICAgICAgICAgICB3aWR0aD1cIjEwMHB4XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICA8L3NwYS1zZWxlY3Q+XHJcblxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXBJdGVtLmNhcFN1Ykl0ZW1zICYmIHJvbGVbY2FwSXRlbS5uYW1lXVwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1yb3dcIiAqbmdGb3I9XCJsZXQgY2FwU3ViSXRlbSBvZiBjYXBJdGVtLmNhcFN1Ykl0ZW1zXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFN1YiBJdGVtIC0tPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJjYXBTdWJJdGVtLmlzQm9vbFwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCIgWyhuZ01vZGVsKV09XCJyb2xlW2NhcFN1Ykl0ZW0ubmFtZV1cIj5cclxuICAgICAgICAgICAgICAgIHt7Y2FwU3ViSXRlbS5kaXNwbGF5fX1cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcFN1Ykl0ZW0uaXNCb29sXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInJvbGVBY2Nlc3NPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkRpc3BsYXk9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXldPVwiY2FwU3ViSXRlbS5kaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInJvbGVbY2FwU3ViSXRlbS5uYW1lXVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMHB4XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICAgICAgPC9zcGEtc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FwU3ViSXRlbS5jYXBTdWJJdGVtc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW4tcm93XCIgKm5nRm9yPVwibGV0IGNhcFN1YlN1Ykl0ZW0gb2YgY2FwU3ViSXRlbS5jYXBTdWJJdGVtc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBTdWIgU3ViIEl0ZW1zIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiY2FwU3ViU3ViSXRlbS5pc0Jvb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwibWluLXdpZHRoOiAxMDBweDtcIiBbKG5nTW9kZWwpXT1cInJvbGVbY2FwU3ViU3ViSXRlbS5uYW1lXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Y2FwU3ViU3ViSXRlbS5kaXNwbGF5fX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3BhLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcFN1YlN1Ykl0ZW0uaXNCb29sXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJyb2xlQWNjZXNzT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uRGlzcGxheT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5XT1cImNhcFN1YlN1Ykl0ZW0uZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicm9sZVtjYXBTdWJTdWJJdGVtLm5hbWVdXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMHB4XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3BhLXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG5cclxuICAgICAgICA8YnV0dG9uICBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInVwZGF0ZVJvbGUocm9sZSlcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4O1wiPlxyXG4gICAgICAgICAgIDxtYXQtaWNvbj5kb25lX2FsbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gbWF0LW1pbmktZmFiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJkZWxldGVSb2xlKHJvbGUpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MTBweFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuPC9kaXY+XHJcblxyXG4iXX0=
@@ -8,6 +8,7 @@ import * as i5 from "@angular/material/button";
8
8
  import * as i6 from "@angular/material/icon";
9
9
  import * as i7 from "@angular/material/form-field";
10
10
  import * as i8 from "@angular/material/input";
11
+ import * as i9 from "../../components/text/text.component";
11
12
  export class SettingsComponent {
12
13
  constructor(dataService, messageService) {
13
14
  this.dataService = dataService;
@@ -23,7 +24,7 @@ export class SettingsComponent {
23
24
  }
24
25
  loadSettings() {
25
26
  this.dataService.GetSetting("all", "").subscribe((apiResponse) => {
26
- this.settings = apiResponse;
27
+ this.settings = apiResponse.data;
27
28
  });
28
29
  }
29
30
  updateSetting(setting) {
@@ -41,22 +42,13 @@ export class SettingsComponent {
41
42
  }
42
43
  ;
43
44
  addSetting() {
44
- // const dialogRef = this.dialog.open(addRoleDialog, {
45
- // width: "1100px",
46
- // data: "",
47
- // });
48
- // dialogRef.afterClosed().subscribe((result) => {
49
- // if (result == "success") {
50
- // this.loadRoles();
51
- // }
52
- // });
53
45
  this.messageService.toast("Feature not Available");
54
46
  }
55
47
  }
56
48
  SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
57
- SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsComponent, selector: "spa-settings", ngImport: i0, template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
49
+ SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsComponent, selector: "spa-settings", ngImport: i0, template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field *ngIf=\"!setting.encrypted\" style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <spa-text *ngIf=\"setting.encrypted\" format=\"password\" style=\"width: 500px; font-size: 14px;\" [display]=\"setting.sName\" [(value)]=\"setting.sValue\"></spa-text>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.TextComponent, selector: "spa-text", inputs: ["appearance", "readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
58
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, decorators: [{
59
51
  type: Component,
60
- args: [{ selector: 'spa-settings', template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
52
+ args: [{ selector: 'spa-settings', template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field *ngIf=\"!setting.encrypted\" style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <spa-text *ngIf=\"setting.encrypted\" format=\"password\" style=\"width: 500px; font-size: 14px;\" [display]=\"setting.sName\" [(value)]=\"setting.sValue\"></spa-text>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
61
53
  }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVWxELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QjtRQUFuRSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFNdkYsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFSc0UsQ0FBQztJQUU1RixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFNRCxXQUFXLENBQUMsV0FBbUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1FBQzlCLENBQUMsQ0FDRixDQUFDO0lBRUosQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFPO1FBRW5CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUF3QixFQUFFLEVBQUU7WUFDckYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFMUIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFFckI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1RDtRQUVILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUFBLENBQUM7SUFFRixVQUFVO1FBRVIsc0RBQXNEO1FBQ3RELHFCQUFxQjtRQUNyQixjQUFjO1FBQ2QsTUFBTTtRQUVOLGtEQUFrRDtRQUNsRCwrQkFBK0I7UUFDL0Isd0JBQXdCO1FBQ3hCLE1BQU07UUFDTixNQUFNO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxDQUFDOzs4R0F4RFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsb0RDVjlCLHdtQ0ErQkE7MkZEckJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZFNldHRpbmdzKCk7XHJcbiAgfVxyXG5cclxuICBfZmlsdGVyVGV4dCA9IFwiXCI7XHJcbiAgc2V0dGluZ3M7XHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2V0dGluZ3MoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuR2V0U2V0dGluZyhcImFsbFwiLCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IGFwaVJlc3BvbnNlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNldHRpbmcoc2V0dGluZykge1xyXG5cclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuVXBkYXRlU2V0dGluZyhzZXR0aW5nLCBcImVkaXRcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChgU2V0dGluZyAke3NldHRpbmcuc05hbWV9IFVwZGF0ZWRgKTtcclxuICAgICAgICB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfTtcclxuXHJcbiAgYWRkU2V0dGluZygpIHtcclxuXHJcbiAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKGFkZFJvbGVEaWFsb2csIHtcclxuICAgIC8vICAgd2lkdGg6IFwiMTEwMHB4XCIsXHJcbiAgICAvLyAgIGRhdGE6IFwiXCIsXHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICBpZiAocmVzdWx0ID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRmVhdHVyZSBub3QgQXZhaWxhYmxlXCIpO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiIsIjxoND5TZXR0aW5nczwvaDQ+XHJcbjxocj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHg7cGFkZGluZy1sZWZ0OjEwcHhcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgPCEtLSA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJhZGRTZXR0aW5nKClcIj5OZXcgU2V0dGluZzwvYnV0dG9uPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImxvYWRTZXR0aW5ncygpXCI+UmVmcmVzaDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGluLXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBtYi0xXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDoxMHB4XCIgKm5nRm9yPVwibGV0IHNldHRpbmcgb2Ygc2V0dGluZ3NcIj5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgPG1hdC1sYWJlbD57e3NldHRpbmcuc05hbWV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZXR0aW5nLnNWYWx1ZVwiID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInVwZGF0ZVNldHRpbmcoc2V0dGluZylcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4O1wiPjxtYXQtaWNvbj5kb25lX2FsbDwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgPG1hdC1sYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGw7XCI+TGFzdCBVcGRhdGVkIGJ5IHt7c2V0dGluZy51cGRhdGVkQnl9fSBvbiB7e3NldHRpbmcudXBkYXRlZERhdGUgfCBkYXRlOiAnZGQgTU1NIHl5IEhIOm1tJ319PC9tYXQtbGFiZWw+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVVsRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLFdBQTJCLEVBQVUsY0FBOEI7UUFBbkUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTXZGLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUnNFLENBQUM7SUFFNUYsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBTUQsV0FBVyxDQUFDLFdBQW1CO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUF5QixFQUFFLEVBQUU7WUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ25DLENBQUMsQ0FDRixDQUFDO0lBRUosQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFPO1FBRW5CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUF3QixFQUFFLEVBQUU7WUFDckYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFMUIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFFckI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1RDtRQUVILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUFBLENBQUM7SUFFRixVQUFVO1FBRVIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxDQUFDOzs4R0E5Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsb0RDVjlCLHd6Q0FpQ0E7MkZEdkJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZFNldHRpbmdzKCk7XHJcbiAgfVxyXG5cclxuICBfZmlsdGVyVGV4dCA9IFwiXCI7XHJcbiAgc2V0dGluZ3M7XHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2V0dGluZ3MoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuR2V0U2V0dGluZyhcImFsbFwiLCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlIDogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzID0gYXBpUmVzcG9uc2UuZGF0YTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZXR0aW5nKHNldHRpbmcpIHtcclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLlVwZGF0ZVNldHRpbmcoc2V0dGluZywgXCJlZGl0XCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYFNldHRpbmcgJHtzZXR0aW5nLnNOYW1lfSBVcGRhdGVkYCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH07XHJcblxyXG4gIGFkZFNldHRpbmcoKSB7XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkZlYXR1cmUgbm90IEF2YWlsYWJsZVwiKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aDQ+U2V0dGluZ3M8L2g0PlxyXG48aHI+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O3BhZGRpbmctbGVmdDoxMHB4XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkU2V0dGluZygpXCI+TmV3IFNldHRpbmc8L2J1dHRvbj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJsb2FkU2V0dGluZ3MoKVwiPlJlZnJlc2g8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRpbi1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgbWItMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweFwiICpuZ0Zvcj1cImxldCBzZXR0aW5nIG9mIHNldHRpbmdzXCI+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIXNldHRpbmcuZW5jcnlwdGVkXCIgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgPG1hdC1sYWJlbD57e3NldHRpbmcuc05hbWV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZXR0aW5nLnNWYWx1ZVwiID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPHNwYS10ZXh0ICpuZ0lmPVwic2V0dGluZy5lbmNyeXB0ZWRcIiBmb3JtYXQ9XCJwYXNzd29yZFwiIHN0eWxlPVwid2lkdGg6IDUwMHB4OyBmb250LXNpemU6IDE0cHg7XCIgW2Rpc3BsYXldPVwic2V0dGluZy5zTmFtZVwiIFsodmFsdWUpXT1cInNldHRpbmcuc1ZhbHVlXCI+PC9zcGEtdGV4dD5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBkYXRlU2V0dGluZyhzZXR0aW5nKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7XCI+PG1hdC1pY29uPmRvbmVfYWxsPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj5MYXN0IFVwZGF0ZWQgYnkge3tzZXR0aW5nLnVwZGF0ZWRCeX19IG9uIHt7c2V0dGluZy51cGRhdGVkRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXkgSEg6bW0nfX08L21hdC1sYWJlbD5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
@@ -42,7 +42,7 @@ export class SignupComponent {
42
42
  }
43
43
  }
44
44
  SignupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, deps: [{ token: i1.HttpService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component });
45
- SignupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SignupComponent, selector: "spa-signup", ngImport: i0, template: "\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }] });
45
+ SignupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SignupComponent, selector: "spa-signup", ngImport: i0, template: "\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["appearance", "readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }] });
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ selector: 'spa-signup', template: "\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n" }]
@@ -9,42 +9,14 @@ export class SuppliersComponent {
9
9
  this.dataService = dataService;
10
10
  this.messageService = messageService;
11
11
  this.authService = authService;
12
- this.formConfig = {
13
- fields: [
14
- { name: 'name', type: 'text' },
15
- { name: 'phone', type: 'text' },
16
- { name: 'contactPerson', type: 'text' },
17
- { name: 'email', type: 'text' },
18
- { name: 'address', type: 'text', rows: 2, span: true },
19
- ],
20
- reset: true,
21
- };
22
- this.config = {
23
- showFilter: true,
24
- minColumns: ['name'],
25
- flatButtons: true,
26
- columns: [
27
- { name: 'name', type: 'text' },
28
- { name: 'phone', type: 'text' },
29
- { name: 'contactPerson', type: 'text' },
30
- ],
31
- buttons: [
32
- { name: 'create', display: 'Create', dialog: true, action: { url: 'general/suppliers?action=create', method: 'post' } },
33
- { name: 'view', dialog: true },
34
- { name: 'edit', dialog: true, action: { url: 'general/suppliers?action=edit', method: 'post' } },
35
- { name: 'delete', dialog: true, action: { url: 'general/suppliers?action=delete', method: 'post' } },
36
- ],
37
- loadAction: { url: 'general/suppliers/x' },
38
- formConfig: this.formConfig
39
- };
40
12
  }
41
13
  ngOnInit() {
42
14
  }
43
15
  }
44
16
  SuppliersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SuppliersComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
45
- SuppliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SuppliersComponent, selector: "spa-suppliers", ngImport: i0, template: "<h4>Suppliers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n\n", styles: [""], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
17
+ SuppliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SuppliersComponent, selector: "spa-suppliers", ngImport: i0, template: "<h4>Suppliers</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.suppliersTableConfig\"></spa-table>\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] });
46
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SuppliersComponent, decorators: [{
47
19
  type: Component,
48
- args: [{ selector: 'spa-suppliers', template: "<h4>Suppliers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n\n" }]
20
+ args: [{ selector: 'spa-suppliers', template: "<h4>Suppliers</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.suppliersTableConfig\"></spa-table>\r\n</div>\r\n\r\n" }]
49
21
  }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }]; } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcGxpZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zdXBwbGllcnMvc3VwcGxpZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zdXBwbGllcnMvc3VwcGxpZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVdsRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQW9CLFdBQTJCLEVBQVUsY0FBOEIsRUFBUyxXQUF3QjtRQUFwRyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUt4SCxlQUFVLEdBQWU7WUFFdkIsTUFBTSxFQUFFO2dCQUNOLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDL0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMvQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7YUFDdkQ7WUFFRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUE7UUFFRCxXQUFNLEdBQWdCO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNwQixXQUFXLEVBQUUsSUFBSTtZQUVqQixPQUFPLEVBQUU7Z0JBRVAsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzlCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMvQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTthQUV4QztZQUVELE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3ZILEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNoRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO2FBQ3JHO1lBRUQsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFO1lBRTFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUU1QixDQUFBO0lBMUMySCxDQUFDO0lBRTdILFFBQVE7SUFDUixDQUFDOzsrR0FMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxRENYL0IsMklBUUE7MkZER2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1zdXBwbGllcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXBwbGllcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1cHBsaWVycy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBsaWVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjb250YWN0UGVyc29uJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FkZHJlc3MnLCB0eXBlOiAndGV4dCcsIHJvd3M6IDIsIHNwYW46IHRydWUgfSxcclxuICAgIF0sXHJcblxyXG4gICAgcmVzZXQ6IHRydWUsXHJcbiAgfVxyXG5cclxuICBjb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG5cclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjb250YWN0UGVyc29uJywgdHlwZTogJ3RleHQnIH0sXHJcblxyXG4gICAgXSxcclxuXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDcmVhdGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL3N1cHBsaWVycz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL3N1cHBsaWVycz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC9zdXBwbGllcnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL3N1cHBsaWVycy94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1xyXG5cclxuICB9XHJcblxyXG59XHJcbiIsIjxoND5TdXBwbGllcnM8L2g0PlxuPGhyPlxuXG5cbjxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxNHB4O1wiPlxuICA8c3BhLXRhYmxlIFtjb25maWddPVwiY29uZmlnXCI+PC9zcGEtdGFibGU+XG48L2Rpdj5cblxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcGxpZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zdXBwbGllcnMvc3VwcGxpZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9zdXBwbGllcnMvc3VwcGxpZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVdsRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQW1CLFdBQTJCLEVBQVUsY0FBOEIsRUFBUyxXQUF3QjtRQUFwRyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFFNUgsUUFBUTtJQUNSLENBQUM7OytHQUxVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFEQ1gvQixxTEFRQTsyRkRHYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXN1cHBsaWVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1cHBsaWVycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VwcGxpZXJzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcGxpZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPGg0PlN1cHBsaWVyczwvaDQ+XHJcbjxocj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwibXQtM1wiIHN0eWxlPVwiIGZvbnQtc2l6ZTogMTRweDtcIj5cclxuICA8c3BhLXRhYmxlIFtjb25maWddPVwiZGF0YVNlcnZpY2Uuc3VwcGxpZXJzVGFibGVDb25maWdcIj48L3NwYS10YWJsZT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
@@ -32,7 +32,7 @@ export class TasksComponent {
32
32
  ],
33
33
  reset: true,
34
34
  };
35
- this.config = {
35
+ this.tasksTableConfig = {
36
36
  showFilter: true,
37
37
  minColumns: ['name', 'assigneeName'],
38
38
  flatButtons: true,
@@ -45,12 +45,12 @@ export class TasksComponent {
45
45
  { name: 'createdDate', alias: 'Created', type: 'date' },
46
46
  ],
47
47
  buttons: [
48
- { name: 'create', display: 'Create', dialog: true, action: { url: 'general/tasks?action=create', method: 'post' } },
48
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'tasks?action=create', method: 'post' } },
49
49
  { name: 'view', dialog: true },
50
- { name: 'edit', dialog: true, action: { url: 'general/tasks?action=edit', method: 'post' } },
51
- { name: 'delete', dialog: true, action: { url: 'general/tasks?action=delete', method: 'post' } },
50
+ { name: 'edit', dialog: true, action: { url: 'tasks?action=edit', method: 'post' } },
51
+ { name: 'delete', dialog: true, action: { url: 'tasks?action=delete', method: 'post' } },
52
52
  ],
53
- loadAction: { url: 'general/tasks/x' },
53
+ loadAction: { url: 'tasks/all/x' },
54
54
  formConfig: this.formConfig
55
55
  };
56
56
  }
@@ -58,7 +58,7 @@ export class TasksComponent {
58
58
  this.loadData();
59
59
  }
60
60
  loadData() {
61
- this.dataService.CallApi({ url: 'general/tasks_meta/x' }).subscribe((api) => {
61
+ this.dataService.CallApi({ url: 'tasks/meta/x' }).subscribe((api) => {
62
62
  this.formConfig.fields.find(x => x.name == 'assignee').options = api.data.members;
63
63
  this.formConfig.fields.find(x => x.name == 'assignee').defaultValue = this.authService.currentUser;
64
64
  this.formConfig.fields.find(x => x.name == 'categoryID').options = api.data.categories;
@@ -78,9 +78,9 @@ export class TasksComponent {
78
78
  }
79
79
  }
80
80
  TasksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TasksComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
81
- TasksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TasksComponent, selector: "spa-tasks", ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Tasks</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"reload\"></spa-table>\n</div>\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
81
+ TasksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TasksComponent, selector: "spa-tasks", ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\r\n\r\n <label style=\"font-size: 16px;\">Tasks</label>\r\n\r\n <div>\r\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tasksTableConfig\" [reload]=\"reload\"></spa-table>\r\n</div>\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] });
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TasksComponent, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'spa-tasks', template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Tasks</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"reload\"></spa-table>\n</div>\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
84
+ args: [{ selector: 'spa-tasks', template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\r\n\r\n <label style=\"font-size: 16px;\">Tasks</label>\r\n\r\n <div>\r\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tasksTableConfig\" [reload]=\"reload\"></spa-table>\r\n</div>\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
85
85
  }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }, { type: i4.MatDialog }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3Rhc2tzL3Rhc2tzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90YXNrcy90YXNrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCLEVBQVMsTUFBaUI7UUFBOUgsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBaUNsSixXQUFNLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsYUFBUSxHQUFHO1lBQ1QsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7U0FDaEMsQ0FBQTtRQUVELGVBQVUsR0FBZTtZQUV2QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFHLElBQUksRUFBRSxRQUFRLEVBQUcsSUFBSSxFQUFFO2dC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VUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztZQUNuRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJO1FBRUYsSUFBSSxJQUFJLEdBQXFCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUE7UUFFdkcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEQsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUUzQyxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzsyR0FoQ1UsY0FBYzsrRkFBZCxjQUFjLGlEQ2QzQix3ZkFjQTsyRkRBYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIExpc3REaWFsb2dDb25maWcsIFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaXN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9saXN0LWRpYWxvZy9saXN0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS10YXNrcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2tzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YXNrcy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhc2tzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZERhdGEoKTtcclxuICB9XHJcblxyXG4gIGxvYWREYXRhKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6J2dlbmVyYWwvdGFza3NfbWV0YS94J30pLnN1YnNjcmliZSgoYXBpIDogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdhc3NpZ25lZScpLm9wdGlvbnMgPSBhcGkuZGF0YS5tZW1iZXJzO1xyXG4gICAgICB0aGlzLmZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2Fzc2lnbmVlJykuZGVmYXVsdFZhbHVlID0gdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlcjtcclxuICAgICAgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdjYXRlZ29yeUlEJykub3B0aW9ucyA9IGFwaS5kYXRhLmNhdGVnb3JpZXM7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2F0cygpIHtcclxuXHJcbiAgICBsZXQgY29uZjogTGlzdERpYWxvZ0NvbmZpZyA9IHsgdGl0bGU6IFwiVGFzayBDYXRlZ29yaWVzXCIsIG5hbWU6ICdDYXRlZ29yeScsIGxpc3ROYW1lOiAnVGFza0NhdGVnb3JpZXMnIH1cclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKExpc3REaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiOTAwcHhcIixcclxuICAgICAgZGF0YTogY29uZixcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICByZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBzdGF0dXNlcyA9IFtcclxuICAgIHsgbmFtZTogJ05vdCBTdGFydGVkJywgdmFsdWU6IDAgfSxcclxuICAgIHsgbmFtZTogJ0luLVByb2dyZXNzJywgdmFsdWU6IDEgfSxcclxuICAgIHsgbmFtZTogJ0NvbXBsZXRlZCcsIHZhbHVlOiAyIH0sXHJcbiAgXVxyXG5cclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCBzcGFuIDogdHJ1ZSwgcmVxdWlyZWQgOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3N0YXR1cycsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zIDogdGhpcy5zdGF0dXNlcywgZGVmYXVsdEZpcnN0VmFsdWUgOiB0cnVlLCByZXF1aXJlZCA6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZHVlRGF0ZScsIHR5cGU6ICdkYXRlJyB9LFxyXG4gICAgICB7IG5hbWU6ICdhc3NpZ25lZScsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25EaXNwbGF5IDogJ25hbWUnLCBvcHRpb25WYWx1ZSA6ICd1c2VyTmFtZScgfSxcclxuICAgICAgeyBuYW1lOiAnY2F0ZWdvcnlJRCcsIGFsaWFzOiAnQ2F0ZWdvcnknLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ2xpc3RJdGVtSUQnLCBkZWZhdWx0Rmlyc3RWYWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgIF0sXHJcblxyXG4gICAgcmVzZXQ6IHRydWUsXHJcbiAgfVxyXG5cclxuICBjb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZScsICdhc3NpZ25lZU5hbWUnXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG5cclxuICAgIGNvbHVtbnM6IFtcclxuXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCd9LFxyXG4gICAgICB7IG5hbWU6ICdzdGF0dXNOYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2R1ZURhdGUnLCB0eXBlOiAnZGF0ZScgfSxcclxuICAgICAgeyBuYW1lOiAnYXNzaWduZWVOYW1lJywgYWxpYXM6J2Fzc2lnbmVlJywgdHlwZTogJ3RleHQnfSxcclxuICAgICAgeyBuYW1lOiAnY2F0ZWdvcnlOYW1lJywgYWxpYXM6ICdDYXRlZ29yeScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjcmVhdGVkRGF0ZScsIGFsaWFzIDogJ0NyZWF0ZWQnLCB0eXBlOiAnZGF0ZScgfSxcclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC90YXNrcz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL3Rhc2tzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL3Rhc2tzP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC90YXNrcy94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1xyXG5cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5cblxuICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCI+VGFza3M8L2xhYmVsPlxuXG4gIDxkaXY+XG4gICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MWVtO1wiIChjbGljayk9XCJjYXRzKClcIiBtYXRUb29sdGlwPVwiQ2F0ZWdvcmllc1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+PG1hdC1pY29uPmNhdGVnb3J5PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuPGhyPlxuXG48ZGl2IGNsYXNzPVwibXQtM1wiIHN0eWxlPVwiIGZvbnQtc2l6ZTogMTRweDtcIj5cbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cImNvbmZpZ1wiIFtyZWxvYWRdPVwicmVsb2FkXCI+PC9zcGEtdGFibGU+XG48L2Rpdj5cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3Rhc2tzL3Rhc2tzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90YXNrcy90YXNrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCLEVBQVMsTUFBaUI7UUFBOUgsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBaUNsSixXQUFNLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsYUFBUSxHQUFHO1lBQ1QsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7U0FDaEMsQ0FBQTtRQUVELGVBQVUsR0FBZTtZQUV2QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFHLElBQUksRUFBRSxRQUFRLEVBQUcsSUFBSSxFQUFFO2dC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QVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDbkcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsSUFBSTtRQUVGLElBQUksSUFBSSxHQUFxQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFBO1FBRXZHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3RELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFFM0MsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7MkdBaENVLGNBQWM7K0ZBQWQsY0FBYyxpRENkM0IsOGhCQWNBOzJGREFhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgTGlzdERpYWxvZ0NvbmZpZywgVGFibGVDb25maWcsIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExpc3REaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2xpc3QtZGlhbG9nL2xpc3QtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXRhc2tzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFza3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Rhc2tzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFza3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZERhdGEoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDondGFza3MvbWV0YS94J30pLnN1YnNjcmliZSgoYXBpIDogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdhc3NpZ25lZScpLm9wdGlvbnMgPSBhcGkuZGF0YS5tZW1iZXJzO1xyXG4gICAgICB0aGlzLmZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2Fzc2lnbmVlJykuZGVmYXVsdFZhbHVlID0gdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlcjtcclxuICAgICAgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdjYXRlZ29yeUlEJykub3B0aW9ucyA9IGFwaS5kYXRhLmNhdGVnb3JpZXM7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2F0cygpIHtcclxuXHJcbiAgICBsZXQgY29uZjogTGlzdERpYWxvZ0NvbmZpZyA9IHsgdGl0bGU6IFwiVGFzayBDYXRlZ29yaWVzXCIsIG5hbWU6ICdDYXRlZ29yeScsIGxpc3ROYW1lOiAnVGFza0NhdGVnb3JpZXMnIH1cclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKExpc3REaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiOTAwcHhcIixcclxuICAgICAgZGF0YTogY29uZixcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICByZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBzdGF0dXNlcyA9IFtcclxuICAgIHsgbmFtZTogJ05vdCBTdGFydGVkJywgdmFsdWU6IDAgfSxcclxuICAgIHsgbmFtZTogJ0luLVByb2dyZXNzJywgdmFsdWU6IDEgfSxcclxuICAgIHsgbmFtZTogJ0NvbXBsZXRlZCcsIHZhbHVlOiAyIH0sXHJcbiAgXVxyXG5cclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCBzcGFuIDogdHJ1ZSwgcmVxdWlyZWQgOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3N0YXR1cycsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zIDogdGhpcy5zdGF0dXNlcywgZGVmYXVsdEZpcnN0VmFsdWUgOiB0cnVlLCByZXF1aXJlZCA6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZHVlRGF0ZScsIHR5cGU6ICdkYXRlJyB9LFxyXG4gICAgICB7IG5hbWU6ICdhc3NpZ25lZScsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25EaXNwbGF5IDogJ25hbWUnLCBvcHRpb25WYWx1ZSA6ICd1c2VyTmFtZScgfSxcclxuICAgICAgeyBuYW1lOiAnY2F0ZWdvcnlJRCcsIGFsaWFzOiAnQ2F0ZWdvcnknLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ2xpc3RJdGVtSUQnLCBkZWZhdWx0Rmlyc3RWYWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgIF0sXHJcblxyXG4gICAgcmVzZXQ6IHRydWUsXHJcbiAgfVxyXG5cclxuICB0YXNrc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAnYXNzaWduZWVOYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcblxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnfSxcclxuICAgICAgeyBuYW1lOiAnc3RhdHVzTmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdkdWVEYXRlJywgdHlwZTogJ2RhdGUnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Fzc2lnbmVlTmFtZScsIGFsaWFzOidhc3NpZ25lZScsIHR5cGU6ICd0ZXh0J30sXHJcbiAgICAgIHsgbmFtZTogJ2NhdGVnb3J5TmFtZScsIGFsaWFzOiAnQ2F0ZWdvcnknLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlZERhdGUnLCBhbGlhcyA6ICdDcmVhdGVkJywgdHlwZTogJ2RhdGUnIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3Rhc2tzP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3Rhc2tzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICd0YXNrcz9hY3Rpb249ZGVsZXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3Rhc2tzL2FsbC94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1xyXG5cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5cclxuXHJcbiAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O1wiPlRhc2tzPC9sYWJlbD5cclxuXHJcbiAgPGRpdj5cclxuICAgIDxidXR0b24gbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjFlbTtcIiAoY2xpY2spPVwiY2F0cygpXCIgbWF0VG9vbHRpcD1cIkNhdGVnb3JpZXNcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPjxtYXQtaWNvbj5jYXRlZ29yeTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPGhyPlxyXG5cclxuPGRpdiBjbGFzcz1cIm10LTNcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cInRhc2tzVGFibGVDb25maWdcIiBbcmVsb2FkXT1cInJlbG9hZFwiPjwvc3BhLXRhYmxlPlxyXG48L2Rpdj5cclxuIl19