vcomply-workflow-engine 3.1.28 → 3.1.29

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.
@@ -1,41 +1,46 @@
1
1
  import { Component, Input, EventEmitter, Optional, Output, } from '@angular/core';
2
2
  import { cloneDeep } from 'lodash';
3
3
  import moment from 'moment/moment';
4
+ import { OTHER_GRC_CARD } from '../workflow/shared/constants/grcObject.constant';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../workflow-services/add-risk.service";
6
7
  import * as i2 from "../workflow-services/auth.service";
7
8
  import * as i3 from "../workflow-services/ui-kit.service";
8
9
  import * as i4 from "../ui-kit/snack-bar/snack-bar.service";
9
10
  import * as i5 from "../sharedComponents/frequency/frequency.service";
10
- import * as i6 from "../configurations";
11
- import * as i7 from "@angular/forms";
12
- import * as i8 from "@vcomply/editor";
13
- import * as i9 from "@angular/common";
14
- import * as i10 from "../formgroup/cs-switch/cs-switch.component";
15
- import * as i11 from "../ui-kit/tooltip/tooltip.directive";
16
- import * as i12 from "../ui-kit/popover/popover.component";
17
- import * as i13 from "../ui-kit/popover/popover.directive";
18
- import * as i14 from "../formgroup/select/cs-select/cs-select.component";
19
- import * as i15 from "../formgroup/select/cs-option/cs-option.component";
20
- import * as i16 from "../sharedComponents/v-loader/loader-inline/loader-inline.component";
21
- import * as i17 from "../ui-kit/smiley-dialog-inline/smiley-dialog-inline.component";
22
- import * as i18 from "../ui-kit/click-outside/click-outside.directive";
23
- import * as i19 from "../workflow-program/create-program-ui/user-group-list/user-group-list.component";
24
- import * as i20 from "../sharedComponents/responsibility-centers-list/responsibility-centers-list.component";
25
- import * as i21 from "../sharedComponents/owner-list/owner-list.component";
26
- import * as i22 from "../sharedComponents/category-list/category-list.component";
27
- import * as i23 from "../sharedComponents/directive/scroll-in-view.directive";
28
- import * as i24 from "../sharedComponents/directive/input-trim.directive";
29
- import * as i25 from "../sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component";
30
- import * as i26 from "../sharedComponents/pipes/short-merge.pipe";
31
- import * as i27 from "../sharedComponents/pipes/spaceTrim.pipe";
11
+ import * as i6 from "../workflow/shared/services/grc.service";
12
+ import * as i7 from "../configurations";
13
+ import * as i8 from "@angular/forms";
14
+ import * as i9 from "@vcomply/editor";
15
+ import * as i10 from "@angular/common";
16
+ import * as i11 from "../formgroup/cs-switch/cs-switch.component";
17
+ import * as i12 from "../ui-kit/tooltip/tooltip.directive";
18
+ import * as i13 from "../ui-kit/popover/popover.component";
19
+ import * as i14 from "../ui-kit/popover/popover.directive";
20
+ import * as i15 from "../formgroup/select/cs-select/cs-select.component";
21
+ import * as i16 from "../formgroup/select/cs-option/cs-option.component";
22
+ import * as i17 from "../sharedComponents/v-loader/loader-inline/loader-inline.component";
23
+ import * as i18 from "../ui-kit/smiley-dialog-inline/smiley-dialog-inline.component";
24
+ import * as i19 from "../ui-kit/click-outside/click-outside.directive";
25
+ import * as i20 from "../workflow-program/create-program-ui/user-group-list/user-group-list.component";
26
+ import * as i21 from "../sharedComponents/responsibility-centers-list/responsibility-centers-list.component";
27
+ import * as i22 from "../workflow/shared/components/grc-object-list/grc-object-list.component";
28
+ import * as i23 from "../sharedComponents/owner-list/owner-list.component";
29
+ import * as i24 from "../sharedComponents/category-list/category-list.component";
30
+ import * as i25 from "../sharedComponents/directive/scroll-in-view.directive";
31
+ import * as i26 from "../sharedComponents/directive/input-trim.directive";
32
+ import * as i27 from "../sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component";
33
+ import * as i28 from "../workflow-program/create-program-ui/pipes/ref-disconnect.pipe";
34
+ import * as i29 from "../sharedComponents/pipes/short-merge.pipe";
35
+ import * as i30 from "../sharedComponents/pipes/spaceTrim.pipe";
32
36
  export class WorkflowRiskComponent {
33
- constructor(riskService, authService, uiKitService, snackBar, frequencyService, config) {
37
+ constructor(riskService, authService, uiKitService, snackBar, frequencyService, grcService, config) {
34
38
  this.riskService = riskService;
35
39
  this.authService = authService;
36
40
  this.uiKitService = uiKitService;
37
41
  this.snackBar = snackBar;
38
42
  this.frequencyService = frequencyService;
43
+ this.grcService = grcService;
39
44
  this.responsibilityCentersList = [];
40
45
  this.selectedResponsibilityCenters = [];
41
46
  this.mitigationDetails = [];
@@ -66,6 +71,7 @@ export class WorkflowRiskComponent {
66
71
  this.disconnectRefresh = new EventEmitter();
67
72
  this.refreshForm = new EventEmitter();
68
73
  this.hideElementsFromMoreOptions = new EventEmitter();
74
+ this.rcSelected = new EventEmitter();
69
75
  this.openedFrom = '';
70
76
  this.scrollToBottom = false;
71
77
  this.categoryList = {
@@ -123,6 +129,8 @@ export class WorkflowRiskComponent {
123
129
  addRiskLabel: false,
124
130
  riskLabelValue: 1,
125
131
  enableAllFutureBusinessCycle: true,
132
+ GRC: false,
133
+ selectedGRCObjects: [],
126
134
  };
127
135
  this.apiUrl = '';
128
136
  this.memberId = 0;
@@ -147,11 +155,20 @@ export class WorkflowRiskComponent {
147
155
  this.currentTimeStamp = Math.round(Date.now() / 1000);
148
156
  this.featureflag_groups = false;
149
157
  this.groupsList = [];
158
+ this.otherGRCCard = JSON.parse(JSON.stringify(OTHER_GRC_CARD));
150
159
  /* Creating an array for risk label with it's value. */
151
160
  this.riskLabelList = [
152
161
  { name: 'Newly Identified Risk', value: 1 },
153
162
  { name: 'Rapidly Changing Risk', value: 2 },
154
163
  ];
164
+ this.grcLoader = false;
165
+ this.selectedGRCTab = 0;
166
+ this.grcDataWithTypes = {
167
+ assets: [],
168
+ processes: [],
169
+ vendors: [],
170
+ inventory: [],
171
+ };
155
172
  this.description = {
156
173
  mode: 'prime',
157
174
  colorPalette: true,
@@ -363,6 +380,9 @@ export class WorkflowRiskComponent {
363
380
  ...this.getCurrentlyLoggedInUser(),
364
381
  ]));
365
382
  }
383
+ this.saveSelectedList(res.linkedGrcDetails);
384
+ this.getOtherGRCTabCount({ rc_ids: '' });
385
+ this.getOtherGRCObjects({ rc_ids: '' });
366
386
  this.riskForm.enableAllFutureBusinessCycle =
367
387
  res?.future_businesscycle_visibility;
368
388
  this.populateOptionalFields();
@@ -390,6 +410,10 @@ export class WorkflowRiskComponent {
390
410
  if (this.riskForm.addRiskLabel) {
391
411
  activatedOptions.push('RISK_LABEL');
392
412
  }
413
+ if (this.riskForm.selectedGRCObjects?.length) {
414
+ activatedOptions.push('GRC');
415
+ this.riskForm.GRC = true;
416
+ }
393
417
  this.populateOption.emit(activatedOptions);
394
418
  }
395
419
  setCategoryType(type) {
@@ -531,7 +555,7 @@ export class WorkflowRiskComponent {
531
555
  }
532
556
  activateSelector(type, event) {
533
557
  this.activeSelector = event ? type : '';
534
- if (['rc', 'owner', 'overseer', 'category', 'frequency'].includes(type)) {
558
+ if (['rc', 'owner', 'overseer', 'category', 'frequency', 'GRC'].includes(type)) {
535
559
  this.pickerChanged.emit(event);
536
560
  }
537
561
  }
@@ -539,11 +563,14 @@ export class WorkflowRiskComponent {
539
563
  this.activeSelector = '';
540
564
  this.pickerChanged.emit(false);
541
565
  }
542
- remove(type, event) {
566
+ remove(type, event, index) {
543
567
  switch (type) {
544
568
  case 'rc':
545
569
  const rcIndex = this.riskForm.responsibilityCentersList.findIndex((rc) => rc.rc_id == event.rc_id);
546
570
  this.riskForm.responsibilityCentersList.splice(rcIndex, 1);
571
+ this.saveSelectedList([]);
572
+ this.getOtherGRCTabCount({ rc_ids: '' });
573
+ this.getOtherGRCObjects({ rc_ids: '', type: this.selectedGRCTab });
547
574
  break;
548
575
  case 'owner':
549
576
  const ownerIndex = this.riskForm.ownersList.findIndex((owner) => owner.member_id == event.member_id);
@@ -569,12 +596,20 @@ export class WorkflowRiskComponent {
569
596
  };
570
597
  this.riskForm.categoryCustomTags = [];
571
598
  break;
599
+ case 'GRC':
600
+ this.riskForm.selectedGRCObjects.splice(index, 1);
601
+ this.saveSelectedList(this.riskForm.selectedGRCObjects);
602
+ break;
572
603
  }
573
604
  }
574
605
  saveSelectedRCList(rcIds) {
606
+ this.saveSelectedList([]);
575
607
  this.activeDeselector();
576
608
  const selectedRC = this.setList(this.responsibilityCentersList, rcIds, 'item_id');
609
+ this.rcSelected.emit(selectedRC?.length);
577
610
  this.riskForm.responsibilityCentersList = selectedRC;
611
+ this.getOtherGRCTabCount({ rc_ids: '' });
612
+ this.getOtherGRCObjects({ rc_ids: '', type: this.selectedGRCTab });
578
613
  this.setOverseersList();
579
614
  this.pickerChanged.emit(false);
580
615
  }
@@ -704,19 +739,22 @@ export class WorkflowRiskComponent {
704
739
  }
705
740
  }
706
741
  addMoreInfo(event) {
707
- switch (event.name) {
708
- case 'Risk Overseer':
742
+ switch (event.code) {
743
+ case 'OVERSEER':
709
744
  this.riskForm.addOverseer = event?.checked;
710
745
  break;
711
- case 'Risk Mitigation Priority':
746
+ case 'MITIGATION':
712
747
  this.riskForm.addMitigation = event?.checked;
713
748
  break;
714
- case 'Recommended Mitigation Plans':
749
+ case 'MITIGATION_PLAN':
715
750
  this.riskForm.addMitigationPlan = event?.checked;
716
751
  break;
717
- case 'Risk Label':
752
+ case 'RISK_LABEL':
718
753
  this.riskForm.addRiskLabel = event?.checked;
719
754
  break;
755
+ case 'GRC_OBJECTS':
756
+ this.riskForm.GRC = event?.checked;
757
+ break;
720
758
  }
721
759
  this.scrollToBottom = true;
722
760
  }
@@ -784,6 +822,9 @@ export class WorkflowRiskComponent {
784
822
  frequency_details: this.riskForm?.frequency_details,
785
823
  risk_label: riskForm?.addRiskLabel ? riskForm?.riskLabelValue : 1,
786
824
  future_businesscycle_visibility: riskForm?.enableAllFutureBusinessCycle ?? true,
825
+ linked_GRC_ids: this.riskForm.GRC
826
+ ? this.riskForm.selectedGRCObjects.map((grc) => grc?._id)
827
+ : [],
787
828
  };
788
829
  if (this.featureflag_groups) {
789
830
  payload['usergroup_ids'] = this.returnIds(riskForm.groupsList, '_id');
@@ -1416,13 +1457,101 @@ export class WorkflowRiskComponent {
1416
1457
  };
1417
1458
  this.frequencyDetails = data;
1418
1459
  }
1460
+ /**
1461
+ * The function `getOtherGRCTabCount` retrieves the count of different types of items (assets,
1462
+ * processes, vendors, inventory) and updates the corresponding tabs with the count.
1463
+ * @param {any} [event] - The "event" parameter is an optional parameter that can be passed to the
1464
+ * "getOtherGRCTabCount" function. It is of type "any", which means it can accept any data type.
1465
+ */
1466
+ getOtherGRCTabCount(event) {
1467
+ event['rc_ids'] = this.riskForm.responsibilityCentersList
1468
+ .map((rc) => rc?._id)
1469
+ .join(',');
1470
+ this.grcService.getGRCTabsCount(event).subscribe((data) => {
1471
+ this.otherGRCCard.forEach((tab, index) => {
1472
+ const OBJECT_LABEL = {
1473
+ ASSET: 'Assets',
1474
+ PROCESS: 'Processes',
1475
+ VENDOR: 'Vendors',
1476
+ INVENTORY: 'Inventory',
1477
+ };
1478
+ const TAB_NAME = OBJECT_LABEL[tab?.title?.toUpperCase()];
1479
+ if (TAB_NAME) {
1480
+ tab.title = TAB_NAME;
1481
+ tab.value = index;
1482
+ tab.selectedCount = 0;
1483
+ tab.key = TAB_NAME?.toLowerCase();
1484
+ }
1485
+ const key = `${tab.key}_type_count`;
1486
+ if (data.hasOwnProperty(key)) {
1487
+ tab.count = data[key];
1488
+ }
1489
+ });
1490
+ });
1491
+ }
1492
+ getOtherGRCObjects(event) {
1493
+ if (this.otherGRCSubscription) {
1494
+ this.otherGRCSubscription.unsubscribe();
1495
+ }
1496
+ if (!event) {
1497
+ event = {
1498
+ rc_ids: '',
1499
+ type: this.selectedGRCTab,
1500
+ state: 1,
1501
+ page: 1,
1502
+ };
1503
+ }
1504
+ this.grcLoader = true;
1505
+ event['rc_ids'] = this.riskForm.responsibilityCentersList
1506
+ .map((rc) => rc?._id)
1507
+ .join(',');
1508
+ event['grcType'] = this.selectedGRCTab;
1509
+ this.otherGRCSubscription = this.grcService
1510
+ .getGRCList(event)
1511
+ .subscribe((data) => {
1512
+ this.grcList = data;
1513
+ this.grcLoader = false;
1514
+ // if (this.MODE === 'EDIT') {
1515
+ // // this.listObject.OTHER_GRC_OBJECTS.selectedData = data.filter(
1516
+ // // (item: any) => this.grcPayload.linked_GRC_ids.includes(item?._id)
1517
+ // // );
1518
+ // if (this.grcPayload.linked_GRC_ids?.length) {
1519
+ // this.grcForm.otherGrcObjects = true;
1520
+ // this.additionalOption.OTHER_GRC_OBJECTS = true;
1521
+ // this.populateOptionalFields();
1522
+ // }
1523
+ // }
1524
+ });
1525
+ }
1526
+ saveSelectedList(event) {
1527
+ this.riskForm.selectedGRCObjects = event;
1528
+ this.activateSelector('GRC', false);
1529
+ this.setOtherGRCTypesFormate();
1530
+ }
1531
+ setOtherGRCTypesFormate() {
1532
+ const grcTypes = ['assets', 'processes', 'vendors', 'inventory'];
1533
+ this.resetGRCDataWithTypes();
1534
+ if (this.riskForm?.selectedGRCObjects?.length > 0) {
1535
+ this.riskForm?.selectedGRCObjects?.forEach((item) => {
1536
+ this.grcDataWithTypes[grcTypes[item?.type]]?.push(item);
1537
+ });
1538
+ }
1539
+ }
1540
+ resetGRCDataWithTypes() {
1541
+ this.grcDataWithTypes = {
1542
+ assets: [],
1543
+ processes: [],
1544
+ vendors: [],
1545
+ inventory: [],
1546
+ };
1547
+ }
1419
1548
  }
1420
- WorkflowRiskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowRiskComponent, deps: [{ token: i1.AddRiskService }, { token: i2.AuthService }, { token: i3.UiKitService }, { token: i4.SnackBarService }, { token: i5.FrequencyService }, { token: i6.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1421
- WorkflowRiskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowRiskComponent, selector: "app-workflow-risk", inputs: { feature: "feature", mode: "mode", riskId: "riskId", defaultRiskType: "defaultRiskType", moveToRegisterMode: "moveToRegisterMode", secondaryOpenPortal: "secondaryOpenPortal", openedFrom: "openedFrom" }, outputs: { showConfirmationAlert: "showConfirmationAlert", pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions" }, ngImport: i0, template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\" alt=\"im\" *ngIf=\"true\">\r\n\r\n <svg *ngIf=\"false\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Type <span class=\"required\">*</span></label>\r\n <div class=\"risk-type-field\">\r\n <div class=\"type-item\" [class.active]=\"riskForm?.riskType === 'NORMAL'\">\r\n <button [class.disabled]=\"!riskTypeChangeAllowed\" (click)=\"changeRisk('NORMAL')\">ADD TO RISK REGISTER</button>\r\n <i class=\"icons info\" [appTooltip]=\"'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe932;</i>\r\n </div>\r\n <div class=\"type-item\" [class.active]=\"riskForm?.riskType === 'REPORTED'\">\r\n <button [class.disabled]=\"!riskTypeChangeAllowed\" (click)=\"changeRisk('REPORTED')\">REPORT A RISK</button>\r\n <i class=\"icons info\" [appTooltip]=\"'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe932;</i>\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'name' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\" alt=\"im\" *ngIf=\"riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\">\r\n\r\n <svg *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">WHAT RISK WOULD YOU LIKE TO MANAGE? <span class=\"required\">*</span></label>\r\n <input spaceTrim type=\"text\" (keydown)=\"activeSelector = 'name'\" (focusin)=\"activateSelector('name',true)\"\r\n (focusout)=\"activateSelector('name',false)\" [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\" *ngIf=\"riskForm?.title?.trim() =='' || activeSelector === 'name'\">\r\n <div class=\"selected\" *ngIf=\"riskForm?.title?.trim()!= '' && activeSelector !== 'name'\">\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{riskForm.title}}</span>\r\n </div>\r\n <button class=\"edit\" (click)=\"activateSelector('name',true)\" type=\"button\"><i\r\n class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (!riskForm.title)\" class=\"error-message\">Add a risk name</p>\r\n <vcomply-editor [(ngModel)]=\"riskForm.description\" [editorConfig]=\"description\" (clickOutside)=\"checkDescription()\"></vcomply-editor>\r\n <p *ngIf=\"submitted && (riskForm.riskType ==='REPORTED' && !riskForm?.description?.trim()?.length)\" class=\"error-message\">Add a risk description</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'owner' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length>0\">\r\n <img *ngIf=\"riskForm?.ownersList?.length ==0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\" alt=\"\" />\r\n\r\n <svg *ngIf=\"riskForm?.ownersList?.length>0 && activeSelector !== 'owner'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">WHO IS RESPONSIBLE FOR MANAGING THIS RISK? <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'This is the person that is responsible for managing the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length ==0\">\r\n <input type=\"text\" (click)=\"activateSelector('owner',true)\" placeholder=\"Select Risk Owner(s)\" readonly>\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"riskForm?.ownersList?.length>0 || riskForm?.groupsList.length > 0\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"!featureflag_groups\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"owner?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{owner?.member_name}}</span>\r\n </ng-container>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverOwner.popover()\" placement=\"left\" *ngIf=\"riskForm?.ownersList?.length > 1\">+{{riskForm?.ownersList?.slice(1).length}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.ownersList[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.ownersList[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\" *ngIf=\"riskForm?.ownersList.length > 1\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"riskForm?.groupsList.length > 0\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.groupsList[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"riskForm?.groupsList?.length > 1\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeSelector !== 'owner'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('owner',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.ownersList?.length===0)\" class=\"error-message\">Select Owner(s) for this risk.</p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerPop\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf = \"!nonRemovableUsersList.includes(owner?.member_id)\" class=\"icons\" (click)=\"remove('owner',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerPop\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf = \"!nonRemovableUsersList.includes(owner?.member_id)\" class=\"icons\" (click)=\"remove('owner',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of (riskForm?.groupsList) | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\">&#xe90d;</i>\r\n {{data.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'rc' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.responsibilityCentersList?.length>0\">\r\n <img *ngIf=\"riskForm?.responsibilityCentersList?.length==0 || activeSelector === 'rc'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\" alt=\"\">\r\n\r\n <svg *ngIf=\"riskForm?.responsibilityCentersList?.length>0 && activeSelector !== 'rc'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Responsibility Center <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.responsibilityCentersList?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('rc',true)\" placeholder=\"Select Responsibility Center(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.responsibilityCentersList?.length>0\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('rc',rcName)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"rcName.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{rcName.item_name}}</span>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverRC.popover()\" placement=\"left\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\">+{{riskForm?.responsibilityCentersList?.slice(1).length}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeSelector !== 'rc'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('rc',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.responsibilityCentersList?.length==0)\" class=\"error-message\">Assign\r\n this risk to a Responsibility Center(s)</p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rcName of riskForm?.responsibilityCentersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'frequency'\" [class.disabled]=\"activeSelector && activeSelector !== 'frequency' && sideSelectorElements?.includes(activeSelector)\" *ngIf=\"riskForm?.riskType !== 'REPORTED'\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img *ngIf=\"!riskForm?.frequency_details?.frequency || riskForm?.frequency_details?.frequency === '' || activeSelector === 'frequency'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\" alt=\"\" />\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.frequency_details?.frequency && riskForm?.frequency_details?.frequency !== '' || activeSelector !== 'frequency'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED? <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'The option lets you specify the risk reassessment frequency.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"!riskForm?.frequency_details?.frequency\" (click)=\"activateSelector('frequency',true)\">\r\n <input type=\"text\" placeholder=\"Set a Reassessment Frequency\" readonly>\r\n </div>\r\n <div class=\"selected button-sec\" *ngIf=\"riskForm?.frequency_details?.frequency\">\r\n <span class=\"chip\" [appTooltip]=\"frequencyPlaceholder\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{frequencyPlaceholder}}</span>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('frequency',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\" (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\">DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p *ngIf=\"submitted && (!riskForm?.frequency_details?.frequency || riskForm?.frequency_details?.frequency === '')\" class=\"error-message\">Please select the frequency of occurrence for this risk.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'category' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img *ngIf=\"!riskForm?.category?.selectedCategory || activeSelector === 'category'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\" />\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.category?.selectedCategory && activeSelector !== 'category'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Category\r\n <i class=\"icons\" [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input type=\"text\" (click)=\"activateSelector('category',true)\" placeholder=\"Select Risk Category\"\r\n readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button *ngIf=\"activeSelector !== 'category'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('category',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length>0\">\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of riskForm.categoryCustomTags\">\r\n <label class=\"vx-control-panel\">{{tag.custom_tag_name}}</label>\r\n <input type=\"text\" [(ngModel)]=\"tag.custom_tag_value\" [placeholder]=\"tag.custom_tag_name\">\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'assessment'\" id=\"deadline\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'assessment' && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"false\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days>=1\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"riskForm?.assessment_deadline_days<1 || activeSelector === 'assessment'\" alt=\"\" />\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.assessment_deadline_days>=1 && activeSelector !== 'assessment'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Assessment Deadline <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'This is the date that the inherent risk assessment must be completed by.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input type=\"number\" [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment',true)\"\r\n (focusout)=\"activateSelector('assessment',false)\" name=\"riskAssessmentDeadline\"\r\n validateAssessment #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.assessment_deadline_days<1)\" class=\"error-message\">\r\n Enter a value greater than 0.\r\n </p>\r\n <label class=\"vx-control-panel\" *ngIf=\"riskForm?.assessment_deadline_days>=1\">\r\n This risk assessment needs to be completed by {{ date | date: 'dd MMM yyyy' }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'overseer' && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"riskForm.addOverseer\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length>0\">\r\n <img *ngIf=\"riskForm?.overseersList?.length==0 || activeSelector === 'overseer'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" />\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.overseersList?.length>0 && activeSelector !== 'overseer'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Oversight<i class=\"icons\" [appTooltip]=\"'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"riskForm?.overseersList?.length==0 && riskForm?.overseersGroupList?.length==0 \">\r\n <input type=\"text\" (click)=\"activateSelector('overseer',true)\" placeholder=\"Select Risk Oversight(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.overseersList?.length>0 || riskForm?.overseersGroupList.length > 0\">\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container *ngFor=\"let owner of riskForm?.overseersList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseer',owner)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"owner.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{owner.member_name}}</span>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverOverseer.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersList?.length > 1\">+{{riskForm?.overseersList?.slice(1).length}}</button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseer',riskForm?.overseersList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.overseersList[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\" *ngIf=\"riskForm?.overseersList.length > 0\">{{riskForm?.overseersList[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"overseer.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersList.length > 1\">+{{riskForm?.overseersList.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.overseersList.length > 0 && riskForm?.overseersGroupList.length > 0\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"riskForm?.overseersGroupList.length > 0\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseergroup', riskForm?.overseersGroupList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.overseersGroupList[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersGroupList?.length > 1\">+{{riskForm?.overseersGroupList?.length - 1}}</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeSelector !== 'overseer'\" class=\"edit\" type=\"button\"\r\n (click)=\"activateSelector('overseer',true)\"><i class=\"icons\">&#xe9ba;</i>\r\n Edit</button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of riskForm?.overseersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of riskForm?.overseersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of (riskForm?.overseersGroupList) | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\">&#xe90d;</i>\r\n {{data.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\"activeSelector && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"riskForm.addMitigation\">\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\" *ngIf=\"!riskForm.mitigation\" alt=\"\" />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm.mitigation\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Mitigation Priority\r\n <i class=\"icons\" [appTooltip]=\"'This sets the priority level for the mitigation of each risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n\r\n <cs-select [(ngModel)]=\"riskForm.mitigation\" [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\">\r\n <cs-option *ngFor=\"let data of mitigationDetails\" [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\">\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"riskForm?.addMitigationPlan\">\r\n <div id=\"riskSpace\" class=\"left\" [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\">\r\n <img *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) ===''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\" alt=\"\" />\r\n <svg *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\">Recommended Mitigation Plans<link rel=\"manifest\" href=\"./manifest.json\">\r\n <i class=\"icons\" [appTooltip]=\"'Specify the mitigation plan that can be undertaken to mitigate the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\" (clickOutside)=\"checkMitigationPlan()\">\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"activeSelector && sideSelectorElements.includes(activeSelector)\" *ngIf=\"riskForm?.addRiskLabel\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">RISK LABEL <i class=\"icons\" [appTooltip]=\"'Risk label info text here...'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <cs-select [(ngModel)]=\"riskForm.riskLabelValue\" [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\">\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<app-responsibility-centers-list *ngIf=\"activeSelector === 'rc'\" [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\" [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\" (closeRcList)=\"activateSelector('rc',false)\"\r\n [singularText]=\"'Responsibility Center selected'\" [pluralText]=\"'Responsibility Centers selected'\" >\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list *ngIf=\"!featureflag_groups && activeSelector === 'owner'\" [usersList]=\"ownersList\" [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\" [itemEmailKey]=\"'member_email'\" [itemNameKey]=\"'member_name'\" (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\" (closeUsersList)=\"activateSelector('owner',false)\"\r\n [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\" ></app-owner-list>\r\n\r\n<user-group-list *ngIf=\"featureflag_groups && activeSelector === 'owner'\" [userlist]=\"ownersList\" [selectedUsers]=\"riskForm.ownersList\" [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\" (save)=\"saveSelectedOwnersList($event)\" [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner',false)\" [groupEnabled]=\"true\" [featureflag]=\"featureflag_groups\" >\r\n </user-group-list>\r\n\r\n <user-group-list *ngIf=\"featureflag_groups && activeSelector === 'overseer'\" [userlist]=\"overseersList\" [selectedUsers]=\"riskForm.overseersList\" [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\" [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer',false)\" [groupEnabled]=\"true\" [featureflag]=\"featureflag_groups\" >\r\n </user-group-list>\r\n\r\n<app-category-list *ngIf=\"activeSelector === 'category'\" [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\" (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category',false)\"></app-category-list>\r\n<app-owner-list *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\" [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\" [userIdKey]=\"'member_id'\" [itemNameKey]=\"'member_name'\" [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\" (closeUsersList)=\"activateSelector('overseer',false)\"\r\n [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\" >\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency',false)\">\r\n</app-frequency-dialog-container>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i7.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: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i8.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i11.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i12.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i13.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i14.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i15.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i16.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i17.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "directive", type: i18.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i19.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i20.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i21.OwnerListComponent, selector: "app-owner-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "showWorkflow", "listHeading", "searchPlaceholder", "pluralText", "singularText", "reviewerWorkflowType", "mode", "noDataText", "workflowList", "workflowText", "disabledIds", "nonRemovableUsersList", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds"], outputs: ["saveSelectedList", "closeUsersList", "reviewerWorkflowTypeChange"] }, { kind: "component", type: i22.CategoryListComponent, selector: "app-category-list", inputs: ["categoryList", "selectedCategory"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "directive", type: i23.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "directive", type: i24.spaceTrimDirective, selector: "[spaceTrim]" }, { kind: "component", type: i25.FrequencyDialogContainerComponent, selector: "app-frequency-dialog-container", inputs: ["mode", "frequencyDetails"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "pipe", type: i9.SlicePipe, name: "slice" }, { kind: "pipe", type: i9.DatePipe, name: "date" }, { kind: "pipe", type: i26.ShortMergePipe, name: "shortMerge" }, { kind: "pipe", type: i27.SpaceTrimPipe, name: "spaceTrim" }] });
1549
+ WorkflowRiskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowRiskComponent, deps: [{ token: i1.AddRiskService }, { token: i2.AuthService }, { token: i3.UiKitService }, { token: i4.SnackBarService }, { token: i5.FrequencyService }, { token: i6.GrcService }, { token: i7.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1550
+ WorkflowRiskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowRiskComponent, selector: "app-workflow-risk", inputs: { feature: "feature", mode: "mode", riskId: "riskId", defaultRiskType: "defaultRiskType", moveToRegisterMode: "moveToRegisterMode", secondaryOpenPortal: "secondaryOpenPortal", openedFrom: "openedFrom" }, outputs: { showConfirmationAlert: "showConfirmationAlert", pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", rcSelected: "rcSelected" }, ngImport: i0, template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i8.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: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i9.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i14.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i15.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i16.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i17.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i18.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "directive", type: i19.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i20.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i21.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i22.GrcObjectListComponent, selector: "app-grc-object-list", inputs: ["grcObject", "currentPage", "loader", "tableCard", "selectedTab", "selectedGRC"], outputs: ["saveOtherGRC", "closeOtherGRC", "getOtherGRCObjects"] }, { kind: "component", type: i23.OwnerListComponent, selector: "app-owner-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "showWorkflow", "listHeading", "searchPlaceholder", "pluralText", "singularText", "reviewerWorkflowType", "mode", "noDataText", "workflowList", "workflowText", "disabledIds", "nonRemovableUsersList", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds"], outputs: ["saveSelectedList", "closeUsersList", "reviewerWorkflowTypeChange"] }, { kind: "component", type: i24.CategoryListComponent, selector: "app-category-list", inputs: ["categoryList", "selectedCategory"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "directive", type: i25.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "directive", type: i26.spaceTrimDirective, selector: "[spaceTrim]" }, { kind: "component", type: i27.FrequencyDialogContainerComponent, selector: "app-frequency-dialog-container", inputs: ["mode", "frequencyDetails"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "pipe", type: i10.SlicePipe, name: "slice" }, { kind: "pipe", type: i10.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i10.DatePipe, name: "date" }, { kind: "pipe", type: i10.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i28.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i29.ShortMergePipe, name: "shortMerge" }, { kind: "pipe", type: i30.SpaceTrimPipe, name: "spaceTrim" }] });
1422
1551
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowRiskComponent, decorators: [{
1423
1552
  type: Component,
1424
- args: [{ selector: 'app-workflow-risk', template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\" alt=\"im\" *ngIf=\"true\">\r\n\r\n <svg *ngIf=\"false\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Type <span class=\"required\">*</span></label>\r\n <div class=\"risk-type-field\">\r\n <div class=\"type-item\" [class.active]=\"riskForm?.riskType === 'NORMAL'\">\r\n <button [class.disabled]=\"!riskTypeChangeAllowed\" (click)=\"changeRisk('NORMAL')\">ADD TO RISK REGISTER</button>\r\n <i class=\"icons info\" [appTooltip]=\"'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe932;</i>\r\n </div>\r\n <div class=\"type-item\" [class.active]=\"riskForm?.riskType === 'REPORTED'\">\r\n <button [class.disabled]=\"!riskTypeChangeAllowed\" (click)=\"changeRisk('REPORTED')\">REPORT A RISK</button>\r\n <i class=\"icons info\" [appTooltip]=\"'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe932;</i>\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'name' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\" alt=\"im\" *ngIf=\"riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\">\r\n\r\n <svg *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">WHAT RISK WOULD YOU LIKE TO MANAGE? <span class=\"required\">*</span></label>\r\n <input spaceTrim type=\"text\" (keydown)=\"activeSelector = 'name'\" (focusin)=\"activateSelector('name',true)\"\r\n (focusout)=\"activateSelector('name',false)\" [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\" *ngIf=\"riskForm?.title?.trim() =='' || activeSelector === 'name'\">\r\n <div class=\"selected\" *ngIf=\"riskForm?.title?.trim()!= '' && activeSelector !== 'name'\">\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{riskForm.title}}</span>\r\n </div>\r\n <button class=\"edit\" (click)=\"activateSelector('name',true)\" type=\"button\"><i\r\n class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (!riskForm.title)\" class=\"error-message\">Add a risk name</p>\r\n <vcomply-editor [(ngModel)]=\"riskForm.description\" [editorConfig]=\"description\" (clickOutside)=\"checkDescription()\"></vcomply-editor>\r\n <p *ngIf=\"submitted && (riskForm.riskType ==='REPORTED' && !riskForm?.description?.trim()?.length)\" class=\"error-message\">Add a risk description</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'owner' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length>0\">\r\n <img *ngIf=\"riskForm?.ownersList?.length ==0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\" alt=\"\" />\r\n\r\n <svg *ngIf=\"riskForm?.ownersList?.length>0 && activeSelector !== 'owner'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">WHO IS RESPONSIBLE FOR MANAGING THIS RISK? <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'This is the person that is responsible for managing the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length ==0\">\r\n <input type=\"text\" (click)=\"activateSelector('owner',true)\" placeholder=\"Select Risk Owner(s)\" readonly>\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"riskForm?.ownersList?.length>0 || riskForm?.groupsList.length > 0\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"!featureflag_groups\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"owner?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{owner?.member_name}}</span>\r\n </ng-container>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverOwner.popover()\" placement=\"left\" *ngIf=\"riskForm?.ownersList?.length > 1\">+{{riskForm?.ownersList?.slice(1).length}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.ownersList[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.ownersList[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\" *ngIf=\"riskForm?.ownersList.length > 1\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"riskForm?.groupsList.length > 0\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.groupsList[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"riskForm?.groupsList?.length > 1\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeSelector !== 'owner'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('owner',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.ownersList?.length===0)\" class=\"error-message\">Select Owner(s) for this risk.</p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerPop\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf = \"!nonRemovableUsersList.includes(owner?.member_id)\" class=\"icons\" (click)=\"remove('owner',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerPop\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf = \"!nonRemovableUsersList.includes(owner?.member_id)\" class=\"icons\" (click)=\"remove('owner',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of (riskForm?.groupsList) | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\">&#xe90d;</i>\r\n {{data.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'rc' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.responsibilityCentersList?.length>0\">\r\n <img *ngIf=\"riskForm?.responsibilityCentersList?.length==0 || activeSelector === 'rc'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\" alt=\"\">\r\n\r\n <svg *ngIf=\"riskForm?.responsibilityCentersList?.length>0 && activeSelector !== 'rc'\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Responsibility Center <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.responsibilityCentersList?.length==0\">\r\n <input type=\"text\" (click)=\"activateSelector('rc',true)\" placeholder=\"Select Responsibility Center(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.responsibilityCentersList?.length>0\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('rc',rcName)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"rcName.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{rcName.item_name}}</span>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverRC.popover()\" placement=\"left\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\">+{{riskForm?.responsibilityCentersList?.slice(1).length}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeSelector !== 'rc'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('rc',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.responsibilityCentersList?.length==0)\" class=\"error-message\">Assign\r\n this risk to a Responsibility Center(s)</p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rcName of riskForm?.responsibilityCentersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'frequency'\" [class.disabled]=\"activeSelector && activeSelector !== 'frequency' && sideSelectorElements?.includes(activeSelector)\" *ngIf=\"riskForm?.riskType !== 'REPORTED'\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img *ngIf=\"!riskForm?.frequency_details?.frequency || riskForm?.frequency_details?.frequency === '' || activeSelector === 'frequency'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\" alt=\"\" />\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.frequency_details?.frequency && riskForm?.frequency_details?.frequency !== '' || activeSelector !== 'frequency'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED? <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'The option lets you specify the risk reassessment frequency.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"!riskForm?.frequency_details?.frequency\" (click)=\"activateSelector('frequency',true)\">\r\n <input type=\"text\" placeholder=\"Set a Reassessment Frequency\" readonly>\r\n </div>\r\n <div class=\"selected button-sec\" *ngIf=\"riskForm?.frequency_details?.frequency\">\r\n <span class=\"chip\" [appTooltip]=\"frequencyPlaceholder\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{frequencyPlaceholder}}</span>\r\n <button class=\"edit\" type=\"button\" (click)=\"activateSelector('frequency',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\" (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\">DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p *ngIf=\"submitted && (!riskForm?.frequency_details?.frequency || riskForm?.frequency_details?.frequency === '')\" class=\"error-message\">Please select the frequency of occurrence for this risk.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'category' && sideSelectorElements.includes(activeSelector)\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img *ngIf=\"!riskForm?.category?.selectedCategory || activeSelector === 'category'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\" />\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.category?.selectedCategory && activeSelector !== 'category'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Category\r\n <i class=\"icons\" [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input type=\"text\" (click)=\"activateSelector('category',true)\" placeholder=\"Select Risk Category\"\r\n readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button *ngIf=\"activeSelector !== 'category'\" class=\"edit\" type=\"button\" (click)=\"activateSelector('category',true)\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length>0\">\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of riskForm.categoryCustomTags\">\r\n <label class=\"vx-control-panel\">{{tag.custom_tag_name}}</label>\r\n <input type=\"text\" [(ngModel)]=\"tag.custom_tag_value\" [placeholder]=\"tag.custom_tag_name\">\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'assessment'\" id=\"deadline\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'assessment' && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"false\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days>=1\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"riskForm?.assessment_deadline_days<1 || activeSelector === 'assessment'\" alt=\"\" />\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.assessment_deadline_days>=1 && activeSelector !== 'assessment'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Assessment Deadline <span class=\"required\">*</span>\r\n <i class=\"icons\" [appTooltip]=\"'This is the date that the inherent risk assessment must be completed by.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input type=\"number\" [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment',true)\"\r\n (focusout)=\"activateSelector('assessment',false)\" name=\"riskAssessmentDeadline\"\r\n validateAssessment #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p *ngIf=\"submitted && (riskForm?.assessment_deadline_days<1)\" class=\"error-message\">\r\n Enter a value greater than 0.\r\n </p>\r\n <label class=\"vx-control-panel\" *ngIf=\"riskForm?.assessment_deadline_days>=1\">\r\n This risk assessment needs to be completed by {{ date | date: 'dd MMM yyyy' }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\" activeSelector && activeSelector !== 'overseer' && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"riskForm.addOverseer\">\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length>0\">\r\n <img *ngIf=\"riskForm?.overseersList?.length==0 || activeSelector === 'overseer'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" />\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm?.overseersList?.length>0 && activeSelector !== 'overseer'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Oversight<i class=\"icons\" [appTooltip]=\"'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <div class=\"select\" *ngIf=\"riskForm?.overseersList?.length==0 && riskForm?.overseersGroupList?.length==0 \">\r\n <input type=\"text\" (click)=\"activateSelector('overseer',true)\" placeholder=\"Select Risk Oversight(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.overseersList?.length>0 || riskForm?.overseersGroupList.length > 0\">\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container *ngFor=\"let owner of riskForm?.overseersList?.slice(0,1)\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseer',owner)\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"owner.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{owner.member_name}}</span>\r\n </ng-container>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"popoverOverseer.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersList?.length > 1\">+{{riskForm?.overseersList?.slice(1).length}}</button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseer',riskForm?.overseersList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.overseersList[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\" *ngIf=\"riskForm?.overseersList.length > 0\">{{riskForm?.overseersList[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"overseer.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersList.length > 1\">+{{riskForm?.overseersList.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.overseersList.length > 0 && riskForm?.overseersGroupList.length > 0\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"riskForm?.overseersGroupList.length > 0\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove('overseergroup', riskForm?.overseersGroupList[0])\">&#xe9ae;</i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{riskForm?.overseersGroupList[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"riskForm?.overseersGroupList?.length > 1\">+{{riskForm?.overseersGroupList?.length - 1}}</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeSelector !== 'overseer'\" class=\"edit\" type=\"button\"\r\n (click)=\"activateSelector('overseer',true)\"><i class=\"icons\">&#xe9ba;</i>\r\n Edit</button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of riskForm?.overseersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of riskForm?.overseersList | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer',owner)\">&#xe90d;</i>\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of (riskForm?.overseersGroupList) | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\">&#xe90d;</i>\r\n {{data.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"false\"\r\n [class.disabled]=\"activeSelector && sideSelectorElements.includes(activeSelector)\"\r\n *ngIf=\"riskForm.addMitigation\">\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\" *ngIf=\"!riskForm.mitigation\" alt=\"\" />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg class=\"checkIcon\" *ngIf=\"riskForm.mitigation\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Mitigation Priority\r\n <i class=\"icons\" [appTooltip]=\"'This sets the priority level for the mitigation of each risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n\r\n <cs-select [(ngModel)]=\"riskForm.mitigation\" [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\">\r\n <cs-option *ngFor=\"let data of mitigationDetails\" [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\">\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"riskForm?.addMitigationPlan\">\r\n <div id=\"riskSpace\" class=\"left\" [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\">\r\n <img *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) ===''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\" alt=\"\" />\r\n <svg *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\" class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\">Recommended Mitigation Plans<link rel=\"manifest\" href=\"./manifest.json\">\r\n <i class=\"icons\" [appTooltip]=\"'Specify the mitigation plan that can be undertaken to mitigate the risk.'\"\r\n placement=\"bottom\"\r\n delay=\"0\" type=\"white\"\r\n [tooltipMandatory]=\"true\">&#xe91f;</i>\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\" (clickOutside)=\"checkMitigationPlan()\">\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"activeSelector && sideSelectorElements.includes(activeSelector)\" *ngIf=\"riskForm?.addRiskLabel\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">RISK LABEL <i class=\"icons\" [appTooltip]=\"'Risk label info text here...'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i></label>\r\n <cs-select [(ngModel)]=\"riskForm.riskLabelValue\" [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\">\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<app-responsibility-centers-list *ngIf=\"activeSelector === 'rc'\" [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\" [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\" (closeRcList)=\"activateSelector('rc',false)\"\r\n [singularText]=\"'Responsibility Center selected'\" [pluralText]=\"'Responsibility Centers selected'\" >\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list *ngIf=\"!featureflag_groups && activeSelector === 'owner'\" [usersList]=\"ownersList\" [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\" [itemEmailKey]=\"'member_email'\" [itemNameKey]=\"'member_name'\" (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\" (closeUsersList)=\"activateSelector('owner',false)\"\r\n [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\" ></app-owner-list>\r\n\r\n<user-group-list *ngIf=\"featureflag_groups && activeSelector === 'owner'\" [userlist]=\"ownersList\" [selectedUsers]=\"riskForm.ownersList\" [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\" (save)=\"saveSelectedOwnersList($event)\" [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner',false)\" [groupEnabled]=\"true\" [featureflag]=\"featureflag_groups\" >\r\n </user-group-list>\r\n\r\n <user-group-list *ngIf=\"featureflag_groups && activeSelector === 'overseer'\" [userlist]=\"overseersList\" [selectedUsers]=\"riskForm.overseersList\" [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\" [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer',false)\" [groupEnabled]=\"true\" [featureflag]=\"featureflag_groups\" >\r\n </user-group-list>\r\n\r\n<app-category-list *ngIf=\"activeSelector === 'category'\" [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\" (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category',false)\"></app-category-list>\r\n<app-owner-list *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\" [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\" [userIdKey]=\"'member_id'\" [itemNameKey]=\"'member_name'\" [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\" (closeUsersList)=\"activateSelector('overseer',false)\"\r\n [singularText]=\"'User selected'\" [pluralText]=\"'Users selected'\" >\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency',false)\">\r\n</app-frequency-dialog-container>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
1425
- }], ctorParameters: function () { return [{ type: i1.AddRiskService }, { type: i2.AuthService }, { type: i3.UiKitService }, { type: i4.SnackBarService }, { type: i5.FrequencyService }, { type: i6.Configurations, decorators: [{
1553
+ args: [{ selector: 'app-workflow-risk', template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
1554
+ }], ctorParameters: function () { return [{ type: i1.AddRiskService }, { type: i2.AuthService }, { type: i3.UiKitService }, { type: i4.SnackBarService }, { type: i5.FrequencyService }, { type: i6.GrcService }, { type: i7.Configurations, decorators: [{
1426
1555
  type: Optional
1427
1556
  }] }]; }, propDecorators: { feature: [{
1428
1557
  type: Input
@@ -1450,7 +1579,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1450
1579
  type: Output
1451
1580
  }], hideElementsFromMoreOptions: [{
1452
1581
  type: Output
1582
+ }], rcSelected: [{
1583
+ type: Output
1453
1584
  }], openedFrom: [{
1454
1585
  type: Input
1455
1586
  }] } });
1456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmlzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9uQyxNQUFNLE9BQU8scUJBQXFCO0lBNkhoQyxZQUNVLFdBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFFBQXlCLEVBQ3pCLGdCQUFrQyxFQUM5QixNQUF1QjtRQUwzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWpJNUMsOEJBQXlCLEdBQVEsRUFBRSxDQUFDO1FBQ3BDLGtDQUE2QixHQUFRLEVBQUUsQ0FBQztRQUN4QyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUNyQiwwQkFBcUIsR0FBUSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQUVsQyxrQkFBYSxHQUFHO1lB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QUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUNMLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFDcEM7Z0JBQ0EsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMx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QixNQUFNO2dCQUNHLDJCQUEyQjtzQkFBcEMsTUFBTTtnQkFDRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXJpc2snLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Umlza0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGFueSA9IFtdO1xyXG4gIG1pdGlnYXRpb25EZXRhaWxzOiBhbnkgPSBbXTtcclxuICBvd25lcnNMaXN0OiBhbnkgPSBbXTtcclxuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGVkaXREZXRhaWxzITogYW55O1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhYDtcclxuICByaXNrRGF0YSE6IGFueTtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcclxuICBdO1xyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbXHJcbiAgICAncmMnLFxyXG4gICAgJ293bmVyJyxcclxuICAgICdvdmVyc2VlcicsXHJcbiAgICAnY2F0ZWdvcnknLFxyXG4gICAgJ2ZyZXF1ZW5jeScsXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0VESVQnO1xyXG4gIEBJbnB1dCgpIHJpc2tJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRSaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcclxuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBzdHJhdGVnaWM6IHtcclxuICAgICAgbmFtZTogJ1NUUkFURUdJQycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIG9wZXJhdGlvbmFsOiB7XHJcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIGNvbXBsaWFuY2U6IHtcclxuICAgICAgbmFtZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbmFtZTogJ09USEVSUycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0dyb3VwTGlzdDogYW55ID0gW107XHJcbiAgYWRtaW5zTGlzdDogYW55ID0gW107XHJcbiAgb3ZlcnNlZXJzSWRMaXN0OiBhbnkgPSBbXTtcclxuICB0aW1lem9uZSE6IHN0cmluZztcclxuICBkYXRlITogRGF0ZTtcclxuICByaXNrTmFtZUZvY3VzID0gZmFsc2U7XHJcbiAgYXNzZXNzbWVudEZvY3VzID0gZmFsc2U7XHJcbiAgcmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgcmlza0Zvcm06IGFueSA9IHtcclxuICAgIHJpc2tUeXBlOiAnTk9STUFMJyxcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q6IFtdLFxyXG4gICAgb3duZXJzTGlzdDogW10sXHJcbiAgICBncm91cHNMaXN0OiBbXSxcclxuICAgIGNhdGVnb3J5OiB7XHJcbiAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcclxuICAgIH0sXHJcbiAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgb3ZlcnNlZXJzTGlzdDogW10sXHJcbiAgICBvdmVyc2VlcnNHcm91cExpc3Q6IFtdLFxyXG4gICAgbWl0aWdhdGlvbjogMCxcclxuICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogMCxcclxuICAgIGhlYWRfaWRzOiBbXSxcclxuICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgIGFkZE1pdGlnYXRpb246IGZhbHNlLFxyXG4gICAgYWRkTWl0aWdhdGlvblBsYW46IGZhbHNlLFxyXG4gICAgbWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbjogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczoge1xyXG4gICAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IDAsXHJcbiAgICB9LFxyXG4gICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIHJpc2tMYWJlbFZhbHVlOiAxLFxyXG4gICAgZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZTogdHJ1ZSxcclxuICB9O1xyXG4gIGFwaVVybCA9ICcnO1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcblxyXG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGFkbWluc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgZnJlcXVlbmN5OiAnJyxcclxuICAgIHN0YXJ0ZWRfYXQ6ICcnLFxyXG4gICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgZmFpbGVkX2FmdGVyX2RheXM6IDAsXHJcbiAgICBjYW5fYXNzZXNzX2JlZm9yZV9kYXlzOiAwLFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnU2V0IGEgUmVhc3Nlc3NtZW50IEZyZXF1ZW5jeSc7XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHNldHRpbmdzSW5mbyE6IGFueTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIGN1cnJlbnRUaW1lU3RhbXAgPSBNYXRoLnJvdW5kKERhdGUubm93KCkgLyAxMDAwKTtcclxuICBmZWF0dXJlZmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncm91cHNMaXN0OiBhbnkgPSBbXTtcclxuICAvKiBDcmVhdGluZyBhbiBhcnJheSBmb3IgcmlzayBsYWJlbCB3aXRoIGl0J3MgdmFsdWUuICovXHJcbiAgcmlza0xhYmVsTGlzdDogYW55ID0gW1xyXG4gICAgeyBuYW1lOiAnTmV3bHkgSWRlbnRpZmllZCBSaXNrJywgdmFsdWU6IDEgfSxcclxuICAgIHsgbmFtZTogJ1JhcGlkbHkgQ2hhbmdpbmcgUmlzaycsIHZhbHVlOiAyIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLnRpbWV6b25lID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyVGltZVpvbmUoKTtcclxuICB9XHJcblxyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmlzaycsXHJcbiAgfTtcclxuXHJcbiAgbWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaWJlIHRoZSByZWNvbW1lbmRlZCBtaXRpZ2F0aW9uIHBsYW5zJyxcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Jpc2tfZ3JvdXBzJyk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmdldEFkbWluc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0UkNMaXN0KCk7XHJcbiAgICB0aGlzLmdldE93bmVyc0xpc3QoKTtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnX2dyb3Vwcykge1xyXG4gICAgICB0aGlzLmdldEdyb3VwTGlzdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRDYXRlZ29yeUxpc3QoKTtcclxuICAgIHRoaXMuZ2V0U2V0dGluZ3NJbmZvKCk7XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxyXG4gICAgICBtb250aC5zdWJzdHJpbmcoMCwgMylcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgIT09ICdPVEhFUicgJiYgdGhpcy5tb2RlICE9PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QucHVzaCh0aGlzLm1lbWJlcklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSRVBPUlRFRF9SSVNLJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnTU9WRV9UT19SRUdJU1RFUicpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRSaXNrVHlwZUJhc2VkT25TdWJzY3JpcHRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vVE8gZ2V0IGdyb3VwTGlzdCBkYXRhXHJcbiAgZ2V0R3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRHcm91cHNMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRSaXNrVHlwZUJhc2VkT25TdWJzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUkVQT1JURURfUklTSycpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LnBlcm1pc3Npb24pIHtcclxuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBKU09OLnBhcnNlKHJlcz8ucGVybWlzc2lvbik7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZT8uaXNBZG1pbigpIHx8IHRoaXMuYXV0aFNlcnZpY2U/LmlzS2V5QWRtaW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNNYW5hZ2VyKCkpIHtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24/Lk1SSVNLID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRoU2VydmljZS5pc1VzZXIoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LnJvbGVBY3Rpb25zKSB7XHJcbiAgICAgICAgICBjb25zdCBtb2R1bGVJbmRleCA9IHJlcy5yb2xlQWN0aW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlTmFtZSA9PSAncmlzaydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCByaXNrUGVybWlzc2lvbnMgPVxyXG4gICAgICAgICAgICByZXMucm9sZUFjdGlvbnNbbW9kdWxlSW5kZXhdLnN1Yk1vZHVsZVsxXS5wZXJtaXNzaW9ucztcclxuICAgICAgICAgIHJpc2tQZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ubmFtZSA9PSAnbWFuYWdlIHJpc2tzJyAmJiBwZXJtaXNzaW9uLmVuYWJsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5yaXNrRm9ybSA9IHsgLi4udGhpcy5yaXNrRm9ybSwgLi4ueyByaXNrVHlwZTogdHlwZSB9IH07XHJcbiAgICB0aGlzLnNldFBvcHVwQnV0dG9ucygpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdSRVBPUlRFRCcpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCkge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIGNvbnN0IG93bmVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vd25lcnNMaXN0LFxyXG4gICAgICAgIHRoaXMuZWRpdERldGFpbHM/Lm93bmVyLFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgICAgaWYgKG93bmVyc0xpc3QuaW5jbHVkZXModGhpcy5tZW1iZXJJZCkpIHtcclxuICAgICAgICByZXR1cm4gW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQb3B1cEJ1dHRvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJykge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25UZXh0OiAnVmlldyBSZXBvcnRlZCBSaXNrcycsXHJcbiAgICAgICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgICAgIGlkOiAnbWFuYWdlUmVwb3J0ZWRSaXNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b25zID0gW1xyXG4gICAgICAgIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFJpc2tzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnVmlldyBSaXNrJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld1Jpc2tzJyB9LFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRSaXNrRGV0YWlscyhyaXNrSWQ6IGFueSkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrRGV0YWlsKHJpc2tJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZGl0RGV0YWlscyA9IGNsb25lRGVlcChyZXMpO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0udGl0bGUgPSByZXMudGl0bGU7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ01PVkVfVE9fUkVHSVNURVInKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gcmVzPy5yaXNrX3R5cGUgPz8gJ1JFUE9SVEVEJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZGVzY3JpcHRpb24gPSByZXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgcmVzLnJjX2lkLFxyXG4gICAgICAgICAgJ2l0ZW1faWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgICByZXMub3duZXIsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0LFxyXG4gICAgICAgICAgcmVzPy51c2VyZ3JvdXBfaWRzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9IHJlcy5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnNldENhdGVnb3J5VHlwZShyZXMuY2F0ZWdvcnlfdHlwZVswXSk7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMuY2F0ZWdvcnlMaXN0W3R5cGVdPy5kYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuY2F0ZWdvcnlfaWQgPT0gcmVzLmNhdGVnb3J5WzBdXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY2F0ZWdvcnlJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeSA9IHtcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRDYXRlZ29yeTogdGhpcy5jYXRlZ29yeUxpc3RbdHlwZV0/LmRhdGFbY2F0ZWdvcnlJbmRleF0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSByZXMuY2F0ZWdvcnlfY3VzdG9tX3RhZztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMub3duZXJzTGlzdCxcclxuICAgICAgICAgIHJlcy5tYW5hZ2Vfb3ZlcnNpZ2h0LFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzR3JvdXBMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0LFxyXG4gICAgICAgICAgcmVzPy5vdmVyc2Vlcmdyb3VwX2lkcyxcclxuICAgICAgICAgICdfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb24gPSByZXM/Lm1pdGlnYXRpb25cclxuICAgICAgICAgID8gcmVzPy5taXRpZ2F0aW9uXHJcbiAgICAgICAgICA6IHRoaXMucmlza0Zvcm0/Lm1pdGlnYXRpb247XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPSByZXMuYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkT3ZlcnNlZXIgPVxyXG4gICAgICAgICAgcmVzLm1hbmFnZV9vdmVyc2lnaHQubGVuZ3RoID4gMCB8fCByZXM/Lm92ZXJzZWVyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvbiA9IHJlcy5taXRpZ2F0aW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSByZXMub3JnYW5pc2F0aW9uX2lkO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uaGVhZF9pZHMgPSByZXM/LmhlYWRfaWRzID8gcmVzPy5oZWFkX2lkcyA6IFtdO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9XHJcbiAgICAgICAgICByZXM/Lm1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbiA/PyAnJztcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuID1cclxuICAgICAgICAgIHJlcz8ubWl0aWdhdGlvbl9wbGFuX3JlY29tbWVuZGF0aW9uLnRyaW0oKT8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkUmlza0xhYmVsID0gcmVzLnJpc2tfbGFiZWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlcy5hc3Nlc3NtZW50X2RhdGVfdGltZXN0YW1wKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZShyZXMuYXNzZXNzbWVudF9kYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcy5JZkFzc2Vzc21lbnREb25lID4gMCkge1xyXG4gICAgICAgICAgcmVzLmFsbF9vd25lcl9hcnIuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmFzc2Vzc21lbnRfZG9uZSA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5wdXNoKGVsZW1lbnQubWVtYmVyX2lkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgPT09ICdPVEhFUicgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0ID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbmV3IFNldDxhbnlbXT4oWy4uLnRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LCAuLi5yZXM/Lm93bmVyXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgIT09ICdPVEhFUicgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0ID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbmV3IFNldDxhbnlbXT4oW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCksXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzPy5yaXNrX3R5cGUgPT09ICdOT1JNQUwnKSB7XHJcbiAgICAgICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICAgIG5ldyBTZXQ8YW55W10+KFtcclxuICAgICAgICAgICAgICAuLi50aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCxcclxuICAgICAgICAgICAgICAuLi50aGlzLmdldEN1cnJlbnRseUxvZ2dlZEluVXNlcigpLFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID1cclxuICAgICAgICAgIHJlcz8uZnV0dXJlX2J1c2luZXNzY3ljbGVfdmlzaWJpbGl0eTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0ZShyZXM/LmZyZXF1ZW5jeV9kZXRhaWxzKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gcmVzPy5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgICAgICB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlcy5mcmVxdWVuY3lfZGV0YWlscyk7XHJcbiAgICAgICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTUlUSUdBVElPTicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkT3ZlcnNlZXIpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvblBsYW4pIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdNSVRJR0FUSU9OX1BMQU4nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZFJpc2tMYWJlbCkge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JJU0tfTEFCRUwnKTtcclxuICAgIH1cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNldENhdGVnb3J5VHlwZSh0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09PSAxKSB7XHJcbiAgICAgIHJldHVybiAnc3RyYXRlZ2ljJztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMikge1xyXG4gICAgICByZXR1cm4gJ29wZXJhdGlvbmFsJztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMykge1xyXG4gICAgICByZXR1cm4gJ2NvbXBsaWFuY2UnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnb3RoZXJzJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnc3RyYXRlZ2ljJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIGNvbnN0IHJjQXJyYXk6IGFueVtdID0gW107XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlXHJcbiAgICAgIC5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoXHJcbiAgICAgICAgcmNBcnJheSxcclxuICAgICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyA/IHRoaXMucmlza0lkIDogJydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcclxuICAgICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3Quc3RyYXRlZ2ljLmRhdGEgPSByZXMuc3RyYXRlZ2ljX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5vcGVyYXRpb25hbC5kYXRhID0gcmVzLm9wZXJhdGlvbmFsX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3Qub3RoZXJzLmRhdGEgPSByZXMub3RoZXJzX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3duZXJzTGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub3duZXJzTGlzdCA9IHJlcztcclxuXHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSByZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5tZW1iZXJfaWQgPT09IHRoaXMubWVtYmVySWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgIT09ICdPVEhFUicgJiYgdGhpcy5tb2RlICE9PSAnRURJVCcpIHtcclxuICAgICAgICAgICAgdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LnB1c2gocmVzW2luZGV4XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0QWRtaW5zTGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0QWRtaW5LZXlBZG1pbkxpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3QgPSByZXM7XHJcbiAgICAgICAgdGhpcy5hZG1pbnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0dGluZ3NJbmZvKCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mbyA9IHJlcztcclxuICAgICAgICB0aGlzLmhpZGVPcHRpb25hbEZpZWxkcyhyZXMpO1xyXG4gICAgICAgIHRoaXMubWl0aWdhdGlvbkRldGFpbHMgPSByZXM/LnJpc2tfbWl0aWdhdGlvbl9wcmlvcml0eT8ubWl0aWdhdGlvbl9kYXRhO1xyXG4gICAgICAgIGxldCBkZWZhdWx0TWl0aWdhdGlvbiA9IHRoaXMubWl0aWdhdGlvbkRldGFpbHM/LmZpbHRlcihcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5taXRpZ2F0aW9uX25hbWUgPT09ICdMT1cnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZGVmYXVsdE1pdGlnYXRpb24/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uID0gZGVmYXVsdE1pdGlnYXRpb25bMF0/Lm1pdGlnYXRpb25faWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGlkZU9wdGlvbmFsRmllbGRzKHJlczogYW55KSB7XHJcbiAgICBpZiAocmVzPy5yaXNrX2F1dG9tYXRpb25fZW5hYmxlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQoWydNSVRJR0FUSU9OJ10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuYWRtaW5zTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmdldFJpc2tEZXRhaWxzKHRoaXMucmlza0lkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE92ZXJzZWVyc0xpc3QoKSB7XHJcbiAgICBsZXQgaWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCByY093bmVySWRzOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHVzZXJzID0gY2xvbmVEZWVwKHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCk7XHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBjbG9uZURlZXAoXHJcbiAgICAgIHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFkbWlucyA9IGNsb25lRGVlcCh0aGlzLmFkbWluc0xpc3QpO1xyXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy5vd25lcnNMaXN0KTtcclxuICAgIHVzZXJzLmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZHMucHVzaCh1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGFkbWlucy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgaWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMuZm9yRWFjaCgocmM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBhcnkgPSBbLi4ucmMub3duZXIsIC4uLnJjLnBhcmVudF9vd25lcnNdO1xyXG4gICAgICBpZHMgPSBbLi4uaWRzLCAuLi5hcnldO1xyXG4gICAgICByY093bmVySWRzID0gWy4uLnJjT3duZXJJZHMsIC4uLmFyeV07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZHMgPSBbLi4ubmV3IFNldChpZHMpXTtcclxuICAgIHJjT3duZXJJZHMgPSBbLi4ubmV3IFNldChyY093bmVySWRzKV07XHJcbiAgICB0aGlzLnJpc2tGb3JtLmhlYWRfaWRzID0gcmNPd25lcklkcztcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIWlkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhaWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIC8vR3JvdXBzIHdoaWNoIGFyZSBzZWxlY3RlZCBpbiBPd25lcnMgZmllbGQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIE92ZXJzZWVyXHJcbiAgICBsZXQgZ3JvdXBpZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZ3JvdXBzID0gY2xvbmVEZWVwKHRoaXMucmlza0Zvcm0uZ3JvdXBzTGlzdCk7XHJcbiAgICBjb25zdCBhbGxncm91cHMgPSBjbG9uZURlZXAodGhpcy5ncm91cHNMaXN0KTtcclxuICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwaWRzLnB1c2goZ3JvdXAuZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cGlkcyA9IFsuLi5uZXcgU2V0KGdyb3VwaWRzKV07XHJcbiAgICB0aGlzLm92ZXJzZWVyc0dyb3VwTGlzdCA9IGFsbGdyb3Vwcy5maWx0ZXIoXHJcbiAgICAgIChncm91cDogYW55KSA9PiAhZ3JvdXBpZHMuaW5jbHVkZXMoZ3JvdXAuZ3JvdXBfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFncm91cGlkcy5pbmNsdWRlcyh1c2VyLmdyb3VwX2lkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gICAgaWYgKFsncmMnLCAnb3duZXInLCAnb3ZlcnNlZXInLCAnY2F0ZWdvcnknLCAnZnJlcXVlbmN5J10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5zcGxpY2UocmNJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ293bmVyJzpcclxuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3Quc3BsaWNlKG93bmVySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdPd25lcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5yaXNrRm9ybT8uZ3JvdXBzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZ3JvdXBzTGlzdC5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcclxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3Quc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcmdyb3VwSW5kZXggPSB0aGlzLnJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdC5zcGxpY2Uob3ZlcnNlZXJncm91cEluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnkgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcclxuICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZFJDTGlzdChyY0lkczogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUkMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgcmNJZHMsXHJcbiAgICAgICdpdGVtX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHNlbGVjdGVkUkM7XHJcbiAgICB0aGlzLnNldE92ZXJzZWVyc0xpc3QoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeSA9IGNhdGVnb3J5O1xyXG4gICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XHJcbiAgICBjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmN1c3RvbV90YWcuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhZyA9IHtcclxuICAgICAgICBjdXN0b21fdGFnX25hbWU6IGVsZW1lbnQudGFnTmFtZSxcclxuICAgICAgICBjdXN0b21fdGFnX3ZhbHVlOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgY3VzdG9tVGFncy5wdXNoKHRhZyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzID0gY3VzdG9tVGFncztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZE93bmVyc0xpc3QoaWRzOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIGxldCBvd25lcmlkcztcclxuICAgICAgbGV0IGdyb3VwSWRzO1xyXG4gICAgICBvd25lcmlkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE93bmVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgb3duZXJpZHMsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0LFxyXG4gICAgICAgIGdyb3VwSWRzLFxyXG4gICAgICAgICdncm91cF9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBzTGlzdCwgZ3JvdXBJZHMsICdncm91cF9pZCcpO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSBzZWxlY3RlZE93bmVycztcclxuICAgICAgdGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0ID0gc2VsZWN0ZWRHcm91cHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE93bmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLm93bmVyc0xpc3QsIGlkcywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSBzZWxlY3RlZE93bmVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkT3ZlcnNlZXJzTGlzdChpZHM6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICBpZiAoIXRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICBpZHMsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0ID0gc2VsZWN0ZWRPdmVyc2VlcnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3ZlcnNlZXJpZHM7XHJcbiAgICAgIGxldCBvdmVyc2Vlckdyb3VwSWRzO1xyXG4gICAgICBvdmVyc2VlcmlkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICBvdmVyc2Vlckdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICBvdmVyc2VlcmlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE92ZXJzZWVyR3JvdXBzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzR3JvdXBMaXN0LFxyXG4gICAgICAgIG92ZXJzZWVyR3JvdXBJZHMsXHJcbiAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSBzZWxlY3RlZE92ZXJzZWVycztcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSBzZWxlY3RlZE92ZXJzZWVyR3JvdXBzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUmlza0Fzc2Vzc21lbnQobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKG5hbWUpIHtcclxuICAgICAgY2FzZSAnc3VidHJhY3QnOlxyXG4gICAgICAgIGlmICh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIC09IDE7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGUodGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWRkJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyArPSAxO1xyXG4gICAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlKGRheXM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGRheXMgPj0gMCkge1xyXG4gICAgICBjb25zdCBtaWxpc2Vjb25kcyA9IGRheXMgKiA4NjQwMCAqIDEwMDA7XHJcbiAgICAgIGNvbnN0IGQ6IG51bWJlciA9IG5ldyBEYXRlKFxyXG4gICAgICAgIG5ldyBEYXRlKERhdGUubm93KCkpLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgIHRpbWVab25lOiB0aGlzLnRpbWV6b25lLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZShkICsgbWlsaXNlY29uZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUmlza0Fzc2Vzc21lbnREZWFkbGluZShldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzTmFOKGV2ZW50KSkge1xyXG4gICAgICB0aGlzLnNldERhdGUoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgbGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGlkcy5pbmNsdWRlcyhlbGVtZW50W2tleV0pKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKChlbGUpID0+IHtcclxuICAgICAgaWYgKGVsZVtrZXldKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdFJpc2soKSB7XHJcbiAgICB0aGlzLnNldFBvcHVwQnV0dG9ucygpO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUmlzaygpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnICYmIHRoaXMuZWRpdERldGFpbHMuSWZBc3Nlc3NtZW50RG9uZSA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlJDQXJyID0gdGhpcy5lZGl0RGV0YWlscy5yY19pZDtcclxuICAgICAgY29uc3QgY3VyclJDQXJyID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICdyY19pZCdcclxuICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXZSQ0Fyci5sZW5ndGggPT09IGN1cnJSQ0Fyci5sZW5ndGggJiZcclxuICAgICAgICBwcmV2UkNBcnJcclxuICAgICAgICAgIC5zb3J0KClcclxuICAgICAgICAgIC5ldmVyeSgodmFsdWU6IGFueSwgaW5kZXg6IGFueSkgPT4gdmFsdWUgPT09IGN1cnJSQ0Fyci5zb3J0KClbaW5kZXhdKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZVJpc2sodGhpcy5yaXNrRm9ybSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XHJcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgICBtZXNzYWdlOiBgVGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBhc3NvY2lhdGVkIHdpdGggdGhpcyByaXNrIGhhcyBiZWVuIG1vZGlmaWVkLlxyXG4gICAgICAgICAgICAgICBIZW5jZSwgdGhpcyByaXNrIG5lZWRzIHRvIGJlIHJlYXNzZXNzZWQuIE9uY2UgeW91IGNvbmZpcm0sIHRoZSBjdXJyZW50IGR1ZSBkYXRlIHdpbGwgYmUgY2xvc2VkIGFuZCBhIG5ldyByaXNrIGFzc2Vzc21lbnQgZHVlIGRhdGUgd2lsbCBiZSBnZW5lcmF0ZWQuYCxcclxuICAgICAgICAgIGFjdGlvbjogJ0VESVRfUklTSycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZVJpc2sodGhpcy5yaXNrRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50Lm5hbWUpIHtcclxuICAgICAgY2FzZSAnUmlzayBPdmVyc2Vlcic6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRPdmVyc2VlciA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHknOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvbiA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFBsYW5zJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1Jpc2sgTGFiZWwnOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkUmlza0xhYmVsID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmlzaygpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5yaXNrRm9ybS50aXRsZTtcclxuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XHJcbiAgICB0aGlzLnJpc2tGb3JtLnRpdGxlID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuICAgIC8vICgoIXRoaXMuc2V0dGluZ3NJbmZvLmFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlKSAmJiAodGhpcy5yaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIDwgMSkgJiYgdGhpcy5yaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCcpIHx8XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnJpc2tGb3JtLnRpdGxlIHx8XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QubGVuZ3RoID09IDAgfHxcclxuICAgICAgKHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPT09ICdSRVBPUlRFRCcgJiZcclxuICAgICAgICAhdGhpcy5yaXNrRm9ybT8uZGVzY3JpcHRpb24/LnRyaW0oKT8ubGVuZ3RoKSB8fFxyXG4gICAgICAodGhpcy5yaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCcgJiZcclxuICAgICAgICAoIXRoaXMucmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgfHxcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgPT09ICcnKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZVJpc2socmlza0Zvcm06IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgdGl0bGU6IHJpc2tGb3JtLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogcmlza0Zvcm0uZGVzY3JpcHRpb24sXHJcbiAgICAgIGNhdGVnb3J5X2N1c3RvbV90YWc6IHJpc2tGb3JtLmNhdGVnb3J5Q3VzdG9tVGFncyxcclxuICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGU6IHRoaXMuc2V0dGluZ3NJbmZvLmFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlLFxyXG4gICAgICBvd25lcjogdGhpcy5yZXR1cm5JZHMocmlza0Zvcm0ub3duZXJzTGlzdCwgJ21lbWJlcl9pZCcpLFxyXG4gICAgICBjYXRlZ29yeTogcmlza0Zvcm0uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgPyBbcmlza0Zvcm0uY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9pZF1cclxuICAgICAgICA6IFtdLFxyXG4gICAgICBtYW5hZ2Vfb3ZlcnNpZ2h0OiByaXNrRm9ybS5hZGRPdmVyc2VlclxyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCwgJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgcmNfaWQ6IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsICdpdGVtX2lkJyksXHJcbiAgICAgIGhlYWRfaWRzOiByaXNrRm9ybS5oZWFkX2lkcyxcclxuICAgICAgcmF0aW5nX2FycjogW10sXHJcbiAgICAgIG1lbWJlcl9pZDogdGhpcy5tZW1iZXJJZCxcclxuICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLm9yZ2FuaXphdGlvbklkLFxyXG4gICAgICByaXNrX3Byb2dyZXNzX2ZsYWc6XHJcbiAgICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgPyB0aGlzLmVkaXREZXRhaWxzLnJpc2tfcHJvZ3Jlc3NfZmxhZyA6IDEsXHJcbiAgICAgIElmQXNzZXNzbWVudERvbmU6XHJcbiAgICAgICAgdGhpcy5tb2RlID09ICdFRElUJyA/IHRoaXMuZWRpdERldGFpbHMuSWZBc3Nlc3NtZW50RG9uZSA6IDAsXHJcbiAgICAgIHdvcmtzaG9wX2lkOiB0aGlzLm1vZGUgPT0gJ0VESVQnID8gdGhpcy5lZGl0RGV0YWlscy53b3Jrc2hvcF9pZCA6IDAsXHJcbiAgICAgIGNvbXBsZXRlX2Fzc2Vzc21lbnQ6IDAsXHJcbiAgICAgIG1pdGlnYXRpb246IHJpc2tGb3JtLmFkZE1pdGlnYXRpb24gPyByaXNrRm9ybS5taXRpZ2F0aW9uIDogMCxcclxuICAgICAgd2VpZ2h0YWdlX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2VuYWJsZSxcclxuICAgICAgdHJlYXRtZW50X3R5cGU6IHRoaXMuc2V0dGluZ3NJbmZvLnRyZWF0bWVudF9jcml0ZXJpYSxcclxuICAgICAgd2VpZ2h0YWdlX2RldGFpbHM6IHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLFxyXG4gICAgICB3ZWlnaHRhZ2Vfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2Vfc2V0X2J5LFxyXG4gICAgICB3ZWlnaHRhZ2Vfc3RyOiBbXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2RldGFpbHMuaW1wYWN0LnZhbHVlLFxyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLmxpa2VsaWhvb2QudmFsdWUsXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2RldGFpbHMudmVsb2NpdHkudmFsdWUsXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2RldGFpbHMudnVsbmVyYWJpbGl0eS52YWx1ZSxcclxuICAgICAgXSxcclxuICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnk6IHRoaXMuc2V0dGluZ3NJbmZvLmFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5LFxyXG4gICAgICAvLyBhc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM6ICh0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSkgPyB0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgOiByaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMsXHJcbiAgICAgIHJpc2tfdHlwZTogdGhpcy5yaXNrRm9ybT8ucmlza1R5cGUgPz8gJ05PUk1BTCcsXHJcbiAgICAgIG1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbjogdGhpcy5yaXNrRm9ybT8uYWRkTWl0aWdhdGlvblBsYW5cclxuICAgICAgICA/IHRoaXMucmlza0Zvcm0/Lm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPz8gJydcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogdGhpcy5yaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHMsXHJcbiAgICAgIHJpc2tfbGFiZWw6IHJpc2tGb3JtPy5hZGRSaXNrTGFiZWwgPyByaXNrRm9ybT8ucmlza0xhYmVsVmFsdWUgOiAxLFxyXG4gICAgICBmdXR1cmVfYnVzaW5lc3NjeWNsZV92aXNpYmlsaXR5OlxyXG4gICAgICAgIHJpc2tGb3JtPy5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID8/IHRydWUsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHBheWxvYWRbJ3VzZXJncm91cF9pZHMnXSA9IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLmdyb3Vwc0xpc3QsICdfaWQnKTtcclxuICAgICAgcGF5bG9hZFsnb3ZlcnNlZXJncm91cF9pZHMnXSA9IHJpc2tGb3JtLmFkZE92ZXJzZWVyXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QsICdfaWQnKVxyXG4gICAgICAgIDogW107XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMucmlza1NlcnZpY2UuYWRkUmlzayhwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tEYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5yaXNrSWQgPSByZXMuX2lkO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnICYmIHRoaXMub3BlbmVkRnJvbSAhPT0gJ01PVkVfVE9fUkVHSVNURVInKSB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmlzayBoYXMgYmVlbiBtb2RpZmllZC5gO1xyXG4gICAgICB0aGlzLnJpc2tTZXJ2aWNlLnVwZGF0ZVJpc2sodGhpcy5yaXNrSWQsIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7XHJcbiAgICAgICAgZXZ0OiB7IGFjdGlvbjogJ01PVkVfVE9fUkVHSVNURVInLCBwYXlsb2FkIH0sXHJcbiAgICAgICAgY29uZmlybTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnJpc2tGb3JtID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgcmlza1R5cGU6IHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlLFxyXG4gICAgICBhZGRNaXRpZ2F0aW9uUGxhbjogZmFsc2UsXHJcbiAgICAgIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46ICcnLFxyXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBbXSxcclxuICAgICAgb3duZXJzTGlzdDogW10sXHJcbiAgICAgIGdyb3Vwc0xpc3Q6IFtdLFxyXG4gICAgICBjYXRlZ29yeToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgICBvdmVyc2VlcnNMaXN0OiBbXSxcclxuICAgICAgbWl0aWdhdGlvbjogMCxcclxuICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzOiAwLFxyXG4gICAgICBoZWFkX2lkczogW10sXHJcbiAgICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgICAgYWRkTWl0aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiB7XHJcbiAgICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICB9LFxyXG4gICAgICByaXNrTGFiZWxWYWx1ZTogMSxcclxuICAgICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IHRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCk7XHJcbiAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogMCxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogMCxcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1NldCBhIFJlYXNzZXNzbWVudCBGcmVxdWVuY3knO1xyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgdGhpcy5nZXRPd25lcnNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3Umlza3MnOlxyXG4gICAgICAgIHRoaXMudmlld1Jpc2tzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21hbmFnZVJlcG9ydGVkUmlzayc6XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvUmVwb3J0ZWQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmlza0RhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jpc2tzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcmlzay13b3Jrcm9vbS8nICsgdGhpcy5yaXNrSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9yaXNrdjInKSkge1xyXG4gICAgICAgIHVybCArPSAnL3Jpc2t2Mi9yaXNrLXdvcmtyb29tLycgKyB0aGlzLnJpc2tJZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrL3Jpc2std29ya3Jvb20vJyArIHRoaXMucmlza0lkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIC8vdGhpcy5yZXNldEZvcm0oKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9SZXBvcnRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCArPSAnL3JlcG9ydGVkLXJpc2snO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcmlza3YyJykpIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrdjIvcmVwb3J0ZWQtcmlzayc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsICs9ICcvcmlzay9yZXBvcnRlZC1yaXNrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAvL3RoaXMucmVzZXRGb3JtKCk7XHJcbiAgfVxyXG4gIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tNaXRpZ2F0aW9uUGxhbigpIHtcclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPT0gJzxicj4nKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRlKGV2ZW50KTtcclxuICAgIHRoaXMucmlza0Zvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudD8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlcjtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlczogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAocmVzPy5mcmVxdWVuY3kpIHtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gcmVzPy5mcmVxdWVuY3kuc3BsaXQoJ34nKTtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lUaW1lID1cclxuICAgICAgICAgIHJlcz8uZnJlcXVlbmN5X3RpbWUgPT09ICcwMDowMDowMCcgPyAnMTI6MDAgYW0nIDogcmVzPy5mcmVxdWVuY3lfdGltZTtcclxuICAgICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMF0pKSB7XHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICB0aGlzLmdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgICAgICB0aGlzLmdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcclxuICAgICAgICAgICAgICAgIG1vbWVudChcclxuICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1sxXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdICtcclxuICAgICAgICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xyXG4gICAgICAgICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICAgICAgICAnWVlZWS1NTS1ERCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgICkudW5peCgpICogMTAwMFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgICAgICdPbmUgVGltZSAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbZGF0ZU9iamVjdC5nZXRNb250aCgpXSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIGZyZXF1ZW5jeURldGFpbHMgYXJyYXkgYW5kIGEgZnJlcXVlbmN5VGltZSBzdHJpbmcgYW5kIHJldHVybnMgYSBmcmVxdWVuY3lQbGFjZWhvbGRlclxyXG4gICAqIHN0cmluZy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxLDIsMyw0LDVcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIixcclxuICAgKiBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3lEZXRhaWxzWzFdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IDNyZCAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArXHJcbiAgICAgICAgICAndGggJyArXHJcbiAgICAgICAgICBzZWxlY3RlZERheS5qb2luKCkgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBtb250aCBuYW1lcy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxyXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoIGJ5IGZyZXF1ZW5jeVRpbWUuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsXHJcbiAgICogMm5kLCAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCwgSW50ZXJ2YWw6IGV2ZXJ5IHllYXJTZXF1ZW5jZSB5ZWFycyBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqXHJcbiAgICogSSdtIHRyeWluZyB0byB3cml0ZSBhIHRlc3QgdGhhdCB3aWxsIHRlc3QgdGhlIGFib3ZlIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogSGVyZSdzIHdoYXQgSSBoYXZlIHNvIGZhcjpcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswXSA9IFwiWWVhcmx5XCJcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHllYXJTZXF1ZW5jZSA9XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAwID8gcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgOiAxO1xyXG4gICAgICBpZiAoeWVhclNlcXVlbmNlIDwgMikge1xyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh5ZWFyU2VxdWVuY2UgPiAxKSB7XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZicgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICczcmQgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3RoIG9mICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdzdCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdyZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyAxLCAyLCAzLCAyMSwgMjIsIDIzLCBvciBncmVhdGVyIHRoYW4gMywgdGhlbiBzZXQgdGhlXHJcbiAgICogZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gYSBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBhbmQgdGhlIGZyZXF1ZW5jeVRpbWUuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIzXCIsIFwiMVwiLCBcIjEsMiwzXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBxdWFydGVybHkgPSBbXHJcbiAgICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbW9udGggbmFtZXMuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYW4gZXZlbnQgb2JqZWN0LCBhbmQgaWYgaXQgZXhpc3RzLCBpdCBjcmVhdGVzIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXNcclxuICAgKiB0aGUgZXZlbnQgb2JqZWN0LCBhbmQgYXNzaWducyBpdCB0byB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eS5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBudWxsLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgbnVsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgYW4gZW1wdHkgb2JqZWN0LCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gZW1wdHlcclxuICAgKiBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIHRoZW4gdGhlIGZyZXF1ZW5jeURldGFpbHMgcHJvcGVydHkgd2lsbCBiZSBhblxyXG4gICAqIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIGJ1dCBzb21lIG9mIHRob3NlIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgdGhlblxyXG4gICAqIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcywgYnV0IHNvbWUgb2YgdGhvc2VcclxuICAgKiBwcm9wZXJ0aWVzIHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLCBidXQgc29tZSBvZiB0aG9zZSBwcm9wZXJ0aWVzIGFyZSBudWxsLCB0aGVuIHRoZVxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSA9IHtcclxuICAgKi9cclxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzID0gZGF0YTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbHctcmlza1wiICpuZ0lmPVwiIXNob3dTbWlsZXlcIj5cclxuICAgIDwhLS0gUmlzayBUeXBlIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy90eXBlLnN2Z1wiIGFsdD1cImltXCIgKm5nSWY9XCJ0cnVlXCI+XHJcblxyXG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmlzayBUeXBlIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlzay10eXBlLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwicmlza0Zvcm0/LnJpc2tUeXBlID09PSAnTk9STUFMJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kaXNhYmxlZF09XCIhcmlza1R5cGVDaGFuZ2VBbGxvd2VkXCIgKGNsaWNrKT1cImNoYW5nZVJpc2soJ05PUk1BTCcpXCI+QUREIFRPIFJJU0sgUkVHSVNURVI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBpbmZvXCIgW2FwcFRvb2x0aXBdPVwiJ1RoaXMgb3B0aW9uIGxldHMgeW91IGFkZCBhIHJpc2sgZGlyZWN0bHkgdG8gdGhlIFJpc2sgUmVnaXN0ZXIuIFRoZSByaXNrIG93bmVycyB3aWxsIHJlY2VpdmUgYW4gYWxlcnQgYW5kIHRoZXkgY2FuIGJlZ2luIHRoZSB0aGUgcmlzayBhc3Nlc3NtZW50IHByb2Nlc3MuJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJyaXNrRm9ybT8ucmlza1R5cGUgPT09ICdSRVBPUlRFRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZGlzYWJsZWRdPVwiIXJpc2tUeXBlQ2hhbmdlQWxsb3dlZFwiIChjbGljayk9XCJjaGFuZ2VSaXNrKCdSRVBPUlRFRCcpXCI+UkVQT1JUIEEgUklTSzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGluZm9cIiBbYXBwVG9vbHRpcF09XCInVGhpcyBvcHRpb25zIGxldHMgeW91IHJlcG9ydCBhIHJpc2sgYW5kIGFzc2lnbiBpdCB0byB0aGUgcmlzayBvd25lcnMuIFRoZSByaXNrIG93bmVycyB3aWxsIGhhdmUgdGhlIG9wdGlvbiB0byBlaXRoZXIgYWRkIHRoZSByaXNrIHRvIHRoZSBSaXNrIFJlZ2lzdGVyIG9yIGZsYWcgaXQgZm9yIGEgZm9sbG93LXVwIGF0IGEgbGF0ZXIgZGF0ZS4nXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MzI7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFja2dyb3VuZC1nbGlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYSByaXNrIHR5cGU8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSaXNrIE5hbWUgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZScgICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0udGl0bGVcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIiBhbHQ9XCJpbVwiICpuZ0lmPVwicmlza0Zvcm0/LnRpdGxlPy50cmltKCk/Lmxlbmd0aCA9PT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCI+XHJcblxyXG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwicmlza0Zvcm0/LnRpdGxlPy50cmltKCk/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5XSEFUIFJJU0sgV09VTEQgWU9VIExJS0UgVE8gTUFOQUdFPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHNwYWNlVHJpbSB0eXBlPVwidGV4dFwiIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCIgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyxmYWxzZSlcIiBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBhIHJpc2sgbmFtZVwiICpuZ0lmPVwicmlza0Zvcm0/LnRpdGxlPy50cmltKCkgPT0nJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJpc2tGb3JtPy50aXRsZT8udHJpbSgpIT0gJycgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tyaXNrRm9ybS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKCFyaXNrRm9ybS50aXRsZSlcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYSByaXNrIG5hbWU8L3A+XHJcbiAgICAgICAgICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5kZXNjcmlwdGlvblwiIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIiAoY2xpY2tPdXRzaWRlKT1cImNoZWNrRGVzY3JpcHRpb24oKVwiPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAocmlza0Zvcm0ucmlza1R5cGUgPT09J1JFUE9SVEVEJyAmJiAhcmlza0Zvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYSByaXNrIGRlc2NyaXB0aW9uPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmlzayBPd25lciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIgYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcicgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXInXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9pbS1jcmVhdGluZy5zdmdcIiBhbHQ9XCJcIiAvPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ293bmVyJ1wiIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5XSE8gSVMgUkVTUE9OU0lCTEUgRk9SIE1BTkFHSU5HIFRISVMgUklTSz8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGlzIGlzIHRoZSBwZXJzb24gdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJpc2suJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvd25lcicsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSaXNrIE93bmVyKHMpXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MCB8fCByaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cIiFmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihyaXNrRm9ybT8ub3duZXJzTGlzdHxzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0KSBhcyBvd25lckxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLG93bmVyKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwib3duZXI/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7b3duZXI/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicG9wb3Zlck93bmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAxXCI+K3t7cmlza0Zvcm0/Lm93bmVyc0xpc3Q/LnNsaWNlKDEpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHJpc2tGb3JtPy5vd25lcnNMaXN0fHNob3J0TWVyZ2UgOiBub25SZW1vdmFibGVVc2Vyc0xpc3QpIGFzIG93bmVyTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAqbmdJZj1cIiFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcIiAoY2xpY2spPVwicmVtb3ZlKCdvd25lcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3duZXI/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJPd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jpc2tGb3JtPy5vd25lcnNMaXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyVXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiPit7e3Jpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ093bmVyZ3JvdXAnLCByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXSlcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tyaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIj4re3tyaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ093bmVyZ3JvdXAnLCByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7cmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcidcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVyJyx0cnVlKVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAocmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aD09PTApXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U2VsZWN0IE93bmVyKHMpIGZvciB0aGlzIHJpc2suPC9wPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3duZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihyaXNrRm9ybT8ub3duZXJzTGlzdHxzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0KSBhcyBvd25lclBvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lclBvcCB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmID0gXCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXCIgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ293bmVyJyxvd25lcilcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocmlza0Zvcm0/Lm93bmVyc0xpc3R8c2hvcnRNZXJnZSA6IG5vblJlbW92YWJsZVVzZXJzTGlzdCkgYXMgb3duZXJQb3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3duZXIgb2Ygb3duZXJQb3AgfCBzbGljZTogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZiA9IFwiIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVwiIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvd25lcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgKHJpc2tGb3JtPy5ncm91cHNMaXN0KSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdPd25lcmdyb3VwJywgZGF0YSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXNwb25zaWJpbGl0eS1jZW50ZXIuc3ZnXCIgYWx0PVwiXCI+XHJcblxyXG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4wICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJlc3BvbnNpYmlsaXR5IENlbnRlciA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHRoZSBjb3Jwb3JhdGUgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlIG9mIGFuIG9yZ2FuaXphdGlvbi4gT25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBjYW4gYmUgZXhwb3NlZCB0byBhIHJpc2sgYW5kIGFjY29yZGluZ2x5LCB0aGUgcmlzayBtdXN0IGJlIGFzc2Vzc2VkIGFnYWluc3QgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJjTmFtZSBvZiByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMCwxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmNOYW1lKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJyY05hbWUuaXRlbV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7cmNOYW1lLml0ZW1fbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyUkMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDFcIj4re3tyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMSkubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCByY05hbWUgb2Ygcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjTmFtZSlcIj4mI3hlOTBkOzwvaT4ge3tyY05hbWUuaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicG9wb3ZlclJDLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyx0cnVlKVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAocmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD09MClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Bc3NpZ25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzIHJpc2sgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIocyk8L3A+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJSQyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjTmFtZSBvZiByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmNOYW1lKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmNOYW1lLml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJpc2sgRnJlcXVlbmN5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXCIgKm5nSWY9XCJyaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8IHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ID09PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCIgYWx0PVwiXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cInJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICYmIHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICE9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeSdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+SE9XIE9GVEVOIERPRVMgVEhJUyBSSVNLIE5FRUQgVE8gQkUgUkVBU1NFU1NFRD8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGUgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2sgcmVhc3Nlc3NtZW50IGZyZXF1ZW5jeS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhcmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5Jyx0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2V0IGEgUmVhc3Nlc3NtZW50IEZyZXF1ZW5jeVwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiICpuZ0lmPVwicmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2ZyZXF1ZW5jeVBsYWNlaG9sZGVyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsdHJ1ZSlcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2ggW25nVmFsdWVdPVwicmlza0Zvcm0/LmVuYWJsZUFsbEZ1dHVyZUJ1c2luZXNzQ3ljbGVcIiAobmdWYWx1ZUNoYW5nZSk9XCJyaXNrRm9ybS5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID0gJGV2ZW50XCI+RE8gWU9VIFdBTlQgVEhJUyBUTyBTSE9XIElOIEFMTCBGVVRVUkUgQlVTSU5FU1MgQ1lDTEVTP1xyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKCFyaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSB8fCByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UGxlYXNlIHNlbGVjdCB0aGUgZnJlcXVlbmN5IG9mIG9jY3VycmVuY2UgZm9yIHRoaXMgcmlzay48L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSaXNrIENhdGVnb3J5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIXJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmlzayBDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInUmlzayBDYXRlZ29yaWVzIGFyZSB1c2VkIHRvIGdyb3VwIHNpbWlsYXIgcmlza3MuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiIXJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSaXNrIENhdGVnb3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScscmlza0Zvcm0uY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeSlcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxyaXNrRm9ybS5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPnt7cmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLHRydWUpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyaXNrRm9ybT8uY2F0ZWdvcnlDdXN0b21UYWdzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgdGFnIG9mIHJpc2tGb3JtLmNhdGVnb3J5Q3VzdG9tVGFnc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj57e3RhZy5jdXN0b21fdGFnX25hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJ0YWcuY3VzdG9tX3RhZ192YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0YWcuY3VzdG9tX3RhZ19uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBc3Nlc3NtZW50IERlYWRsaW5lIC0tPlxyXG4gICAgPCEtLSAhc2V0dGluZ3NJbmZvPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSAmJiByaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCcgJiYgKChjdXJyZW50VGltZVN0YW1wIDwgZWRpdERldGFpbHM/LmFzc2Vzc21lbnRfZGF0ZV90aW1lc3RhbXApIHx8ICFlZGl0RGV0YWlscz8uSWZBc3Nlc3NtZW50RG9uZSApIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2Vzc21lbnQnXCIgaWQ9XCJkZWFkbGluZVwiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2Vzc21lbnQnICAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcIlxyXG4gICAgICAgICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM+PTFcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hlbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzPDEgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3Nlc3NtZW50J1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cInJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM+PTEgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3Nlc3NtZW50J1wiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzZXNzbWVudCBEZWFkbGluZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ1RoaXMgaXMgdGhlIGRhdGUgdGhhdCB0aGUgaW5oZXJlbnQgcmlzayBhc3Nlc3NtZW50IG11c3QgYmUgY29tcGxldGVkIGJ5LidcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlNldCBOdW1iZXIgb2YgZGF5czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgY291bnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudCgnc3VidHJhY3QnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNTM7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3Nlc3NtZW50Jyx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzZXNzbWVudCcsZmFsc2UpXCIgbmFtZT1cInJpc2tBc3Nlc3NtZW50RGVhZGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVBc3Nlc3NtZW50ICNkZWFkbGluZT1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUmlza0Fzc2Vzc21lbnREZWFkbGluZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMFwiIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudCgnYWRkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTE1OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3VibWl0dGVkICYmIChyaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzPDEpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gMC5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiAqbmdJZj1cInJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM+PTFcIj5cclxuICAgICAgICAgICAgICAgICAgICBUaGlzIHJpc2sgYXNzZXNzbWVudCBuZWVkcyB0byBiZSBjb21wbGV0ZWQgYnkge3sgZGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScgfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSaXNrIE92ZXJzZWVyIC0tPlxyXG4gICAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIgYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcicgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXCJcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtLmFkZE92ZXJzZWVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGg9PTAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoPjAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcidcIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJpc2sgT3ZlcnNpZ2h0PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGlzIGlzIHRoZSBwZXJzb24gdGhhdCBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmlzayBidXQgd2hvIGlzIG5vdCByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJpc2suJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aD09MCAmJiByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Py5sZW5ndGg9PTAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgT3ZlcnNpZ2h0KHMpXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aD4wIHx8IHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8uc2xpY2UoMCwxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLG93bmVyKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwib3duZXIubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tvd25lci5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJPdmVyc2Vlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDFcIj4re3tyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8uc2xpY2UoMSkubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0WzBdKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdFswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCIgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwXCI+e3tyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdFswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3QubGVuZ3RoID4gMVwiPit7e3Jpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwICYmIHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QubGVuZ3RoID4gMFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJncm91cCcsIHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0pXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cInJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3Q/Lmxlbmd0aCA+IDFcIj4re3tyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXInXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsdHJ1ZSlcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3ZlcnNlZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdCB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdCB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIChyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0KSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcmdyb3VwJywgZGF0YSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5IC0tPlxyXG4gICAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcIlxyXG4gICAgICAgICpuZ0lmPVwicmlza0Zvcm0uYWRkTWl0aWdhdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9wcmlvcml0eS5zdmdcIiAqbmdJZj1cIiFyaXNrRm9ybS5taXRpZ2F0aW9uXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgPCEtLSA8c3ZnIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiIGNsYXNzPVwiZWRpdC1sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMxZTVkZDNcIiBzdHJva2Utd2lkdGg9XCIzXCIgY2xhc3M9XCJsb2FkZXItcGF0aFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cInJpc2tGb3JtLm1pdGlnYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGlzIHNldHMgdGhlIHByaW9yaXR5IGxldmVsIGZvciB0aGUgbWl0aWdhdGlvbiBvZiBlYWNoIHJpc2suJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT48L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5taXRpZ2F0aW9uXCIgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYSBtaXRpZ2F0aW9uIHByaW9yaXR5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInJpc2tGb3JtLm1pdGlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y3Mtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1pdGlnYXRpb25EZXRhaWxzXCIgW3ZhbHVlXT1cImRhdGE/Lm1pdGlnYXRpb25faWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8ubWl0aWdhdGlvbl9jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm1pdGlnYXRpb25fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFBsYW4gLS0+XHJcbiAgICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJyaXNrRm9ybT8uYWRkTWl0aWdhdGlvblBsYW5cIj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJyaXNrU3BhY2VcIiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCIocmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiB8IHNwYWNlVHJpbSkgIT09ICcnXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIocmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiB8IHNwYWNlVHJpbSkgPT09JydcIlxyXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIocmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiB8IHNwYWNlVHJpbSkgIT09ICcnXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVjb21tZW5kZWQgTWl0aWdhdGlvbiBQbGFuczxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cIi4vbWFuaWZlc3QuanNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidTcGVjaWZ5IHRoZSBtaXRpZ2F0aW9uIHBsYW4gdGhhdCBjYW4gYmUgdW5kZXJ0YWtlbiB0byBtaXRpZ2F0ZSB0aGUgcmlzay4nXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHZjb21wbHktZWRpdG9yIFsobmdNb2RlbCldPVwicmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhblwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW5cIiAoY2xpY2tPdXRzaWRlKT1cImNoZWNrTWl0aWdhdGlvblBsYW4oKVwiPlxyXG4gICAgICAgICAgICAgIDwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJpc2sgTGFiZWwgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVwiICpuZ0lmPVwicmlza0Zvcm0/LmFkZFJpc2tMYWJlbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPCEtLSA8aW1nICpuZ0lmPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3ZlcnNpZ2h0LnN2Z1wiIGFsdD1cIlwiIC8+IC0tPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiICpuZ0lmPVwidHJ1ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SSVNLIExBQkVMIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInUmlzayBsYWJlbCBpbmZvIHRleHQgaGVyZS4uLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5yaXNrTGFiZWxWYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgcmlzayBsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyaXNrRm9ybT8ucmlza0xhYmVsVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y3Mtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJpc2tMYWJlbExpc3RcIiBbdmFsdWVdPVwiZGF0YT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPGFwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIiBbcmNJZEtleV09XCIncmNfaWQnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZFJDTGlzdCgkZXZlbnQpXCIgKGNsb3NlUmNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyxmYWxzZSlcIlxyXG4gICAgW3Npbmd1bGFyVGV4dF09XCInUmVzcG9uc2liaWxpdHkgQ2VudGVyIHNlbGVjdGVkJ1wiIFtwbHVyYWxUZXh0XT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHNlbGVjdGVkJ1wiID5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0ICpuZ0lmPVwiIWZlYXR1cmVmbGFnX2dyb3VwcyAmJiBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiIFt1c2Vyc0xpc3RdPVwib3duZXJzTGlzdFwiIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm93bmVyc0xpc3RcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIiBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZE93bmVyc0xpc3QoJGV2ZW50KVwiXHJcbiAgICBbbm9uUmVtb3ZhYmxlVXNlcnNMaXN0XT1cIm5vblJlbW92YWJsZVVzZXJzTGlzdFwiIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvd25lcicsZmFsc2UpXCJcclxuICAgIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCIgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiID48L2FwcC1vd25lci1saXN0PlxyXG5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3VwcyAmJiBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiICBbdXNlcmxpc3RdPVwib3duZXJzTGlzdFwiICBbc2VsZWN0ZWRVc2Vyc109XCJyaXNrRm9ybS5vd25lcnNMaXN0XCIgIFtncm91cExpc3RdPVwiZ3JvdXBzTGlzdFwiXHJcbiAgICBbbm9uUmVtb3ZhYmxlVXNlcklkc109XCJub25SZW1vdmFibGVVc2Vyc0xpc3RcIiAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRPd25lcnNMaXN0KCRldmVudClcIiBbc2VsZWN0ZWRHcm91cHNdPVwicmlza0Zvcm0uZ3JvdXBzTGlzdFwiXHJcbiAgICAoY2FuY2VsKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVyJyxmYWxzZSlcIiBbZ3JvdXBFbmFibGVkXT1cInRydWVcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCIgID5cclxuIDwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuIDx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIiAgW3NlbGVjdGVkVXNlcnNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzTGlzdFwiICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyc0dyb3VwTGlzdFwiXHJcbiAgICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KCRldmVudClcIiBbc2VsZWN0ZWRHcm91cHNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzR3JvdXBMaXN0XCJcclxuICAgIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLGZhbHNlKVwiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ19ncm91cHNcIiAgPlxyXG4gPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLWNhdGVnb3J5LWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiIFtjYXRlZ29yeUxpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcclxuICAgIFtzZWxlY3RlZENhdGVnb3J5XT1cInJpc2tGb3JtLmNhdGVnb3J5XCIgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZENhdGVnb3J5KCRldmVudClcIlxyXG4gICAgKGNsb3NlQ2F0ZWdvcmllc0xpc3QpPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLGZhbHNlKVwiPjwvYXBwLWNhdGVnb3J5LWxpc3Q+XHJcbjxhcHAtb3duZXItbGlzdCAqbmdJZj1cIiFmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIiBbdXNlcnNMaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzTGlzdFwiIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIiBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkT3ZlcnNlZXJzTGlzdCgkZXZlbnQpXCIgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJyxmYWxzZSlcIlxyXG4gICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIiBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCIgPlxyXG48L2FwcC1vd25lci1saXN0PlxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG5cclxuPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgW2ZyZXF1ZW5jeURldGFpbHNdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgICAoc2VsZWN0ZWRGcmVxdWVuY3kpPVwiZnJlcXVlbmN5RGF0YSgkZXZlbnQpXCJcclxuICAgIChjbG9zZUZyZXF1ZW5jeSk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLGZhbHNlKVwiPlxyXG48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWNvbnRhaW5lcj5cclxuXHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcclxuICAgICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcclxuICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gICAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPlxyXG48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuIl19
1587
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmlzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakYsTUFBTSxPQUFPLHFCQUFxQjtJQTRJaEMsWUFDVSxXQUEyQixFQUMzQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixRQUF5QixFQUN6QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDbEIsTUFBdUI7UUFOM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWpKaEMsOEJBQXlCLEdBQVEsRUFBRSxDQUFDO1FBQ3BDLGtDQUE2QixHQUFRLEVBQUUsQ0FBQztRQUN4QyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFRLEVB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LGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNk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RUFBRSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOztrSEFqcURVLHFCQUFxQjtzR0FBckIscUJBQXFCLHNrQkM1QmxDLDJ1MURBNGhEQTsyRkRoZ0RhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQXVKMUIsUUFBUTs0Q0E5SEYsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgT1RIRVJfR1JDX0NBUkQgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXJpc2snLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Umlza0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGFueSA9IFtdO1xyXG4gIG1pdGlnYXRpb25EZXRhaWxzOiBhbnkgPSBbXTtcclxuICBvd25lcnNMaXN0OiBhbnkgPSBbXTtcclxuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGVkaXREZXRhaWxzITogYW55O1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhYDtcclxuICByaXNrRGF0YSE6IGFueTtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcclxuICBdO1xyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbXHJcbiAgICAncmMnLFxyXG4gICAgJ293bmVyJyxcclxuICAgICdvdmVyc2VlcicsXHJcbiAgICAnY2F0ZWdvcnknLFxyXG4gICAgJ2ZyZXF1ZW5jeScsXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0VESVQnO1xyXG4gIEBJbnB1dCgpIHJpc2tJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRSaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcclxuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJjU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBzdHJhdGVnaWM6IHtcclxuICAgICAgbmFtZTogJ1NUUkFURUdJQycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIG9wZXJhdGlvbmFsOiB7XHJcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIGNvbXBsaWFuY2U6IHtcclxuICAgICAgbmFtZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbmFtZTogJ09USEVSUycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0dyb3VwTGlzdDogYW55ID0gW107XHJcbiAgYWRtaW5zTGlzdDogYW55ID0gW107XHJcbiAgb3ZlcnNlZXJzSWRMaXN0OiBhbnkgPSBbXTtcclxuICB0aW1lem9uZSE6IHN0cmluZztcclxuICBkYXRlITogRGF0ZTtcclxuICByaXNrTmFtZUZvY3VzID0gZmFsc2U7XHJcbiAgYXNzZXNzbWVudEZvY3VzID0gZmFsc2U7XHJcbiAgcmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgcmlza0Zvcm06IGFueSA9IHtcclxuICAgIHJpc2tUeXBlOiAnTk9STUFMJyxcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q6IFtdLFxyXG4gICAgb3duZXJzTGlzdDogW10sXHJcbiAgICBncm91cHNMaXN0OiBbXSxcclxuICAgIGNhdGVnb3J5OiB7XHJcbiAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcclxuICAgIH0sXHJcbiAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgb3ZlcnNlZXJzTGlzdDogW10sXHJcbiAgICBvdmVyc2VlcnNHcm91cExpc3Q6IFtdLFxyXG4gICAgbWl0aWdhdGlvbjogMCxcclxuICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogMCxcclxuICAgIGhlYWRfaWRzOiBbXSxcclxuICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgIGFkZE1pdGlnYXRpb246IGZhbHNlLFxyXG4gICAgYWRkTWl0aWdhdGlvblBsYW46IGZhbHNlLFxyXG4gICAgbWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbjogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczoge1xyXG4gICAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IDAsXHJcbiAgICB9LFxyXG4gICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIHJpc2tMYWJlbFZhbHVlOiAxLFxyXG4gICAgZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZTogdHJ1ZSxcclxuICAgIEdSQzogZmFsc2UsXHJcbiAgICBzZWxlY3RlZEdSQ09iamVjdHM6IFtdLFxyXG4gIH07XHJcbiAgYXBpVXJsID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuXHJcbiAgdXNlcnNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgYWRtaW5zTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICByZW1pbmRfYmVmb3JlX2RheXM6IDAsXHJcbiAgICBmYWlsZWRfYWZ0ZXJfZGF5czogMCxcclxuICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IDAsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdTZXQgYSBSZWFzc2Vzc21lbnQgRnJlcXVlbmN5JztcclxuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgc2V0dGluZ3NJbmZvITogYW55O1xyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgY3VycmVudFRpbWVTdGFtcCA9IE1hdGgucm91bmQoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gIGZlYXR1cmVmbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyb3Vwc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuXHJcbiAgLyogQ3JlYXRpbmcgYW4gYXJyYXkgZm9yIHJpc2sgbGFiZWwgd2l0aCBpdCdzIHZhbHVlLiAqL1xyXG4gIHJpc2tMYWJlbExpc3Q6IGFueSA9IFtcclxuICAgIHsgbmFtZTogJ05ld2x5IElkZW50aWZpZWQgUmlzaycsIHZhbHVlOiAxIH0sXHJcbiAgICB7IG5hbWU6ICdSYXBpZGx5IENoYW5naW5nIFJpc2snLCB2YWx1ZTogMiB9LFxyXG4gIF07XHJcbiAgb3RoZXJHUkNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgZ3JjTGlzdDogYW55O1xyXG4gIGdyY0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkR1JDVGFiOiBudW1iZXIgPSAwO1xyXG4gIGdyY0RhdGFXaXRoVHlwZXM6IGFueSA9IHtcclxuICAgIGFzc2V0czogW10sXHJcbiAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgdmVuZG9yczogW10sXHJcbiAgICBpbnZlbnRvcnk6IFtdLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgdGhpcy50aW1lem9uZSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclRpbWVab25lKCk7XHJcbiAgfVxyXG5cclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHJpc2snLFxyXG4gIH07XHJcblxyXG4gIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdEZXNjcmliZSB0aGUgcmVjb21tZW5kZWQgbWl0aWdhdGlvbiBwbGFucycsXHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yaXNrX2dyb3VwcycpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRBZG1pbnNMaXN0KCk7XHJcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRPd25lcnNMaXN0KCk7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgdGhpcy5nZXRHcm91cExpc3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmdldFNldHRpbmdzSW5mbygpO1xyXG5cclxuICAgIHRoaXMuc2hvcnRNb250aCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5tb250aEFycmF5Lm1hcCgobW9udGgpID0+XHJcbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgIT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5wdXNoKHRoaXMubWVtYmVySWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JFUE9SVEVEX1JJU0snKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFJpc2tUeXBlQmFzZWRPblN1YnNjcmlwdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9UTyBnZXQgZ3JvdXBMaXN0IGRhdGFcclxuICBnZXRHcm91cExpc3QoKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldEdyb3Vwc0xpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFJpc2tUeXBlQmFzZWRPblN1YnNjcmlwdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSRVBPUlRFRF9SSVNLJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucGVybWlzc2lvbikge1xyXG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IEpTT04ucGFyc2UocmVzPy5wZXJtaXNzaW9uKTtcclxuICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlPy5pc0FkbWluKCkgfHwgdGhpcy5hdXRoU2VydmljZT8uaXNLZXlBZG1pbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRoU2VydmljZS5pc01hbmFnZXIoKSkge1xyXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbj8uTVJJU0sgPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzVXNlcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucm9sZUFjdGlvbnMpIHtcclxuICAgICAgICAgIGNvbnN0IG1vZHVsZUluZGV4ID0gcmVzLnJvbGVBY3Rpb25zLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVOYW1lID09ICdyaXNrJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJpc2tQZXJtaXNzaW9ucyA9XHJcbiAgICAgICAgICAgIHJlcy5yb2xlQWN0aW9uc1ttb2R1bGVJbmRleF0uc3ViTW9kdWxlWzFdLnBlcm1pc3Npb25zO1xyXG4gICAgICAgICAgcmlza1Blcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbi5uYW1lID09ICdtYW5hZ2Ugcmlza3MnICYmIHBlcm1pc3Npb24uZW5hYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVJpc2sodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJpc2tGb3JtID0geyAuLi50aGlzLnJpc2tGb3JtLCAuLi57IHJpc2tUeXBlOiB0eXBlIH0gfTtcclxuICAgIHRoaXMuc2V0UG9wdXBCdXR0b25zKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ1JFUE9SVEVEJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50bHlMb2dnZWRJblVzZXIoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgY29uc3Qgb3duZXJzTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgdGhpcy5lZGl0RGV0YWlscz8ub3duZXIsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgICBpZiAob3duZXJzTGlzdC5pbmNsdWRlcyh0aGlzLm1lbWJlcklkKSkge1xyXG4gICAgICAgIHJldHVybiBbdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBvcHVwQnV0dG9ucygpIHtcclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID09PSAnUkVQT1JURUQnKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgICAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBSaXNrcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvblRleHQ6ICdWaWV3IFJlcG9ydGVkIFJpc2tzJyxcclxuICAgICAgICAgIGNsYXNzOiAnYmx1ZS1idG4nLFxyXG4gICAgICAgICAgaWQ6ICdtYW5hZ2VSZXBvcnRlZFJpc2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgICAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFJpc2snLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3Umlza3MnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFJpc2tEZXRhaWxzKHJpc2tJZDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldFJpc2tEZXRhaWwocmlza0lkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXREZXRhaWxzID0gY2xvbmVEZWVwKHJlcyk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS50aXRsZSA9IHJlcy50aXRsZTtcclxuICAgICAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnTU9WRV9UT19SRUdJU1RFUicpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSByZXM/LnJpc2tfdHlwZSA/PyAnUkVQT1JURUQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9IHJlcy5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgICByZXMucmNfaWQsXHJcbiAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMub3duZXJzTGlzdCxcclxuICAgICAgICAgIHJlcy5vd25lcixcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmdyb3Vwc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICByZXM/LnVzZXJncm91cF9pZHMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID0gcmVzLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW47XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuc2V0Q2F0ZWdvcnlUeXBlKHJlcy5jYXRlZ29yeV90eXBlWzBdKTtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5jYXRlZ29yeUxpc3RbdHlwZV0/LmRhdGEuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5jYXRlZ29yeV9pZCA9PSByZXMuY2F0ZWdvcnlbMF1cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChjYXRlZ29yeUluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiB0aGlzLmNhdGVnb3J5TGlzdFt0eXBlXT8uZGF0YVtjYXRlZ29yeUluZGV4XSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5Q3VzdG9tVGFncyA9IHJlcy5jYXRlZ29yeV9jdXN0b21fdGFnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5vd25lcnNMaXN0LFxyXG4gICAgICAgICAgcmVzLm1hbmFnZV9vdmVyc2lnaHQsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICByZXM/Lm92ZXJzZWVyZ3JvdXBfaWRzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbiA9IHJlcz8ubWl0aWdhdGlvblxyXG4gICAgICAgICAgPyByZXM/Lm1pdGlnYXRpb25cclxuICAgICAgICAgIDogdGhpcy5yaXNrRm9ybT8ubWl0aWdhdGlvbjtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA9IHJlcy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRPdmVyc2VlciA9XHJcbiAgICAgICAgICByZXMubWFuYWdlX292ZXJzaWdodC5sZW5ndGggPiAwIHx8IHJlcz8ub3ZlcnNlZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uID0gcmVzLm1pdGlnYXRpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHJlcy5vcmdhbmlzYXRpb25faWQ7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5oZWFkX2lkcyA9IHJlcz8uaGVhZF9pZHMgPyByZXM/LmhlYWRfaWRzIDogW107XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID1cclxuICAgICAgICAgIHJlcz8ubWl0aWdhdGlvbl9wbGFuX3JlY29tbWVuZGF0aW9uID8/ICcnO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvblBsYW4gPVxyXG4gICAgICAgICAgcmVzPy5taXRpZ2F0aW9uX3BsYW5fcmVjb21tZW5kYXRpb24udHJpbSgpPy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRSaXNrTGFiZWwgPSByZXMucmlza19sYWJlbCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBpZiAocmVzLmFzc2Vzc21lbnRfZGF0ZV90aW1lc3RhbXApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKHJlcy5hc3Nlc3NtZW50X2RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzLklmQXNzZXNzbWVudERvbmUgPiAwKSB7XHJcbiAgICAgICAgICByZXMuYWxsX293bmVyX2Fyci5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXNzZXNzbWVudF9kb25lID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LnB1c2goZWxlbWVudC5tZW1iZXJfaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCA9PT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBuZXcgU2V0PGFueVtdPihbLi4udGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QsIC4uLnJlcz8ub3duZXJdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBuZXcgU2V0PGFueVtdPihbXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRDdXJyZW50bHlMb2dnZWRJblVzZXIoKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXM/LnJpc2tfdHlwZSA9PT0gJ05PUk1BTCcpIHtcclxuICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0ID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbmV3IFNldDxhbnlbXT4oW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCksXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QocmVzLmxpbmtlZEdyY0RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZSA9XHJcbiAgICAgICAgICByZXM/LmZ1dHVyZV9idXNpbmVzc2N5Y2xlX3Zpc2liaWxpdHk7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGUocmVzPy5mcmVxdWVuY3lfZGV0YWlscyk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IHJlcz8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihyZXMuZnJlcXVlbmN5X2RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvbikge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ01JVElHQVRJT04nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZE92ZXJzZWVyKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTUlUSUdBVElPTl9QTEFOJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5hZGRSaXNrTGFiZWwpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSSVNLX0xBQkVMJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGgpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdHUkMnKTtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5HUkMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2F0ZWdvcnlUeXBlKHR5cGU6IGFueSkge1xyXG4gICAgaWYgKHR5cGUgPT09IDEpIHtcclxuICAgICAgcmV0dXJuICdzdHJhdGVnaWMnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAyKSB7XHJcbiAgICAgIHJldHVybiAnb3BlcmF0aW9uYWwnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAzKSB7XHJcbiAgICAgIHJldHVybiAnY29tcGxpYW5jZSc7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IDApIHtcclxuICAgICAgcmV0dXJuICdvdGhlcnMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdzdHJhdGVnaWMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UkNMaXN0KCkge1xyXG4gICAgY29uc3QgcmNBcnJheTogYW55W10gPSBbXTtcclxuICAgIHRoaXMucmlza1NlcnZpY2VcclxuICAgICAgLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdChcclxuICAgICAgICByY0FycmF5LFxyXG4gICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdGhpcy5yaXNrSWQgOiAnJ1xyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0Q2F0ZWdvcnlMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5zdHJhdGVnaWMuZGF0YSA9IHJlcy5zdHJhdGVnaWNfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LmNvbXBsaWFuY2UuZGF0YSA9IHJlcy5jb21wbGlhbmNlX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5vdGhlcnMuZGF0YSA9IHJlcy5vdGhlcnNfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPd25lcnNMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vd25lcnNMaXN0ID0gcmVzO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHJlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZCA9PT0gdGhpcy5tZW1iZXJJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgIT09ICdFRElUJykge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QucHVzaChyZXNbaW5kZXhdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRBZG1pbnNMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRBZG1pbktleUFkbWluTGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRtaW5zTGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuYWRtaW5zTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXR0aW5nc0luZm8oKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldFJpc2tTZXR0aW5nRGV0YWlscygpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xyXG4gICAgICAgIHRoaXMuaGlkZU9wdGlvbmFsRmllbGRzKHJlcyk7XHJcbiAgICAgICAgdGhpcy5taXRpZ2F0aW9uRGV0YWlscyA9IHJlcz8ucmlza19taXRpZ2F0aW9uX3ByaW9yaXR5Py5taXRpZ2F0aW9uX2RhdGE7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRNaXRpZ2F0aW9uID0gdGhpcy5taXRpZ2F0aW9uRGV0YWlscz8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1pdGlnYXRpb25fbmFtZSA9PT0gJ0xPVydcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkZWZhdWx0TWl0aWdhdGlvbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb24gPSBkZWZhdWx0TWl0aWdhdGlvblswXT8ubWl0aWdhdGlvbl9pZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoaWRlT3B0aW9uYWxGaWVsZHMocmVzOiBhbnkpIHtcclxuICAgIGlmIChyZXM/LnJpc2tfYXV0b21hdGlvbl9lbmFibGUgPT09IDEpIHtcclxuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ01JVElHQVRJT04nXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5hZG1pbnNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuZ2V0Umlza0RldGFpbHModGhpcy5yaXNrSWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T3ZlcnNlZXJzTGlzdCgpIHtcclxuICAgIGxldCBpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJjT3duZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgdXNlcnMgPSBjbG9uZURlZXAodGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0KTtcclxuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XHJcbiAgICApO1xyXG4gICAgY29uc3QgYWRtaW5zID0gY2xvbmVEZWVwKHRoaXMuYWRtaW5zTGlzdCk7XHJcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLm93bmVyc0xpc3QpO1xyXG4gICAgdXNlcnMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGlkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgYWRtaW5zLmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZHMucHVzaCh1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyYzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGFyeSA9IFsuLi5yYy5vd25lciwgLi4ucmMucGFyZW50X293bmVyc107XHJcbiAgICAgIGlkcyA9IFsuLi5pZHMsIC4uLmFyeV07XHJcbiAgICAgIHJjT3duZXJJZHMgPSBbLi4ucmNPd25lcklkcywgLi4uYXJ5XTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlkcyA9IFsuLi5uZXcgU2V0KGlkcyldO1xyXG4gICAgcmNPd25lcklkcyA9IFsuLi5uZXcgU2V0KHJjT3duZXJJZHMpXTtcclxuICAgIHRoaXMucmlza0Zvcm0uaGVhZF9pZHMgPSByY093bmVySWRzO1xyXG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhaWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCA9IHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFpZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgLy9Hcm91cHMgd2hpY2ggYXJlIHNlbGVjdGVkIGluIE93bmVycyBmaWVsZCBzaG91bGQgbm90IGJlIHZpc2libGUgT3ZlcnNlZXJcclxuICAgIGxldCBncm91cGlkczogYW55ID0gW107XHJcbiAgICBjb25zdCBncm91cHMgPSBjbG9uZURlZXAodGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0KTtcclxuICAgIGNvbnN0IGFsbGdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLmdyb3Vwc0xpc3QpO1xyXG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBpZHMucHVzaChncm91cC5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIGdyb3VwaWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBpZHMpXTtcclxuICAgIHRoaXMub3ZlcnNlZXJzR3JvdXBMaXN0ID0gYWxsZ3JvdXBzLmZpbHRlcihcclxuICAgICAgKGdyb3VwOiBhbnkpID0+ICFncm91cGlkcy5pbmNsdWRlcyhncm91cC5ncm91cF9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdCA9IHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzR3JvdXBMaXN0LmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIWdyb3VwaWRzLmluY2x1ZGVzKHVzZXIuZ3JvdXBfaWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIFsncmMnLCAnb3duZXInLCAnb3ZlcnNlZXInLCAnY2F0ZWdvcnknLCAnZnJlcXVlbmN5JywgJ0dSQyddLmluY2x1ZGVzKHR5cGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Quc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdChbXSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ293bmVyJzpcclxuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3Quc3BsaWNlKG93bmVySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdPd25lcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5yaXNrRm9ybT8uZ3JvdXBzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZ3JvdXBzTGlzdC5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcclxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3Quc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcmdyb3VwSW5kZXggPSB0aGlzLnJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdC5zcGxpY2Uob3ZlcnNlZXJncm91cEluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnkgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcclxuICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnR1JDJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCh0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRSQ0xpc3QocmNJZHM6IGFueSkge1xyXG4gICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KFtdKTtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSQyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICByY0lkcyxcclxuICAgICAgJ2l0ZW1faWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQoc2VsZWN0ZWRSQz8ubGVuZ3RoKTtcclxuXHJcbiAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSBzZWxlY3RlZFJDO1xyXG4gICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJywgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYiB9KTtcclxuICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkoY2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XHJcbiAgICBjb25zdCBjdXN0b21UYWdzOiBhbnkgPSBbXTtcclxuICAgIGNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgdGFnID0ge1xyXG4gICAgICAgIGN1c3RvbV90YWdfbmFtZTogZWxlbWVudC50YWdOYW1lLFxyXG4gICAgICAgIGN1c3RvbV90YWdfdmFsdWU6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICBjdXN0b21UYWdzLnB1c2godGFnKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSBjdXN0b21UYWdzO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkT3duZXJzTGlzdChpZHM6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgbGV0IG93bmVyaWRzO1xyXG4gICAgICBsZXQgZ3JvdXBJZHM7XHJcbiAgICAgIG93bmVyaWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIGdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3duZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3duZXJzTGlzdCxcclxuICAgICAgICBvd25lcmlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgZ3JvdXBJZHMsXHJcbiAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNldExpc3QodGhpcy5ncm91cHNMaXN0LCBncm91cElkcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHNlbGVjdGVkT3duZXJzO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLmdyb3Vwc0xpc3QgPSBzZWxlY3RlZEdyb3VwcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3duZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMub3duZXJzTGlzdCwgaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHNlbGVjdGVkT3duZXJzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KGlkczogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIGlmICghdGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRPdmVyc2VlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgIGlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSBzZWxlY3RlZE92ZXJzZWVycztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvdmVyc2VlcmlkcztcclxuICAgICAgbGV0IG92ZXJzZWVyR3JvdXBJZHM7XHJcbiAgICAgIG92ZXJzZWVyaWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIG92ZXJzZWVyR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhpZHMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRPdmVyc2VlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgIG92ZXJzZWVyaWRzLFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJHcm91cHMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNHcm91cExpc3QsXHJcbiAgICAgICAgb3ZlcnNlZXJHcm91cElkcyxcclxuICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCA9IHNlbGVjdGVkT3ZlcnNlZXJzO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdCA9IHNlbGVjdGVkT3ZlcnNlZXJHcm91cHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrQXNzZXNzbWVudChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAobmFtZSkge1xyXG4gICAgICBjYXNlICdzdWJ0cmFjdCc6XHJcbiAgICAgICAgaWYgKHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID4gMSkge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgLT0gMTtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhZGQnOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzICs9IDE7XHJcbiAgICAgICAgdGhpcy5zZXREYXRlKHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhdGUoZGF5czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoZGF5cyA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG1pbGlzZWNvbmRzID0gZGF5cyAqIDg2NDAwICogMTAwMDtcclxuICAgICAgY29uc3QgZDogbnVtYmVyID0gbmV3IERhdGUoXHJcbiAgICAgICAgbmV3IERhdGUoRGF0ZS5ub3coKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgICAgdGltZVpvbmU6IHRoaXMudGltZXpvbmUsXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKGQgKyBtaWxpc2Vjb25kcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrQXNzZXNzbWVudERlYWRsaW5lKGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghaXNOYU4oZXZlbnQpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZShldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBsaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaWRzLmluY2x1ZGVzKGVsZW1lbnRba2V5XSkpIHtcclxuICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xyXG4gICAgICBpZiAoZWxlW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZWxlW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmlzaygpIHtcclxuICAgIHRoaXMuc2V0UG9wdXBCdXR0b25zKCk7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVSaXNrKCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgJiYgdGhpcy5lZGl0RGV0YWlscy5JZkFzc2Vzc21lbnREb25lID4gMCkge1xyXG4gICAgICBjb25zdCBwcmV2UkNBcnIgPSB0aGlzLmVkaXREZXRhaWxzLnJjX2lkO1xyXG4gICAgICBjb25zdCBjdXJyUkNBcnIgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcHJldlJDQXJyLmxlbmd0aCA9PT0gY3VyclJDQXJyLmxlbmd0aCAmJlxyXG4gICAgICAgIHByZXZSQ0FyclxyXG4gICAgICAgICAgLnNvcnQoKVxyXG4gICAgICAgICAgLmV2ZXJ5KCh2YWx1ZTogYW55LCBpbmRleDogYW55KSA9PiB2YWx1ZSA9PT0gY3VyclJDQXJyLnNvcnQoKVtpbmRleF0pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlUmlzayh0aGlzLnJpc2tGb3JtKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb25maXJtYXRpb25EZXRhaWxzOiBDb25maXJtYXRpb25BbGVydCA9IHtcclxuICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJpc2sgaGFzIGJlZW4gbW9kaWZpZWQuXHJcbiAgICAgICAgICAgICAgIEhlbmNlLCB0aGlzIHJpc2sgbmVlZHMgdG8gYmUgcmVhc3Nlc3NlZC4gT25jZSB5b3UgY29uZmlybSwgdGhlIGN1cnJlbnQgZHVlIGRhdGUgd2lsbCBiZSBjbG9zZWQgYW5kIGEgbmV3IHJpc2sgYXNzZXNzbWVudCBkdWUgZGF0ZSB3aWxsIGJlIGdlbmVyYXRlZC5gLFxyXG4gICAgICAgICAgYWN0aW9uOiAnRURJVF9SSVNLJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUmlzayh0aGlzLnJpc2tGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdPVkVSU0VFUic6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRPdmVyc2VlciA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdNSVRJR0FUSU9OJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb24gPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTUlUSUdBVElPTl9QTEFOJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1JJU0tfTEFCRUwnOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkUmlza0xhYmVsID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLkdSQyA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJpc2soKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMucmlza0Zvcm0udGl0bGU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5yaXNrRm9ybS50aXRsZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICAvLyAoKCF0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSkgJiYgKHRoaXMucmlza0Zvcm0/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA8IDEpICYmIHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnKSB8fFxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5yaXNrRm9ybS50aXRsZSB8fFxyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICh0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID09PSAnUkVQT1JURUQnICYmXHJcbiAgICAgICAgIXRoaXMucmlza0Zvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aCkgfHxcclxuICAgICAgKHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnICYmXHJcbiAgICAgICAgKCF0aGlzLnJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ID09PSAnJykpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVSaXNrKHJpc2tGb3JtOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHRpdGxlOiByaXNrRm9ybS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IHJpc2tGb3JtLmRlc2NyaXB0aW9uLFxyXG4gICAgICBjYXRlZ29yeV9jdXN0b21fdGFnOiByaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MsXHJcbiAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlOiB0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcclxuICAgICAgb3duZXI6IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLm93bmVyc0xpc3QsICdtZW1iZXJfaWQnKSxcclxuICAgICAgY2F0ZWdvcnk6IHJpc2tGb3JtLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZFxyXG4gICAgICAgID8gW3Jpc2tGb3JtLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfaWRdXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgbWFuYWdlX292ZXJzaWdodDogcmlza0Zvcm0uYWRkT3ZlcnNlZXJcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLm92ZXJzZWVyc0xpc3QsICdtZW1iZXJfaWQnKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LCAnaXRlbV9pZCcpLFxyXG4gICAgICBoZWFkX2lkczogcmlza0Zvcm0uaGVhZF9pZHMsXHJcbiAgICAgIHJhdGluZ19hcnI6IFtdLFxyXG4gICAgICBtZW1iZXJfaWQ6IHRoaXMubWVtYmVySWQsXHJcbiAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcclxuICAgICAgcmlza19wcm9ncmVzc19mbGFnOlxyXG4gICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdGhpcy5lZGl0RGV0YWlscy5yaXNrX3Byb2dyZXNzX2ZsYWcgOiAxLFxyXG4gICAgICBJZkFzc2Vzc21lbnREb25lOlxyXG4gICAgICAgIHRoaXMubW9kZSA9PSAnRURJVCcgPyB0aGlzLmVkaXREZXRhaWxzLklmQXNzZXNzbWVudERvbmUgOiAwLFxyXG4gICAgICB3b3Jrc2hvcF9pZDogdGhpcy5tb2RlID09ICdFRElUJyA/IHRoaXMuZWRpdERldGFpbHMud29ya3Nob3BfaWQgOiAwLFxyXG4gICAgICBjb21wbGV0ZV9hc3Nlc3NtZW50OiAwLFxyXG4gICAgICBtaXRpZ2F0aW9uOiByaXNrRm9ybS5hZGRNaXRpZ2F0aW9uID8gcmlza0Zvcm0ubWl0aWdhdGlvbiA6IDAsXHJcbiAgICAgIHdlaWdodGFnZV9lbmFibGU6IHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9lbmFibGUsXHJcbiAgICAgIHRyZWF0bWVudF90eXBlOiB0aGlzLnNldHRpbmdzSW5mby50cmVhdG1lbnRfY3JpdGVyaWEsXHJcbiAgICAgIHdlaWdodGFnZV9kZXRhaWxzOiB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscyxcclxuICAgICAgd2VpZ2h0YWdlX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX3NldF9ieSxcclxuICAgICAgd2VpZ2h0YWdlX3N0cjogW1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLmltcGFjdC52YWx1ZSxcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscy5saWtlbGlob29kLnZhbHVlLFxyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLnZlbG9jaXR5LnZhbHVlLFxyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLnZ1bG5lcmFiaWxpdHkudmFsdWUsXHJcbiAgICAgIF0sXHJcbiAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieSxcclxuICAgICAgLy8gYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzOiAodGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUpID8gdGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIDogcmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzLFxyXG4gICAgICByaXNrX3R5cGU6IHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlID8/ICdOT1JNQUwnLFxyXG4gICAgICBtaXRpZ2F0aW9uX3BsYW5fcmVjb21tZW5kYXRpb246IHRoaXMucmlza0Zvcm0/LmFkZE1pdGlnYXRpb25QbGFuXHJcbiAgICAgICAgPyB0aGlzLnJpc2tGb3JtPy5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID8/ICcnXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHRoaXMucmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzLFxyXG4gICAgICByaXNrX2xhYmVsOiByaXNrRm9ybT8uYWRkUmlza0xhYmVsID8gcmlza0Zvcm0/LnJpc2tMYWJlbFZhbHVlIDogMSxcclxuICAgICAgZnV0dXJlX2J1c2luZXNzY3ljbGVfdmlzaWJpbGl0eTpcclxuICAgICAgICByaXNrRm9ybT8uZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZSA/PyB0cnVlLFxyXG4gICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5yaXNrRm9ybS5HUkNcclxuICAgICAgICA/IHRoaXMucmlza0Zvcm0uc2VsZWN0ZWRHUkNPYmplY3RzLm1hcCgoZ3JjOiBhbnkpID0+IGdyYz8uX2lkKVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHBheWxvYWRbJ3VzZXJncm91cF9pZHMnXSA9IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLmdyb3Vwc0xpc3QsICdfaWQnKTtcclxuICAgICAgcGF5bG9hZFsnb3ZlcnNlZXJncm91cF9pZHMnXSA9IHJpc2tGb3JtLmFkZE92ZXJzZWVyXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QsICdfaWQnKVxyXG4gICAgICAgIDogW107XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMucmlza1NlcnZpY2UuYWRkUmlzayhwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tEYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5yaXNrSWQgPSByZXMuX2lkO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnICYmIHRoaXMub3BlbmVkRnJvbSAhPT0gJ01PVkVfVE9fUkVHSVNURVInKSB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmlzayBoYXMgYmVlbiBtb2RpZmllZC5gO1xyXG4gICAgICB0aGlzLnJpc2tTZXJ2aWNlLnVwZGF0ZVJpc2sodGhpcy5yaXNrSWQsIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7XHJcbiAgICAgICAgZXZ0OiB7IGFjdGlvbjogJ01PVkVfVE9fUkVHSVNURVInLCBwYXlsb2FkIH0sXHJcbiAgICAgICAgY29uZmlybTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnJpc2tGb3JtID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgcmlza1R5cGU6IHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlLFxyXG4gICAgICBhZGRNaXRpZ2F0aW9uUGxhbjogZmFsc2UsXHJcbiAgICAgIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46ICcnLFxyXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBbXSxcclxuICAgICAgb3duZXJzTGlzdDogW10sXHJcbiAgICAgIGdyb3Vwc0xpc3Q6IFtdLFxyXG4gICAgICBjYXRlZ29yeToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgICBvdmVyc2VlcnNMaXN0OiBbXSxcclxuICAgICAgbWl0aWdhdGlvbjogMCxcclxuICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzOiAwLFxyXG4gICAgICBoZWFkX2lkczogW10sXHJcbiAgICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgICAgYWRkTWl0aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiB7XHJcbiAgICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICB9LFxyXG4gICAgICByaXNrTGFiZWxWYWx1ZTogMSxcclxuICAgICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IHRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCk7XHJcbiAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogMCxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogMCxcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1NldCBhIFJlYXNzZXNzbWVudCBGcmVxdWVuY3knO1xyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgdGhpcy5nZXRPd25lcnNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3Umlza3MnOlxyXG4gICAgICAgIHRoaXMudmlld1Jpc2tzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21hbmFnZVJlcG9ydGVkUmlzayc6XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvUmVwb3J0ZWQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmlza0RhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jpc2tzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcmlzay13b3Jrcm9vbS8nICsgdGhpcy5yaXNrSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9yaXNrdjInKSkge1xyXG4gICAgICAgIHVybCArPSAnL3Jpc2t2Mi9yaXNrLXdvcmtyb29tLycgKyB0aGlzLnJpc2tJZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrL3Jpc2std29ya3Jvb20vJyArIHRoaXMucmlza0lkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIC8vdGhpcy5yZXNldEZvcm0oKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9SZXBvcnRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCArPSAnL3JlcG9ydGVkLXJpc2snO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcmlza3YyJykpIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrdjIvcmVwb3J0ZWQtcmlzayc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsICs9ICcvcmlzay9yZXBvcnRlZC1yaXNrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAvL3RoaXMucmVzZXRGb3JtKCk7XHJcbiAgfVxyXG4gIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tNaXRpZ2F0aW9uUGxhbigpIHtcclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPT0gJzxicj4nKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRlKGV2ZW50KTtcclxuICAgIHRoaXMucmlza0Zvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudD8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlcjtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlczogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAocmVzPy5mcmVxdWVuY3kpIHtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gcmVzPy5mcmVxdWVuY3kuc3BsaXQoJ34nKTtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lUaW1lID1cclxuICAgICAgICAgIHJlcz8uZnJlcXVlbmN5X3RpbWUgPT09ICcwMDowMDowMCcgPyAnMTI6MDAgYW0nIDogcmVzPy5mcmVxdWVuY3lfdGltZTtcclxuICAgICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMF0pKSB7XHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICB0aGlzLmdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgICAgICB0aGlzLmdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcclxuICAgICAgICAgICAgICAgIG1vbWVudChcclxuICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1sxXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdICtcclxuICAgICAgICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xyXG4gICAgICAgICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICAgICAgICAnWVlZWS1NTS1ERCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgICkudW5peCgpICogMTAwMFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgICAgICdPbmUgVGltZSAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbZGF0ZU9iamVjdC5nZXRNb250aCgpXSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIGZyZXF1ZW5jeURldGFpbHMgYXJyYXkgYW5kIGEgZnJlcXVlbmN5VGltZSBzdHJpbmcgYW5kIHJldHVybnMgYSBmcmVxdWVuY3lQbGFjZWhvbGRlclxyXG4gICAqIHN0cmluZy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxLDIsMyw0LDVcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIixcclxuICAgKiBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3lEZXRhaWxzWzFdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IDNyZCAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArXHJcbiAgICAgICAgICAndGggJyArXHJcbiAgICAgICAgICBzZWxlY3RlZERheS5qb2luKCkgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBtb250aCBuYW1lcy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxyXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoIGJ5IGZyZXF1ZW5jeVRpbWUuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsXHJcbiAgICogMm5kLCAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCwgSW50ZXJ2YWw6IGV2ZXJ5IHllYXJTZXF1ZW5jZSB5ZWFycyBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqXHJcbiAgICogSSdtIHRyeWluZyB0byB3cml0ZSBhIHRlc3QgdGhhdCB3aWxsIHRlc3QgdGhlIGFib3ZlIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogSGVyZSdzIHdoYXQgSSBoYXZlIHNvIGZhcjpcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswXSA9IFwiWWVhcmx5XCJcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHllYXJTZXF1ZW5jZSA9XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAwID8gcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgOiAxO1xyXG4gICAgICBpZiAoeWVhclNlcXVlbmNlIDwgMikge1xyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh5ZWFyU2VxdWVuY2UgPiAxKSB7XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZicgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICczcmQgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3RoIG9mICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdzdCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdyZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyAxLCAyLCAzLCAyMSwgMjIsIDIzLCBvciBncmVhdGVyIHRoYW4gMywgdGhlbiBzZXQgdGhlXHJcbiAgICogZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gYSBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBhbmQgdGhlIGZyZXF1ZW5jeVRpbWUuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIzXCIsIFwiMVwiLCBcIjEsMiwzXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBxdWFydGVybHkgPSBbXHJcbiAgICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbW9udGggbmFtZXMuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYW4gZXZlbnQgb2JqZWN0LCBhbmQgaWYgaXQgZXhpc3RzLCBpdCBjcmVhdGVzIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXNcclxuICAgKiB0aGUgZXZlbnQgb2JqZWN0LCBhbmQgYXNzaWducyBpdCB0byB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eS5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBudWxsLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgbnVsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgYW4gZW1wdHkgb2JqZWN0LCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gZW1wdHlcclxuICAgKiBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIHRoZW4gdGhlIGZyZXF1ZW5jeURldGFpbHMgcHJvcGVydHkgd2lsbCBiZSBhblxyXG4gICAqIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIGJ1dCBzb21lIG9mIHRob3NlIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgdGhlblxyXG4gICAqIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcywgYnV0IHNvbWUgb2YgdGhvc2VcclxuICAgKiBwcm9wZXJ0aWVzIHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLCBidXQgc29tZSBvZiB0aG9zZSBwcm9wZXJ0aWVzIGFyZSBudWxsLCB0aGVuIHRoZVxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSA9IHtcclxuICAgKi9cclxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzID0gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBgZ2V0T3RoZXJHUkNUYWJDb3VudGAgcmV0cmlldmVzIHRoZSBjb3VudCBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgaXRlbXMgKGFzc2V0cyxcclxuICAgKiBwcm9jZXNzZXMsIHZlbmRvcnMsIGludmVudG9yeSkgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdGFicyB3aXRoIHRoZSBjb3VudC5cclxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXHJcbiAgICogXCJnZXRPdGhlckdSQ1RhYkNvdW50XCIgZnVuY3Rpb24uIEl0IGlzIG9mIHR5cGUgXCJhbnlcIiwgd2hpY2ggbWVhbnMgaXQgY2FuIGFjY2VwdCBhbnkgZGF0YSB0eXBlLlxyXG4gICAqL1xyXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgICAubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxyXG4gICAgICAuam9pbignLCcpO1xyXG5cclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNUYWJzQ291bnQoZXZlbnQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgT0JKRUNUX0xBQkVMOiBhbnkgPSB7XHJcbiAgICAgICAgICBBU1NFVDogJ0Fzc2V0cycsXHJcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcclxuICAgICAgICAgIFZFTkRPUjogJ1ZlbmRvcnMnLFxyXG4gICAgICAgICAgSU5WRU5UT1JZOiAnSW52ZW50b3J5JyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IFRBQl9OQU1FID0gT0JKRUNUX0xBQkVMW3RhYj8udGl0bGU/LnRvVXBwZXJDYXNlKCldO1xyXG4gICAgICAgIGlmIChUQUJfTkFNRSkge1xyXG4gICAgICAgICAgdGFiLnRpdGxlID0gVEFCX05BTUU7XHJcbiAgICAgICAgICB0YWIudmFsdWUgPSBpbmRleDtcclxuICAgICAgICAgIHRhYi5zZWxlY3RlZENvdW50ID0gMDtcclxuICAgICAgICAgIHRhYi5rZXkgPSBUQUJfTkFNRT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7dGFiLmtleX1fdHlwZV9jb3VudGA7XHJcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgdGFiLmNvdW50ID0gZGF0YVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFldmVudCkge1xyXG4gICAgICBldmVudCA9IHtcclxuICAgICAgICByY19pZHM6ICcnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIsXHJcbiAgICAgICAgc3RhdGU6IDEsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JjTG9hZGVyID0gdHJ1ZTtcclxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgICAubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxyXG4gICAgICAuam9pbignLCcpO1xyXG4gICAgZXZlbnRbJ2dyY1R5cGUnXSA9IHRoaXMuc2VsZWN0ZWRHUkNUYWI7XHJcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHUkNMaXN0KGV2ZW50KVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdyY0xpc3QgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuZ3JjTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgLy8gICAvLyB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgLy8gICAvLyAgIChpdGVtOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcy5pbmNsdWRlcyhpdGVtPy5faWQpXHJcbiAgICAgICAgLy8gICAvLyApO1xyXG4gICAgICAgIC8vICAgaWYgKHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9IGV2ZW50O1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdHUkMnLCBmYWxzZSk7XHJcbiAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XHJcbiAgfVxyXG4gIHNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCkge1xyXG4gICAgY29uc3QgZ3JjVHlwZXMgPSBbJ2Fzc2V0cycsICdwcm9jZXNzZXMnLCAndmVuZG9ycycsICdpbnZlbnRvcnknXTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEdSQ0RhdGFXaXRoVHlwZXMoKSB7XHJcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XHJcbiAgICAgIGFzc2V0czogW10sXHJcbiAgICAgIHByb2Nlc3NlczogW10sXHJcbiAgICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgICBpbnZlbnRvcnk6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbHctcmlza1wiICpuZ0lmPVwiIXNob3dTbWlsZXlcIj5cclxuICA8IS0tIFJpc2sgVHlwZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvdHlwZS5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cInRydWVcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIFR5cGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlzay10eXBlLWZpZWxkXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHlwZS1pdGVtXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJyaXNrRm9ybT8ucmlza1R5cGUgPT09ICdOT1JNQUwnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcmlza1R5cGVDaGFuZ2VBbGxvd2VkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUmlzaygnTk9STUFMJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQUREIFRPIFJJU0sgUkVHSVNURVJcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBpbmZvXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBhZGQgYSByaXNrIGRpcmVjdGx5IHRvIHRoZSBSaXNrIFJlZ2lzdGVyLiBUaGUgcmlzayBvd25lcnMgd2lsbCByZWNlaXZlIGFuIGFsZXJ0IGFuZCB0aGV5IGNhbiBiZWdpbiB0aGUgdGhlIHJpc2sgYXNzZXNzbWVudCBwcm9jZXNzLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0eXBlLWl0ZW1cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJpc2tGb3JtPy5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXJpc2tUeXBlQ2hhbmdlQWxsb3dlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVJpc2soJ1JFUE9SVEVEJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUkVQT1JUIEEgUklTS1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm9cIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ1RoaXMgb3B0aW9ucyBsZXRzIHlvdSByZXBvcnQgYSByaXNrIGFuZCBhc3NpZ24gaXQgdG8gdGhlIHJpc2sgb3duZXJzLiBUaGUgcmlzayBvd25lcnMgd2lsbCBoYXZlIHRoZSBvcHRpb24gdG8gZWl0aGVyIGFkZCB0aGUgcmlzayB0byB0aGUgUmlzayBSZWdpc3RlciBvciBmbGFnIGl0IGZvciBhIGZvbGxvdy11cCBhdCBhIGxhdGVyIGRhdGUuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWNrZ3JvdW5kLWdsaWRlclwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGEgcmlzayB0eXBlPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgTmFtZSAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtLnRpdGxlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LnRpdGxlPy50cmltKCk/Lmxlbmd0aCA9PT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy50aXRsZT8udHJpbSgpPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5XSEFUIFJJU0sgV09VTEQgWU9VIExJS0UgVE8gTUFOQUdFP1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHNwYWNlVHJpbVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIlxyXG4gICAgICAgICAgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcclxuICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0udGl0bGVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgYSByaXNrIG5hbWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8udGl0bGU/LnRyaW0oKSA9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8udGl0bGU/LnRyaW0oKSAhPSAnJyAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHJpc2tGb3JtLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcmlza0Zvcm0udGl0bGVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgIEFkZCBhIHJpc2sgbmFtZVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNoZWNrRGVzY3JpcHRpb24oKVwiXHJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICByaXNrRm9ybS5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJyAmJlxyXG4gICAgICAgICAgICAhcmlza0Zvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQWRkIGEgcmlzayBkZXNjcmlwdGlvblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE93bmVyIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXInICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2ltLWNyZWF0aW5nLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXInXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+V0hPIElTIFJFU1BPTlNJQkxFIEZPUiBNQU5BR0lORyBUSElTIFJJU0s/XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBpcyB0aGUgcGVyc29uIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgT3duZXIocylcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMCB8fCByaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3duZXJzTGlzdFxyXG4gICAgICAgICAgICAgICAgICB8IHNob3J0TWVyZ2UgOiBub25SZW1vdmFibGVVc2Vyc0xpc3QgYXMgb3duZXJMaXN0XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwgMSlcIj5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3duZXI/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBvd25lcj8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3Zlck93bmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmlza0Zvcm0/Lm93bmVyc0xpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHJpc2tGb3JtPy5vd25lcnNMaXN0fHNob3J0TWVyZ2UgOiBub25SZW1vdmFibGVVc2Vyc0xpc3QpIGFzIG93bmVyTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAqbmdJZj1cIiFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcIiAoY2xpY2spPVwicmVtb3ZlKCdvd25lcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3duZXI/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJPd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jpc2tGb3JtPy5vd25lcnNMaXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgICAgIHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWRcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVyJywgcmlza0Zvcm0/Lm93bmVyc0xpc3RbMF0pXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lm93bmVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlclVzZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnT3duZXJncm91cCcsIHJpc2tGb3JtPy5ncm91cHNMaXN0WzBdKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5ncm91cHNMaXN0WzBdPy5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJpc2tGb3JtPy5ncm91cHNMaXN0WzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ093bmVyZ3JvdXAnLCByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7cmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ293bmVyJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBTZWxlY3QgT3duZXIocykgZm9yIHRoaXMgcmlzay5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3duZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3RcclxuICAgICAgICAgICAgICAgICAgfCBzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0IGFzIG93bmVyUG9wXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyUG9wIHwgc2xpY2UgOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3ZlclVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3RcclxuICAgICAgICAgICAgICAgICAgfCBzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0IGFzIG93bmVyUG9wXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyUG9wIHwgc2xpY2UgOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJpc2tGb3JtPy5ncm91cHNMaXN0IHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdPd25lcmdyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXNwb25zaWJpbGl0eS1jZW50ZXIuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SZXNwb25zaWJpbGl0eSBDZW50ZXIgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHRoZSBjb3Jwb3JhdGUgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlIG9mIGFuIG9yZ2FuaXphdGlvbi4gT25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBjYW4gYmUgZXhwb3NlZCB0byBhIHJpc2sgYW5kIGFjY29yZGluZ2x5LCB0aGUgcmlzayBtdXN0IGJlIGFzc2Vzc2VkIGFnYWluc3QgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocylcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCByY05hbWUgb2Ygcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjTmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyY05hbWUuaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJjTmFtZS5pdGVtX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjTmFtZSBvZiByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmNOYW1lKVwiPiYjeGU5MGQ7PC9pPiB7e3JjTmFtZS5pdGVtX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyUkMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQXNzaWduIHRoaXMgcmlzayB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJSQyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgcmNOYW1lIG9mIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0IHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmNOYW1lKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJjTmFtZS5pdGVtX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmlzayBGcmVxdWVuY3kgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCdcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8XHJcbiAgICAgICAgICByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICYmXHJcbiAgICAgICAgICAgIHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICE9PSAnJykgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+SE9XIE9GVEVOIERPRVMgVEhJUyBSSVNLIE5FRUQgVE8gQkUgUkVBU1NFU1NFRD9cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdUaGUgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2sgcmVhc3Nlc3NtZW50IGZyZXF1ZW5jeS4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5XCJcclxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgYSBSZWFzc2Vzc21lbnQgRnJlcXVlbmN5XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcFwiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID57eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtbXQtMVwiPlxyXG4gICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgW25nVmFsdWVdPVwicmlza0Zvcm0/LmVuYWJsZUFsbEZ1dHVyZUJ1c2luZXNzQ3ljbGVcIlxyXG4gICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJyaXNrRm9ybS5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID0gJGV2ZW50XCJcclxuICAgICAgICAgICAgPkRPIFlPVSBXQU5UIFRISVMgVE8gU0hPVyBJTiBBTEwgRlVUVVJFIEJVU0lORVNTIENZQ0xFUz9cclxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICghcmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgfHxcclxuICAgICAgICAgICAgICByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByaXNrLlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIENhdGVnb3J5IC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICFyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnkgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jYXRlZ29yeS5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnkgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjYXRlZ29yeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJpc2sgQ2F0ZWdvcnlcclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInUmlzayBDYXRlZ29yaWVzIGFyZSB1c2VkIHRvIGdyb3VwIHNpbWlsYXIgcmlza3MuJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmlzayBDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsIHJpc2tGb3JtLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkpXCJcclxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgID57eyByaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxyaXNrRm9ybS5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPnt7cmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyaXNrRm9ybT8uY2F0ZWdvcnlDdXN0b21UYWdzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2Ygcmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+e3sgdGFnLmN1c3RvbV90YWdfbmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy5jdXN0b21fdGFnX3ZhbHVlXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRhZy5jdXN0b21fdGFnX25hbWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBc3Nlc3NtZW50IERlYWRsaW5lIC0tPlxyXG4gIDwhLS0gIXNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUgJiYgcmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnICYmICgoY3VycmVudFRpbWVTdGFtcCA8IGVkaXREZXRhaWxzPy5hc3Nlc3NtZW50X2RhdGVfdGltZXN0YW1wKSB8fCAhZWRpdERldGFpbHM/LklmQXNzZXNzbWVudERvbmUgKSAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3Nlc3NtZW50J1wiXHJcbiAgICBpZD1cImRlYWRsaW5lXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3Nlc3NtZW50JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPj0gMVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA8IDEgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzZXNzbWVudCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPj0gMSAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3Nlc3NtZW50J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+QXNzZXNzbWVudCBEZWFkbGluZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBpcyB0aGUgZGF0ZSB0aGF0IHRoZSBpbmhlcmVudCByaXNrIGFzc2Vzc21lbnQgbXVzdCBiZSBjb21wbGV0ZWQgYnkuJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlNldCBOdW1iZXIgb2YgZGF5czwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBjb3VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVJpc2tBc3Nlc3NtZW50KCdzdWJ0cmFjdCcpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNTM7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXNcIlxyXG4gICAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2Vzc21lbnQnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2Vzc21lbnQnLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJyaXNrQXNzZXNzbWVudERlYWRsaW5lXCJcclxuICAgICAgICAgICAgICB2YWxpZGF0ZUFzc2Vzc21lbnRcclxuICAgICAgICAgICAgICAjZGVhZGxpbmU9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudERlYWRsaW5lKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxyXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudCgnYWRkJylcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPCAxXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gMC5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID49IDFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIFRoaXMgcmlzayBhc3Nlc3NtZW50IG5lZWRzIHRvIGJlIGNvbXBsZXRlZCBieVxyXG4gICAgICAgICAge3sgZGF0ZSB8IGRhdGUgOiBcImRkIE1NTSB5eXl5XCIgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgT3ZlcnNlZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cInJpc2tGb3JtLmFkZE92ZXJzZWVyXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA9PSAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3ZlcnNpZ2h0LnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcidcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJpc2sgT3ZlcnNpZ2h0PGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdUaGlzIGlzIHRoZSBwZXJzb24gdGhhdCBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmlzayBidXQgd2hvIGlzIG5vdCByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJpc2suJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdD8ubGVuZ3RoID09IDBcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSaXNrIE92ZXJzaWdodChzKVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG93bmVyIG9mIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5zbGljZSgwLCAxKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG93bmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvd25lci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgb3duZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJPdmVyc2Vlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3RbMF0pXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgID57eyByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdFswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdvdmVyc2Vlcmdyb3VwJywgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdFswXSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0/Lmdyb3VwX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3ZlcnNlZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG93bmVyIG9mIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0IHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3duZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG93bmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3duZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0IHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcmdyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHkgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cInJpc2tGb3JtLmFkZE1pdGlnYXRpb25cIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3ByaW9yaXR5LnN2Z1wiXHJcbiAgICAgICAgKm5nSWY9XCIhcmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPCEtLSA8c3ZnIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiIGNsYXNzPVwiZWRpdC1sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMxZTVkZDNcIiBzdHJva2Utd2lkdGg9XCIzXCIgY2xhc3M9XCJsb2FkZXItcGF0aFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybS5taXRpZ2F0aW9uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIE1pdGlnYXRpb24gUHJpb3JpdHlcclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgdGhlIG1pdGlnYXRpb24gb2YgZWFjaCByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcblxyXG4gICAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIG1pdGlnYXRpb24gcHJpb3JpdHknXCJcclxuICAgICAgICAgIG5hbWU9XCJyaXNrRm9ybS5taXRpZ2F0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y3Mtb3B0aW9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1pdGlnYXRpb25EZXRhaWxzXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGE/Lm1pdGlnYXRpb25faWRcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8ubWl0aWdhdGlvbl9jb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGRhdGEubWl0aWdhdGlvbl9uYW1lIH19XHJcbiAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFBsYW4gLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwicmlza0Zvcm0/LmFkZE1pdGlnYXRpb25QbGFuXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGlkPVwicmlza1NwYWNlXCJcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiKHJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gfCBzcGFjZVRyaW0pICE9PSAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIihyaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuIHwgc3BhY2VUcmltKSA9PT0gJydcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiKHJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gfCBzcGFjZVRyaW0pICE9PSAnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJlY29tbWVuZGVkIE1pdGlnYXRpb24gUGxhbnM8bGlua1xyXG4gICAgICAgICAgICByZWw9XCJtYW5pZmVzdFwiXHJcbiAgICAgICAgICAgIGhyZWY9XCIuL21hbmlmZXN0Lmpzb25cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnU3BlY2lmeSB0aGUgbWl0aWdhdGlvbiBwbGFuIHRoYXQgY2FuIGJlIHVuZGVydGFrZW4gdG8gbWl0aWdhdGUgdGhlIHJpc2suJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhblwiXHJcbiAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW5cIlxyXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjaGVja01pdGlnYXRpb25QbGFuKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgTGFiZWwgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8uYWRkUmlza0xhYmVsXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDwhLS0gPGltZyAqbmdJZj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIiBhbHQ9XCJcIiAvPiAtLT5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJ0cnVlXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SSVNLIExBQkVMXHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1Jpc2sgbGFiZWwgaW5mbyB0ZXh0IGhlcmUuLi4nXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGNzLXNlbGVjdFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5yaXNrTGFiZWxWYWx1ZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIHJpc2sgbGFiZWwnXCJcclxuICAgICAgICAgIG5hbWU9XCJyaXNrRm9ybT8ucmlza0xhYmVsVmFsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2Ygcmlza0xhYmVsTGlzdFwiIFt2YWx1ZV09XCJkYXRhPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhPy5uYW1lIH19XHJcbiAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBMaW5rIHdpdGggIEdSQyAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8uR1JDXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2xpbmstaXRlbXMuc3ZnIGFsdD1cIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcidcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmlza0Zvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJpc2suXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJpc2tGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRHUkMgb2YgZ3JjRGF0YVdpdGhUeXBlcyB8IGtleXZhbHVlIDogb3JpZ2luYWxPcmRlcjtcclxuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEdSQz8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwic2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBzZWxlY3RlZEdSQz8udmFsdWU/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDJywgZ3JjLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEdSQz8ua2V5IHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZ3JjPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgZ3JjPy5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlckdSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEdSQz8udmFsdWU/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgc2VsZWN0ZWRHUkM/LnZhbHVlLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR1JDVGFiID0gc2VsZWN0ZWRHUkM/LnZhbHVlWzBdPy50eXBlO1xyXG4gICAgICAgICAgICAgICAgICBnZXRPdGhlckdSQ09iamVjdHMoKTtcclxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignR1JDJywgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJHUkMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIHNlbGVjdGVkR1JDPy52YWx1ZSB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdHUkMnLCBncmMsIGogKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JjLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIlxyXG4gIFtyY0lkS2V5XT1cIidyY19pZCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZFJDTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VSY0xpc3QpPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzICYmIGFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXInXCJcclxuICBbdXNlcnNMaXN0XT1cIm93bmVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm93bmVyc0xpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRPd25lcnNMaXN0KCRldmVudClcIlxyXG4gIFtub25SZW1vdmFibGVVc2Vyc0xpc3RdPVwibm9uUmVtb3ZhYmxlVXNlcnNMaXN0XCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuPjwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG48dXNlci1ncm91cC1saXN0XHJcbiAgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gIFt1c2VybGlzdF09XCJvd25lcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyaXNrRm9ybS5vd25lcnNMaXN0XCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3Vwc0xpc3RcIlxyXG4gIFtub25SZW1vdmFibGVVc2VySWRzXT1cIm5vblJlbW92YWJsZVVzZXJzTGlzdFwiXHJcbiAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkT3duZXJzTGlzdCgkZXZlbnQpXCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmlza0Zvcm0uZ3JvdXBzTGlzdFwiXHJcbiAgKGNhbmNlbCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvd25lcicsIGZhbHNlKVwiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuXHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3VwcyAmJiBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1wiXHJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtncm91cExpc3RdPVwib3ZlcnNlZXJzR3JvdXBMaXN0XCJcclxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KCRldmVudClcIlxyXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3RcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCBmYWxzZSlcIlxyXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLWNhdGVnb3J5LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCJcclxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXHJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwicmlza0Zvcm0uY2F0ZWdvcnlcIlxyXG4gIChzYXZlU2VsZWN0ZWRDYXRlZ29yeSk9XCJzYXZlU2VsZWN0ZWRDYXRlZ29yeSgkZXZlbnQpXCJcclxuICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIGZhbHNlKVwiXHJcbj48L2FwcC1jYXRlZ29yeS1saXN0PlxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cIiFmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZE92ZXJzZWVyc0xpc3QoJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgZmFsc2UpXCJcclxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxhcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgW2ZyZXF1ZW5jeURldGFpbHNdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cImZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKVwiXHJcbj5cclxuPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXI+XHJcblxyXG48YXBwLWdyYy1vYmplY3QtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkMnXCJcclxuICBbZ3JjT2JqZWN0XT1cImdyY0xpc3RcIlxyXG4gIFtzZWxlY3RlZEdSQ109XCJyaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgfCByZWZEaXNjb25uZWN0XCJcclxuICBbbG9hZGVyXT1cImdyY0xvYWRlclwiXHJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmQgfCByZWZEaXNjb25uZWN0XCJcclxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIlxyXG4gIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gIChzYXZlT3RoZXJHUkMpPVwic2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkMnLCBmYWxzZSlcIlxyXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxyXG5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxyXG4+XHJcbjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG4iXX0=