vcomply-workflow-engine 6.1.1 → 6.1.3
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/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +7 -34
- package/esm2022/lib/constants/api.constants.mjs +6 -1
- package/esm2022/lib/constants/assets.constants.mjs +1 -2
- package/esm2022/lib/interfaces/frequency.interface.mjs +2 -0
- package/esm2022/lib/interfaces/iframe-type.mjs +7 -0
- package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
- package/esm2022/lib/more-option/more-option.component.mjs +26 -191
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +3 -2
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +4 -7
- package/esm2022/lib/services/common.service.mjs +40 -1
- package/esm2022/lib/services/iframe.service.mjs +14 -1
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -6
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +7 -7
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection.module.mjs +27 -4
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +10 -21
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +2 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +6 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +3 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +3 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +9 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +4 -2
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +267 -5
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +5 -2
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +48 -16
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +8 -4
- package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +52 -0
- package/esm2022/lib/sharedComponents/program-list/constant.mjs +27 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +23 -0
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +273 -0
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +51 -0
- package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +27 -0
- package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +32 -0
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -0
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +19 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +45 -17
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +13 -10
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +62 -35
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +15 -2
- package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +26 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +8 -3
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +294 -453
- package/esm2022/lib/workflow-engine-container/api-constants.mjs +3 -2
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +32 -53
- package/esm2022/lib/workflow-engine.module.mjs +11 -16
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +46 -29
- package/esm2022/lib/workflow-program/constants.mjs +3 -10
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +1 -3
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +13 -8
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +340 -304
- package/esm2022/lib/workflow-services/policy.service.mjs +8 -9
- package/esm2022/lib/workflow-services/programs.service.mjs +26 -114
- package/esm2022/lib/workflow-services/responsibility.service.mjs +60 -56
- package/fesm2022/vcomply-workflow-engine.mjs +9472 -8948
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +0 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +0 -3
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +0 -1
- package/lib/constants/api.constants.d.ts +5 -0
- package/lib/constants/assets.constants.d.ts +0 -1
- package/lib/interfaces/frequency.interface.d.ts +37 -0
- package/lib/interfaces/iframe-type.d.ts +5 -0
- package/lib/interfaces/responsibilty.interface.d.ts +13 -13
- package/lib/log-an-issue/log-an-issue.component.d.ts +0 -1
- package/lib/more-option/more-option.component.d.ts +0 -1
- package/lib/report-a-case/components/assignee/assignee.component.d.ts +0 -1
- package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +0 -1
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +0 -1
- package/lib/report-a-case/components/case-details/case-details.component.d.ts +0 -1
- package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +0 -1
- package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +0 -1
- package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +0 -1
- package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +0 -1
- package/lib/report-a-case/components/due-date/due-date.component.d.ts +0 -1
- package/lib/report-a-case/components/field-holder/field-holder.component.d.ts +0 -1
- package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +0 -1
- package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +0 -1
- package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +0 -1
- package/lib/report-a-case/components/report-date/report-date.component.d.ts +0 -1
- package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +0 -1
- package/lib/services/common.service.d.ts +28 -0
- package/lib/services/iframe.service.d.ts +6 -0
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +0 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +0 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +0 -6
- package/lib/sharedComponents/category-list/category-list.component.d.ts +0 -1
- package/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.d.ts +0 -1
- package/lib/sharedComponents/category-list-selection/category-list-selection.module.d.ts +5 -5
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +0 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +0 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -5
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -0
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts +92 -2
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +0 -1
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +0 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +2 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +2 -1
- package/lib/sharedComponents/list-container/list-container.component.d.ts +9 -0
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +0 -1
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +0 -1
- package/lib/sharedComponents/program-list/constant.d.ts +20 -0
- package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +4 -0
- package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +5 -0
- package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +7 -0
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +126 -0
- package/lib/sharedComponents/program-list/program-list.module.d.ts +15 -0
- package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +7 -0
- package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +14 -0
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +0 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +0 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +0 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +0 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +0 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +0 -1
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +0 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +0 -1
- package/lib/ui-kit/loaders/loaders.module.d.ts +8 -0
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -0
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +0 -1
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +5 -1
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +0 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +3 -1
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +6 -2
- package/lib/workflow/shared/services/grc.service.d.ts +1 -0
- package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +7 -0
- package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +3 -2
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +0 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +0 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +32 -11
- package/lib/workflow-engine-container/api-constants.d.ts +1 -0
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +5 -2
- package/lib/workflow-engine.module.d.ts +3 -2
- package/lib/workflow-policy/workflow-policy.component.d.ts +9 -1
- package/lib/workflow-program/constants.d.ts +0 -2
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +0 -1
- package/lib/workflow-program/workflow-program.component.d.ts +9 -11
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -2
- package/lib/workflow-services/policy.service.d.ts +1 -1
- package/lib/workflow-services/programs.service.d.ts +13 -54
- package/lib/workflow-services/responsibility.service.d.ts +17 -4
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +0 -1
- package/package.json +1 -1
- package/esm2022/lib/constants/policy.constant.mjs +0 -6
- package/esm2022/lib/constants/regix.constants.mjs +0 -4
- package/esm2022/lib/constants/responsibility.mjs +0 -8
- package/esm2022/lib/interfaces/policy.interface.mjs +0 -2
- package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +0 -19
- package/lib/constants/policy.constant.d.ts +0 -2
- package/lib/constants/regix.constants.d.ts +0 -3
- package/lib/constants/responsibility.d.ts +0 -7
- package/lib/interfaces/policy.interface.d.ts +0 -5
- package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +0 -7
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HttpHeaders, HttpParams } from '@angular/common/http';
|
|
2
2
|
import { Injectable, Optional } from '@angular/core';
|
|
3
3
|
import { retry } from 'rxjs';
|
|
4
|
+
import dayjs from 'dayjs';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common/http";
|
|
6
7
|
import * as i2 from "../../../workflow-services/auth.service";
|
|
@@ -63,6 +64,18 @@ export class GrcService {
|
|
|
63
64
|
this.env = config.envConfig;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
67
|
+
getAllResponsibilities(pageNo) {
|
|
68
|
+
const businessCycle = this.getBusinessCycle();
|
|
69
|
+
const formattedCycle = businessCycle.selected_cycle
|
|
70
|
+
? dayjs(businessCycle.selected_cycle.split('-')[0]).format('YYYY-MM-DD') +
|
|
71
|
+
':' +
|
|
72
|
+
dayjs(businessCycle.selected_cycle.split('-')[1]).format('YYYY-MM-DD')
|
|
73
|
+
: '';
|
|
74
|
+
const headers = new HttpHeaders()
|
|
75
|
+
.set('token', this.authService.getAuthorizationToken())
|
|
76
|
+
.set('biz_cycle', formattedCycle);
|
|
77
|
+
return this.http.get(this.env.complianceGet + `sailsResponsibilitiesList&page=${pageNo}&limit=30`, { headers });
|
|
78
|
+
}
|
|
66
79
|
getGRCList(event) {
|
|
67
80
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
68
81
|
let params = new HttpParams();
|
|
@@ -280,7 +293,7 @@ export class GrcService {
|
|
|
280
293
|
(payload?.searchText ? '&q=' + encodeURI(payload?.searchText) : '') +
|
|
281
294
|
(payload?.name ? '&sortBy=' + payload?.name : '') +
|
|
282
295
|
(payload?.sortingCount ? '&sortValue=' + payload?.sortingCount : '') +
|
|
283
|
-
('&page=' + payload?.page
|
|
296
|
+
('&page=' + payload?.page), { headers })
|
|
284
297
|
.pipe(retry(1));
|
|
285
298
|
}
|
|
286
299
|
getResponsibilityByCategoryId(req, payload, filterPolicyData) {
|
|
@@ -307,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
307
320
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
308
321
|
type: Optional
|
|
309
322
|
}] }]; } });
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU03QixNQUFNLE9BQU8sVUFBVTthQUVFLGtCQUFhLEdBQUc7UUFDckMsSUFBSSxFQUFFLE9BQU87UUFDYixZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUUsRUFBRSxpQkFBaUI7UUFDckIsV0FBVyxFQUFFLHVDQUF1QztLQUNyRCxDQUFDO0lBNkNGLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTlDbEIsZ0JBQVcsR0FBVztZQUNwQyxJQUFJLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUM7WUFDUixjQUFjLEVBQUUsRUFBRTtZQUNsQixNQUFNLEVBQUUsRUFBRTtZQUNWLDZCQUE2QixFQUFFLEVBQUU7WUFDakMsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsRUFBRTtZQUNiLFVBQVUsRUFBRSxFQUFFO1lBQ2QsTUFBTSxFQUFFLEVBQUU7WUFDVixvQkFBb0IsRUFBRSxFQUFFO1lBQ3hCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUVjLGdCQUFXLEdBQWU7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cUIsRUFBRSxXQUFXLENBQUM7YUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBdldVLFVBQVU7bUhBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5REksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkZEdyYywgQXR0cmlidXRlc0RldGFpbHMsIExpc3RPYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FkZC1ncmMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JjU2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgaWQ6ICdncmNfZGVzY3JpcHRpb24nLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgR1JDIE9iamVjdCcsXG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBHUkNfUEFZTE9BRDogQWRkR3JjID0ge1xuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcbiAgICBzdGF0ZTogMCxcbiAgICBwYXJlbnRfZ3JjX2lkczogW10sXG4gICAgb3duZXJzOiBbXSxcbiAgICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogW10sXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGZyZXF1ZW5jeTogJycsXG4gICAgYXR0cmlidXRlczogW10sXG4gICAgcmNfaWRzOiBbXSxcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXG4gICAgcmlza19jYXRlZ29yeV9pZHM6IFtdLFxuICAgIGxpbmtlZF9HUkNfaWRzOiBbXSxcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgTElTVF9PQkpFQ1Q6IExpc3RPYmplY3QgPSB7XG4gICAgUkM6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBPV05FUjoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IFtdLFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcbiAgICB9LFxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgUklTS19DQVRFR09SWToge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgfTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRHUkNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzdGF0ZScsIGV2ZW50Py5zdGF0ZSA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdncmNUeXBlJywgZXZlbnQ/LnR5cGUgPz8gMCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIGV2ZW50Py5wYWdlTm8gPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmNJZHMnLCBldmVudD8ucmNfaWRzID8/ICcnKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmdyY19nZXQgKyAnZ3JjL2dldEdSQ0xpc3QnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRHUkNUYWJzQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgnbmFtZScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICBpZiAoZXZlbnQ/LnJjX2lkcykge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmNJZHMnLCBldmVudD8ucmNfaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmdyY19nZXQgKyAnZ3JjL2dldEdSQ0NvdW50Jywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrVmFsaWRhdGlvbihncmNQYXlsb2FkOiBBZGRHcmMsIGlzQXR0cmlidXRlc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgY29uc3QgaXNWYWxpZERhdGEgPVxuICAgICAgZ3JjUGF5bG9hZC5uYW1lLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgIGdyY1BheWxvYWQudHlwZSA+IC0xICYmXG4gICAgICBncmNQYXlsb2FkLm93bmVycy5sZW5ndGggJiZcbiAgICAgIGdyY1BheWxvYWQucmNfaWRzLmxlbmd0aDtcbiAgICByZXR1cm4gKFxuICAgICAgaXNWYWxpZERhdGEgJiZcbiAgICAgICghaXNBdHRyaWJ1dGVzU2VsZWN0ZWQgfHxcbiAgICAgICAgdGhpcy5jaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzKSlcbiAgICApO1xuICB9XG5cbiAgY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAob2JqLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICAgIGNvbnN0IGNob2ljZSA9IG9iai5jaG9pY2VzWzBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKG9iai5oYXNPdGhlciAmJiBvYmo/LmlzX290aGVyX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xuICAgICAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0F0dHJpYnV0ZXNTZWxlY3RlZChhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICBjb25zdCBjaG9pY2UgPSBvYmouY2hvaWNlc1swXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnY2hlY2tib3gnIHx8IG9iai50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIG9iai5jaG9pY2VzKSB7XG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tFYWNoQXR0cmlidXRlVmFsaWRhdGlvbihhdHRyaWJ1dGU6IEF0dHJpYnV0ZXNEZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgaWYgKGF0dHJpYnV0ZS5pc1JlcXVpcmVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8XG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZGF0ZS10aW1lJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZSA9IGF0dHJpYnV0ZS5jaG9pY2VzWzBdO1xuICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnY2hlY2tib3gnIHx8XG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZHJvcGRvd24nXG4gICAgICApIHtcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2YgYXR0cmlidXRlLmNob2ljZXMpIHtcbiAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZ2V0Umlza0NhdGVnb3JpZXMoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JldHVyblR5cGUnLCAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjYXRlZ29yeVR5cGUnLCBldmVudD8udHlwZSA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgZXZlbnQ/LnBhZ2VObyA/PyAxKTtcbiAgICBwYXJhbXMgPSBldmVudD8udHlwZSA9PT0gMCA/IHBhcmFtcy5hcHBlbmQoJ3Jpc2tGbGFnJywgMSkgOiBwYXJhbXM7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9saXN0Jywge1xuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJpc2tDYXRlZ29yaWVzQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgncScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICBpZiAoZXZlbnQ/LnJjX2lkcz8ubGVuZ3RoKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyY19pZHMnLCBldmVudC5yY19pZHMuam9pbignLCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L2NvdW50Jywge1xuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJpc2tzKHBheWxvYWQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4oXG4gICAgICB0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9yaXNrbGlzdCcsXG4gICAgICBwYXlsb2FkLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRCdXNpbmVzc0N5Y2xlKCkge1xuICAgIGxldCBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gICAgbGV0IGN1cnJlbnRCdXNpbmVzc0N5Y2xlID0ge1xuICAgICAgc2VsZWN0ZWRfY3ljbGU6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlXG4gICAgICAgIDogJycsXG4gICAgICBzdGFydF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSA6ICcnLFxuICAgICAgZW5kX2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZSA6ICcnLFxuICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgICByZXR1cm4gY3VycmVudEJ1c2luZXNzQ3ljbGU7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3QocmVxOiBhbnkpIHtcbiAgICAvLyB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBpZiAocmVxPy5wYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcS5wYXJhbXM7XG4gICAgfVxuICAgIGlmIChyZXE/LmhlYWRlcnMpIHtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcS5oZWFkZXJzKVxuICAgICAgKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBodHRwT3B0aW9ucy5oZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3Rva2VuJyxcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvY2F0ZWdvcmllc0xpc3Q/b3duZXJfbGlzdD0xJyxcbiAgICAgICAgaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFByb2dyYW1zTGlzdENvdW50KHJlcTogYW55KSB7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBpZiAocmVxPy5wYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcS5wYXJhbXM7XG4gICAgfVxuICAgIGlmIChyZXE/LmhlYWRlcnMpIHtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcT8uaGVhZGVycylcbiAgICAgICk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaHR0cE9wdGlvbnMuaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICd0b2tlbicsXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnL292ZXJ2aWV3LWNvdW50JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRTdWJDYXRlZ29yeUxpc3QocGF5bG9hZDogYW55KSB7XG4gICAgaWYgKHBheWxvYWQ/LnNjb3BlVHlwZSA9PT0gJ25vdF9jb21wbGV0ZWQnKSB7XG4gICAgICBwYXlsb2FkLnNjb3BlVHlwZSA9ICdub3RDb21wbGV0ZWQnO1xuICAgIH1cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICBKU09OLnN0cmluZ2lmeShwYXlsb2FkPy5idXNpbmVzc0N5Y2xlKVxuICAgICk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55PihcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICAgJy9zdWJDYXRlZ29yaWVzP2lzQnVzaW5lc3NDeWNsZT10cnVlJnBhcmVudElkPScgK1xuICAgICAgICAgIHBheWxvYWQ/LmlkICtcbiAgICAgICAgICAnJnR5cGU9JyArXG4gICAgICAgICAgcGF5bG9hZD8uc2NvcGVUeXBlICtcbiAgICAgICAgICAnJmNhbGxGcm9tPWdyYycgK1xuICAgICAgICAgIChwYXlsb2FkPy5zZWFyY2hUZXh0ID8gJyZxPScgKyBlbmNvZGVVUkkocGF5bG9hZD8uc2VhcmNoVGV4dCkgOiAnJykgK1xuICAgICAgICAgIChwYXlsb2FkPy5uYW1lID8gJyZzb3J0Qnk9JyArIHBheWxvYWQ/Lm5hbWUgOiAnJykgK1xuICAgICAgICAgIChwYXlsb2FkPy5zb3J0aW5nQ291bnQgPyAnJnNvcnRWYWx1ZT0nICsgcGF5bG9hZD8uc29ydGluZ0NvdW50IDogJycpICtcbiAgICAgICAgICAoJyZwYWdlPScgKyBwYXlsb2FkPy5wYWdlID8/IDEpLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlCeUNhdGVnb3J5SWQoXG4gICAgcmVxOiBhbnksXG4gICAgcGF5bG9hZD86IGFueSxcbiAgICBmaWx0ZXJQb2xpY3lEYXRhPzogYW55XG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnlcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcTtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgneC1idXNpbmVzcy1jeWNsZScsSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgncGF5bG9hZC1vYmplY3QnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvcmVzcG9uc2liaWxpdHlMaXN0JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cbn1cbiJdfQ==
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFLMUIsTUFBTSxPQUFPLFVBQVU7YUFFRSxrQkFBYSxHQUFHO1FBQ3JDLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQztJQTZDRixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE5Q2xCLGdCQUFXLEdBQVc7WUFDcEMsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxFQUFFLEVBQUU7WUFDViw2QkFBNkIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysb0JBQW9CLEVBQUUsRUFBRTtZQUN4QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxF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QyxDQUFDLGFBQWEsR0FBRyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEUsQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUM1QixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2QkFBNkIsQ0FDM0IsR0FBUSxFQUNSLE9BQWEsRUFDYixnQkFBc0I7UUFFdEIsb0RBQW9EO1FBQ3BELElBQUksV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUMxQixXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUN6QixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLHdFQUF3RTtRQUN4RSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLFdBQVcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLEdBQUcscUJBQXFCLEVBQUUsV0FBVyxDQUFDO2FBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDOytHQXhYVSxVQUFVO21IQUFWLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBeURJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRHcmMsIEF0dHJpYnV0ZXNEZXRhaWxzLCBMaXN0T2JqZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9hZGQtZ3JjJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHcmNTZXJ2aWNlIHtcbiAgZW52ITogYW55O1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVESVRPUl9DT05GSUcgPSB7XG4gICAgbW9kZTogJ3ByaW1lJyxcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgbGluazogdHJ1ZSxcbiAgICBpZDogJ2dyY19kZXNjcmlwdGlvbicsXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBHUkMgT2JqZWN0JyxcbiAgfTtcbiAgcHVibGljIHJlYWRvbmx5IEdSQ19QQVlMT0FEOiBBZGRHcmMgPSB7XG4gICAgbmFtZTogJycsXG4gICAgdHlwZTogMywgLy9Bc3NldHMtIDAsIEludmVudG9yeS0gMSwgUHJvY2Vzc2VzIC0gMiwgVmVuZG9ycy0gM1xuICAgIHN0YXRlOiAwLFxuICAgIHBhcmVudF9ncmNfaWRzOiBbXSxcbiAgICBvd25lcnM6IFtdLFxuICAgIGVtYWlsX25vdGlmaWNhdGlvbl9tZW1iZXJfaWRzOiBbXSxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgZnJlcXVlbmN5OiAnJyxcbiAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICByY19pZHM6IFtdLFxuICAgIHByb2dyYW1fY2F0ZWdvcnlfaWRzOiBbXSxcbiAgICByaXNrX2NhdGVnb3J5X2lkczogW10sXG4gICAgbGlua2VkX0dSQ19pZHM6IFtdLFxuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBMSVNUX09CSkVDVDogTGlzdE9iamVjdCA9IHtcbiAgICBSQzoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IFtdLFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIE9XTkVSOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YTogW10sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgICAgZGlzYWJsZWRJZHM6IFtdLFxuICAgIH0sXG4gICAgT1RIRVJfR1JDX09CSkVDVFM6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBSSVNLX0NBVEVHT1JZOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgUFJPR1JBTV9SRVNQT05TSUJJTElUWToge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICB9O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcbiAgKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGdldEFsbFJlc3BvbnNpYmlsaXRpZXMocGFnZU5vOiBudW1iZXIpIHtcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gdGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkQ3ljbGUgPSBidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlXG4gICAgICA/IGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVswXSkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyBcbiAgICAgICAgJzonICsgXG4gICAgICAgIGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVsxXSkuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgIDogJyc7XG4gICAgXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXG4gICAgICAuc2V0KCdiaXpfY3ljbGUnLCBmb3JtYXR0ZWRDeWNsZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArIGBzYWlsc1Jlc3BvbnNpYmlsaXRpZXNMaXN0JnBhZ2U9JHtwYWdlTm99JmxpbWl0PTMwYCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEdSQ0xpc3QoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3N0YXRlJywgZXZlbnQ/LnN0YXRlID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2dyY1R5cGUnLCBldmVudD8udHlwZSA/PyAwKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgZXZlbnQ/LnBhZ2VObyA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMgPz8gJycpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgnbmFtZScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8uZ3JjX2dldCArICdncmMvZ2V0R1JDTGlzdCcsIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldEdSQ1RhYnNDb3VudChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIGlmIChldmVudD8ucmNfaWRzKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8uZ3JjX2dldCArICdncmMvZ2V0R1JDQ291bnQnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWYWxpZGF0aW9uKGdyY1BheWxvYWQ6IEFkZEdyYywgaXNBdHRyaWJ1dGVzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1ZhbGlkRGF0YSA9XG4gICAgICBncmNQYXlsb2FkLm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgZ3JjUGF5bG9hZC50eXBlID4gLTEgJiZcbiAgICAgIGdyY1BheWxvYWQub3duZXJzLmxlbmd0aCAmJlxuICAgICAgZ3JjUGF5bG9hZC5yY19pZHMubGVuZ3RoO1xuICAgIHJldHVybiAoXG4gICAgICBpc1ZhbGlkRGF0YSAmJlxuICAgICAgKCFpc0F0dHJpYnV0ZXNTZWxlY3RlZCB8fFxuICAgICAgICB0aGlzLmNoZWNrQXR0cmlidXRlVmFsaWRhdGlvbihncmNQYXlsb2FkLmF0dHJpYnV0ZXMpKVxuICAgICk7XG4gIH1cblxuICBjaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChvYmouaXNSZXF1aXJlZCkge1xuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnY2hlY2tib3gnIHx8IG9iai50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAob2JqLmhhc090aGVyICYmIG9iaj8uaXNfb3RoZXJfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIG9iai5jaG9pY2VzKSB7XG4gICAgICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrQXR0cmlidXRlc1NlbGVjdGVkKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZSA9IG9iai5jaG9pY2VzWzBdO1xuICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdjaGVja2JveCcgfHwgb2JqLnR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcbiAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0VhY2hBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZTogQXR0cmlidXRlc0RldGFpbHMpOiBib29sZWFuIHtcbiAgICBpZiAoYXR0cmlidXRlLmlzUmVxdWlyZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHxcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkYXRlLXRpbWUnXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY2hvaWNlID0gYXR0cmlidXRlLmNob2ljZXNbMF07XG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdjaGVja2JveCcgfHxcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkcm9wZG93bidcbiAgICAgICkge1xuICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBhdHRyaWJ1dGUuY2hvaWNlcykge1xuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBnZXRSaXNrQ2F0ZWdvcmllcyhldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmV0dXJuVHlwZScsIDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhdGVnb3J5VHlwZScsIGV2ZW50Py50eXBlID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py50eXBlID09PSAwID8gcGFyYW1zLmFwcGVuZCgncmlza0ZsYWcnLCAxKSA6IHBhcmFtcztcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ3EnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L2xpc3QnLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza0NhdGVnb3JpZXNDb3VudChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIGlmIChldmVudD8ucmNfaWRzPy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3JjX2lkcycsIGV2ZW50LnJjX2lkcy5qb2luKCcsJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvY291bnQnLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza3MocGF5bG9hZD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L3Jpc2tsaXN0JyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEJ1c2luZXNzQ3ljbGUoKSB7XG4gICAgbGV0IGJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKFxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzQ3ljbGUnKSA/PyAne30nXG4gICAgKTtcbiAgICBsZXQgY3VycmVudEJ1c2luZXNzQ3ljbGUgPSB7XG4gICAgICBzZWxlY3RlZF9jeWNsZTogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGVcbiAgICAgICAgOiAnJyxcbiAgICAgIHN0YXJ0X2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlIDogJycsXG4gICAgICBlbmRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlIDogJycsXG4gICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnJcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuICAgIHJldHVybiBjdXJyZW50QnVzaW5lc3NDeWNsZTtcbiAgfVxuXG4gIGdldFByb2dyYW1zTGlzdChyZXE6IGFueSkge1xuICAgIC8vIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGlmIChyZXE/LnBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxLnBhcmFtcztcbiAgICB9XG4gICAgaWYgKHJlcT8uaGVhZGVycykge1xuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVxLmhlYWRlcnMpXG4gICAgICApO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAndG9rZW4nLFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9jYXRlZ29yaWVzTGlzdD9vd25lcl9saXN0PTEnLFxuICAgICAgICBodHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0Q291bnQocmVxOiBhbnkpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGlmIChyZXE/LnBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxLnBhcmFtcztcbiAgICB9XG4gICAgaWYgKHJlcT8uaGVhZGVycykge1xuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVxPy5oZWFkZXJzKVxuICAgICAgKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBodHRwT3B0aW9ucy5oZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3Rva2VuJyxcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvb3ZlcnZpZXctY291bnQnLCBodHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFN1YkNhdGVnb3J5TGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAocGF5bG9hZD8uc2NvcGVUeXBlID09PSAnbm90X2NvbXBsZXRlZCcpIHtcbiAgICAgIHBheWxvYWQuc2NvcGVUeXBlID0gJ25vdENvbXBsZXRlZCc7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHBheWxvYWQ/LmJ1c2luZXNzQ3ljbGUpXG4gICAgKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KFxuICAgICAgICB0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICtcbiAgICAgICAgICAnL3N1YkNhdGVnb3JpZXM/aXNCdXNpbmVzc0N5Y2xlPXRydWUmcGFyZW50SWQ9JyArXG4gICAgICAgICAgcGF5bG9hZD8uaWQgK1xuICAgICAgICAgICcmdHlwZT0nICtcbiAgICAgICAgICBwYXlsb2FkPy5zY29wZVR5cGUgK1xuICAgICAgICAgICcmY2FsbEZyb209Z3JjJyArXG4gICAgICAgICAgKHBheWxvYWQ/LnNlYXJjaFRleHQgPyAnJnE9JyArIGVuY29kZVVSSShwYXlsb2FkPy5zZWFyY2hUZXh0KSA6ICcnKSArXG4gICAgICAgICAgKHBheWxvYWQ/Lm5hbWUgPyAnJnNvcnRCeT0nICsgcGF5bG9hZD8ubmFtZSA6ICcnKSArXG4gICAgICAgICAgKHBheWxvYWQ/LnNvcnRpbmdDb3VudCA/ICcmc29ydFZhbHVlPScgKyBwYXlsb2FkPy5zb3J0aW5nQ291bnQgOiAnJykgK1xuICAgICAgICAgICgnJnBhZ2U9JyArIHBheWxvYWQ/LnBhZ2UpLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlCeUNhdGVnb3J5SWQoXG4gICAgcmVxOiBhbnksXG4gICAgcGF5bG9hZD86IGFueSxcbiAgICBmaWx0ZXJQb2xpY3lEYXRhPzogYW55XG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnlcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcTtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgneC1idXNpbmVzcy1jeWNsZScsSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgncGF5bG9hZC1vYmplY3QnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvcmVzcG9uc2liaWxpdHlMaXN0JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class GetUserDetailsPipe {
|
|
4
|
+
transform(ids, list) {
|
|
5
|
+
const userDetails = list
|
|
6
|
+
.filter((item) => ids?.includes(item?.id))
|
|
7
|
+
.map((item) => {
|
|
8
|
+
return {
|
|
9
|
+
name: item?.name,
|
|
10
|
+
email: item?.email,
|
|
11
|
+
short_name: item?.name?.split(' ').map((n) => n[0]).join(''),
|
|
12
|
+
avatar: item?.imagePath || ''
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
return userDetails;
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GetUserDetailsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
18
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GetUserDetailsPipe, name: "getUserDetails" }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GetUserDetailsPipe, decorators: [{
|
|
21
|
+
type: Pipe,
|
|
22
|
+
args: [{
|
|
23
|
+
name: 'getUserDetails',
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXVzZXItZGV0YWlscy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL3dvcmtmbG93LXBpcGVzL2dldC11c2VyLWRldGFpbHMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixTQUFTLENBQUMsR0FBYSxFQUFFLElBQVc7UUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSTthQUNyQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3pDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Z0JBQ2hCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksRUFBRTthQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOytHQWJVLGtCQUFrQjs2R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUg5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZXRVc2VyRGV0YWlscycsXG59KVxuZXhwb3J0IGNsYXNzIEdldFVzZXJEZXRhaWxzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oaWRzOiBudW1iZXJbXSwgbGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSBsaXN0XG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiBpZHM/LmluY2x1ZGVzKGl0ZW0/LmlkKSlcbiAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgIGVtYWlsOiBpdGVtPy5lbWFpbCxcbiAgICAgICAgICBzaG9ydF9uYW1lOiBpdGVtPy5uYW1lPy5zcGxpdCgnICcpLm1hcCgobjogc3RyaW5nKSA9PiBuWzBdKS5qb2luKCcnKSxcbiAgICAgICAgICBhdmF0YXI6IGl0ZW0/LmltYWdlUGF0aCB8fCAnJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHVzZXJEZXRhaWxzO1xuICB9XG59ICJdfQ==
|
|
@@ -3,14 +3,17 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { GetSelectedValuePipe } from './get-selected-value.pipe';
|
|
4
4
|
import { IsAttributesValidPipe } from './is-attributes-valid.pipe';
|
|
5
5
|
import { UniqueResponsibilitiesPipe } from './unique-responsibilities.pipe';
|
|
6
|
+
import { GetUserDetailsPipe } from './get-user-details.pipe';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export class WorkflowPipesModule {
|
|
8
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
10
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPipesModule, declarations: [GetSelectedValuePipe,
|
|
10
11
|
IsAttributesValidPipe,
|
|
11
|
-
UniqueResponsibilitiesPipe
|
|
12
|
+
UniqueResponsibilitiesPipe,
|
|
13
|
+
GetUserDetailsPipe], imports: [CommonModule], exports: [GetSelectedValuePipe,
|
|
12
14
|
IsAttributesValidPipe,
|
|
13
|
-
UniqueResponsibilitiesPipe
|
|
15
|
+
UniqueResponsibilitiesPipe,
|
|
16
|
+
GetUserDetailsPipe] }); }
|
|
14
17
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPipesModule, imports: [CommonModule] }); }
|
|
15
18
|
}
|
|
16
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPipesModule, decorators: [{
|
|
@@ -20,13 +23,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
20
23
|
GetSelectedValuePipe,
|
|
21
24
|
IsAttributesValidPipe,
|
|
22
25
|
UniqueResponsibilitiesPipe,
|
|
26
|
+
GetUserDetailsPipe
|
|
23
27
|
],
|
|
24
28
|
imports: [CommonModule],
|
|
25
29
|
exports: [
|
|
26
30
|
GetSelectedValuePipe,
|
|
27
31
|
IsAttributesValidPipe,
|
|
28
32
|
UniqueResponsibilitiesPipe,
|
|
33
|
+
GetUserDetailsPipe
|
|
29
34
|
],
|
|
30
35
|
}]
|
|
31
36
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL3dvcmtmbG93LXBpcGVzL3dvcmtmbG93LXBpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFpQjdELE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLGlCQWI1QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLDBCQUEwQjtZQUMxQixrQkFBa0IsYUFFVixZQUFZLGFBRXBCLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIsMEJBQTBCO1lBQzFCLGtCQUFrQjtnSEFHVCxtQkFBbUIsWUFScEIsWUFBWTs7NEZBUVgsbUJBQW1CO2tCQWYvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdldFNlbGVjdGVkVmFsdWVQaXBlIH0gZnJvbSAnLi9nZXQtc2VsZWN0ZWQtdmFsdWUucGlwZSc7XG5pbXBvcnQgeyBJc0F0dHJpYnV0ZXNWYWxpZFBpcGUgfSBmcm9tICcuL2lzLWF0dHJpYnV0ZXMtdmFsaWQucGlwZSc7XG5pbXBvcnQgeyBVbmlxdWVSZXNwb25zaWJpbGl0aWVzUGlwZSB9IGZyb20gJy4vdW5pcXVlLXJlc3BvbnNpYmlsaXRpZXMucGlwZSc7XG5pbXBvcnQgeyBHZXRVc2VyRGV0YWlsc1BpcGUgfSBmcm9tICcuL2dldC11c2VyLWRldGFpbHMucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEdldFNlbGVjdGVkVmFsdWVQaXBlLFxuICAgIElzQXR0cmlidXRlc1ZhbGlkUGlwZSxcbiAgICBVbmlxdWVSZXNwb25zaWJpbGl0aWVzUGlwZSxcbiAgICBHZXRVc2VyRGV0YWlsc1BpcGVcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBHZXRTZWxlY3RlZFZhbHVlUGlwZSxcbiAgICBJc0F0dHJpYnV0ZXNWYWxpZFBpcGUsXG4gICAgVW5pcXVlUmVzcG9uc2liaWxpdGllc1BpcGUsXG4gICAgR2V0VXNlckRldGFpbHNQaXBlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UGlwZXNNb2R1bGUge31cbiJdfQ==
|