@sunbird-cb/cbp-ai 0.0.1
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 -0
- package/esm2022/lib/ai-cbp-routing.module.mjs +56 -0
- package/esm2022/lib/ai-cbp.component.mjs +14 -0
- package/esm2022/lib/ai-cbp.module.mjs +263 -0
- package/esm2022/lib/ai-cbp.service.mjs +14 -0
- package/esm2022/lib/components/add-course/add-course.component.mjs +444 -0
- package/esm2022/lib/components/add-designation/add-designation.component.mjs +460 -0
- package/esm2022/lib/components/add-personalisation/add-personalisation.component.mjs +33 -0
- package/esm2022/lib/components/approval-request-form/approval-request-form.component.mjs +392 -0
- package/esm2022/lib/components/approval-requests/approval-requests.component.mjs +398 -0
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +265 -0
- package/esm2022/lib/components/delete-role-mapping/delete-role-mapping.component.mjs +53 -0
- package/esm2022/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.mjs +39 -0
- package/esm2022/lib/components/edit-cbp-plan/edit-cbp-plan.component.mjs +699 -0
- package/esm2022/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.mjs +188 -0
- package/esm2022/lib/components/generate-course-recommendation/generate-course-recommendation.component.mjs +1949 -0
- package/esm2022/lib/components/list-popup/list-popup.component.mjs +32 -0
- package/esm2022/lib/components/review-request/review-request.component.mjs +138 -0
- package/esm2022/lib/components/role-mapping-generation/role-mapping-generation.component.mjs +1082 -0
- package/esm2022/lib/components/role-mapping-list/role-mapping-list.component.mjs +714 -0
- package/esm2022/lib/components/suggest-more-courses/suggest-more-courses.component.mjs +370 -0
- package/esm2022/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.mjs +235 -0
- package/esm2022/lib/components/view-cbp-plan/view-cbp-plan.component.mjs +125 -0
- package/esm2022/lib/components/view-course-recommendation/view-course-recommendation.component.mjs +397 -0
- package/esm2022/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.mjs +883 -0
- package/esm2022/lib/modules/initial-screen/initial-screen.component.mjs +127 -0
- package/esm2022/lib/modules/shared/constant/app.constant.mjs +2036 -0
- package/esm2022/lib/modules/shared/directives/clickoutside.directive.mjs +38 -0
- package/esm2022/lib/modules/shared/directives/directive.module.mjs +21 -0
- package/esm2022/lib/modules/shared/pipes/order-by-name.pipe.mjs +23 -0
- package/esm2022/lib/modules/shared/services/event.service.mjs +24 -0
- package/esm2022/lib/modules/shared/services/events.mjs +125 -0
- package/esm2022/lib/modules/shared/services/init.service.mjs +41 -0
- package/esm2022/lib/modules/shared/services/role-mapping.service.mjs +261 -0
- package/esm2022/lib/modules/shared/services/shared.service.mjs +869 -0
- package/esm2022/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.mjs +53 -0
- package/esm2022/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.mjs +186 -0
- package/esm2022/lib/modules/upload-document-page/upload-document-page.component.mjs +367 -0
- package/esm2022/lib/pipe-public-URL/pipe-public-URL.module.mjs +20 -0
- package/esm2022/lib/pipe-public-URL/pipe-public-URL.pipe.mjs +23 -0
- package/esm2022/public-api.mjs +14 -0
- package/esm2022/sunbird-cb-cbp-ai.mjs +5 -0
- package/fesm2022/sunbird-cb-cbp-ai.mjs +12952 -0
- package/fesm2022/sunbird-cb-cbp-ai.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/ai-cbp-routing.module.d.ts +8 -0
- package/lib/ai-cbp-routing.module.d.ts.map +1 -0
- package/lib/ai-cbp.component.d.ts +7 -0
- package/lib/ai-cbp.component.d.ts.map +1 -0
- package/lib/ai-cbp.module.d.ts +68 -0
- package/lib/ai-cbp.module.d.ts.map +1 -0
- package/lib/ai-cbp.service.d.ts +7 -0
- package/lib/ai-cbp.service.d.ts.map +1 -0
- package/lib/components/add-course/add-course.component.d.ts +67 -0
- package/lib/components/add-course/add-course.component.d.ts.map +1 -0
- package/lib/components/add-designation/add-designation.component.d.ts +52 -0
- package/lib/components/add-designation/add-designation.component.d.ts.map +1 -0
- package/lib/components/add-personalisation/add-personalisation.component.d.ts +16 -0
- package/lib/components/add-personalisation/add-personalisation.component.d.ts.map +1 -0
- package/lib/components/approval-request-form/approval-request-form.component.d.ts +48 -0
- package/lib/components/approval-request-form/approval-request-form.component.d.ts.map +1 -0
- package/lib/components/approval-requests/approval-requests.component.d.ts +80 -0
- package/lib/components/approval-requests/approval-requests.component.d.ts.map +1 -0
- package/lib/components/dashboard/dashboard.component.d.ts +55 -0
- package/lib/components/dashboard/dashboard.component.d.ts.map +1 -0
- package/lib/components/delete-role-mapping/delete-role-mapping.component.d.ts +18 -0
- package/lib/components/delete-role-mapping/delete-role-mapping.component.d.ts.map +1 -0
- package/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.d.ts +18 -0
- package/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.d.ts.map +1 -0
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts +94 -0
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts.map +1 -0
- package/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.d.ts +35 -0
- package/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.d.ts.map +1 -0
- package/lib/components/generate-course-recommendation/generate-course-recommendation.component.d.ts +198 -0
- package/lib/components/generate-course-recommendation/generate-course-recommendation.component.d.ts.map +1 -0
- package/lib/components/list-popup/list-popup.component.d.ts +13 -0
- package/lib/components/list-popup/list-popup.component.d.ts.map +1 -0
- package/lib/components/review-request/review-request.component.d.ts +39 -0
- package/lib/components/review-request/review-request.component.d.ts.map +1 -0
- package/lib/components/role-mapping-generation/role-mapping-generation.component.d.ts +99 -0
- package/lib/components/role-mapping-generation/role-mapping-generation.component.d.ts.map +1 -0
- package/lib/components/role-mapping-list/role-mapping-list.component.d.ts +83 -0
- package/lib/components/role-mapping-list/role-mapping-list.component.d.ts.map +1 -0
- package/lib/components/suggest-more-courses/suggest-more-courses.component.d.ts +48 -0
- package/lib/components/suggest-more-courses/suggest-more-courses.component.d.ts.map +1 -0
- package/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.d.ts +41 -0
- package/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.d.ts.map +1 -0
- package/lib/components/view-cbp-plan/view-cbp-plan.component.d.ts +29 -0
- package/lib/components/view-cbp-plan/view-cbp-plan.component.d.ts.map +1 -0
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts +49 -0
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts.map +1 -0
- package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts +73 -0
- package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts.map +1 -0
- package/lib/modules/initial-screen/initial-screen.component.d.ts +85 -0
- package/lib/modules/initial-screen/initial-screen.component.d.ts.map +1 -0
- package/lib/modules/shared/constant/app.constant.d.ts +457 -0
- package/lib/modules/shared/constant/app.constant.d.ts.map +1 -0
- package/lib/modules/shared/directives/clickoutside.directive.d.ts +13 -0
- package/lib/modules/shared/directives/clickoutside.directive.d.ts.map +1 -0
- package/lib/modules/shared/directives/directive.module.d.ts +8 -0
- package/lib/modules/shared/directives/directive.module.d.ts.map +1 -0
- package/lib/modules/shared/pipes/order-by-name.pipe.d.ts +8 -0
- package/lib/modules/shared/pipes/order-by-name.pipe.d.ts.map +1 -0
- package/lib/modules/shared/services/event.service.d.ts +12 -0
- package/lib/modules/shared/services/event.service.d.ts.map +1 -0
- package/lib/modules/shared/services/events.d.ts +200 -0
- package/lib/modules/shared/services/events.d.ts.map +1 -0
- package/lib/modules/shared/services/init.service.d.ts +13 -0
- package/lib/modules/shared/services/init.service.d.ts.map +1 -0
- package/lib/modules/shared/services/role-mapping.service.d.ts +21 -0
- package/lib/modules/shared/services/role-mapping.service.d.ts.map +1 -0
- package/lib/modules/shared/services/shared.service.d.ts +108 -0
- package/lib/modules/shared/services/shared.service.d.ts.map +1 -0
- package/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.d.ts +14 -0
- package/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.d.ts.map +1 -0
- package/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.d.ts +29 -0
- package/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.d.ts.map +1 -0
- package/lib/modules/upload-document-page/upload-document-page.component.d.ts +64 -0
- package/lib/modules/upload-document-page/upload-document-page.component.d.ts.map +1 -0
- package/lib/pipe-public-URL/pipe-public-URL.module.d.ts +9 -0
- package/lib/pipe-public-URL/pipe-public-URL.module.d.ts.map +1 -0
- package/lib/pipe-public-URL/pipe-public-URL.pipe.d.ts +11 -0
- package/lib/pipe-public-URL/pipe-public-URL.pipe.d.ts.map +1 -0
- package/package.json +28 -0
- package/public-api.d.ts +11 -0
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-cbp-ai-0.0.1.tgz +0 -0
- package/sunbird-cb-cbp-ai.d.ts.map +1 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { UploadDialogComponent } from './upload-dialog/upload-dialog.component';
|
|
3
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
4
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
5
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
+
import { ListPopupComponent } from '../../components/list-popup/list-popup.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
import * as i2 from "../shared/services/shared.service";
|
|
10
|
+
import * as i3 from "@angular/material/snack-bar";
|
|
11
|
+
import * as i4 from "@angular/forms";
|
|
12
|
+
import * as i5 from "@angular/router";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/material/legacy-card";
|
|
15
|
+
import * as i8 from "@angular/material/legacy-button";
|
|
16
|
+
import * as i9 from "@angular/material/icon";
|
|
17
|
+
import * as i10 from "@angular/material/progress-spinner";
|
|
18
|
+
import * as i11 from "@angular/material/table";
|
|
19
|
+
import * as i12 from "@angular/material/paginator";
|
|
20
|
+
import * as i13 from "@angular/material/tooltip";
|
|
21
|
+
export class UploadDocumentPageComponent {
|
|
22
|
+
constructor(dialog, sharedService, snackBar, fb, router) {
|
|
23
|
+
this.dialog = dialog;
|
|
24
|
+
this.sharedService = sharedService;
|
|
25
|
+
this.snackBar = snackBar;
|
|
26
|
+
this.fb = fb;
|
|
27
|
+
this.router = router;
|
|
28
|
+
this.dataSource = new MatTableDataSource([]);
|
|
29
|
+
this.selectedMinistryType = 'ministry';
|
|
30
|
+
this.ministryData = [];
|
|
31
|
+
this.ministryFullData = [];
|
|
32
|
+
this.disableBtn = true;
|
|
33
|
+
this.sectorData = [
|
|
34
|
+
{
|
|
35
|
+
value: 'Women and child development'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
value: 'Rural development'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
value: 'Urban development'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
value: 'Healthcare'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
value: 'Agriculture'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
value: 'Others'
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
this.searchText = '';
|
|
54
|
+
this.displayedColumns = ['name', 'summary_status', 'date', 'actions'];
|
|
55
|
+
this.cbpFinalObj = {};
|
|
56
|
+
this.departmentData = [];
|
|
57
|
+
this.documents = [
|
|
58
|
+
// {
|
|
59
|
+
// name: 'Work Allocation',
|
|
60
|
+
// originalName: 'ACBP_Ministry_of_Women_and_Child_Development_Extract...',
|
|
61
|
+
// size: 4.5,
|
|
62
|
+
// date: 'Oct 13, 2025'
|
|
63
|
+
// },
|
|
64
|
+
// {
|
|
65
|
+
// name: 'Screenshot 2025-10-08 at 12',
|
|
66
|
+
// originalName: 'Screenshot 2025-10-08 at 12.54.18 PM.png',
|
|
67
|
+
// size: 331.8,
|
|
68
|
+
// date: 'Oct 13, 2025'
|
|
69
|
+
// }
|
|
70
|
+
];
|
|
71
|
+
this.loading = false;
|
|
72
|
+
this.filteredMinistryData = [];
|
|
73
|
+
this.searchControl = new FormControl('');
|
|
74
|
+
this.panelOpen = false;
|
|
75
|
+
this.departmentPanelOpen = false;
|
|
76
|
+
this.filteredList = [];
|
|
77
|
+
this.filteredDepartmentList = [];
|
|
78
|
+
this.loginUserOrgIds = [];
|
|
79
|
+
this.originalMinistryData = [];
|
|
80
|
+
this.roleMappingForm = this.fb.group({
|
|
81
|
+
ministryType: ['ministry', Validators.required],
|
|
82
|
+
ministry: [null, Validators.required],
|
|
83
|
+
sectors: [[]],
|
|
84
|
+
departments: [[]]
|
|
85
|
+
});
|
|
86
|
+
// this.cbpFinalObj = this.sharedService.getCBPPlanLocalStorage()
|
|
87
|
+
this.getMinistryData();
|
|
88
|
+
}
|
|
89
|
+
ngOnInit() {
|
|
90
|
+
this.cbpPlanFinalObj = this.sharedService.getCBPPlanLocalStorage();
|
|
91
|
+
console.log('cbpFinalObj--', this.cbpFinalObj);
|
|
92
|
+
this.searchControl.valueChanges.subscribe(searchText => {
|
|
93
|
+
if (searchText) {
|
|
94
|
+
this.filterMinistryData(searchText);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.filteredMinistryData = this.ministryData;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
this.sharedService.summaryTriggerExecuted.subscribe((data) => {
|
|
101
|
+
if (data && data?.file_id) {
|
|
102
|
+
this.getUploadedDocuments();
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
if (this.cbpPlanFinalObj && this.cbpPlanFinalObj.ministry && this.cbpPlanFinalObj.ministry.identifier) {
|
|
106
|
+
this.getUploadedDocuments();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
ngAfterViewInit() {
|
|
110
|
+
this.dataSource.paginator = this.paginator;
|
|
111
|
+
}
|
|
112
|
+
getUploadedDocuments() {
|
|
113
|
+
let reqBody = {
|
|
114
|
+
state_center_id: this.cbpPlanFinalObj?.ministry?.identifier,
|
|
115
|
+
include_summary: true,
|
|
116
|
+
skip: 0,
|
|
117
|
+
limit: 200
|
|
118
|
+
};
|
|
119
|
+
if (this.cbpPlanFinalObj && this.cbpPlanFinalObj?.departments) {
|
|
120
|
+
reqBody['department_id'] = this.cbpPlanFinalObj?.departments;
|
|
121
|
+
}
|
|
122
|
+
this.loading = true;
|
|
123
|
+
this.sharedService.getUploadedDocuments(reqBody).subscribe((res) => {
|
|
124
|
+
if (res && res?.items && res?.items?.length) {
|
|
125
|
+
this.loading = false;
|
|
126
|
+
this.documents = res?.items;
|
|
127
|
+
this.dataSource.data = this.documents;
|
|
128
|
+
console.log('this.documents', this.documents);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.loading = false;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
openUploadDialog() {
|
|
136
|
+
const dialogRef = this.dialog.open(UploadDialogComponent, {
|
|
137
|
+
width: '600px',
|
|
138
|
+
data: '',
|
|
139
|
+
disableClose: true,
|
|
140
|
+
maxHeight: '80vh',
|
|
141
|
+
});
|
|
142
|
+
dialogRef.afterClosed().subscribe(result => {
|
|
143
|
+
if (result === 'close') {
|
|
144
|
+
this.getUploadedDocuments();
|
|
145
|
+
}
|
|
146
|
+
// if (result) {
|
|
147
|
+
// this.documents.push(result);
|
|
148
|
+
// }
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
filteredDocuments() {
|
|
152
|
+
// console.log('this.documents', this.documents)
|
|
153
|
+
return this.documents.filter(doc => doc.filename.toLowerCase().includes(this.searchText.toLowerCase()));
|
|
154
|
+
}
|
|
155
|
+
deleteDocument(docToDelete) {
|
|
156
|
+
this.documents = this.documents.filter(doc => doc !== docToDelete);
|
|
157
|
+
this.loading = true;
|
|
158
|
+
this.sharedService.deleteSummary(docToDelete?.file_id).subscribe((res) => {
|
|
159
|
+
if (res) {
|
|
160
|
+
this.sharedService.deleteFile(docToDelete?.file_id).subscribe((dres) => {
|
|
161
|
+
this.loading = true;
|
|
162
|
+
if (dres) {
|
|
163
|
+
this.loading = false;
|
|
164
|
+
this.snackBar.open('Document Deleted Successfully', 'X', {
|
|
165
|
+
duration: 3000,
|
|
166
|
+
panelClass: ['snackbar-success']
|
|
167
|
+
});
|
|
168
|
+
this.getUploadedDocuments();
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
this.loading = false;
|
|
172
|
+
this.snackBar.open('Error While Deleting Document', 'X', {
|
|
173
|
+
duration: 3000,
|
|
174
|
+
panelClass: ['snackbar-error']
|
|
175
|
+
});
|
|
176
|
+
this.getUploadedDocuments();
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
this.loading = false;
|
|
180
|
+
this.snackBar.open('Document Summary Deleted Successfully', 'X', {
|
|
181
|
+
duration: 3000,
|
|
182
|
+
panelClass: ['snackbar-success']
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
this.loading = false;
|
|
187
|
+
this.snackBar.open('Error While Deleting Document Summary', 'X', {
|
|
188
|
+
duration: 3000,
|
|
189
|
+
panelClass: ['snackbar-error']
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
applyFilter() {
|
|
195
|
+
}
|
|
196
|
+
onMinistryTypeChange(event) {
|
|
197
|
+
this.roleMappingForm.reset();
|
|
198
|
+
// console.log('event', event)
|
|
199
|
+
this.getMinistryData();
|
|
200
|
+
this.sharedService.cbpPlanFinalObj['ministryType'] = event.value;
|
|
201
|
+
localStorage.setItem('cbpPlanFinalObj', JSON.stringify(this.sharedService.cbpPlanFinalObj));
|
|
202
|
+
this.selectedMinistryType = event?.value;
|
|
203
|
+
this.roleMappingForm.get('sectors')?.setValue([]);
|
|
204
|
+
this.roleMappingForm.controls.ministryType.setValue(this.selectedMinistryType);
|
|
205
|
+
}
|
|
206
|
+
onMinistryChange(event) {
|
|
207
|
+
const selectedMinistryId = event.value;
|
|
208
|
+
// console.log('Selected Ministry ID:', selectedMinistryId);
|
|
209
|
+
// You can access the selected object if needed
|
|
210
|
+
const selectedMinistry = this.ministryData.find(item => item.identifier === selectedMinistryId);
|
|
211
|
+
console.log('Selected Ministry:', selectedMinistry);
|
|
212
|
+
``;
|
|
213
|
+
this.sharedService.cbpPlanFinalObj['ministry'] = { identifier: selectedMinistryId?.identifier, name: selectedMinistryId?.orgName };
|
|
214
|
+
if (selectedMinistryId && this.selectedMinistryType === 'state') {
|
|
215
|
+
this.sharedService.getDepartmentList(selectedMinistryId).subscribe((res) => {
|
|
216
|
+
this.departmentData = res;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (this.selectedMinistryType === 'state') {
|
|
220
|
+
this.sharedService.cbpPlanFinalObj['ministryType'] = this.roleMappingForm.controls.ministryType.value;
|
|
221
|
+
this.sharedService.cbpPlanFinalObj['ministry'] = { identifier: selectedMinistry?.identifier, name: selectedMinistry?.orgName };
|
|
222
|
+
this.sharedService.cbpPlanFinalObj['departments'] = this.roleMappingForm.controls.departments.value;
|
|
223
|
+
this.sharedService.cbpPlanFinalObj['sectors'] = this.roleMappingForm.controls.sectors.value;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
this.sharedService.cbpPlanFinalObj['ministryType'] = this.roleMappingForm.controls.ministryType.value;
|
|
227
|
+
this.sharedService.cbpPlanFinalObj['ministry'] = { identifier: selectedMinistry?.identifier, name: selectedMinistry?.orgName };
|
|
228
|
+
}
|
|
229
|
+
console.log('this.sharedService.cbpPlanFinalObj', this.sharedService.cbpPlanFinalObj);
|
|
230
|
+
localStorage.setItem('cbpPlanFinalObj', JSON.stringify(this.sharedService.cbpPlanFinalObj));
|
|
231
|
+
console.log('this.roleMappingForm', this.roleMappingForm);
|
|
232
|
+
}
|
|
233
|
+
filterMinistryData(searchText) {
|
|
234
|
+
if (searchText) {
|
|
235
|
+
console.log('searhTect, ', searchText);
|
|
236
|
+
const search = searchText?.trim().toLowerCase() || '';
|
|
237
|
+
this.filteredMinistryData = !search
|
|
238
|
+
? [...this.ministryData]
|
|
239
|
+
: this.ministryData.filter(item => item.orgName?.trim().toLowerCase().startsWith(search));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
getMinistryData() {
|
|
243
|
+
this.loading = true;
|
|
244
|
+
this.sharedService.getMinistryData(this.selectedMinistryType).subscribe((data) => {
|
|
245
|
+
this.loading = false;
|
|
246
|
+
console.log('data--', data);
|
|
247
|
+
this.ministryFullData = data;
|
|
248
|
+
this.ministryData = [];
|
|
249
|
+
if (this.selectedMinistryType === 'ministry') {
|
|
250
|
+
data.forEach((item) => {
|
|
251
|
+
if (item?.sbOrgType === 'ministry') {
|
|
252
|
+
this.ministryData.push(item);
|
|
253
|
+
this.filteredMinistryData = [...this.ministryData];
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
else if (this.selectedMinistryType === 'state') {
|
|
258
|
+
data.forEach((item) => {
|
|
259
|
+
if (item?.sbOrgType === 'state') {
|
|
260
|
+
this.ministryData.push(item);
|
|
261
|
+
this.filteredMinistryData = [...this.ministryData];
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
this.getUserProfileData();
|
|
266
|
+
});
|
|
267
|
+
console.log('this.ministryData--', this.ministryData);
|
|
268
|
+
console.log('this.filteredMinistryData--', this.filteredMinistryData);
|
|
269
|
+
}
|
|
270
|
+
routeToMain() {
|
|
271
|
+
this.router.navigate(['/ai/']);
|
|
272
|
+
}
|
|
273
|
+
viewSummary(doc) {
|
|
274
|
+
const dialogRef = this.dialog.open(ListPopupComponent, {
|
|
275
|
+
width: '800px',
|
|
276
|
+
data: { element: doc, type: 'doc-summary' },
|
|
277
|
+
disableClose: true,
|
|
278
|
+
maxHeight: '80vh'
|
|
279
|
+
});
|
|
280
|
+
dialogRef.afterClosed().subscribe(() => {
|
|
281
|
+
// No need to do anything special here to reset inline expanded state
|
|
282
|
+
// Because you're using dialog, not inline expand – view remains in initial (collapsed) state
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
downloadDoc(doc) {
|
|
286
|
+
this.loading = true;
|
|
287
|
+
this.sharedService.downloadFile(doc.file_id).subscribe({
|
|
288
|
+
next: (blob) => {
|
|
289
|
+
this.loading = false;
|
|
290
|
+
const url = window.URL.createObjectURL(blob);
|
|
291
|
+
const a = document.createElement('a');
|
|
292
|
+
a.href = url;
|
|
293
|
+
a.download = `${doc?.filename}`; // Use dynamic name if needed
|
|
294
|
+
a.click();
|
|
295
|
+
window.URL.revokeObjectURL(url);
|
|
296
|
+
// ✅ Success feedback
|
|
297
|
+
this.snackBar.open('File downloaded successfully!', 'X', {
|
|
298
|
+
duration: 3000,
|
|
299
|
+
panelClass: ['snackbar-success']
|
|
300
|
+
});
|
|
301
|
+
},
|
|
302
|
+
error: (err) => {
|
|
303
|
+
this.loading = false;
|
|
304
|
+
// ❌ Error feedback
|
|
305
|
+
console.error('Download error:', err);
|
|
306
|
+
this.snackBar.open('Failed to download the file.', 'X', {
|
|
307
|
+
duration: 3000,
|
|
308
|
+
panelClass: ['snackbar-error']
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
onOpened(opened) {
|
|
314
|
+
this.panelOpen = opened;
|
|
315
|
+
}
|
|
316
|
+
onOpenedDepartment(opened) {
|
|
317
|
+
this.departmentPanelOpen = opened;
|
|
318
|
+
}
|
|
319
|
+
filterData(event) {
|
|
320
|
+
if (event && event.target && event.target.value) {
|
|
321
|
+
const s = event.target.value.toLowerCase();
|
|
322
|
+
this.filteredList = this.ministryData.filter(x => x.orgName.toLowerCase().includes(s));
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
this.filteredList = this.ministryData;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
filterDepartmentData(event) {
|
|
329
|
+
if (event && event.target && event.target.value) {
|
|
330
|
+
const s = event.target.value.toLowerCase();
|
|
331
|
+
this.filteredDepartmentList = this.departmentData.filter(x => x.orgName.toLowerCase().includes(s));
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
this.filteredDepartmentList = this.departmentData;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
getUserProfileData() {
|
|
338
|
+
this.sharedService.getUserProfile().subscribe((data) => {
|
|
339
|
+
console.log('data--', data);
|
|
340
|
+
this.loginUserOrgIds = data?.organization_ids;
|
|
341
|
+
let filteredMinistryData = [];
|
|
342
|
+
console.log('this.ministryFullData--', this.ministryFullData);
|
|
343
|
+
this.ministryFullData.map((item) => {
|
|
344
|
+
if (this.loginUserOrgIds.indexOf(item?.identifier) > -1) {
|
|
345
|
+
filteredMinistryData.push(item);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
this.ministryData = filteredMinistryData;
|
|
349
|
+
this.originalMinistryData = filteredMinistryData;
|
|
350
|
+
this.filteredList = filteredMinistryData;
|
|
351
|
+
console.log('this.filteredList--', this.filteredList);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
routeToInitial() {
|
|
355
|
+
this.router.navigate(['/ai/initial']);
|
|
356
|
+
}
|
|
357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadDocumentPageComponent, deps: [{ token: i1.MatDialog }, { token: i2.SharedService }, { token: i3.MatSnackBar }, { token: i4.FormBuilder }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadDocumentPageComponent, selector: "app-upload-document-page", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<div class=\"upload-container\">\n <div class=\"header\">\n <div class=\"sub-heading mt-10 mb-10 ml-10 cursor-pointer\">\n <p (click)=\"routeToInitial()\"><mat-icon style=\"vertical-align: middle;\">arrow_back</mat-icon><span\n class=\"pl-10\">Back to Role Mapping Generation</span></p>\n </div>\n\n </div>\n <mat-card class=\"mat-card-container mt-20\" [formGroup]=\"roleMappingForm\">\n <div class=\"header\">\n <div class=\"sub-heading\">\n <p>CBP Document Library</p>\n </div>\n \n \n </div>\n <div class=\"edit-section mt-4\">\n <div class=\"select-map-route-container\">\n <div class=\"select-map-flex-container\">\n <div class=\"select-map-flex\">\n <div class=\"selected-mapping-route\">\n <p>{{cbpPlanFinalObj?.ministry?.orgName}} <span\n *ngIf=\"cbpPlanFinalObj?.department_name\">\n / {{cbpPlanFinalObj?.department_name}}</span>\n </p>\n </div>\n <div class=\"edit-plan cursor-pointer\" (click)=\"routeToInitial()\">\n <mat-icon>edit</mat-icon>Edit\n </div>\n<!-- <div class=\"cursor-pointer ml-10\">-->\n<!-- <button class=\"btn-active cursor-pointer\" (click)=\"moveToInitialScreenLayout('add')\">-->\n<!-- <mat-icon>add</mat-icon>-->\n<!-- Create New CBP-->\n<!-- </button>-->\n<!-- </div>-->\n </div>\n <div>\n <button [ngClass]=\"!(cbpPlanFinalObj?.ministry?.orgName) ? 'btn-disable':'btn-active'\" mat-raised-button\n color=\"primary\" [disabled]=\"!(cbpPlanFinalObj?.ministry?.orgName)\" (click)=\"openUploadDialog()\">\n <mat-icon>upload</mat-icon> Upload Document\n </button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n\n </mat-card>\n <mat-card class=\"\">\n <div class=\"sub-heading\">\n <p>Uploaded Documents (Max. 10 Documents are allowed)</p>\n </div>\n <div class=\"search flex margin-right-m\">\n <div class=\"mt-10\">\n <div class=\"search-container\">\n <div class=\"rsearch\">\n <mat-icon\n class=\"color-60 search-icon mat-icon notranslate material-icons mat-icon-no-color\">search</mat-icon>\n <input class=\"sinput color-60 w-full\" [(ngModel)]=\"searchText\" label=\"\" (input)=\"applyFilter()\"\n placeholder=\"Search Documents\" type=\"Standard\">\n <mat-icon *ngIf=\"searchText.trim().length > 0\"\n class=\"color-60 clear-icon mat-icon notranslate material-icons mat-icon-no-color cursor-pointer\"\n (click)=\"clearSearch()\">clear</mat-icon>\n </div>\n\n </div>\n\n\n\n </div>\n </div>\n <p class=\"mt-10\" style=\"font-family: 'Lato'; font-size: 18px; margin-left: 10px;\">\n {{filteredDocuments()?.length}} Documents</p>\n <table style=\"border-radius: 25px 25px 0 0;\n overflow: hidden;\n box-shadow: 0 5px 5px rgba(0, 0, 0, 0.12);\" mat-table [dataSource]=\"filteredDocuments()\" class=\"mat-elevation-z2 full-width-table mt-10\">\n\n <!-- Document Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Document </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\">\n <div>\n <div class=\"doc-title\" *ngIf=\"doc.document_name\">{{ doc.filename }}</div>\n <div class=\"doc-title\" *ngIf=\"!doc.document_name\">{{ doc.filename }}</div>\n </div>\n </td>\n </ng-container>\n\n <!-- Summary Status Column -->\n <ng-container matColumnDef=\"summary_status\">\n <th mat-header-cell *matHeaderCellDef> Summary Status </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\"> \n <span *ngIf=\"doc.summary_status === 'COMPLETED'\" class=\"success\"> {{ doc.summary_status | titlecase }} </span>\n <span *ngIf=\"doc.summary_status !== 'COMPLETED'\" class=\"in-progress\"> {{ doc.summary_status | titlecase }} </span>\n </td>\n </ng-container>\n\n <!-- Summary Text Column -->\n <!-- <ng-container matColumnDef=\"summary_text\">\n <th mat-header-cell *matHeaderCellDef> Summary </th>\n <td mat-cell *matCellDef=\"let doc\">\n <div class=\"doc-summary-text\" style=\"width: 80%;\">\n <markdown [data]=\"doc?.summary_text | slice : 0 : 200\"></markdown>\n </div>\n </td>\n </ng-container> -->\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef> Date </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\"> {{ doc.created_at | date: 'MMM d, y'}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\">\n <button mat-icon-button color=\"primary\" (click)=\"downloadDoc(doc)\" matTooltip=\"Download\">\n <mat-icon>download</mat-icon>\n </button>\n\n <button style=\"margin-left: 15px;\" *ngIf=\"doc.summary_status === 'COMPLETED'\" mat-icon-button color=\"primary\"\n (click)=\"viewSummary(doc)\" matTooltip=\"View Summary\">\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button style=\"margin-left: 15px;\" *ngIf=\"doc.summary_status === 'COMPLETED'\" mat-icon-button color=\"warn\"\n (click)=\"deleteDocument(doc)\" matTooltip=\"Delete\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <!-- Header and Row Definitions -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n\n <!-- No Data Message -->\n\n </table>\n <div *ngIf=\"filteredDocuments().length === 0\" class=\"no-data-message\">\n No record found\n </div>\n <!-- Pagination -->\n <div class=\"border-1\">\n <mat-paginator [pageSize]=\"5\" [pageSizeOptions]=\"[5, 10, 20]\"></mat-paginator>\n </div>\n\n\n </mat-card>\n</div>\n\n\n<div class=\"overlay-loader\" *ngIf=\"loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n</div>", styles: [".upload-container{background:transparent;min-height:100vh;padding:24px 0;margin:0 30px 0 50px}.header{display:flex;flex-direction:row;justify-content:space-between}.primary-btn{background-color:#1b4ca1;color:#fff}.mat-card-container{background:transparent}.search .rsearch{position:relative}.search .search-icon{position:absolute;top:15px;font-size:20px;left:10px}.search .clear-icon{position:absolute;top:15px;font-size:20px;right:10px;color:#666}.search .clear-icon:hover{color:#333}.search .sinput{border-radius:32px;border:1px solid #d5d0d0;padding:15px 36px;font:400 14px Lato;width:100%}.no-data-message{text-align:center;padding:16px;font-style:italic;color:#888}.btn-disable{border-radius:var(--Radius-Full-Round, 9999999px);opacity:.4;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:48px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100%}.btn-active{border-radius:var(--Radius-Full-Round, 9999999px);opacity:1;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:48px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100%}.sub-heading p{color:#000;font-family:Montserrat;font-size:18px;font-style:normal;font-weight:600;line-height:normal}.cursor-pointer{cursor:pointer}.doc-title{font-weight:700}:host ::ng-deep .mat-mdc-header-row{position:sticky;top:0;z-index:0;background:#fff;font-size:16px;box-shadow:0 2px 4px #0000001a;padding:5px 10px}:host ::ng-deep .mat-mdc-row{font-size:16px}:host ::ng-deep .mat-mdc-cell{padding:5px 10px}:host ::ng-deep .mat-mdc-header-cell{background:#fff;font-weight:600;font-size:18px;border-bottom:2px solid #e0e0e0}:host ::ng-deep th.mat-mdc-header-cell:not(:last-child){position:relative;border-right:none;padding:5px 10px}:host ::ng-deep th.mat-mdc-header-cell:not(:last-child):after{content:\"\";position:absolute;top:12px;bottom:12px;right:0;width:1px;background-color:#e0e0e0}::ng-deep .doc-summary-text ::ng-deep markdown p{line-height:1.5rem;font-family:Lato;font-size:1rem!important;font-style:normal;font-weight:400}.mat-select-panel .search-wrapper{width:100%!important;box-sizing:border-box;padding:8px;position:sticky;top:0;z-index:2;background:#fff}.search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}::ng-deep .mat-select-panel-wrap{overflow:visible!important;padding:0;margin-top:42px}::ng-deep .mat-select-panel{border:1px solid #ccc!important;box-sizing:border-box;max-height:250px}.edit-plan{display:flex;padding:4px 10px;justify-content:center;align-items:center;gap:8px;border-radius:4px;background:#1b4ca129;color:#1b4ca1;font-family:Lato;font-size:17px;font-style:normal;font-weight:400;line-height:normal;margin-left:10px;height:30px}.select-map-route-container{display:flex;flex-direction:row;width:100%}.select-map-flex{display:flex;flex-direction:row}.select-map-flex-container{display:flex;justify-content:space-between;width:100%}.selected-mapping-route p{color:#1b4ca1;font-family:Lato;font-size:20px;font-style:normal;font-weight:400;line-height:normal;text-decoration-line:underline;text-decoration-style:solid;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.success{background:green;padding:4px 6px;color:#fff;border-radius:20px}.in-progress{background:orange;padding:4px 6px;color:#fff;border-radius:20px}.ml-10{margin-left:10px}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-10{margin-bottom:10px}.mt-1{margin-top:1px}.border-1{border-top:1px solid #ccc}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, 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: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] }); }
|
|
359
|
+
}
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadDocumentPageComponent, decorators: [{
|
|
361
|
+
type: Component,
|
|
362
|
+
args: [{ selector: 'app-upload-document-page', template: "<div class=\"upload-container\">\n <div class=\"header\">\n <div class=\"sub-heading mt-10 mb-10 ml-10 cursor-pointer\">\n <p (click)=\"routeToInitial()\"><mat-icon style=\"vertical-align: middle;\">arrow_back</mat-icon><span\n class=\"pl-10\">Back to Role Mapping Generation</span></p>\n </div>\n\n </div>\n <mat-card class=\"mat-card-container mt-20\" [formGroup]=\"roleMappingForm\">\n <div class=\"header\">\n <div class=\"sub-heading\">\n <p>CBP Document Library</p>\n </div>\n \n \n </div>\n <div class=\"edit-section mt-4\">\n <div class=\"select-map-route-container\">\n <div class=\"select-map-flex-container\">\n <div class=\"select-map-flex\">\n <div class=\"selected-mapping-route\">\n <p>{{cbpPlanFinalObj?.ministry?.orgName}} <span\n *ngIf=\"cbpPlanFinalObj?.department_name\">\n / {{cbpPlanFinalObj?.department_name}}</span>\n </p>\n </div>\n <div class=\"edit-plan cursor-pointer\" (click)=\"routeToInitial()\">\n <mat-icon>edit</mat-icon>Edit\n </div>\n<!-- <div class=\"cursor-pointer ml-10\">-->\n<!-- <button class=\"btn-active cursor-pointer\" (click)=\"moveToInitialScreenLayout('add')\">-->\n<!-- <mat-icon>add</mat-icon>-->\n<!-- Create New CBP-->\n<!-- </button>-->\n<!-- </div>-->\n </div>\n <div>\n <button [ngClass]=\"!(cbpPlanFinalObj?.ministry?.orgName) ? 'btn-disable':'btn-active'\" mat-raised-button\n color=\"primary\" [disabled]=\"!(cbpPlanFinalObj?.ministry?.orgName)\" (click)=\"openUploadDialog()\">\n <mat-icon>upload</mat-icon> Upload Document\n </button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n\n </mat-card>\n <mat-card class=\"\">\n <div class=\"sub-heading\">\n <p>Uploaded Documents (Max. 10 Documents are allowed)</p>\n </div>\n <div class=\"search flex margin-right-m\">\n <div class=\"mt-10\">\n <div class=\"search-container\">\n <div class=\"rsearch\">\n <mat-icon\n class=\"color-60 search-icon mat-icon notranslate material-icons mat-icon-no-color\">search</mat-icon>\n <input class=\"sinput color-60 w-full\" [(ngModel)]=\"searchText\" label=\"\" (input)=\"applyFilter()\"\n placeholder=\"Search Documents\" type=\"Standard\">\n <mat-icon *ngIf=\"searchText.trim().length > 0\"\n class=\"color-60 clear-icon mat-icon notranslate material-icons mat-icon-no-color cursor-pointer\"\n (click)=\"clearSearch()\">clear</mat-icon>\n </div>\n\n </div>\n\n\n\n </div>\n </div>\n <p class=\"mt-10\" style=\"font-family: 'Lato'; font-size: 18px; margin-left: 10px;\">\n {{filteredDocuments()?.length}} Documents</p>\n <table style=\"border-radius: 25px 25px 0 0;\n overflow: hidden;\n box-shadow: 0 5px 5px rgba(0, 0, 0, 0.12);\" mat-table [dataSource]=\"filteredDocuments()\" class=\"mat-elevation-z2 full-width-table mt-10\">\n\n <!-- Document Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Document </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\">\n <div>\n <div class=\"doc-title\" *ngIf=\"doc.document_name\">{{ doc.filename }}</div>\n <div class=\"doc-title\" *ngIf=\"!doc.document_name\">{{ doc.filename }}</div>\n </div>\n </td>\n </ng-container>\n\n <!-- Summary Status Column -->\n <ng-container matColumnDef=\"summary_status\">\n <th mat-header-cell *matHeaderCellDef> Summary Status </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\"> \n <span *ngIf=\"doc.summary_status === 'COMPLETED'\" class=\"success\"> {{ doc.summary_status | titlecase }} </span>\n <span *ngIf=\"doc.summary_status !== 'COMPLETED'\" class=\"in-progress\"> {{ doc.summary_status | titlecase }} </span>\n </td>\n </ng-container>\n\n <!-- Summary Text Column -->\n <!-- <ng-container matColumnDef=\"summary_text\">\n <th mat-header-cell *matHeaderCellDef> Summary </th>\n <td mat-cell *matCellDef=\"let doc\">\n <div class=\"doc-summary-text\" style=\"width: 80%;\">\n <markdown [data]=\"doc?.summary_text | slice : 0 : 200\"></markdown>\n </div>\n </td>\n </ng-container> -->\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef> Date </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\"> {{ doc.created_at | date: 'MMM d, y'}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let doc\" style=\"width: 15%;\">\n <button mat-icon-button color=\"primary\" (click)=\"downloadDoc(doc)\" matTooltip=\"Download\">\n <mat-icon>download</mat-icon>\n </button>\n\n <button style=\"margin-left: 15px;\" *ngIf=\"doc.summary_status === 'COMPLETED'\" mat-icon-button color=\"primary\"\n (click)=\"viewSummary(doc)\" matTooltip=\"View Summary\">\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button style=\"margin-left: 15px;\" *ngIf=\"doc.summary_status === 'COMPLETED'\" mat-icon-button color=\"warn\"\n (click)=\"deleteDocument(doc)\" matTooltip=\"Delete\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <!-- Header and Row Definitions -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n\n <!-- No Data Message -->\n\n </table>\n <div *ngIf=\"filteredDocuments().length === 0\" class=\"no-data-message\">\n No record found\n </div>\n <!-- Pagination -->\n <div class=\"border-1\">\n <mat-paginator [pageSize]=\"5\" [pageSizeOptions]=\"[5, 10, 20]\"></mat-paginator>\n </div>\n\n\n </mat-card>\n</div>\n\n\n<div class=\"overlay-loader\" *ngIf=\"loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n</div>", styles: [".upload-container{background:transparent;min-height:100vh;padding:24px 0;margin:0 30px 0 50px}.header{display:flex;flex-direction:row;justify-content:space-between}.primary-btn{background-color:#1b4ca1;color:#fff}.mat-card-container{background:transparent}.search .rsearch{position:relative}.search .search-icon{position:absolute;top:15px;font-size:20px;left:10px}.search .clear-icon{position:absolute;top:15px;font-size:20px;right:10px;color:#666}.search .clear-icon:hover{color:#333}.search .sinput{border-radius:32px;border:1px solid #d5d0d0;padding:15px 36px;font:400 14px Lato;width:100%}.no-data-message{text-align:center;padding:16px;font-style:italic;color:#888}.btn-disable{border-radius:var(--Radius-Full-Round, 9999999px);opacity:.4;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:48px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100%}.btn-active{border-radius:var(--Radius-Full-Round, 9999999px);opacity:1;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:48px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100%}.sub-heading p{color:#000;font-family:Montserrat;font-size:18px;font-style:normal;font-weight:600;line-height:normal}.cursor-pointer{cursor:pointer}.doc-title{font-weight:700}:host ::ng-deep .mat-mdc-header-row{position:sticky;top:0;z-index:0;background:#fff;font-size:16px;box-shadow:0 2px 4px #0000001a;padding:5px 10px}:host ::ng-deep .mat-mdc-row{font-size:16px}:host ::ng-deep .mat-mdc-cell{padding:5px 10px}:host ::ng-deep .mat-mdc-header-cell{background:#fff;font-weight:600;font-size:18px;border-bottom:2px solid #e0e0e0}:host ::ng-deep th.mat-mdc-header-cell:not(:last-child){position:relative;border-right:none;padding:5px 10px}:host ::ng-deep th.mat-mdc-header-cell:not(:last-child):after{content:\"\";position:absolute;top:12px;bottom:12px;right:0;width:1px;background-color:#e0e0e0}::ng-deep .doc-summary-text ::ng-deep markdown p{line-height:1.5rem;font-family:Lato;font-size:1rem!important;font-style:normal;font-weight:400}.mat-select-panel .search-wrapper{width:100%!important;box-sizing:border-box;padding:8px;position:sticky;top:0;z-index:2;background:#fff}.search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}::ng-deep .mat-select-panel-wrap{overflow:visible!important;padding:0;margin-top:42px}::ng-deep .mat-select-panel{border:1px solid #ccc!important;box-sizing:border-box;max-height:250px}.edit-plan{display:flex;padding:4px 10px;justify-content:center;align-items:center;gap:8px;border-radius:4px;background:#1b4ca129;color:#1b4ca1;font-family:Lato;font-size:17px;font-style:normal;font-weight:400;line-height:normal;margin-left:10px;height:30px}.select-map-route-container{display:flex;flex-direction:row;width:100%}.select-map-flex{display:flex;flex-direction:row}.select-map-flex-container{display:flex;justify-content:space-between;width:100%}.selected-mapping-route p{color:#1b4ca1;font-family:Lato;font-size:20px;font-style:normal;font-weight:400;line-height:normal;text-decoration-line:underline;text-decoration-style:solid;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.success{background:green;padding:4px 6px;color:#fff;border-radius:20px}.in-progress{background:orange;padding:4px 6px;color:#fff;border-radius:20px}.ml-10{margin-left:10px}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-10{margin-bottom:10px}.mt-1{margin-top:1px}.border-1{border-top:1px solid #ccc}\n"] }]
|
|
363
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.SharedService }, { type: i3.MatSnackBar }, { type: i4.FormBuilder }, { type: i5.Router }]; }, propDecorators: { paginator: [{
|
|
364
|
+
type: ViewChild,
|
|
365
|
+
args: [MatPaginator]
|
|
366
|
+
}] } });
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRvY3VtZW50LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvdXBsb2FkLWRvY3VtZW50LXBhZ2UvdXBsb2FkLWRvY3VtZW50LXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvdXBsb2FkLWRvY3VtZW50LXBhZ2UvdXBsb2FkLWRvY3VtZW50LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHaEYsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU10RixNQUFNLE9BQU8sMkJBQTJCO0lBeUR0QyxZQUFtQixNQUFpQixFQUFTLGFBQTRCLEVBQ2hFLFFBQXFCLEVBQ3BCLEVBQWUsRUFDaEIsTUFBYTtRQUhILFdBQU0sR0FBTixNQUFNLENBQVc7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNoRSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQTFEdEIsZUFBVSxHQUFHLElBQUksa0JBQWtCLENBQU0sRUFBRSxD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LENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFBO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQTtZQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3ZELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0FsWVEsMkJBQTJCO21HQUEzQiwyQkFBMkIsMkdBQzNCLFlBQVksZ0RDbEJ6QixpNU9BOEpNOzs0RkQ3SU8sMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjtxTUFLWCxTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFVwbG9hZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgZWxlbWVudCB9IGZyb20gJ3Byb3RyYWN0b3InO1xuaW1wb3J0IHsgTGlzdFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9saXN0LXBvcHVwL2xpc3QtcG9wdXAuY29tcG9uZW50JztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC11cGxvYWQtZG9jdW1lbnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZG9jdW1lbnQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1kb2N1bWVudC1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnRQYWdlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gIHNlbGVjdGVkTWluaXN0cnlUeXBlOiBzdHJpbmcgPSAnbWluaXN0cnknO1xuICBtaW5pc3RyeURhdGE6YW55ID0gW11cbiAgbWluaXN0cnlGdWxsRGF0YTphbnkgPSBbXVxuICByb2xlTWFwcGluZ0Zvcm0hOiBGb3JtR3JvdXA7XG4gIGRpc2FibGVCdG4gPSB0cnVlXG4gIHNlY3RvckRhdGEgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdXb21lbiBhbmQgY2hpbGQgZGV2ZWxvcG1lbnQnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ1J1cmFsIGRldmVsb3BtZW50J1xuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdVcmJhbiBkZXZlbG9wbWVudCdcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnSGVhbHRoY2FyZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnQWdyaWN1bHR1cmUnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ090aGVycydcbiAgICB9XG5cbiAgXVxuICBzZWFyY2hUZXh0ID0gJyc7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWyduYW1lJywgJ3N1bW1hcnlfc3RhdHVzJywgICdkYXRlJywgJ2FjdGlvbnMnXTtcbiAgY2JwRmluYWxPYmo6YW55PSB7fVxuICBkZXBhcnRtZW50RGF0YTphbnkgPSBbXVxuICBkb2N1bWVudHMgPSBbXG4gICAgLy8ge1xuICAgIC8vICAgbmFtZTogJ1dvcmsgQWxsb2NhdGlvbicsXG4gICAgLy8gICBvcmlnaW5hbE5hbWU6ICdBQ0JQX01pbmlzdHJ5X29mX1dvbWVuX2FuZF9DaGlsZF9EZXZlbG9wbWVudF9FeHRyYWN0Li4uJyxcbiAgICAvLyAgIHNpemU6IDQuNSxcbiAgICAvLyAgIGRhdGU6ICdPY3QgMTMsIDIwMjUnXG4gICAgLy8gfSxcbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnU2NyZWVuc2hvdCAyMDI1LTEwLTA4IGF0IDEyJyxcbiAgICAvLyAgIG9yaWdpbmFsTmFtZTogJ1NjcmVlbnNob3QgMjAyNS0xMC0wOCBhdCAxMi41NC4xOCBQTS5wbmcnLFxuICAgIC8vICAgc2l6ZTogMzMxLjgsXG4gICAgLy8gICBkYXRlOiAnT2N0IDEzLCAyMDI1J1xuICAgIC8vIH1cbiAgXTtcbiAgbG9hZGluZyA9IGZhbHNlXG4gIGZpbHRlcmVkTWluaXN0cnlEYXRhOmFueSA9IFtdXG4gIHNlYXJjaENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgcGFuZWxPcGVuID0gZmFsc2U7XG4gIGRlcGFydG1lbnRQYW5lbE9wZW4gPSBmYWxzZVxuICBmaWx0ZXJlZExpc3QgPSBbXTtcbiAgZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IFtdO1xuICBsb2dpblVzZXJPcmdJZHMgPSBbXVxuICBvcmlnaW5hbE1pbmlzdHJ5RGF0YSA9IFtdXG4gIGNicFBsYW5GaW5hbE9iajphbnlcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nLCBwdWJsaWMgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSwgXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcm91dGVyOlJvdXRlciBcbiAgKSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG1pbmlzdHJ5VHlwZTogWydtaW5pc3RyeScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbWluaXN0cnk6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHNlY3RvcnM6IFtbXV0sXG4gICAgICBkZXBhcnRtZW50czogW1tdXVxuICAgICAgXG4gICAgfSk7XG4gICAgLy8gdGhpcy5jYnBGaW5hbE9iaiA9IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDQlBQbGFuTG9jYWxTdG9yYWdlKClcbiAgICB0aGlzLmdldE1pbmlzdHJ5RGF0YSgpXG4gICBcbiAgIFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYnBQbGFuRmluYWxPYmogPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q0JQUGxhbkxvY2FsU3RvcmFnZSgpXG4gICAgY29uc29sZS5sb2coJ2NicEZpbmFsT2JqLS0nLCB0aGlzLmNicEZpbmFsT2JqKVxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHNlYXJjaFRleHQgPT4ge1xuICAgICAgaWYoc2VhcmNoVGV4dCkge1xuICAgICAgICB0aGlzLmZpbHRlck1pbmlzdHJ5RGF0YShzZWFyY2hUZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSB0aGlzLm1pbmlzdHJ5RGF0YVxuICAgICAgfVxuICAgICAgXG4gICAgfSk7XG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnN1bW1hcnlUcmlnZ2VyRXhlY3V0ZWQuc3Vic2NyaWJlKChkYXRhOmFueSk9PntcbiAgICAgIGlmKGRhdGEgJiYgZGF0YT8uZmlsZV9pZCkge1xuICAgICAgICB0aGlzLmdldFVwbG9hZGVkRG9jdW1lbnRzKClcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmKHRoaXMuY2JwUGxhbkZpbmFsT2JqICYmIHRoaXMuY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5ICYmIHRoaXMuY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIpIHtcbiAgICAgIHRoaXMuZ2V0VXBsb2FkZWREb2N1bWVudHMoKVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gIH1cblxuICBnZXRVcGxvYWRlZERvY3VtZW50cygpIHtcbiAgICBcbiAgICBsZXQgcmVxQm9keSA9IHtcbiAgICAgIHN0YXRlX2NlbnRlcl9pZDogdGhpcy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5pZGVudGlmaWVyLFxuICAgICAgaW5jbHVkZV9zdW1tYXJ5OiB0cnVlLCBcbiAgICAgIHNraXA6MCxcbiAgICAgIGxpbWl0OjIwMFxuICAgIH1cbiAgICBpZih0aGlzLmNicFBsYW5GaW5hbE9iaiAmJiB0aGlzLmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudHMgKSB7XG4gICAgICByZXFCb2R5WydkZXBhcnRtZW50X2lkJ10gPSB0aGlzLmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudHNcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIFxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXRVcGxvYWRlZERvY3VtZW50cyhyZXFCb2R5KS5zdWJzY3JpYmUoIChyZXMpPT57XG4gICAgICBpZihyZXMgJiYgcmVzPy5pdGVtcyAmJiByZXM/Lml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgdGhpcy5kb2N1bWVudHMgPSByZXM/Lml0ZW1zXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kb2N1bWVudHM7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmRvY3VtZW50cycsIHRoaXMuZG9jdW1lbnRzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgb3BlblVwbG9hZERpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICAgIGRhdGE6ICcnLFxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBcbiAgICAgIGlmKHJlc3VsdCA9PT0gJ2Nsb3NlJykge1xuICAgICAgICB0aGlzLmdldFVwbG9hZGVkRG9jdW1lbnRzKClcblxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBpZiAocmVzdWx0KSB7XG4gICAgICAgXG4gICAgICAvLyAgIHRoaXMuZG9jdW1lbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgIC8vIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZpbHRlcmVkRG9jdW1lbnRzKCkge1xuICAgLy8gY29uc29sZS5sb2coJ3RoaXMuZG9jdW1lbnRzJywgdGhpcy5kb2N1bWVudHMpXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzLmZpbHRlcihkb2MgPT4gZG9jLmZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpKTtcbiAgfVxuXG4gIGRlbGV0ZURvY3VtZW50KGRvY1RvRGVsZXRlOiBhbnkpIHtcbiAgICB0aGlzLmRvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcihkb2MgPT4gZG9jICE9PSBkb2NUb0RlbGV0ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5kZWxldGVTdW1tYXJ5KGRvY1RvRGVsZXRlPy5maWxlX2lkKS5zdWJzY3JpYmUoIChyZXMpPT57XG4gICAgICBpZihyZXMpIHtcbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmRlbGV0ZUZpbGUoZG9jVG9EZWxldGU/LmZpbGVfaWQpLnN1YnNjcmliZSgoZHJlcyk9PntcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICAgICAgaWYoZHJlcykge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRG9jdW1lbnQgRGVsZXRlZCBTdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VXBsb2FkZWREb2N1bWVudHMoKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdFcnJvciBXaGlsZSBEZWxldGluZyBEb2N1bWVudCcsICdYJywge1xuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VXBsb2FkZWREb2N1bWVudHMoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdEb2N1bWVudCBTdW1tYXJ5IERlbGV0ZWQgU3VjY2Vzc2Z1bGx5JywgJ1gnLCB7XG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0Vycm9yIFdoaWxlIERlbGV0aW5nIERvY3VtZW50IFN1bW1hcnknLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbiAgYXBwbHlGaWx0ZXIoKSB7XG5cbiAgfVxuXG4gIG9uTWluaXN0cnlUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0ucmVzZXQoKVxuICAgIFxuICAgIC8vIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KVxuICAgIHRoaXMuZ2V0TWluaXN0cnlEYXRhKClcbiAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnlUeXBlJ10gPSAgZXZlbnQudmFsdWVcbiAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicFBsYW5GaW5hbE9iaicsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmopKVxuICAgICB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID0gZXZlbnQ/LnZhbHVlXG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0uZ2V0KCdzZWN0b3JzJyk/LnNldFZhbHVlKFtdKTtcbiBcbiAgICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0uY29udHJvbHMubWluaXN0cnlUeXBlLnNldFZhbHVlKCB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlKVxuICAgfVxuXG4gICBvbk1pbmlzdHJ5Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZE1pbmlzdHJ5SWQgPSBldmVudC52YWx1ZTtcbiAgICBcbiAgIC8vIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBNaW5pc3RyeSBJRDonLCBzZWxlY3RlZE1pbmlzdHJ5SWQpO1xuXG4gICAgLy8gWW91IGNhbiBhY2Nlc3MgdGhlIHNlbGVjdGVkIG9iamVjdCBpZiBuZWVkZWRcbiAgICBjb25zdCBzZWxlY3RlZE1pbmlzdHJ5ID0gdGhpcy5taW5pc3RyeURhdGEuZmluZChpdGVtID0+IGl0ZW0uaWRlbnRpZmllciA9PT0gc2VsZWN0ZWRNaW5pc3RyeUlkKTtcbiAgICAgY29uc29sZS5sb2coJ1NlbGVjdGVkIE1pbmlzdHJ5OicsIHNlbGVjdGVkTWluaXN0cnkpO2BgXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnknXSA9ICB7aWRlbnRpZmllcjpzZWxlY3RlZE1pbmlzdHJ5SWQ/LmlkZW50aWZpZXIsbmFtZTpzZWxlY3RlZE1pbmlzdHJ5SWQ/Lm9yZ05hbWV9IFxuICAgIGlmKHNlbGVjdGVkTWluaXN0cnlJZCAmJiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGVwYXJ0bWVudExpc3Qoc2VsZWN0ZWRNaW5pc3RyeUlkKS5zdWJzY3JpYmUoKHJlcyk9PntcbiAgICAgICAgdGhpcy5kZXBhcnRtZW50RGF0YSA9IHJlc1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnlUeXBlJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUudmFsdWVcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5J10gPSB7aWRlbnRpZmllcjpzZWxlY3RlZE1pbmlzdHJ5Py5pZGVudGlmaWVyLG5hbWU6c2VsZWN0ZWRNaW5pc3RyeT8ub3JnTmFtZX0gXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydkZXBhcnRtZW50cyddID0gdGhpcy5yb2xlTWFwcGluZ0Zvcm0uY29udHJvbHMuZGVwYXJ0bWVudHMudmFsdWVcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ3NlY3RvcnMnXSA9IHRoaXMucm9sZU1hcHBpbmdGb3JtLmNvbnRyb2xzLnNlY3RvcnMudmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnlUeXBlJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUudmFsdWVcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5J10gPSB7aWRlbnRpZmllcjpzZWxlY3RlZE1pbmlzdHJ5Py5pZGVudGlmaWVyLG5hbWU6c2VsZWN0ZWRNaW5pc3RyeT8ub3JnTmFtZX0gXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqJyx0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBQbGFuRmluYWxPYmonLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKSlcbiAgICBjb25zb2xlLmxvZygndGhpcy5yb2xlTWFwcGluZ0Zvcm0nLHRoaXMucm9sZU1hcHBpbmdGb3JtKVxuICB9XG5cblxuXG4gIGZpbHRlck1pbmlzdHJ5RGF0YShzZWFyY2hUZXh0KSB7XG4gICAgXG4gICAgaWYoc2VhcmNoVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coJ3NlYXJoVGVjdCwgJywgc2VhcmNoVGV4dClcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHNlYXJjaFRleHQ/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgdGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YSA9ICFzZWFyY2hcbiAgICAgICAgPyBbLi4udGhpcy5taW5pc3RyeURhdGFdXG4gICAgICAgIDogdGhpcy5taW5pc3RyeURhdGEuZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICAgIGl0ZW0ub3JnTmFtZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzZWFyY2gpXG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgXG4gICAgfVxuXG4gICAgZ2V0TWluaXN0cnlEYXRhKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldE1pbmlzdHJ5RGF0YSh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlKS5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICBjb25zb2xlLmxvZygnZGF0YS0tJywgZGF0YSlcbiAgICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhID0gZGF0YVxuICAgICAgICB0aGlzLm1pbmlzdHJ5RGF0YSA9IFtdXG4gICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRNaW5pc3RyeVR5cGUgPT09ICdtaW5pc3RyeScpIHtcbiAgICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pPT57XG4gICAgICAgICAgICBpZihpdGVtPy5zYk9yZ1R5cGUgPT09ICdtaW5pc3RyeScpIHtcbiAgICAgICAgICAgICAgdGhpcy5taW5pc3RyeURhdGEucHVzaChpdGVtKVxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkTWluaXN0cnlEYXRhID0gWy4uLnRoaXMubWluaXN0cnlEYXRhXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSk9PntcbiAgICAgICAgICAgIGlmKGl0ZW0/LnNiT3JnVHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgICAgICAgICB0aGlzLm1pbmlzdHJ5RGF0YS5wdXNoKGl0ZW0pXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSBbLi4udGhpcy5taW5pc3RyeURhdGFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRVc2VyUHJvZmlsZURhdGEoKVxuICAgICAgfSlcbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coJ3RoaXMubWluaXN0cnlEYXRhLS0nLCB0aGlzLm1pbmlzdHJ5RGF0YSlcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmZpbHRlcmVkTWluaXN0cnlEYXRhLS0nLCB0aGlzLmZpbHRlcmVkTWluaXN0cnlEYXRhKVxuICAgIH1cblxuICAgIHJvdXRlVG9NYWluKCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYWkvJ10pO1xuICAgIH1cblxuICAgIHZpZXdTdW1tYXJ5KGRvYykge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihMaXN0UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAgIGRhdGE6IHsgZWxlbWVudDogZG9jLCB0eXBlOiAnZG9jLXN1bW1hcnknfSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJ1xuICAgICAgfSk7XG4gIFxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gTm8gbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsIGhlcmUgdG8gcmVzZXQgaW5saW5lIGV4cGFuZGVkIHN0YXRlXG4gICAgICAgIC8vIEJlY2F1c2UgeW91J3JlIHVzaW5nIGRpYWxvZywgbm90IGlubGluZSBleHBhbmQg4oCTIHZpZXcgcmVtYWlucyBpbiBpbml0aWFsIChjb2xsYXBzZWQpIHN0YXRlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkb3dubG9hZERvYyhkb2M6IGFueSk6IHZvaWQge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmRvd25sb2FkRmlsZShkb2MuZmlsZV9pZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgXG4gICAgICAgIG5leHQ6IChibG9iOiBCbG9iKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgICBhLmRvd25sb2FkID0gYCR7ZG9jPy5maWxlbmFtZX1gOyAvLyBVc2UgZHluYW1pYyBuYW1lIGlmIG5lZWRlZFxuICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgIFxuICAgICAgICAgIC8vIOKchSBTdWNjZXNzIGZlZWRiYWNrXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdGaWxlIGRvd25sb2FkZWQgc3VjY2Vzc2Z1bGx5IScsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgLy8g4p2MIEVycm9yIGZlZWRiYWNrXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0ZhaWxlZCB0byBkb3dubG9hZCB0aGUgZmlsZS4nLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3BlbmVkKG9wZW5lZDogYm9vbGVhbikge1xuICAgICAgdGhpcy5wYW5lbE9wZW4gPSBvcGVuZWQ7XG4gICAgfVxuICBcbiAgICBvbk9wZW5lZERlcGFydG1lbnQob3BlbmVkOiBib29sZWFuKSB7XG4gICAgICB0aGlzLmRlcGFydG1lbnRQYW5lbE9wZW4gPSBvcGVuZWRcbiAgICB9XG5cbiAgICBmaWx0ZXJEYXRhKGV2ZW50KSB7XG4gICAgICBpZihldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHMgPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIFxuICAgICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMubWluaXN0cnlEYXRhLmZpbHRlcih4ID0+XG4gICAgICAgICAgeC5vcmdOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gdGhpcy5taW5pc3RyeURhdGFcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgXG4gICAgZmlsdGVyRGVwYXJ0bWVudERhdGEoZXZlbnQpIHtcbiAgICAgIGlmKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgcyA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgXG4gICAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudERhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgICB4Lm9yZ05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERlcGFydG1lbnRMaXN0ID0gdGhpcy5kZXBhcnRtZW50RGF0YVxuICAgICAgfVxuICAgICAgXG4gICAgfVxuXG4gICAgZ2V0VXNlclByb2ZpbGVEYXRhKCkge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFVzZXJQcm9maWxlKCkuc3Vic2NyaWJlKChkYXRhKT0+e1xuICAgICAgICBjb25zb2xlLmxvZygnZGF0YS0tJywgZGF0YSlcbiAgICAgICAgdGhpcy5sb2dpblVzZXJPcmdJZHMgPSBkYXRhPy5vcmdhbml6YXRpb25faWRzXG4gICAgICAgIGxldCBmaWx0ZXJlZE1pbmlzdHJ5RGF0YSA9ICBbXVxuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5taW5pc3RyeUZ1bGxEYXRhLS0nLHRoaXMubWluaXN0cnlGdWxsRGF0YSlcbiAgICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhLm1hcCgoaXRlbSk9PntcbiAgICAgICAgICBpZih0aGlzLmxvZ2luVXNlck9yZ0lkcy5pbmRleE9mKGl0ZW0/LmlkZW50aWZpZXIpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkTWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gIFxuICAgICAgICB0aGlzLm1pbmlzdHJ5RGF0YSA9IGZpbHRlcmVkTWluaXN0cnlEYXRhXG4gICAgICAgIHRoaXMub3JpZ2luYWxNaW5pc3RyeURhdGEgPSBmaWx0ZXJlZE1pbmlzdHJ5RGF0YVxuICAgICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IGZpbHRlcmVkTWluaXN0cnlEYXRhO1xuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5maWx0ZXJlZExpc3QtLScsIHRoaXMuZmlsdGVyZWRMaXN0KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByb3V0ZVRvSW5pdGlhbCgpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FpL2luaXRpYWwnXSk7XG4gICAgfVxuXG59XG5cbiIsIjxkaXYgY2xhc3M9XCJ1cGxvYWQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmcgbXQtMTAgbWItMTAgbWwtMTAgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxwIChjbGljayk9XCJyb3V0ZVRvSW5pdGlhbCgpXCI+PG1hdC1pY29uIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTEwXCI+QmFjayB0byBSb2xlIE1hcHBpbmcgR2VuZXJhdGlvbjwvc3Bhbj48L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWNhcmQtY29udGFpbmVyIG10LTIwXCIgW2Zvcm1Hcm91cF09XCJyb2xlTWFwcGluZ0Zvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHA+Q0JQIERvY3VtZW50IExpYnJhcnk8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgXG4gICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVkaXQtc2VjdGlvbiBtdC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LW1hcC1yb3V0ZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LW1hcC1mbGV4LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LW1hcC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbWFwcGluZy1yb3V0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7Y2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8ub3JnTmFtZX19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHt7Y2JwUGxhbkZpbmFsT2JqPy5kZXBhcnRtZW50X25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LXBsYW4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicm91dGVUb0luaXRpYWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5FZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1sLTEwXCI+LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWFjdGl2ZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJtb3ZlVG9Jbml0aWFsU2NyZWVuTGF5b3V0KCdhZGQnKVwiPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgQ0JQLS0+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4tLT5cbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbbmdDbGFzc109XCIhKGNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWUpID8gJ2J0bi1kaXNhYmxlJzonYnRuLWFjdGl2ZSdcIiBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhKGNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWUpXCIgKGNsaWNrKT1cIm9wZW5VcGxvYWREaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj51cGxvYWQ8L21hdC1pY29uPiBVcGxvYWQgRG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG5cblxuXG4gICAgPC9tYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICA8cD5VcGxvYWRlZCBEb2N1bWVudHMgKE1heC4gMTAgRG9jdW1lbnRzIGFyZSBhbGxvd2VkKTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2ggZmxleCBtYXJnaW4tcmlnaHQtbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItNjAgc2VhcmNoLWljb24gbWF0LWljb24gbm90cmFuc2xhdGUgbWF0ZXJpYWwtaWNvbnMgbWF0LWljb24tbm8tY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2lucHV0IGNvbG9yLTYwIHctZnVsbFwiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIGxhYmVsPVwiXCIgKGlucHV0KT1cImFwcGx5RmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIERvY3VtZW50c1wiIHR5cGU9XCJTdGFuZGFyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvci02MCBjbGVhci1pY29uIG1hdC1pY29uIG5vdHJhbnNsYXRlIG1hdGVyaWFsLWljb25zIG1hdC1pY29uLW5vLWNvbG9yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJtdC0xMFwiIHN0eWxlPVwiZm9udC1mYW1pbHk6ICdMYXRvJzsgZm9udC1zaXplOiAxOHB4OyBtYXJnaW4tbGVmdDogMTBweDtcIj5cbiAgICAgICAgICAgIHt7ZmlsdGVyZWREb2N1bWVudHMoKT8ubGVuZ3RofX0gRG9jdW1lbnRzPC9wPlxuICAgICAgICA8dGFibGUgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4IDI1cHggMCAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3gtc2hhZG93OiAwIDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZmlsdGVyZWREb2N1bWVudHMoKVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MiBmdWxsLXdpZHRoLXRhYmxlIG10LTEwXCI+XG5cbiAgICAgICAgICAgIDwhLS0gRG9jdW1lbnQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRG9jdW1lbnQgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZG9jXCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy10aXRsZVwiICpuZ0lmPVwiZG9jLmRvY3VtZW50X25hbWVcIj57eyBkb2MuZmlsZW5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtdGl0bGVcIiAqbmdJZj1cIiFkb2MuZG9jdW1lbnRfbmFtZVwiPnt7IGRvYy5maWxlbmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBTdGF0dXMgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdW1tYXJ5X3N0YXR1c1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFN1bW1hcnkgU3RhdHVzIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGRvY1wiIHN0eWxlPVwid2lkdGg6IDE1JTtcIj4gXG4gICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb2Muc3VtbWFyeV9zdGF0dXMgPT09ICdDT01QTEVURUQnXCIgY2xhc3M9XCJzdWNjZXNzXCI+IHt7IGRvYy5zdW1tYXJ5X3N0YXR1cyB8IHRpdGxlY2FzZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb2Muc3VtbWFyeV9zdGF0dXMgIT09ICdDT01QTEVURUQnXCIgY2xhc3M9XCJpbi1wcm9ncmVzc1wiPiB7eyBkb2Muc3VtbWFyeV9zdGF0dXMgfCB0aXRsZWNhc2UgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBTdW1tYXJ5IFRleHQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1bW1hcnlfdGV4dFwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFN1bW1hcnkgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZG9jXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2Mtc3VtbWFyeS10ZXh0XCIgc3R5bGU9XCJ3aWR0aDogODAlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hcmtkb3duIFtkYXRhXT1cImRvYz8uc3VtbWFyeV90ZXh0IHwgc2xpY2UgOiAwIDogMjAwXCI+PC9tYXJrZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgICAgICAgICAgPCEtLSBEYXRlIENvbHVtbiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGF0ZVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IERhdGUgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZG9jXCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPiB7eyBkb2MuY3JlYXRlZF9hdCB8IGRhdGU6ICdNTU0gZCwgeSd9fSA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGRvY1wiIHN0eWxlPVwid2lkdGg6IDE1JTtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImRvd25sb2FkRG9jKGRvYylcIiBtYXRUb29sdGlwPVwiRG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtcIiAqbmdJZj1cImRvYy5zdW1tYXJ5X3N0YXR1cyA9PT0gJ0NPTVBMRVRFRCdcIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3U3VtbWFyeShkb2MpXCIgbWF0VG9vbHRpcD1cIlZpZXcgU3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnZpc2liaWxpdHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE1cHg7XCIgKm5nSWY9XCJkb2Muc3VtbWFyeV9zdGF0dXMgPT09ICdDT01QTEVURUQnXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRG9jdW1lbnQoZG9jKVwiIG1hdFRvb2x0aXA9XCJEZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gSGVhZGVyIGFuZCBSb3cgRGVmaW5pdGlvbnMgLS0+XG4gICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cblxuICAgICAgICAgICAgPCEtLSBObyBEYXRhIE1lc3NhZ2UgLS0+XG5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkRG9jdW1lbnRzKCkubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1kYXRhLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIE5vIHJlY29yZCBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLTFcIj5cbiAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtwYWdlU2l6ZV09XCI1XCIgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDIwXVwiPjwvbWF0LXBhZ2luYXRvcj5cbiAgICAgICAgPC9kaXY+XG5cblxuICAgIDwvbWF0LWNhcmQ+XG48L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { PipePublicURL } from './pipe-public-URL.pipe';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PipePublicURLModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURLModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURLModule, declarations: [PipePublicURL], imports: [CommonModule], exports: [PipePublicURL] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURLModule, imports: [CommonModule] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURLModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [PipePublicURL],
|
|
14
|
+
imports: [
|
|
15
|
+
CommonModule,
|
|
16
|
+
],
|
|
17
|
+
exports: [PipePublicURL],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wdWJsaWMtVVJMLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9waXBlLXB1YmxpYy1VUkwvcGlwZS1wdWJsaWMtVVJMLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7O0FBU3RELE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLGlCQU5mLGFBQWEsYUFFMUIsWUFBWSxhQUVKLGFBQWE7Z0hBRVosbUJBQW1CLFlBSjVCLFlBQVk7OzRGQUlILG1CQUFtQjtrQkFQL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQzdCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBQaXBlUHVibGljVVJMIH0gZnJvbSAnLi9waXBlLXB1YmxpYy1VUkwucGlwZSdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUGlwZVB1YmxpY1VSTF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtQaXBlUHVibGljVVJMXSxcbn0pXG5leHBvcnQgY2xhc3MgUGlwZVB1YmxpY1VSTE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../modules/shared/services/shared.service";
|
|
4
|
+
export class PipePublicURL {
|
|
5
|
+
constructor(sharedSvc) {
|
|
6
|
+
this.sharedSvc = sharedSvc;
|
|
7
|
+
}
|
|
8
|
+
transform(value) {
|
|
9
|
+
let configDetails = this.sharedSvc.getConfig();
|
|
10
|
+
const mainUrl = value && value.split('/content').pop() || '';
|
|
11
|
+
const finalURL = `${configDetails.portalURL}/${configDetails.contentBucket}/content${mainUrl}`;
|
|
12
|
+
return value ? finalURL : '';
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURL, deps: [{ token: i1.SharedService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
15
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURL, name: "pipePublicURL" }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PipePublicURL, decorators: [{
|
|
18
|
+
type: Pipe,
|
|
19
|
+
args: [{
|
|
20
|
+
name: 'pipePublicURL',
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: function () { return [{ type: i1.SharedService }]; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wdWJsaWMtVVJMLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvcGlwZS1wdWJsaWMtVVJML3BpcGUtcHVibGljLVVSTC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWtCLE1BQU0sZUFBZSxDQUFBOzs7QUFNcEQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFBc0IsU0FBd0I7UUFBeEIsY0FBUyxHQUFULFNBQVMsQ0FBZTtJQUU5QyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7UUFDNUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxhQUFhLFdBQVcsT0FBTyxFQUFFLENBQUE7UUFDOUYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzlCLENBQUM7K0dBVFUsYUFBYTs2R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsICBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcbkBQaXBlKHtcbiAgbmFtZTogJ3BpcGVQdWJsaWNVUkwnLFxufSlcbmV4cG9ydCBjbGFzcyBQaXBlUHVibGljVVJMIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKCAgcHJpdmF0ZSBzaGFyZWRTdmM6IFNoYXJlZFNlcnZpY2UsICkge1xuXG4gIH1cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjb25maWdEZXRhaWxzID0gdGhpcy5zaGFyZWRTdmMuZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgbWFpblVybCA9IHZhbHVlICYmIHZhbHVlLnNwbGl0KCcvY29udGVudCcpLnBvcCgpIHx8ICcnXG4gICAgY29uc3QgZmluYWxVUkwgPSBgJHtjb25maWdEZXRhaWxzLnBvcnRhbFVSTH0vJHtjb25maWdEZXRhaWxzLmNvbnRlbnRCdWNrZXR9L2NvbnRlbnQke21haW5Vcmx9YFxuICAgIHJldHVybiB2YWx1ZSA/IGZpbmFsVVJMIDogJydcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ai-cbp
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ai-cbp.service';
|
|
5
|
+
export * from './lib/ai-cbp.component';
|
|
6
|
+
export * from './lib/ai-cbp.module';
|
|
7
|
+
export * from './lib/modules/upload-document-page/upload-document-page.component';
|
|
8
|
+
export * from './lib/modules/initial-screen/initial-screen.component';
|
|
9
|
+
export * from './lib/components/role-mapping-generation/role-mapping-generation.component';
|
|
10
|
+
export * from './lib/components/role-mapping-list/role-mapping-list.component';
|
|
11
|
+
export * from './lib/components/approval-requests/approval-requests.component';
|
|
12
|
+
export * from './lib/components/dashboard/dashboard.component';
|
|
13
|
+
export * from './lib/components/review-request/review-request.component';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQztBQUdwQyxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsdURBQXVELENBQUM7QUFFdEUsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDBEQUEwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhaS1jYnBcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9haS1jYnAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haS1jYnAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FpLWNicC5tb2R1bGUnO1xuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvdXBsb2FkLWRvY3VtZW50LXBhZ2UvdXBsb2FkLWRvY3VtZW50LXBhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvaW5pdGlhbC1zY3JlZW4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yb2xlLW1hcHBpbmctZ2VuZXJhdGlvbi9yb2xlLW1hcHBpbmctZ2VuZXJhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yb2xlLW1hcHBpbmctbGlzdC9yb2xlLW1hcHBpbmctbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hcHByb3ZhbC1yZXF1ZXN0cy9hcHByb3ZhbC1yZXF1ZXN0cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Jldmlldy1yZXF1ZXN0L3Jldmlldy1yZXF1ZXN0LmNvbXBvbmVudCc7Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC1jYi1jYnAtYWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9zdW5iaXJkLWNiLWNicC1haS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|