tin-spa 14.0.1 → 14.4.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.
- package/README.md +24 -24
- package/esm2020/lib/classes/Classes.mjs +32 -57
- package/esm2020/lib/classes/LibClasses.mjs +1 -2
- package/esm2020/lib/classes/TinCore.mjs +48 -206
- package/esm2020/lib/components/alert/alert.component.mjs +7 -21
- package/esm2020/lib/components/attach/attach.component.mjs +33 -49
- package/esm2020/lib/components/date/date.component.mjs +6 -8
- package/esm2020/lib/components/email/email.component.mjs +17 -19
- package/esm2020/lib/components/form/form.component.mjs +56 -144
- package/esm2020/lib/components/label/label.component.mjs +3 -9
- package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
- package/esm2020/lib/components/money/money.component.mjs +9 -26
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +27 -31
- package/esm2020/lib/components/number/number.component.mjs +8 -23
- package/esm2020/lib/components/option/option.component.mjs +14 -36
- package/esm2020/lib/components/search/search.component.mjs +5 -10
- package/esm2020/lib/components/select/select.component.mjs +129 -56
- package/esm2020/lib/components/steps/steps.component.mjs +61 -83
- package/esm2020/lib/components/table/detailsDialog.component.mjs +41 -205
- package/esm2020/lib/components/table/table.component.mjs +111 -136
- package/esm2020/lib/components/table-action/table-action.component.mjs +8 -42
- package/esm2020/lib/components/table-header/table-header.component.mjs +10 -14
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +39 -205
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +112 -138
- package/esm2020/lib/components/table-row/table-row.component.mjs +4 -23
- package/esm2020/lib/components/text/text.component.mjs +46 -110
- package/esm2020/lib/components/tiles/tiles.component.mjs +20 -32
- package/esm2020/lib/components/viewer/viewer.component.mjs +3 -7
- package/esm2020/lib/components/viewer/viewerDialog.component.mjs +13 -20
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +1 -11
- package/esm2020/lib/pages/accounts/accountDialog.component.mjs +1 -1
- package/esm2020/lib/pages/bug/bug.component.mjs +3 -3
- package/esm2020/lib/pages/change-password/change-password.component.mjs +1 -1
- package/esm2020/lib/pages/create-account/create-account.component.mjs +1 -1
- package/esm2020/lib/pages/customers/customers.component.mjs +48 -9
- package/esm2020/lib/pages/departments/departments.component.mjs +4 -2
- package/esm2020/lib/pages/employees/employees.component.mjs +4 -3
- package/esm2020/lib/pages/grades/grades.component.mjs +3 -3
- package/esm2020/lib/pages/inventory/inventory.component.mjs +3 -3
- package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +1 -1
- package/esm2020/lib/pages/invitations/invitations.component.mjs +14 -0
- package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +10 -11
- package/esm2020/lib/pages/login/login.component.mjs +14 -52
- package/esm2020/lib/pages/logs/logs.component.mjs +22 -27
- package/esm2020/lib/pages/membership/membership.component.mjs +19 -15
- package/esm2020/lib/pages/notifications/notifications.component.mjs +6 -82
- package/esm2020/lib/pages/plans/plans.component.mjs +19 -16
- package/esm2020/lib/pages/positions/positions.component.mjs +4 -4
- package/esm2020/lib/pages/profile/profile.component.mjs +3 -4
- package/esm2020/lib/pages/recover-account/recover-account.component.mjs +1 -1
- package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +2 -2
- package/esm2020/lib/pages/roles/roles.component.mjs +17 -77
- package/esm2020/lib/pages/settings/settings.component.mjs +13 -5
- package/esm2020/lib/pages/signup/signup.component.mjs +1 -1
- package/esm2020/lib/pages/suppliers/suppliers.component.mjs +31 -3
- package/esm2020/lib/pages/tasks/tasks.component.mjs +9 -9
- package/esm2020/lib/pages/tenant-settings/inviteDialog.component.mjs +60 -0
- package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +72 -145
- package/esm2020/lib/pages/tenants/tenants.component.mjs +10 -10
- package/esm2020/lib/pages/transactions/transactDialog.component.mjs +1 -1
- package/esm2020/lib/pages/transactions/transactions.component.mjs +3 -3
- package/esm2020/lib/pages/users/users.component.mjs +92 -141
- package/esm2020/lib/pages/welcome/welcome.component.mjs +9 -9
- package/esm2020/lib/services/button.service.mjs +32 -92
- package/esm2020/lib/services/csv.service.mjs +1 -1
- package/esm2020/lib/services/datalib.service.mjs +78 -551
- package/esm2020/lib/services/dialog.service.mjs +7 -51
- package/esm2020/lib/services/table-config.service.mjs +7 -55
- package/esm2020/lib/tin-spa.module.mjs +11 -48
- package/esm2020/public-api.mjs +1 -10
- package/fesm2015/tin-spa.mjs +2605 -6538
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +2501 -6482
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/lib/classes/Classes.d.ts +129 -267
- package/lib/classes/LibClasses.d.ts +0 -1
- package/lib/classes/TinCore.d.ts +4 -13
- package/lib/components/alert/alert.component.d.ts +3 -4
- package/lib/components/attach/attach.component.d.ts +6 -13
- package/lib/components/date/date.component.d.ts +1 -1
- package/lib/components/email/email.component.d.ts +3 -4
- package/lib/components/form/form.component.d.ts +11 -20
- package/lib/components/label/label.component.d.ts +1 -3
- package/lib/components/money/money.component.d.ts +1 -8
- package/lib/components/nav-menu/nav-menu.component.d.ts +2 -6
- package/lib/components/number/number.component.d.ts +1 -7
- package/lib/components/option/option.component.d.ts +2 -10
- package/lib/components/search/search.component.d.ts +1 -3
- package/lib/components/select/select.component.d.ts +37 -16
- package/lib/components/steps/steps.component.d.ts +9 -18
- package/lib/components/table/detailsDialog.component.d.ts +7 -29
- package/lib/components/table/table.component.d.ts +9 -15
- package/lib/components/table-action/table-action.component.d.ts +1 -4
- package/lib/components/table-header/table-header.component.d.ts +1 -3
- package/lib/components/table-internal/detailsDialog-internal.component.d.ts +7 -29
- package/lib/components/table-internal/table-internal.component.d.ts +9 -15
- package/lib/components/table-row/table-row.component.d.ts +1 -4
- package/lib/components/text/text.component.d.ts +8 -21
- package/lib/components/tiles/tiles.component.d.ts +3 -4
- package/lib/components/viewer/viewerDialog.component.d.ts +1 -3
- package/lib/pages/customers/customers.component.d.ts +8 -2
- package/lib/pages/invitations/invitations.component.d.ts +8 -0
- package/lib/pages/invitations-table/invitations-table.component.d.ts +1 -1
- package/lib/pages/login/login.component.d.ts +1 -7
- package/lib/pages/logs/logs.component.d.ts +6 -2
- package/lib/pages/membership/membership.component.d.ts +6 -2
- package/lib/pages/notifications/notifications.component.d.ts +1 -9
- package/lib/pages/plans/plans.component.d.ts +6 -2
- package/lib/pages/roles/roles.component.d.ts +2 -14
- package/lib/pages/suppliers/suppliers.component.d.ts +4 -1
- package/lib/pages/tasks/tasks.component.d.ts +1 -1
- package/lib/pages/tenant-settings/inviteDialog.component.d.ts +28 -0
- package/lib/pages/tenant-settings/tenant-settings.component.d.ts +7 -12
- package/lib/pages/tenants/tenants.component.d.ts +2 -2
- package/lib/pages/users/users.component.d.ts +16 -8
- package/lib/services/button.service.d.ts +8 -11
- package/lib/services/datalib.service.d.ts +10 -57
- package/lib/services/dialog.service.d.ts +2 -3
- package/lib/services/table-config.service.d.ts +1 -9
- package/lib/tin-spa.module.d.ts +33 -52
- package/package.json +1 -1
- package/public-api.d.ts +0 -9
- package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
- package/esm2020/lib/components/cards/cards.component.mjs +0 -103
- package/esm2020/lib/components/html/html.component.mjs +0 -34
- package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
- package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
- package/esm2020/lib/components/notes/notes.component.mjs +0 -62
- package/esm2020/lib/components/page/page.component.mjs +0 -101
- package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
- package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
- package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
- package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
- package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
- package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
- package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
- package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
- package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
- package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
- package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
- package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
- package/esm2020/lib/select-context.directive.mjs +0 -23
- package/esm2020/lib/services/notifications.service.mjs +0 -33
- package/lib/components/capsules/capsules.component.d.ts +0 -26
- package/lib/components/cards/cards.component.d.ts +0 -39
- package/lib/components/html/html.component.d.ts +0 -16
- package/lib/components/multi-select/multi-select.component.d.ts +0 -47
- package/lib/components/multi-text/multi-text.component.d.ts +0 -56
- package/lib/components/notes/notes.component.d.ts +0 -19
- package/lib/components/page/page.component.d.ts +0 -38
- package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
- package/lib/components/select-common/select-common.component.d.ts +0 -53
- package/lib/components/select-internal/select-internal.component.d.ts +0 -23
- package/lib/components/select-lite/select-lite.component.d.ts +0 -8
- package/lib/components/statuses/statuses.component.d.ts +0 -12
- package/lib/components/suffix/suffix.component.d.ts +0 -23
- package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
- package/lib/components/table-lite/table-lite.component.d.ts +0 -91
- package/lib/components/tabs/tabs.component.d.ts +0 -32
- package/lib/pages/app-models/app-models.component.d.ts +0 -15
- package/lib/pages/approvals/approvals.component.d.ts +0 -10
- package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
- package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
- package/lib/select-context.directive.d.ts +0 -10
- package/lib/services/notifications.service.d.ts +0 -12
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component } from "@angular/core";
|
|
1
|
+
import { Component, ViewChild } from "@angular/core";
|
|
2
|
+
import { MatTableDataSource } from "@angular/material/table";
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "../../services/http.service";
|
|
4
5
|
import * as i2 from "@angular/router";
|
|
@@ -6,7 +7,13 @@ import * as i3 from "../../services/auth.service";
|
|
|
6
7
|
import * as i4 from "../../services/datalib.service";
|
|
7
8
|
import * as i5 from "@angular/material/dialog";
|
|
8
9
|
import * as i6 from "../../services/message.service";
|
|
9
|
-
import * as i7 from "
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
import * as i8 from "@angular/material/table";
|
|
12
|
+
import * as i9 from "@angular/material/paginator";
|
|
13
|
+
import * as i10 from "@angular/material/button";
|
|
14
|
+
import * as i11 from "@angular/material/icon";
|
|
15
|
+
import * as i12 from "@angular/material/tooltip";
|
|
16
|
+
import * as i13 from "../../components/filter/filter.component";
|
|
10
17
|
export class UsersComponent {
|
|
11
18
|
constructor(httpService, router, authService, dataService, dialog, messageService) {
|
|
12
19
|
this.httpService = httpService;
|
|
@@ -15,153 +22,97 @@ export class UsersComponent {
|
|
|
15
22
|
this.dataService = dataService;
|
|
16
23
|
this.dialog = dialog;
|
|
17
24
|
this.messageService = messageService;
|
|
18
|
-
this.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
{ name: 'authType', type: 'select', alias: 'Authentication Type', readonly: true, span: true, required: true, defaultFirstValue: true },
|
|
22
|
-
{
|
|
23
|
-
name: 'firstName', type: 'text', required: true,
|
|
24
|
-
readonlyCondition: x => x.authType !== 'local',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: 'lastName', type: 'text', required: true,
|
|
28
|
-
readonlyCondition: x => x.authType !== 'local',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
name: 'password', type: 'password', required: true,
|
|
32
|
-
hiddenCondition: x => x.authType !== 'local', span: true,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: 'confirmPassword', type: 'password', required: true,
|
|
36
|
-
hiddenCondition: x => x.authType !== 'local', span: true
|
|
37
|
-
},
|
|
38
|
-
{ name: 'email', type: 'text', required: false, span: true },
|
|
39
|
-
{ name: 'roleID', type: 'select', alias: 'Role', required: true, span: true, defaultFirstValue: true },
|
|
40
|
-
],
|
|
41
|
-
};
|
|
42
|
-
this.createDialog = {
|
|
43
|
-
formConfig: {
|
|
44
|
-
title: 'User',
|
|
45
|
-
fields: [
|
|
46
|
-
{ name: 'userName', type: 'text', alias: 'Username', required: true, span: true },
|
|
47
|
-
{
|
|
48
|
-
name: 'authType', type: 'select', alias: 'Authentication Type', span: true, required: true, defaultFirstValue: true,
|
|
49
|
-
onSelectChange: (value, data) => {
|
|
50
|
-
if (value === 'AD' && data.userName?.trim()) {
|
|
51
|
-
this.dataService.CallApi({ url: `user/ad/${data.userName}` }).subscribe((response) => {
|
|
52
|
-
if (response.success && response.data) {
|
|
53
|
-
data.firstName = response.data.firstName || '';
|
|
54
|
-
data.lastName = response.data.surname || '';
|
|
55
|
-
data.email = response.data.emailAddress || '';
|
|
56
|
-
this.messageService.toast('AD user found');
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
this.messageService.toast(response.message || 'AD user not found');
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
{ name: 'firstName', type: 'text', required: true, readonlyCondition: x => x.authType !== 'local' },
|
|
66
|
-
{ name: 'lastName', type: 'text', required: true, readonlyCondition: x => x.authType !== 'local' },
|
|
67
|
-
{ name: 'password', type: 'password', required: true, hiddenCondition: x => x.authType !== 'local', span: true },
|
|
68
|
-
{ name: 'confirmPassword', type: 'password', required: true, hiddenCondition: x => x.authType !== 'local', span: true },
|
|
69
|
-
{ name: 'email', type: 'text', required: false, span: true },
|
|
70
|
-
{ name: 'roleID', type: 'select', alias: 'Role', required: true, span: true, defaultFirstValue: true },
|
|
71
|
-
]
|
|
72
|
-
},
|
|
73
|
-
mode: 'create',
|
|
74
|
-
buttons: [
|
|
75
|
-
{ name: 'create', action: { method: 'post', url: 'User/register', successMessage: "User Created" } }
|
|
76
|
-
]
|
|
77
|
-
};
|
|
78
|
-
this.editDialog = {
|
|
79
|
-
formConfig: {
|
|
80
|
-
...this.userBaseFormConfig,
|
|
81
|
-
title: 'User',
|
|
82
|
-
fields: this.userBaseFormConfig.fields.filter(x => x.name !== 'password' && x.name !== 'confirmPassword')
|
|
83
|
-
},
|
|
84
|
-
mode: 'view',
|
|
85
|
-
buttons: [
|
|
86
|
-
{ name: 'edit', action: { method: 'post', url: 'User/edit', successMessage: "User Updated" } }
|
|
87
|
-
]
|
|
88
|
-
};
|
|
89
|
-
this.passwordDialog = {
|
|
90
|
-
formConfig: {
|
|
91
|
-
...this.userBaseFormConfig,
|
|
92
|
-
title: 'Change Password',
|
|
93
|
-
fixedTitle: true,
|
|
94
|
-
alertConfig: { messages: [
|
|
95
|
-
{ type: 'info', content: '*Please consider these requirements for your new password.' },
|
|
96
|
-
{ type: 'info', content: 'At least 8 characters.' },
|
|
97
|
-
{ type: 'info', content: 'At least 1 uppercase letter' },
|
|
98
|
-
{ type: 'info', content: 'At least 2 lowercase letters (a-z)' },
|
|
99
|
-
{ type: 'info', content: 'At least 1 digit (0-9)' },
|
|
100
|
-
{ type: 'info', content: ' At least 1 special character (~`! …)' },
|
|
101
|
-
] },
|
|
102
|
-
fields: [
|
|
103
|
-
{ name: 'newPassword', type: 'password', required: true },
|
|
104
|
-
{ name: 'confirmPassword', type: 'password', required: true }
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
mode: 'edit',
|
|
108
|
-
buttons: [
|
|
109
|
-
{ name: 'edit', action: { method: 'post', url: 'User/changepassword-admin', successMessage: 'Password Changed' } }
|
|
110
|
-
]
|
|
111
|
-
};
|
|
112
|
-
this.usersTableConfig = {
|
|
113
|
-
showFilter: true,
|
|
114
|
-
minButtons: ['fullName', 'roleName'],
|
|
115
|
-
greyOut: (value) => value.disabled == 1,
|
|
116
|
-
collapseButtons: true,
|
|
117
|
-
minColumns: ['userName', 'fullName', 'roleName', 'locked', 'dateCreated'],
|
|
118
|
-
flatButtons: this.dataService.appConfig.multitenant,
|
|
119
|
-
columns: [
|
|
120
|
-
{ name: 'userName', type: 'text' },
|
|
121
|
-
{ name: 'fullName', type: 'text' },
|
|
122
|
-
{ name: 'roleName', type: 'text' },
|
|
123
|
-
{ name: 'locked', type: 'checkbox' },
|
|
124
|
-
{ name: 'createdDate', type: 'date' },
|
|
125
|
-
],
|
|
126
|
-
buttons: [
|
|
127
|
-
{ name: 'create', display: 'New User', dialog: true, detailsConfig: this.createDialog },
|
|
128
|
-
{ name: 'view', dialog: true, icon: { name: 'account_circle' }, detailsConfig: this.editDialog },
|
|
129
|
-
{
|
|
130
|
-
name: 'changePassword', display: 'Change Password', tip: 'Change Password', icon: { name: 'key' }, dialog: true, detailsConfig: this.passwordDialog,
|
|
131
|
-
visible: x => x.authType === 'local'
|
|
132
|
-
},
|
|
133
|
-
{ name: 'lock', action: { method: 'post', url: 'User/lock', successMessage: "User locked" }, color: 'red', tip: 'lock', icon: { name: 'lock' },
|
|
134
|
-
visible: (value) => value.locked == 0
|
|
135
|
-
},
|
|
136
|
-
{ name: 'unlock', action: { method: 'post', url: 'User/unlock', successMessage: "User Unlocked" }, color: 'green', tip: 'unlock', icon: { name: 'lock_open' },
|
|
137
|
-
visible: (value) => value.locked == 1
|
|
138
|
-
},
|
|
139
|
-
{ name: 'delete', action: { method: 'post', url: 'User/delete', successMessage: "User Deleted" }, color: 'red' },
|
|
140
|
-
],
|
|
141
|
-
loadAction: { url: 'User/all/x' },
|
|
142
|
-
};
|
|
25
|
+
this.isProcessing = false;
|
|
26
|
+
this._filterText = "";
|
|
27
|
+
this.displayedColumns = ["userName", "fullName", "roleName", "locked", "dateCreated", "Action"];
|
|
143
28
|
}
|
|
144
29
|
ngOnInit() {
|
|
145
30
|
this.authService.isAuthorised(this.dataService.capUsers.name);
|
|
146
|
-
this.
|
|
31
|
+
this.UpdateData();
|
|
147
32
|
}
|
|
148
|
-
|
|
149
|
-
|
|
33
|
+
UpdateData() {
|
|
34
|
+
this.dataService.GetUser().subscribe((apiResponse) => {
|
|
35
|
+
this.usersRaw = apiResponse.data;
|
|
36
|
+
this.users = new MatTableDataSource(apiResponse.data);
|
|
37
|
+
this.users.paginator = this.usersPaginator;
|
|
38
|
+
this.applyFilter(this._filterText);
|
|
39
|
+
}, (error) => {
|
|
40
|
+
this.isProcessing = false;
|
|
41
|
+
this.messageService.toast(this.httpService.Error(error));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
applyFilter(filterValue) {
|
|
45
|
+
this.users.filter = filterValue.trim().toLowerCase();
|
|
46
|
+
}
|
|
47
|
+
createAccount() {
|
|
48
|
+
this.router.navigate(["home/admin/create-account"]);
|
|
49
|
+
}
|
|
50
|
+
viewProfile(user) {
|
|
51
|
+
this.dataService.tmpProfileuserName = user.userName;
|
|
52
|
+
this.router.navigate(["home/user/profile"]);
|
|
53
|
+
}
|
|
54
|
+
lock(u) {
|
|
55
|
+
let login = { userName: u.userName, password: "Abcdef@123" };
|
|
56
|
+
this.dataService.LockUser(login).subscribe((apiResponse) => {
|
|
57
|
+
if (apiResponse.success) {
|
|
58
|
+
this.messageService.toast("User Locked");
|
|
59
|
+
this.UpdateData();
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.messageService.toast("Error: " + apiResponse);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
unlock(u) {
|
|
67
|
+
let login = { userName: u.userName, password: "Abcdef@123" };
|
|
68
|
+
this.dataService.UnlockUser(login).subscribe((apiResponse) => {
|
|
69
|
+
if (apiResponse.success) {
|
|
70
|
+
this.messageService.toast("User Unlocked");
|
|
71
|
+
this.UpdateData();
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.messageService.toast("Error: " + apiResponse);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
recover(u) {
|
|
79
|
+
this.dataService.SelfReset(u).subscribe((apiResponse) => {
|
|
80
|
+
if (apiResponse.message == "success") {
|
|
81
|
+
this.messageService.toast("The password has been sent on email");
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.messageService.toast("Error: " + apiResponse.message);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
150
87
|
}
|
|
151
|
-
|
|
152
|
-
this.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
88
|
+
deleteUser(user) {
|
|
89
|
+
this.messageService.confirm(`Delete ${user.userName} ?`).subscribe((result) => {
|
|
90
|
+
if (result == "yes") {
|
|
91
|
+
this.isProcessing = true;
|
|
92
|
+
this.dataService.DeleteUser(user).subscribe((apiResponse) => {
|
|
93
|
+
this.isProcessing = false;
|
|
94
|
+
if (apiResponse.message == "success") {
|
|
95
|
+
this.messageService.toast("User Deleted");
|
|
96
|
+
this.UpdateData();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.messageService.toast("Error: " + apiResponse.message);
|
|
100
|
+
}
|
|
101
|
+
}, (error) => {
|
|
102
|
+
this.messageService.toast("Connection failed ");
|
|
103
|
+
this.isProcessing = false;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
158
106
|
});
|
|
159
107
|
}
|
|
160
108
|
}
|
|
161
109
|
UsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UsersComponent, deps: [{ token: i1.HttpService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.DataServiceLib }, { token: i5.MatDialog }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
-
UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: UsersComponent, selector: "spa-users", ngImport: i0, template: "\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<spa-table [config]=\"
|
|
110
|
+
UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: UsersComponent, selector: "spa-users", viewQueries: [{ propertyName: "usersPaginator", first: true, predicate: ["usersPaginator"], descendants: true }], ngImport: i0, template: "\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\" style=\"font-size: 14px;\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col-2\">\r\n <button id=\"btnCreateAccount\" mat-raised-button color=\"primary\" (click)=\"createAccount()\">Create User</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"users\" (refreshClick)=\"UpdateData()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n <p *ngIf=\"!users\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"users\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"users\">\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> UserName </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.userName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"locked\">\r\n <th mat-header-cell *matHeaderCellDef> Locked </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.locked}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.firstName}} {{user.lastName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"roleName\">\r\n <th mat-header-cell *matHeaderCellDef> Role </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.role.roleName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"disabled\">\r\n <th mat-header-cell *matHeaderCellDef> Disabled </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.disabled}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateCreated\">\r\n <th mat-header-cell *matHeaderCellDef> Created </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.createdDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateUpdated\">\r\n <th mat-header-cell *matHeaderCellDef> Updated </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.updatedDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let user\" style=\"width: 250px;\">\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"viewProfile(user)\" style=\"margin-right:30px\" matTooltip=\"View Profile\" matTooltipPosition=\"above\"> <mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"user.locked=='0'\" mat-mini-fab color=\"warn\" (click)=\"lock(user)\" style=\"margin-right:10px\" matTooltip=\"Lock\" matTooltipPosition=\"above\"> <mat-icon>lock</mat-icon></button>\r\n <button *ngIf=\"user.locked=='1'\" mat-mini-fab (click)=\"unlock(user)\" style=\"margin-right:10px; background-color: green;\" matTooltip=\"Unlock\" matTooltipPosition=\"above\"> <mat-icon >lock_open</mat-icon></button>\r\n\r\n <!-- <button *ngIf=\"user.disabled=='0'\" mat-mini-fab color=\"warn\" (click)=\"disable(user)\" style=\"margin-right:10px\" matTooltip=\"Disable\" matTooltipPosition=\"above\"> <mat-icon>block</mat-icon></button>\r\n <button *ngIf=\"user.disabled=='1'\" mat-mini-fab (click)=\"enable(user)\" style=\"margin-right:10px; background-color: green\" matTooltip=\"Enable\" matTooltipPosition=\"above\"> <mat-icon>done</mat-icon></button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteUser(user)\" style=\"margin-right:10px\" matTooltip=\"Delete\" matTooltipPosition=\"above\"> <mat-icon>delete</mat-icon></button>\r\n <!-- <button mat-mini-fab color=\"primary\" (click)=\"recover(user)\" style=\"margin-right:10px\" matTooltip=\"Reset Password\" matTooltipPosition=\"above\"> <mat-icon>vpn_key</mat-icon></button> -->\r\n\r\n\r\n\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row.disabled =='1'}\"></tr>\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #usersPaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n<!-- ------------------ -->\r\n\r\n<!-- <div class=\"container mt-5\" style=\" font-size: 14px;\">\r\n<spa-table [data]=\"usersRaw\" [config]=\"config\" (refreshClick)=\"UpdateData()\" (viewClick)=\"viewProfile($event)\" (createClick)=\"createAccount()\" (deleteClick)=\"deleteUser($event)\"></spa-table>\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}.make-gray{background-color:#d3d3d3}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i9.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { 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: "directive", type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i13.FilterComponent, selector: "spa-filter", inputs: ["flatButtons", "showText", "showButton", "data"], outputs: ["refreshClick"] }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
163
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UsersComponent, decorators: [{
|
|
164
112
|
type: Component,
|
|
165
|
-
args: [{ selector: "spa-users", template: "\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<spa-table [config]=\"
|
|
166
|
-
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.DataServiceLib }, { type: i5.MatDialog }, { type: i6.MessageService }]; }
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy91c2Vycy91c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBZ0JyRSxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFvQixXQUF3QixFQUFTLE1BQWMsRUFBVSxXQUF3QixFQUFVLFdBQTJCLEVBQVMsTUFBaUIsRUFBVSxjQUE4QjtRQUF4TCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF5QjVNLHVCQUFrQixHQUFlO1lBQy9CLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFHLElBQUksRUFBRSxRQUFRLEVBQUcsSUFBSSxFQUFFO2dCQUNuRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFO2dCQUN2STtvQkFDRSxJQUFJLEVBQUUsV0FBVyxFQUFF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QUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFFcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25HLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzlKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7MkdBdkJVLGNBQWM7K0ZBQWQsY0FBYyxpRENoQjNCLDBJQU1BOzJGRFVhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGFibGVDb25maWcsIEFwaVJlc3BvbnNlLCBGb3JtQ29uZmlnLCBCdXR0b24sIERldGFpbHNEaWFsb2dDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL0xpYkNsYXNzZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNwYS11c2Vyc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdXNlcnMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vdXNlcnMuY29tcG9uZW50LmNzc1wiXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXNlZCh0aGlzLmRhdGFTZXJ2aWNlLmNhcFVzZXJzLm5hbWUpO1xyXG4gICAgdGhpcy5sb2FkTWV0YSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgaW5wdXRDaGFuZ2VkKHgpIHtcclxuICAgIGNvbnNvbGUubG9nKHgpO1xyXG5cclxuICB9XHJcblxyXG4gIGxvYWRNZXRhKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICdyb2xlL21ldGEveCcgfSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coYXBpUmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgIHRoaXMudXNlckJhc2VGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdyb2xlSUQnKS5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YS5yb2xlcztcclxuICAgICAgdGhpcy51c2VyQmFzZUZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2F1dGhUeXBlJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGVzO1xyXG5cclxuICAgICAgdGhpcy5jcmVhdGVEaWFsb2cuZm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAncm9sZUlEJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEucm9sZXM7XHJcbiAgICAgIHRoaXMuY3JlYXRlRGlhbG9nLmZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2F1dGhUeXBlJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGVzLmZpbHRlcih4ID0+IHgudmFsdWUgPT0gJ2xvY2FsJyB8fCB4LnZhbHVlID09ICdBRCcpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICB1c2VyQmFzZUZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAndXNlck5hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnVXNlcm5hbWUnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbiA6IHRydWUsIHJlYWRvbmx5IDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdhdXRoVHlwZScsIHR5cGU6ICdzZWxlY3QnLCBhbGlhczogJ0F1dGhlbnRpY2F0aW9uIFR5cGUnLCByZWFkb25seTogdHJ1ZSwgc3BhbjogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIGRlZmF1bHRGaXJzdFZhbHVlOiB0cnVlIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnZmlyc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICByZWFkb25seUNvbmRpdGlvbjogeCA9PiB4LmF1dGhUeXBlICE9PSAnbG9jYWwnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2xhc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICByZWFkb25seUNvbmRpdGlvbjogeCA9PiB4LmF1dGhUeXBlICE9PSAnbG9jYWwnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJywgdHlwZTogJ3Bhc3N3b3JkJywgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgaGlkZGVuQ29uZGl0aW9uOiB4ID0+IHguYXV0aFR5cGUgIT09ICdsb2NhbCcsIHNwYW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnY29uZmlybVBhc3N3b3JkJywgdHlwZTogJ3Bhc3N3b3JkJywgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgaGlkZGVuQ29uZGl0aW9uOiB4ID0+IHguYXV0aFR5cGUgIT09ICdsb2NhbCcsIHNwYW46IHRydWVcclxuICAgICAgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiBmYWxzZSwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdyb2xlSUQnLCB0eXBlOiAnc2VsZWN0JywgYWxpYXM6ICdSb2xlJywgcmVxdWlyZWQ6IHRydWUsICBzcGFuOiB0cnVlLCBkZWZhdWx0Rmlyc3RWYWx1ZTogdHJ1ZSB9LFxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuXHJcbiAgY3JlYXRlRGlhbG9nOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzoge1xyXG4gICAgICB0aXRsZTogJ1VzZXInLFxyXG4gICAgICBmaWVsZHM6IFtcclxuXHJcblxyXG4gICAgICAgIHsgbmFtZTogJ3VzZXJOYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ1VzZXJuYW1lJywgcmVxdWlyZWQ6IHRydWUsIHNwYW46IHRydWUgfSxcclxuICAgICAgICB7IFxyXG4gICAgICAgICAgbmFtZTogJ2F1dGhUeXBlJywgdHlwZTogJ3NlbGVjdCcsIGFsaWFzOiAnQXV0aGVudGljYXRpb24gVHlwZScsIHNwYW46IHRydWUsIHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0Rmlyc3RWYWx1ZTogdHJ1ZSxcclxuICAgICAgICAgIG9uU2VsZWN0Q2hhbmdlOiAodmFsdWUsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnQUQnICYmIGRhdGEudXNlck5hbWU/LnRyaW0oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogYHVzZXIvYWQvJHtkYXRhLnVzZXJOYW1lfWAgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgZGF0YS5maXJzdE5hbWUgPSByZXNwb25zZS5kYXRhLmZpcnN0TmFtZSB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgZGF0YS5sYXN0TmFtZSA9IHJlc3BvbnNlLmRhdGEuc3VybmFtZSB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgZGF0YS5lbWFpbCA9IHJlc3BvbnNlLmRhdGEuZW1haWxBZGRyZXNzIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KCdBRCB1c2VyIGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UgfHwgJ0FEIHVzZXIgbm90IGZvdW5kJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2ZpcnN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIHJlYWRvbmx5Q29uZGl0aW9uOiB4ID0+IHguYXV0aFR5cGUgIT09ICdsb2NhbCcgfSxcclxuICAgICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIHJlYWRvbmx5Q29uZGl0aW9uOiB4ID0+IHguYXV0aFR5cGUgIT09ICdsb2NhbCcgfSxcclxuICAgICAgICB7IG5hbWU6ICdwYXNzd29yZCcsIHR5cGU6ICdwYXNzd29yZCcsIHJlcXVpcmVkOiB0cnVlLCBoaWRkZW5Db25kaXRpb246IHggPT4geC5hdXRoVHlwZSAhPT0gJ2xvY2FsJywgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2NvbmZpcm1QYXNzd29yZCcsIHR5cGU6ICdwYXNzd29yZCcsIHJlcXVpcmVkOiB0cnVlLCBoaWRkZW5Db25kaXRpb246IHggPT4geC5hdXRoVHlwZSAhPT0gJ2xvY2FsJywgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogZmFsc2UsIHNwYW46IHRydWUgfSxcclxuICAgICAgICB7IG5hbWU6ICdyb2xlSUQnLCB0eXBlOiAnc2VsZWN0JywgYWxpYXM6ICdSb2xlJywgcmVxdWlyZWQ6IHRydWUsIHNwYW46IHRydWUsIGRlZmF1bHRGaXJzdFZhbHVlOiB0cnVlIH0sXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICBtb2RlOiAnY3JlYXRlJyxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgYWN0aW9uOiB7IG1ldGhvZDogJ3Bvc3QnLCB1cmw6ICdVc2VyL3JlZ2lzdGVyJywgc3VjY2Vzc01lc3NhZ2U6IFwiVXNlciBDcmVhdGVkXCIgfX1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIGVkaXREaWFsb2cgOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzoge1xyXG4gICAgICAuLi50aGlzLnVzZXJCYXNlRm9ybUNvbmZpZyxcclxuICAgICAgdGl0bGUgOiAnVXNlcicsXHJcbiAgICAgIGZpZWxkcyA6IHRoaXMudXNlckJhc2VGb3JtQ29uZmlnLmZpZWxkcy5maWx0ZXIoeCA9PiB4Lm5hbWUgIT09ICdwYXNzd29yZCcgJiYgeC5uYW1lICE9PSAnY29uZmlybVBhc3N3b3JkJylcclxuICAgIH0sXHJcbiAgICBtb2RlOiAndmlldycsXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBhY3Rpb246IHsgbWV0aG9kOiAncG9zdCcsIHVybDogJ1VzZXIvZWRpdCcsIHN1Y2Nlc3NNZXNzYWdlOiBcIlVzZXIgVXBkYXRlZFwiIH0gfVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgcGFzc3dvcmREaWFsb2c6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnOiB7XHJcbiAgICAgIC4uLnRoaXMudXNlckJhc2VGb3JtQ29uZmlnLFxyXG4gICAgICB0aXRsZSA6ICdDaGFuZ2UgUGFzc3dvcmQnLFxyXG4gICAgICBmaXhlZFRpdGxlOiB0cnVlLFxyXG4gICAgICBhbGVydENvbmZpZzogeyBtZXNzYWdlczogW1xyXG4gICAgICAgIHsgdHlwZTogJ2luZm8nLCBjb250ZW50OiAnKlBsZWFzZSBjb25zaWRlciB0aGVzZSByZXF1aXJlbWVudHMgZm9yIHlvdXIgbmV3IHBhc3N3b3JkLicgfSxcclxuICAgICAgICB7IHR5cGU6ICdpbmZvJywgY29udGVudDogJ0F0IGxlYXN0IDggY2hhcmFjdGVycy4nIH0sXHJcbiAgICAgICAgeyB0eXBlOiAnaW5mbycsIGNvbnRlbnQ6ICdBdCBsZWFzdCAxIHVwcGVyY2FzZSBsZXR0ZXInIH0sXHJcbiAgICAgICAgeyB0eXBlOiAnaW5mbycsIGNvbnRlbnQ6ICdBdCBsZWFzdCAyIGxvd2VyY2FzZSBsZXR0ZXJzIChhLXopJyB9LFxyXG4gICAgICAgIHsgdHlwZTogJ2luZm8nLCBjb250ZW50OiAnQXQgbGVhc3QgMSBkaWdpdCAoMC05KScgfSxcclxuICAgICAgICB7IHR5cGU6ICdpbmZvJywgY29udGVudDogJyBBdCBsZWFzdCAxIHNwZWNpYWwgY2hhcmFjdGVyICh+YCEg4oCmKScgfSxcclxuICAgICAgXX0sXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgIHsgbmFtZTogJ25ld1Bhc3N3b3JkJywgdHlwZTogJ3Bhc3N3b3JkJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgICB7IG5hbWU6ICdjb25maXJtUGFzc3dvcmQnLCB0eXBlOiAncGFzc3dvcmQnLCAgcmVxdWlyZWQ6IHRydWUgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgbW9kZTogJ2VkaXQnLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdlZGl0JywgYWN0aW9uOiB7IG1ldGhvZDogJ3Bvc3QnLCB1cmw6ICdVc2VyL2NoYW5nZXBhc3N3b3JkLWFkbWluJywgc3VjY2Vzc01lc3NhZ2U6ICdQYXNzd29yZCBDaGFuZ2VkJyB9ICAgIH1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIHVzZXJzVGFibGVDb25maWcgOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5CdXR0b25zOiBbJ2Z1bGxOYW1lJywncm9sZU5hbWUnXSxcclxuICAgIGdyZXlPdXQgOiAodmFsdWUpID0+IHZhbHVlLmRpc2FibGVkID09IDEsXHJcbiAgICBjb2xsYXBzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ3VzZXJOYW1lJywgJ2Z1bGxOYW1lJywgJ3JvbGVOYW1lJywgJ2xvY2tlZCcsICdkYXRlQ3JlYXRlZCddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRoaXMuZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm11bHRpdGVuYW50LFxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd1c2VyTmFtZScsIHR5cGU6ICd0ZXh0J30sXHJcbiAgICAgIHsgbmFtZTogJ2Z1bGxOYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3JvbGVOYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2xvY2tlZCcsIHR5cGU6ICdjaGVja2JveCcgfSxcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlZERhdGUnLCB0eXBlOiAnZGF0ZScgfSxcclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdOZXcgVXNlcicsIGRpYWxvZzogdHJ1ZSwgZGV0YWlsc0NvbmZpZyA6IHRoaXMuY3JlYXRlRGlhbG9nICB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlLCBpY29uOiB7IG5hbWU6ICdhY2NvdW50X2NpcmNsZScgfSwgZGV0YWlsc0NvbmZpZzogdGhpcy5lZGl0RGlhbG9nIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnY2hhbmdlUGFzc3dvcmQnLCBkaXNwbGF5OiAnQ2hhbmdlIFBhc3N3b3JkJywgdGlwIDogJ0NoYW5nZSBQYXNzd29yZCcsIGljb246IHsgbmFtZTogJ2tleScgfSwgZGlhbG9nOiB0cnVlLCBkZXRhaWxzQ29uZmlnOiB0aGlzLnBhc3N3b3JkRGlhbG9nLFxyXG4gICAgICAgIHZpc2libGU6IHggPT4geC5hdXRoVHlwZSA9PT0gJ2xvY2FsJ1xyXG4gICAgICB9LFxyXG4gICAgICB7IG5hbWU6ICdsb2NrJywgYWN0aW9uOiB7IG1ldGhvZDogJ3Bvc3QnLCB1cmw6ICdVc2VyL2xvY2snLCBzdWNjZXNzTWVzc2FnZTogXCJVc2VyIGxvY2tlZFwiIH0sIGNvbG9yOiAncmVkJywgdGlwOiAnbG9jaycsIGljb246IHsgbmFtZTogJ2xvY2snIH0sXHJcbiAgICAgICAgdmlzaWJsZTogKHZhbHVlKSA9PiB2YWx1ZS5sb2NrZWQgPT0gMFxyXG4gICAgICB9LFxyXG4gICAgICB7IG5hbWU6ICd1bmxvY2snLCBhY3Rpb246IHsgbWV0aG9kOiAncG9zdCcsIHVybDogJ1VzZXIvdW5sb2NrJywgc3VjY2Vzc01lc3NhZ2U6IFwiVXNlciBVbmxvY2tlZFwiIH0sIGNvbG9yOiAnZ3JlZW4nLCB0aXA6ICd1bmxvY2snLCBpY29uOiB7IG5hbWU6ICdsb2NrX29wZW4nIH0sXHJcbiAgICAgICAgdmlzaWJsZTogKHZhbHVlKSA9PiB2YWx1ZS5sb2NrZWQgPT0gMVxyXG4gICAgICB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBhY3Rpb246IHsgbWV0aG9kOiAncG9zdCcsIHVybDogJ1VzZXIvZGVsZXRlJywgc3VjY2Vzc01lc3NhZ2U6IFwiVXNlciBEZWxldGVkXCIgfSwgY29sb3I6ICdyZWQnIH0sXHJcbiAgICBdLFxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdVc2VyL2FsbC94JyB9LFxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIlxyXG48aDQ+VXNlcnM8L2g0PlxyXG48aHIgLz5cclxuXHJcbjxzcGEtdGFibGUgW2NvbmZpZ109XCJ1c2Vyc1RhYmxlQ29uZmlnXCIgKGlucHV0Q2hhbmdlKT1cImlucHV0Q2hhbmdlZCgkZXZlbnQpXCI+PC9zcGEtdGFibGU+XHJcblxyXG4iXX0=
|
|
113
|
+
args: [{ selector: "spa-users", template: "\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\" style=\"font-size: 14px;\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col-2\">\r\n <button id=\"btnCreateAccount\" mat-raised-button color=\"primary\" (click)=\"createAccount()\">Create User</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"users\" (refreshClick)=\"UpdateData()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n <p *ngIf=\"!users\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"users\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"users\">\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> UserName </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.userName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"locked\">\r\n <th mat-header-cell *matHeaderCellDef> Locked </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.locked}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.firstName}} {{user.lastName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"roleName\">\r\n <th mat-header-cell *matHeaderCellDef> Role </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.role.roleName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"disabled\">\r\n <th mat-header-cell *matHeaderCellDef> Disabled </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.disabled}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateCreated\">\r\n <th mat-header-cell *matHeaderCellDef> Created </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.createdDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateUpdated\">\r\n <th mat-header-cell *matHeaderCellDef> Updated </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.updatedDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let user\" style=\"width: 250px;\">\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"viewProfile(user)\" style=\"margin-right:30px\" matTooltip=\"View Profile\" matTooltipPosition=\"above\"> <mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"user.locked=='0'\" mat-mini-fab color=\"warn\" (click)=\"lock(user)\" style=\"margin-right:10px\" matTooltip=\"Lock\" matTooltipPosition=\"above\"> <mat-icon>lock</mat-icon></button>\r\n <button *ngIf=\"user.locked=='1'\" mat-mini-fab (click)=\"unlock(user)\" style=\"margin-right:10px; background-color: green;\" matTooltip=\"Unlock\" matTooltipPosition=\"above\"> <mat-icon >lock_open</mat-icon></button>\r\n\r\n <!-- <button *ngIf=\"user.disabled=='0'\" mat-mini-fab color=\"warn\" (click)=\"disable(user)\" style=\"margin-right:10px\" matTooltip=\"Disable\" matTooltipPosition=\"above\"> <mat-icon>block</mat-icon></button>\r\n <button *ngIf=\"user.disabled=='1'\" mat-mini-fab (click)=\"enable(user)\" style=\"margin-right:10px; background-color: green\" matTooltip=\"Enable\" matTooltipPosition=\"above\"> <mat-icon>done</mat-icon></button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteUser(user)\" style=\"margin-right:10px\" matTooltip=\"Delete\" matTooltipPosition=\"above\"> <mat-icon>delete</mat-icon></button>\r\n <!-- <button mat-mini-fab color=\"primary\" (click)=\"recover(user)\" style=\"margin-right:10px\" matTooltip=\"Reset Password\" matTooltipPosition=\"above\"> <mat-icon>vpn_key</mat-icon></button> -->\r\n\r\n\r\n\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row.disabled =='1'}\"></tr>\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #usersPaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n<!-- ------------------ -->\r\n\r\n<!-- <div class=\"container mt-5\" style=\" font-size: 14px;\">\r\n<spa-table [data]=\"usersRaw\" [config]=\"config\" (refreshClick)=\"UpdateData()\" (viewClick)=\"viewProfile($event)\" (createClick)=\"createAccount()\" (deleteClick)=\"deleteUser($event)\"></spa-table>\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}.make-gray{background-color:#d3d3d3}\n"] }]
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.DataServiceLib }, { type: i5.MatDialog }, { type: i6.MessageService }]; }, propDecorators: { usersPaginator: [{
|
|
115
|
+
type: ViewChild,
|
|
116
|
+
args: ["usersPaginator"]
|
|
117
|
+
}] } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy91c2Vycy91c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFrQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWdCN0QsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsV0FBd0IsRUFBUyxNQUFjLEVBQVUsV0FBd0IsRUFBVSxXQUEyQixFQUFTLE1BQWlCLEVBQVUsY0FBOEI7UUFBeEwsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTzVNLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRzlCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBSWpCLHFCQUFnQixHQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQWQyRyxDQUFDO0lBRWpOLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQVdNLFVB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MkZEaEZhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzttT0FhUSxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGFibGVDb25maWcsIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9MaWJDbGFzc2VzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzcGEtdXNlcnNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3VzZXJzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3VzZXJzLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXNlZCh0aGlzLmRhdGFTZXJ2aWNlLmNhcFVzZXJzLm5hbWUpO1xyXG4gICAgdGhpcy5VcGRhdGVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwidXNlcnNQYWdpbmF0b3JcIikgdXNlcnNQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcbiAgX2ZpbHRlclRleHQgPSBcIlwiO1xyXG5cclxuICB1c2VycztcclxuICB1c2Vyc1JhdztcclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcInVzZXJOYW1lXCIsIFwiZnVsbE5hbWVcIiwgXCJyb2xlTmFtZVwiLCBcImxvY2tlZFwiLCBcImRhdGVDcmVhdGVkXCIsIFwiQWN0aW9uXCJdO1xyXG5cclxuICBwdWJsaWMgVXBkYXRlRGF0YSgpIHtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuR2V0VXNlcigpLnN1YnNjcmliZShcclxuICAgICAgKGFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudXNlcnNSYXcgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRoaXMudXNlcnMgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGFwaVJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgIHRoaXMudXNlcnMucGFnaW5hdG9yID0gdGhpcy51c2Vyc1BhZ2luYXRvcjtcclxuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKHRoaXMuX2ZpbHRlclRleHQpO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHRoaXMuaHR0cFNlcnZpY2UuRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXNlcnMuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBY2NvdW50KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiaG9tZS9hZG1pbi9jcmVhdGUtYWNjb3VudFwiXSk7XHJcbiAgfVxyXG5cclxuICB2aWV3UHJvZmlsZSh1c2VyOiBVc2VyKSB7XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS50bXBQcm9maWxldXNlck5hbWUgPSB1c2VyLnVzZXJOYW1lO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiaG9tZS91c2VyL3Byb2ZpbGVcIl0pO1xyXG5cclxuICB9XHJcblxyXG4gIGxvY2sodSkge1xyXG4gICAgbGV0IGxvZ2luID0geyB1c2VyTmFtZTogdS51c2VyTmFtZSwgcGFzc3dvcmQ6IFwiQWJjZGVmQDEyM1wiIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkxvY2tVc2VyKGxvZ2luKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJVc2VyIExvY2tlZFwiKTtcclxuICAgICAgICB0aGlzLlVwZGF0ZURhdGEoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVubG9jayh1KSB7XHJcbiAgICBsZXQgbG9naW4gPSB7IHVzZXJOYW1lOiB1LnVzZXJOYW1lLCBwYXNzd29yZDogXCJBYmNkZWZAMTIzXCIgfVxyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuVW5sb2NrVXNlcihsb2dpbikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiVXNlciBVbmxvY2tlZFwiKTtcclxuICAgICAgICB0aGlzLlVwZGF0ZURhdGEoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlY292ZXIodTogVXNlcikge1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5TZWxmUmVzZXQodSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLm1lc3NhZ2UgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiVGhlIHBhc3N3b3JkIGhhcyBiZWVuIHNlbnQgb24gZW1haWxcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVVc2VyKHVzZXI6IFVzZXIpIHtcclxuXHJcblxyXG5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShgRGVsZXRlICR7dXNlci51c2VyTmFtZX0gP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09IFwieWVzXCIpIHtcclxuXHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuRGVsZXRlVXNlcih1c2VyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXBpUmVzcG9uc2UubWVzc2FnZSA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJVc2VyIERlbGV0ZWRcIik7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuVXBkYXRlRGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbm5lY3Rpb24gZmFpbGVkIFwiKTtcclxuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIC8vIGNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgLy8gICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gIC8vICAgbmV3VGV4dDogXCJDcmVhdGUgQWNjb3VudFwiLFxyXG4gIC8vICAgbWluQ29sdW1uczogWydmaXJzdE5hbWUnLCAnbGFzdE5hbWUnLCAncm9sZUlEJ10sXHJcblxyXG4gIC8vICAgY29sdW1uczogW1xyXG4gIC8vICAgICB7IG5hbWU6ICd1c2VyTmFtZScsIHR5cGU6ICd0ZXh0JywgaWNvbjogeyBuYW1lOiAncGVyc29uJywgY29sb3I6ICdncmVlbicsIHRpcDogJ25hbWUgZGVzYycgfSB9LFxyXG4gIC8vICAgICB7IG5hbWU6ICdmaXJzdE5hbWUnLCB0eXBlOiAndGV4dCcsfSxcclxuICAvLyAgICAgeyBuYW1lOiAnbGFzdE5hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAvLyAgICAgeyBuYW1lOiAncm9sZUlEJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgLy8gICAgIHsgbmFtZTogJ2xvY2tlZCcsIHR5cGU6ICdjaGVja2JveCcgfSxcclxuICAvLyAgICAgeyBuYW1lOiAnY3JlYXRlZERhdGUnLCB0eXBlOiAnZGF0ZScgfSxcclxuICAvLyAgIF0sXHJcblxyXG4gIC8vICAgYnV0dG9uczogW1xyXG4gIC8vICAgICB7IG5hbWU6J2NyZWF0ZScsIGRpc3BsYXk6J0NyZWF0ZSBBY2NvdW50JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgLy8gICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUsIGljb246IHsgbmFtZTogJ2FjY291bnRfY2lyY2xlJ30gfSxcclxuICAvLyAgICAgeyBuYW1lOiAnY3VzdG9tMScsIGFjdGlvbjogeyBtZXRob2Q6ICdwb3N0JywgdXJsOiAnVXNlci9sb2NrJywgc3VjY2Vzc01lc3NhZ2U6IFwiVXNlciBsb2NrZWRcIiB9LCBjb2xvcjoncmVkJywgdGlwOidsb2NrJywgaWNvbjogeyBuYW1lOiAnbG9jayd9LCB2aXNpYmxlOiAodmFsdWUpID0+IHZhbHVlLmxvY2tlZCA9PSAwfSxcclxuICAvLyAgICAgeyBuYW1lOiAnY3VzdG9tMicsIGFjdGlvbjogeyBtZXRob2Q6ICdwb3N0JywgdXJsOiAnVXNlci91bmxvY2snLCBzdWNjZXNzTWVzc2FnZTogXCJVc2VyIFVubG9ja2VkXCIgfSwgY29sb3I6ICdncmVlbicsIHRpcDogJ3VubG9jaycsIGljb246IHsgbmFtZTogJ2xvY2tfb3BlbicgfSwgdmlzaWJsZTogKHZhbHVlKSA9PiB2YWx1ZS5sb2NrZWQgPT0gMSB9LFxyXG4gIC8vICAgICB7IG5hbWU6ICdkZWxldGUnIH0sXHJcbiAgLy8gICBdLFxyXG5cclxuICAvLyAgIGxvYWRBY3Rpb246IHsgdXJsOiAnVXNlci9hbGwveCcgfVxyXG5cclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbiIsIlxyXG48aDQ+VXNlcnM8L2g0PlxyXG48aHIgLz5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiYnRuQ3JlYXRlQWNjb3VudFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVBY2NvdW50KClcIj5DcmVhdGUgVXNlcjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxzcGEtZmlsdGVyIFtkYXRhXT1cInVzZXJzXCIgKHJlZnJlc2hDbGljayk9XCJVcGRhdGVEYXRhKClcIj48L3NwYS1maWx0ZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxwICpuZ0lmPVwiIXVzZXJzXCI+PGVtPkxvYWRpbmcuLi48L2VtPjwvcD5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgKm5nSWY9XCJ1c2Vyc1wiPlxyXG5cclxuICAgIDx0YWJsZSBpZD1cInRibFRhYmxlXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInVzZXJzXCI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJOYW1lXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gVXNlck5hbWUgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiPiB7e3VzZXIudXNlck5hbWV9fSA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibG9ja2VkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTG9ja2VkIDwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHVzZXJcIj4ge3t1c2VyLmxvY2tlZH19IDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmdWxsTmFtZVwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IE5hbWUgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiPiB7e3VzZXIuZmlyc3ROYW1lfX0ge3t1c2VyLmxhc3ROYW1lfX0gPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInJvbGVOYW1lXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUm9sZSA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCI+IHt7dXNlci5yb2xlLnJvbGVOYW1lfX0gPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGlzYWJsZWQgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiPiB7e3VzZXIuZGlzYWJsZWR9fSA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGF0ZUNyZWF0ZWRcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBDcmVhdGVkIDwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHVzZXJcIj4ge3t1c2VyLmNyZWF0ZWREYXRlIHwgZGF0ZTogJ2RkL01NL3l5eXknfX0gPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRhdGVVcGRhdGVkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gVXBkYXRlZCA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCI+IHt7dXNlci51cGRhdGVkRGF0ZSB8IGRhdGU6ICdkZC9NTS95eXl5J319IDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiQWN0aW9uXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQWN0aW9uIDwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHVzZXJcIiBzdHlsZT1cIndpZHRoOiAyNTBweDtcIj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidmlld1Byb2ZpbGUodXNlcilcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDozMHB4XCIgbWF0VG9vbHRpcD1cIlZpZXcgUHJvZmlsZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+IDxtYXQtaWNvbj5hY2NvdW50X2NpcmNsZTwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInVzZXIubG9ja2VkPT0nMCdcIiBtYXQtbWluaS1mYWIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImxvY2sodXNlcilcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCIgbWF0VG9vbHRpcD1cIkxvY2tcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPiA8bWF0LWljb24+bG9jazwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidXNlci5sb2NrZWQ9PScxJ1wiIG1hdC1taW5pLWZhYiAgKGNsaWNrKT1cInVubG9jayh1c2VyKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1wiIG1hdFRvb2x0aXA9XCJVbmxvY2tcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPiA8bWF0LWljb24gPmxvY2tfb3BlbjwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwidXNlci5kaXNhYmxlZD09JzAnXCIgbWF0LW1pbmktZmFiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJkaXNhYmxlKHVzZXIpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MTBweFwiIG1hdFRvb2x0aXA9XCJEaXNhYmxlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj4gPG1hdC1pY29uPmJsb2NrPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLmRpc2FibGVkPT0nMSdcIiBtYXQtbWluaS1mYWIgKGNsaWNrKT1cImVuYWJsZSh1c2VyKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuXCIgbWF0VG9vbHRpcD1cIkVuYWJsZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+IDxtYXQtaWNvbj5kb25lPC9tYXQtaWNvbj48L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImRlbGV0ZVVzZXIodXNlcilcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCIgbWF0VG9vbHRpcD1cIkRlbGV0ZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+IDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicmVjb3Zlcih1c2VyKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHhcIiBtYXRUb29sdGlwPVwiUmVzZXQgUGFzc3dvcmRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPiA8bWF0LWljb24+dnBuX2tleTwvbWF0LWljb24+PC9idXR0b24+IC0tPlxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiIFtuZ0NsYXNzXT1cInsnbWFrZS1ncmF5Jzogcm93LmRpc2FibGVkID09JzEnfVwiPjwvdHI+XHJcblxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtcGFnaW5hdG9yICN1c2Vyc1BhZ2luYXRvciBbcGFnZVNpemVPcHRpb25zXT1cIlsxMCwgMjAsIDUwXVwiIHNob3dGaXJzdExhc3RCdXR0b25zPjwvbWF0LXBhZ2luYXRvcj5cclxuPC9kaXY+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjwhLS0gPGRpdiBjbGFzcz1cImNvbnRhaW5lciBtdC01XCIgc3R5bGU9XCIgZm9udC1zaXplOiAxNHB4O1wiPlxyXG48c3BhLXRhYmxlICBbZGF0YV09XCJ1c2Vyc1Jhd1wiIFtjb25maWddPVwiY29uZmlnXCIgKHJlZnJlc2hDbGljayk9XCJVcGRhdGVEYXRhKClcIiAodmlld0NsaWNrKT1cInZpZXdQcm9maWxlKCRldmVudClcIiAoY3JlYXRlQ2xpY2spPVwiY3JlYXRlQWNjb3VudCgpXCIgKGRlbGV0ZUNsaWNrKT1cImRlbGV0ZVVzZXIoJGV2ZW50KVwiPjwvc3BhLXRhYmxlPlxyXG48L2Rpdj4gLS0+XHJcblxyXG4iXX0=
|
|
@@ -26,10 +26,10 @@ export class WelcomeComponent {
|
|
|
26
26
|
{ name: 'owner', type: 'text', },
|
|
27
27
|
],
|
|
28
28
|
buttons: [
|
|
29
|
-
{ name: 'accept', icon: { 'name': 'done', }, color: 'green', action: { url: 'members
|
|
30
|
-
{ name: 'decline', icon: { 'name': 'close', }, color: 'red', action: { url: 'members
|
|
29
|
+
{ name: 'accept', icon: { 'name': 'done', }, color: 'green', action: { url: 'tenant/members?action=accept', method: 'post', }, confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },
|
|
30
|
+
{ name: 'decline', icon: { 'name': 'close', }, color: 'red', action: { url: 'tenant/members?action=remove', method: 'post', }, confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },
|
|
31
31
|
],
|
|
32
|
-
loadAction: { url: '
|
|
32
|
+
loadAction: { url: 'tenant/invitations/x' },
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
ngOnInit() {
|
|
@@ -37,14 +37,14 @@ export class WelcomeComponent {
|
|
|
37
37
|
this.authService.loggedUserFullName.subscribe(x => this.username = x);
|
|
38
38
|
}
|
|
39
39
|
loadMeta() {
|
|
40
|
-
this.dataService.CallApi({ url: '
|
|
40
|
+
this.dataService.CallApi({ url: 'tenant/welcome_meta/x' }).subscribe((api) => {
|
|
41
41
|
this.invitations = api.data.invitations;
|
|
42
42
|
this.own = api.data.own;
|
|
43
43
|
this.myTenant = api.data.tenant;
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
renameTenant() {
|
|
47
|
-
this.dataService.CallApi({ url: 'tenants
|
|
47
|
+
this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.myTenant).subscribe((apiResponse) => {
|
|
48
48
|
if (apiResponse.success) {
|
|
49
49
|
this.authService.updateTenantName(this.myTenant.name);
|
|
50
50
|
}
|
|
@@ -69,7 +69,7 @@ export class WelcomeComponent {
|
|
|
69
69
|
this.setWelcome();
|
|
70
70
|
}
|
|
71
71
|
setWelcome() {
|
|
72
|
-
this.dataService.CallApi({ url: '
|
|
72
|
+
this.dataService.CallApi({ url: 'tenant/set_welcome/x' }).subscribe((api) => {
|
|
73
73
|
this.home();
|
|
74
74
|
});
|
|
75
75
|
}
|
|
@@ -78,9 +78,9 @@ export class WelcomeComponent {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
WelcomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WelcomeComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
WelcomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WelcomeComponent, selector: "spa-welcome", ngImport: i0, template: "<label class=\"title\">Welcome, {{username}}</label>\
|
|
81
|
+
WelcomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WelcomeComponent, selector: "spa-welcome", ngImport: i0, template: "<label class=\"title\">Welcome, {{username}}</label>\n\n\n\n<!-- terms -->\n<div class=\"mt-3\" *ngIf=\"step=='terms'\">\n\n <label class=\"subtitle text-muted mb-2\" >We care about our users and are dedicated to protecting your data and privacy -\n thats why we want to be clear about what data we collect and how we use it to improve your experience.</label>\n\n <br>\n <spa-check display=\"I agree to the Terms and Privacy Policy\" [(value)]=\"agree\"></spa-check>\n</div>\n\n<!-- owner -->\n<div class=\"mt-3\" *ngIf=\"step=='name' && own\">\n\n <label class=\"subtitle text-muted\" style=\" margin-bottom: 20px;\">The follow steps will guide you to customise your application.</label>\n\n <div style=\"max-width: 400px;\">\n <spa-text display=\"Organisation Name\" [(value)]=\"myTenant.name\" ></spa-text>\n </div>\n\n <label class=\"text-muted\" style=\" font-size: 12px;\">You can change the Organisation's name to your team or company name.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">The name can be changed later.</label>\n\n</div>\n\n<!-- guest -->\n<div *ngIf=\"step=='hi' && !own\">\n <label class=\"subtitle text-muted\">You are now signed in to {{myTenant.name}}.</label>\n</div>\n\n\n<!-- invitations -->\n<div class=\"mt-3\" *ngIf=\"step=='invitations' && own\">\n\n <label class=\"subtitle text-muted\">You have been requested to join the following organisations. If you accept, you have the option to switch to that org now or stay in you org.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">You will be able to switch later.</label>\n <spa-invitations-table></spa-invitations-table>\n\n</div>\n\n\n<!-- Actions -->\n<div class=\"mt-3\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!agree\" (click)=\"next()\">Next <mat-icon>arrow_right_alt</mat-icon></button>\n</div>\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.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: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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"] }, { kind: "component", type: i7.CheckComponent, selector: "spa-check", inputs: ["readonly", "display", "value", "infoMessage"], outputs: ["valueChange", "click", "check", "uncheck", "infoClick"] }, { kind: "component", type: i8.InvitationsTableComponent, selector: "spa-invitations-table" }] });
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WelcomeComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
|
-
args: [{ selector: 'spa-welcome', template: "<label class=\"title\">Welcome, {{username}}</label>\
|
|
84
|
+
args: [{ selector: 'spa-welcome', template: "<label class=\"title\">Welcome, {{username}}</label>\n\n\n\n<!-- terms -->\n<div class=\"mt-3\" *ngIf=\"step=='terms'\">\n\n <label class=\"subtitle text-muted mb-2\" >We care about our users and are dedicated to protecting your data and privacy -\n thats why we want to be clear about what data we collect and how we use it to improve your experience.</label>\n\n <br>\n <spa-check display=\"I agree to the Terms and Privacy Policy\" [(value)]=\"agree\"></spa-check>\n</div>\n\n<!-- owner -->\n<div class=\"mt-3\" *ngIf=\"step=='name' && own\">\n\n <label class=\"subtitle text-muted\" style=\" margin-bottom: 20px;\">The follow steps will guide you to customise your application.</label>\n\n <div style=\"max-width: 400px;\">\n <spa-text display=\"Organisation Name\" [(value)]=\"myTenant.name\" ></spa-text>\n </div>\n\n <label class=\"text-muted\" style=\" font-size: 12px;\">You can change the Organisation's name to your team or company name.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">The name can be changed later.</label>\n\n</div>\n\n<!-- guest -->\n<div *ngIf=\"step=='hi' && !own\">\n <label class=\"subtitle text-muted\">You are now signed in to {{myTenant.name}}.</label>\n</div>\n\n\n<!-- invitations -->\n<div class=\"mt-3\" *ngIf=\"step=='invitations' && own\">\n\n <label class=\"subtitle text-muted\">You have been requested to join the following organisations. If you accept, you have the option to switch to that org now or stay in you org.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">You will be able to switch later.</label>\n <spa-invitations-table></spa-invitations-table>\n\n</div>\n\n\n<!-- Actions -->\n<div class=\"mt-3\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!agree\" (click)=\"next()\">Next <mat-icon>arrow_right_alt</mat-icon></button>\n</div>\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}\n"] }]
|
|
85
85
|
}], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.AuthService }]; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VsY29tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvd2VsY29tZS93ZWxjb21lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy93ZWxjb21lL3dlbGNvbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVVsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW1CLFdBQTRCLEVBQVMsV0FBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFVaEYsU0FBSSxHQUFHLE9BQU8sQ0FBQTtRQUNkLFVBQUssR0FBRyxLQUFLLENBQUE7UUFDYixRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUEwRHBCLG1CQUFjLEdBQWdCO1lBRTVCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQzNDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUMxQixVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBRWpDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRzthQUNqQztZQUVELE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFB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R0FBRyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7NkdBdEVVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1EQ1Y3QixxOURBZ0RBOzJGRHRDYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtd2VsY29tZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dlbGNvbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dlbGNvbWUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXZWxjb21lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlIDogRGF0YVNlcnZpY2VMaWIsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE1ldGEoKTtcclxuXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2dlZFVzZXJGdWxsTmFtZS5zdWJzY3JpYmUoeCA9PiB0aGlzLnVzZXJuYW1lID0geClcclxuICB9XHJcblxyXG4gIHVzZXJuYW1lO1xyXG5cclxuICBzdGVwID0gXCJ0ZXJtc1wiXHJcbiAgYWdyZWUgPSBmYWxzZVxyXG4gIG93biA9IHRydWU7XHJcbiAgaW52aXRhdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgbXlUZW5hbnRcclxuXHJcbiAgbG9hZE1ldGEoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDondGVuYW50cy93ZWxjb21lX21ldGEveCd9KS5zdWJzY3JpYmUoKGFwaSkgPT4ge1xyXG4gICAgICB0aGlzLmludml0YXRpb25zID0gYXBpLmRhdGEuaW52aXRhdGlvbnM7XHJcbiAgICAgIHRoaXMub3duID0gYXBpLmRhdGEub3duO1xyXG4gICAgICB0aGlzLm15VGVuYW50ID0gYXBpLmRhdGEudGVuYW50O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbmFtZVRlbmFudCgpIHtcclxuXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL2R0bz9hY3Rpb249cmVuYW1lJywgbWV0aG9kOiAncG9zdCcgfSwgdGhpcy5teVRlbmFudCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51cGRhdGVUZW5hbnROYW1lKHRoaXMubXlUZW5hbnQubmFtZSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZXh0KCl7XHJcblxyXG4gICAgaWYgKHRoaXMuc3RlcCA9PSAndGVybXMnICYmIHRoaXMub3duKXtcclxuICAgICAgdGhpcy5zdGVwID0gXCJuYW1lXCJcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zdGVwID09IFwidGVybXNcIiAmJiAhdGhpcy5vd24pIHtcclxuICAgICAgdGhpcy5zdGVwID0gXCJoaVwiXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc3RlcCA9PSBcIm5hbWVcIiAmJiB0aGlzLm93bil7XHJcblxyXG4gICAgICB0aGlzLnJlbmFtZVRlbmFudCgpO1xyXG4gICAgICBpZiAodGhpcy5pbnZpdGF0aW9ucyA9PSB0cnVlKXtcclxuICAgICAgICB0aGlzLnN0ZXAgPSBcImludml0YXRpb25zXCJcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnNldFdlbGNvbWUoKTtcclxuICB9XHJcblxyXG4gIHNldFdlbGNvbWUoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL3NldF93ZWxjb21lL3gnIH0pLnN1YnNjcmliZSgoYXBpKSA9PiB7XHJcbiAgICAgIHRoaXMuaG9tZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhvbWUoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuTmF2aWdhdGUoJ2hvbWUnKTtcclxuICB9XHJcblxyXG5cclxuICBpbnZUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcblxyXG4gICAgZ3JleU91dDogKHZhbHVlKSA9PiB2YWx1ZS5hY2NlcHRlZCA9PSBmYWxzZSxcclxuICAgIGVsZXZhdGlvbjogJ2xvdycsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ3RlbmFudE5hbWUnXSxcclxuICAgIG1pbkJ1dHRvbnM6IFsnYWNjZXB0JywgJ2RlY2xpbmUnXSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ3RlbmFudE5hbWUnLCBhbGlhczogJ09yZ2FuaXNhdGlvbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdvd25lcicsIHR5cGU6ICd0ZXh0JywgfSxcclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdhY2NlcHQnLCBpY29uOiB7ICduYW1lJzogJ2RvbmUnLCB9LCBjb2xvcjogJ2dyZWVuJywgYWN0aW9uOiB7IHVybDogJ21lbWJlcnMvZHRvP2FjdGlvbj1hY2NlcHQnLCBtZXRob2Q6ICdwb3N0JywgfSwgY29uZmlybTogeyBtZXNzYWdlOiAnQWNjZXB0ID8nIH0sIGRpc2FibGVkOiAoeCkgPT4geC5hY2NlcHRlZCB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWNsaW5lJywgaWNvbjogeyAnbmFtZSc6ICdjbG9zZScsIH0sIGNvbG9yOiAncmVkJywgYWN0aW9uOiB7IHVybDogJ21lbWJlcnMvZHRvP2FjdGlvbj1yZW1vdmUnLCBtZXRob2Q6ICdwb3N0JywgfSwgY29uZmlybTogeyBtZXNzYWdlOiAnRGVjbGluZSA/JyB9LCBkaXNhYmxlZDogKHgpID0+IHguYWNjZXB0ZWQgfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL2ludml0YXRpb25zL3gnIH0sXHJcblxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxhYmVsIGNsYXNzPVwidGl0bGVcIj5XZWxjb21lLCAge3t1c2VybmFtZX19PC9sYWJlbD5cclxuXHJcblxyXG5cclxuPCEtLSB0ZXJtcyAtLT5cclxuPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cInN0ZXA9PSd0ZXJtcydcIj5cclxuXHJcbiAgPGxhYmVsIGNsYXNzPVwic3VidGl0bGUgdGV4dC1tdXRlZCBtYi0yXCIgPldlIGNhcmUgYWJvdXQgb3VyIHVzZXJzIGFuZCBhcmUgZGVkaWNhdGVkIHRvIHByb3RlY3RpbmcgeW91ciBkYXRhIGFuZCBwcml2YWN5IC1cclxuICAgIHRoYXRzIHdoeSB3ZSB3YW50IHRvIGJlIGNsZWFyIGFib3V0IHdoYXQgZGF0YSB3ZSBjb2xsZWN0IGFuZCBob3cgd2UgdXNlIGl0IHRvIGltcHJvdmUgeW91ciBleHBlcmllbmNlLjwvbGFiZWw+XHJcblxyXG4gIDxicj5cclxuICA8c3BhLWNoZWNrIGRpc3BsYXk9XCJJIGFncmVlIHRvIHRoZSBUZXJtcyBhbmQgUHJpdmFjeSBQb2xpY3lcIiBbKHZhbHVlKV09XCJhZ3JlZVwiPjwvc3BhLWNoZWNrPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gb3duZXIgLS0+XHJcbjxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJzdGVwPT0nbmFtZScgJiYgb3duXCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIiBzdHlsZT1cIiBtYXJnaW4tYm90dG9tOiAyMHB4O1wiPlRoZSBmb2xsb3cgc3RlcHMgd2lsbCBndWlkZSB5b3UgdG8gY3VzdG9taXNlIHlvdXIgYXBwbGljYXRpb24uPC9sYWJlbD5cclxuXHJcbiAgPGRpdiBzdHlsZT1cIm1heC13aWR0aDogNDAwcHg7XCI+XHJcbiAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiT3JnYW5pc2F0aW9uIE5hbWVcIiBbKHZhbHVlKV09XCJteVRlbmFudC5uYW1lXCIgPjwvc3BhLXRleHQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cInRleHQtbXV0ZWRcIiBzdHlsZT1cIiBmb250LXNpemU6IDEycHg7XCI+WW91IGNhbiBjaGFuZ2UgdGhlIE9yZ2FuaXNhdGlvbidzIG5hbWUgdG8geW91ciB0ZWFtIG9yIGNvbXBhbnkgbmFtZS48L2xhYmVsPjxicj5cclxuICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxMnB4O21hcmdpbi10b3A6IDEwcHg7XCI+VGhlIG5hbWUgY2FuIGJlIGNoYW5nZWQgbGF0ZXIuPC9sYWJlbD5cclxuXHJcbjwvZGl2PlxyXG5cclxuPCEtLSBndWVzdCAtLT5cclxuPGRpdiAqbmdJZj1cInN0ZXA9PSdoaScgJiYgIW93blwiPlxyXG4gIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIj5Zb3UgYXJlIG5vdyBzaWduZWQgaW4gdG8ge3tteVRlbmFudC5uYW1lfX0uPC9sYWJlbD5cclxuPC9kaXY+XHJcblxyXG5cclxuPCEtLSBpbnZpdGF0aW9ucyAtLT5cclxuPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cInN0ZXA9PSdpbnZpdGF0aW9ucycgJiYgb3duXCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIj5Zb3UgaGF2ZSBiZWVuIHJlcXVlc3RlZCB0byBqb2luIHRoZSBmb2xsb3dpbmcgb3JnYW5pc2F0aW9ucy4gSWYgeW91IGFjY2VwdCwgeW91IGhhdmUgdGhlIG9wdGlvbiB0byBzd2l0Y2ggdG8gdGhhdCBvcmcgbm93IG9yIHN0YXkgaW4geW91IG9yZy48L2xhYmVsPjxicj5cclxuICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxMnB4O21hcmdpbi10b3A6IDEwcHg7XCI+WW91IHdpbGwgYmUgYWJsZSB0byBzd2l0Y2ggbGF0ZXIuPC9sYWJlbD5cclxuICA8c3BhLWludml0YXRpb25zLXRhYmxlPjwvc3BhLWludml0YXRpb25zLXRhYmxlPlxyXG5cclxuPC9kaXY+XHJcblxyXG5cclxuPCEtLSBBY3Rpb25zIC0tPlxyXG48ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gIDxidXR0b24gIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWFncmVlXCIgKGNsaWNrKT1cIm5leHQoKVwiPk5leHQgPG1hdC1pY29uPmFycm93X3JpZ2h0X2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VsY29tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvd2VsY29tZS93ZWxjb21lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy93ZWxjb21lL3dlbGNvbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVVsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW1CLFdBQTRCLEVBQVMsV0FBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFVaEYsU0FBSSxHQUFHLE9BQU8sQ0FBQTtRQUNkLFVBQUssR0FBRyxLQUFLLENBQUE7UUFDYixRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUEwRHBCLG1CQUFjLEdBQWdCO1lBRTVCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQzNDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUMxQixVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBRWpDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRzthQUNqQztZQUVELE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFB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R0FBRyxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7NkdBdEVVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1EQ1Y3QixxM0RBZ0RBOzJGRHRDYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtd2VsY29tZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dlbGNvbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dlbGNvbWUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXZWxjb21lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlIDogRGF0YVNlcnZpY2VMaWIsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE1ldGEoKTtcclxuXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2dlZFVzZXJGdWxsTmFtZS5zdWJzY3JpYmUoeCA9PiB0aGlzLnVzZXJuYW1lID0geClcclxuICB9XHJcblxyXG4gIHVzZXJuYW1lO1xyXG5cclxuICBzdGVwID0gXCJ0ZXJtc1wiXHJcbiAgYWdyZWUgPSBmYWxzZVxyXG4gIG93biA9IHRydWU7XHJcbiAgaW52aXRhdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgbXlUZW5hbnRcclxuXHJcbiAgbG9hZE1ldGEoKXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDondGVuYW50L3dlbGNvbWVfbWV0YS94J30pLnN1YnNjcmliZSgoYXBpKSA9PiB7XHJcbiAgICAgIHRoaXMuaW52aXRhdGlvbnMgPSBhcGkuZGF0YS5pbnZpdGF0aW9ucztcclxuICAgICAgdGhpcy5vd24gPSBhcGkuZGF0YS5vd247XHJcbiAgICAgIHRoaXMubXlUZW5hbnQgPSBhcGkuZGF0YS50ZW5hbnQ7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVuYW1lVGVuYW50KCkge1xyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogJ3RlbmFudC90ZW5hbnRzP2FjdGlvbj1yZW5hbWUnLCBtZXRob2Q6ICdwb3N0JyB9LCB0aGlzLm15VGVuYW50KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVRlbmFudE5hbWUodGhpcy5teVRlbmFudC5uYW1lKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5leHQoKXtcclxuXHJcbiAgICBpZiAodGhpcy5zdGVwID09ICd0ZXJtcycgJiYgdGhpcy5vd24pe1xyXG4gICAgICB0aGlzLnN0ZXAgPSBcIm5hbWVcIlxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnN0ZXAgPT0gXCJ0ZXJtc1wiICYmICF0aGlzLm93bikge1xyXG4gICAgICB0aGlzLnN0ZXAgPSBcImhpXCJcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zdGVwID09IFwibmFtZVwiICYmIHRoaXMub3duKXtcclxuXHJcbiAgICAgIHRoaXMucmVuYW1lVGVuYW50KCk7XHJcbiAgICAgIGlmICh0aGlzLmludml0YXRpb25zID09IHRydWUpe1xyXG4gICAgICAgIHRoaXMuc3RlcCA9IFwiaW52aXRhdGlvbnNcIlxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuc2V0V2VsY29tZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0V2VsY29tZSgpIHtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogJ3RlbmFudC9zZXRfd2VsY29tZS94JyB9KS5zdWJzY3JpYmUoKGFwaSkgPT4ge1xyXG4gICAgICB0aGlzLmhvbWUoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBob21lKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLk5hdmlnYXRlKCdob21lJyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW52VGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG5cclxuICAgIGdyZXlPdXQ6ICh2YWx1ZSkgPT4gdmFsdWUuYWNjZXB0ZWQgPT0gZmFsc2UsXHJcbiAgICBlbGV2YXRpb246ICdsb3cnLFxyXG4gICAgbWluQ29sdW1uczogWyd0ZW5hbnROYW1lJ10sXHJcbiAgICBtaW5CdXR0b25zOiBbJ2FjY2VwdCcsICdkZWNsaW5lJ10sXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnROYW1lJywgYWxpYXM6ICdPcmdhbmlzYXRpb24nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnb3duZXInLCB0eXBlOiAndGV4dCcsIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnYWNjZXB0JywgaWNvbjogeyAnbmFtZSc6ICdkb25lJywgfSwgY29sb3I6ICdncmVlbicsIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvbWVtYmVycz9hY3Rpb249YWNjZXB0JywgbWV0aG9kOiAncG9zdCcsIH0sIGNvbmZpcm06IHsgbWVzc2FnZTogJ0FjY2VwdCA/JyB9LCBkaXNhYmxlZDogKHgpID0+IHguYWNjZXB0ZWQgfSxcclxuICAgICAgeyBuYW1lOiAnZGVjbGluZScsIGljb246IHsgJ25hbWUnOiAnY2xvc2UnLCB9LCBjb2xvcjogJ3JlZCcsIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvbWVtYmVycz9hY3Rpb249cmVtb3ZlJywgbWV0aG9kOiAncG9zdCcsIH0sIGNvbmZpcm06IHsgbWVzc2FnZTogJ0RlY2xpbmUgPycgfSwgZGlzYWJsZWQ6ICh4KSA9PiB4LmFjY2VwdGVkIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAndGVuYW50L2ludml0YXRpb25zL3gnIH0sXHJcblxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxhYmVsIGNsYXNzPVwidGl0bGVcIj5XZWxjb21lLCAge3t1c2VybmFtZX19PC9sYWJlbD5cblxuXG5cbjwhLS0gdGVybXMgLS0+XG48ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwic3RlcD09J3Rlcm1zJ1wiPlxuXG4gIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWQgbWItMlwiID5XZSBjYXJlIGFib3V0IG91ciB1c2VycyBhbmQgYXJlIGRlZGljYXRlZCB0byBwcm90ZWN0aW5nIHlvdXIgZGF0YSBhbmQgcHJpdmFjeSAtXG4gICAgdGhhdHMgd2h5IHdlIHdhbnQgdG8gYmUgY2xlYXIgYWJvdXQgd2hhdCBkYXRhIHdlIGNvbGxlY3QgYW5kIGhvdyB3ZSB1c2UgaXQgdG8gaW1wcm92ZSB5b3VyIGV4cGVyaWVuY2UuPC9sYWJlbD5cblxuICA8YnI+XG4gIDxzcGEtY2hlY2sgZGlzcGxheT1cIkkgYWdyZWUgdG8gdGhlIFRlcm1zIGFuZCBQcml2YWN5IFBvbGljeVwiIFsodmFsdWUpXT1cImFncmVlXCI+PC9zcGEtY2hlY2s+XG48L2Rpdj5cblxuPCEtLSBvd25lciAtLT5cbjxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJzdGVwPT0nbmFtZScgJiYgb3duXCI+XG5cbiAgPGxhYmVsIGNsYXNzPVwic3VidGl0bGUgdGV4dC1tdXRlZFwiIHN0eWxlPVwiIG1hcmdpbi1ib3R0b206IDIwcHg7XCI+VGhlIGZvbGxvdyBzdGVwcyB3aWxsIGd1aWRlIHlvdSB0byBjdXN0b21pc2UgeW91ciBhcHBsaWNhdGlvbi48L2xhYmVsPlxuXG4gIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDQwMHB4O1wiPlxuICAgPHNwYS10ZXh0IGRpc3BsYXk9XCJPcmdhbmlzYXRpb24gTmFtZVwiIFsodmFsdWUpXT1cIm15VGVuYW50Lm5hbWVcIiA+PC9zcGEtdGV4dD5cbiAgPC9kaXY+XG5cbiAgPGxhYmVsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHN0eWxlPVwiIGZvbnQtc2l6ZTogMTJweDtcIj5Zb3UgY2FuIGNoYW5nZSB0aGUgT3JnYW5pc2F0aW9uJ3MgbmFtZSB0byB5b3VyIHRlYW0gb3IgY29tcGFueSBuYW1lLjwvbGFiZWw+PGJyPlxuICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxMnB4O21hcmdpbi10b3A6IDEwcHg7XCI+VGhlIG5hbWUgY2FuIGJlIGNoYW5nZWQgbGF0ZXIuPC9sYWJlbD5cblxuPC9kaXY+XG5cbjwhLS0gZ3Vlc3QgLS0+XG48ZGl2ICpuZ0lmPVwic3RlcD09J2hpJyAmJiAhb3duXCI+XG4gIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIj5Zb3UgYXJlIG5vdyBzaWduZWQgaW4gdG8ge3tteVRlbmFudC5uYW1lfX0uPC9sYWJlbD5cbjwvZGl2PlxuXG5cbjwhLS0gaW52aXRhdGlvbnMgLS0+XG48ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwic3RlcD09J2ludml0YXRpb25zJyAmJiBvd25cIj5cblxuICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+WW91IGhhdmUgYmVlbiByZXF1ZXN0ZWQgdG8gam9pbiB0aGUgZm9sbG93aW5nIG9yZ2FuaXNhdGlvbnMuIElmIHlvdSBhY2NlcHQsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gc3dpdGNoIHRvIHRoYXQgb3JnIG5vdyBvciBzdGF5IGluIHlvdSBvcmcuPC9sYWJlbD48YnI+XG4gIDxsYWJlbCBjbGFzcz1cInRleHQtbXV0ZWRcIiBzdHlsZT1cIiBmb250LXNpemU6IDEycHg7bWFyZ2luLXRvcDogMTBweDtcIj5Zb3Ugd2lsbCBiZSBhYmxlIHRvIHN3aXRjaCBsYXRlci48L2xhYmVsPlxuICA8c3BhLWludml0YXRpb25zLXRhYmxlPjwvc3BhLWludml0YXRpb25zLXRhYmxlPlxuXG48L2Rpdj5cblxuXG48IS0tIEFjdGlvbnMgLS0+XG48ZGl2IGNsYXNzPVwibXQtM1wiPlxuICA8YnV0dG9uICBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFhZ3JlZVwiIChjbGljayk9XCJuZXh0KClcIj5OZXh0IDxtYXQtaWNvbj5hcnJvd19yaWdodF9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|