vcomply-workflow-engine 3.0.281 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +19 -18
  2. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +19 -28
  3. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +9 -17
  4. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +58 -14
  5. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +20 -28
  6. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +19 -16
  7. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +20 -30
  8. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +20 -18
  9. package/esm2020/lib/workflow-risk/workflow-risk.component.mjs +25 -43
  10. package/fesm2015/vcomply-workflow-engine.mjs +257 -247
  11. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  12. package/fesm2020/vcomply-workflow-engine.mjs +236 -240
  13. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  14. package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +4 -0
  15. package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +4 -0
  16. package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +4 -4
  17. package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +8 -2
  18. package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +5 -1
  19. package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +4 -0
  20. package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +5 -1
  21. package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +5 -1
  22. package/package.json +1 -1
@@ -22,6 +22,8 @@ export class FrequencyDialogAnnualComponent {
22
22
  this.lifecycleDetails = '0000-00-00~~0';
23
23
  this.previousStartDate = Math.floor(Date.now() / 1000);
24
24
  this.shortMonth = [];
25
+ this.annuallyExtension = 5;
26
+ this.annualWindowOpen = 30;
25
27
  this.mode = '';
26
28
  this.startDate = Math.floor(Date.now() / 1000);
27
29
  this.frequencyDetails = new EventEmitter();
@@ -39,31 +41,16 @@ export class FrequencyDialogAnnualComponent {
39
41
  populateFrequency() {
40
42
  const patternInfo = this.frequencyData?.pattern.split('~').map(Number);
41
43
  this.yearlySelected = patternInfo[2] - 1;
42
- // const lifecycleInfo = this.frequencyData?.lifecycle.split('~~');
43
44
  this.yearlyInterval = this.frequencyData?.failedTime;
44
45
  this.yearlyWindow = this.frequencyData?.window;
45
46
  this.yearlyInput = patternInfo[3];
46
47
  this.yearlyDay = patternInfo[1];
47
- // if(Number(lifecycleInfo[1]) > 0) {
48
- // this.yearlyLifecycleOccurance = Number(lifecycleInfo[1]);
49
- // }
50
48
  this.yearlyLifecycleOccurance = Number(patternInfo[1]);
51
49
  this.yearlyLifeCycleStart = new Date(this.frequencyData?.startDate * 1000);
52
50
  this.startDate =
53
51
  this.frequencyData?.startFrom ?? this.frequencyData?.startDate;
54
52
  this.yearlyFailed = this.frequencyData?.failed;
55
- // if( lifecycleInfo[0] !== '0000-00-00') {
56
- // const dateSelected = moment(lifecycleInfo[0] + ' 11:59 pm', 'DD-MMMM-YYYY HH:mm a').unix()
57
- // this.yearlyLifeCycleEndTime = new Date(dateSelected * 1000);
58
- // }
59
53
  this.lifecycleDetails = this.frequencyData?.lifecycle;
60
- // if( this.frequencyData?.lifecycle == '0000-00-00~~0') {
61
- // this.yearlySeletedLifecycleType = 2;
62
- // } else if(lifecycleInfo[0] !== '0000-00-00') {
63
- // this.yearlySeletedLifecycleType = 0;
64
- // } else {
65
- // this.yearlySeletedLifecycleType = 1;
66
- // }
67
54
  }
68
55
  onTimeChanged(event) {
69
56
  this.yearlyInterval = event;
@@ -118,6 +105,18 @@ export class FrequencyDialogAnnualComponent {
118
105
  }
119
106
  this.getAnnualFrequency();
120
107
  }
108
+ onWindowOpenChange(event) {
109
+ if (event?.type?.toLowerCase() === 'window open') {
110
+ this.annualWindowOpen = event?.value;
111
+ }
112
+ this.getAnnualFrequency();
113
+ }
114
+ onExtensionChange(event) {
115
+ if (event?.type?.toLowerCase() === 'extension') {
116
+ this.annuallyExtension = event.value;
117
+ }
118
+ this.getAnnualFrequency();
119
+ }
121
120
  // frequency pattern and details info
122
121
  getAnnualFrequency() {
123
122
  this.frequencyInfo.placeholder = this.getFrequencyPlaceholder(Number(this.yearlyInput));
@@ -137,6 +136,8 @@ export class FrequencyDialogAnnualComponent {
137
136
  this.frequencyInfo.lifecycleDetails = this.lifecycleDetails;
138
137
  this.frequencyInfo.startFrom = this.startDate;
139
138
  this.frequencyInfo.reportId = 0;
139
+ this.frequencyInfo.failed_after_days = this.annuallyExtension;
140
+ this.frequencyInfo.can_assess_before_days = this.annualWindowOpen;
140
141
  console.log(' this.frequencyInfo ==>', this.frequencyInfo);
141
142
  this.frequencyDetails.emit(this.frequencyInfo);
142
143
  }
@@ -282,10 +283,10 @@ export class FrequencyDialogAnnualComponent {
282
283
  }
283
284
  }
284
285
  FrequencyDialogAnnualComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogAnnualComponent, deps: [{ token: i1.FrequencyService }], target: i0.ɵɵFactoryTarget.Component });
285
- FrequencyDialogAnnualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogAnnualComponent, selector: "app-frequency-dialog-annual", inputs: { frequencyData: "frequencyData", mode: "mode", startDate: "startDate" }, outputs: { frequencyDetails: "frequencyDetails" }, ngImport: i0, template: "<!-- <div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top></app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list></app-frequency-dialog-radio-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date></app-frequency-dialog-due-date>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"5\"\r\n [inputTime]=\"yearlyInterval\"\r\n [occurrenceFirst]=\"yearlyInput\"\r\n [yearlyDay]=\"yearlyDay\"\r\n [frequencyType]=\"2\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n (yearlyDateChanged)=\"dateChange($event)\">\r\n </app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list\r\n [radioList]=\"monthList\" \r\n [selectedIndex]=\"yearlySelected\" \r\n (selectedRadio)=\"selectedMonth($event)\"\r\n [name]=\"'annual'\">\r\n </app-frequency-dialog-radio-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'yearly'\"\r\n [mode]=\"mode\"\r\n [id]=\"5\"\r\n [completedValue]=\"yearlyWindow\"\r\n (valueChange)=\"onValueChange($event)\">\r\n </app-frequency-dialog-due-date>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-annual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"], dependencies: [{ kind: "component", type: i2.FrequencyDialogTopComponent, selector: "app-frequency-dialog-top", inputs: ["occurrenceFirst", "id", "inputTime", "frequencyType", "yearlyDay"], outputs: ["valueChangedFirst", "nextDisable", "timeChanged", "yearlyDateChanged"] }, { kind: "component", type: i3.FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: ["mode", "completedValue", "deactivateValue", "isDeactivated", "id", "pageName"], outputs: ["valueChange"] }, { kind: "component", type: i4.FrequencyDialogRadioListComponent, selector: "app-frequency-dialog-radio-list", inputs: ["radioList", "selectedIndex", "name"], outputs: ["selectedRadio"] }] });
286
+ FrequencyDialogAnnualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogAnnualComponent, selector: "app-frequency-dialog-annual", inputs: { frequencyData: "frequencyData", mode: "mode", startDate: "startDate" }, outputs: { frequencyDetails: "frequencyDetails" }, ngImport: i0, template: "\r\n<div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"5\"\r\n [inputTime]=\"yearlyInterval\"\r\n [occurrenceFirst]=\"yearlyInput\"\r\n [yearlyDay]=\"yearlyDay\"\r\n [frequencyType]=\"2\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n (yearlyDateChanged)=\"dateChange($event)\">\r\n </app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list\r\n [radioList]=\"monthList\"\r\n [selectedIndex]=\"yearlySelected\"\r\n (selectedRadio)=\"selectedMonth($event)\"\r\n [name]=\"'annual'\">\r\n </app-frequency-dialog-radio-list>\r\n </div>\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'yearly'\"\r\n [mode]=\"mode\"\r\n [id]=\"5\"\r\n [completedValue]=\"yearlyWindow\"\r\n [windowCloses]=\"annuallyExtension\"\r\n [assessWindowOpen]=\"annualWindowOpen\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (windowOpenChange)=\"onWindowOpenChange($event)\"\r\n (extensionValueChange)=\"onExtensionChange($event)\"\r\n >\r\n </app-frequency-dialog-due-date>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-annual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"], dependencies: [{ kind: "component", type: i2.FrequencyDialogTopComponent, selector: "app-frequency-dialog-top", inputs: ["occurrenceFirst", "id", "inputTime", "frequencyType", "yearlyDay"], outputs: ["valueChangedFirst", "nextDisable", "timeChanged", "yearlyDateChanged"] }, { kind: "component", type: i3.FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: ["mode", "completedValue", "deactivateValue", "isDeactivated", "id", "pageName", "windowCloses", "assessWindowOpen"], outputs: ["valueChange", "windowOpenChange", "extensionValueChange"] }, { kind: "component", type: i4.FrequencyDialogRadioListComponent, selector: "app-frequency-dialog-radio-list", inputs: ["radioList", "selectedIndex", "name"], outputs: ["selectedRadio"] }] });
286
287
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogAnnualComponent, decorators: [{
287
288
  type: Component,
288
- args: [{ selector: 'app-frequency-dialog-annual', template: "<!-- <div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top></app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list></app-frequency-dialog-radio-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date></app-frequency-dialog-due-date>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"5\"\r\n [inputTime]=\"yearlyInterval\"\r\n [occurrenceFirst]=\"yearlyInput\"\r\n [yearlyDay]=\"yearlyDay\"\r\n [frequencyType]=\"2\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n (yearlyDateChanged)=\"dateChange($event)\">\r\n </app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list\r\n [radioList]=\"monthList\" \r\n [selectedIndex]=\"yearlySelected\" \r\n (selectedRadio)=\"selectedMonth($event)\"\r\n [name]=\"'annual'\">\r\n </app-frequency-dialog-radio-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'yearly'\"\r\n [mode]=\"mode\"\r\n [id]=\"5\"\r\n [completedValue]=\"yearlyWindow\"\r\n (valueChange)=\"onValueChange($event)\">\r\n </app-frequency-dialog-due-date>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-annual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"] }]
289
+ args: [{ selector: 'app-frequency-dialog-annual', template: "\r\n<div class=\"frequency-dialog-annual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-annual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"5\"\r\n [inputTime]=\"yearlyInterval\"\r\n [occurrenceFirst]=\"yearlyInput\"\r\n [yearlyDay]=\"yearlyDay\"\r\n [frequencyType]=\"2\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n (yearlyDateChanged)=\"dateChange($event)\">\r\n </app-frequency-dialog-top>\r\n <app-frequency-dialog-radio-list\r\n [radioList]=\"monthList\"\r\n [selectedIndex]=\"yearlySelected\"\r\n (selectedRadio)=\"selectedMonth($event)\"\r\n [name]=\"'annual'\">\r\n </app-frequency-dialog-radio-list>\r\n </div>\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'yearly'\"\r\n [mode]=\"mode\"\r\n [id]=\"5\"\r\n [completedValue]=\"yearlyWindow\"\r\n [windowCloses]=\"annuallyExtension\"\r\n [assessWindowOpen]=\"annualWindowOpen\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (windowOpenChange)=\"onWindowOpenChange($event)\"\r\n (extensionValueChange)=\"onExtensionChange($event)\"\r\n >\r\n </app-frequency-dialog-due-date>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-annual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"] }]
289
290
  }], ctorParameters: function () { return [{ type: i1.FrequencyService }]; }, propDecorators: { frequencyData: [{
290
291
  type: Input
291
292
  }], mode: [{
@@ -295,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
295
296
  }], frequencyDetails: [{
296
297
  type: Output
297
298
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3ktZGlhbG9nL2ZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsL2ZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUW5DLE1BQU0sT0FBTyw4QkFBOEI7SUEyQnpDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBMUJ0RCxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQVcsVUFBVSxDQUFDO1FBQ3BDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN4RSx5QkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztR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QkFDWixJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUN6QixXQUFXO2dCQUNULElBQUksQ0FBQyxTQUFTO29CQUNkLFFBQVE7b0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO29CQUNwQyxvQkFBb0I7b0JBQ3BCLElBQUksQ0FBQyxXQUFXO29CQUNoQixZQUFZO29CQUNaLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDdkI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzsySEE1U1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsd01DVDNDLHVqRUEyQ007MkZEbENPLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSw2QkFBNkI7dUdBd0I5QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktZGlhbG9nLWFubnVhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RGlhbG9nQW5udWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb250aExpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgeWVhcmx5SW50ZXJ2YWw6IHN0cmluZyA9ICcxMTowMCBwbSc7XHJcbiAgeWVhcmx5SW5wdXQ6IG51bWJlciA9IDE7XHJcbiAgeWVhcmx5RmFpbGVkOiBudW1iZXIgPSA1O1xyXG4gIHllYXJseVdpbmRvdzogbnVtYmVyID0gMzA7XHJcbiAgeWVhcmx5RGF5ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXREYXRlKCk7XHJcbiAgeWVhcmx5TGlmZUN5Y2xlU3RhcnQgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk7XHJcbiAgeWVhcmx5TGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy55ZWFybHlMaWZlQ3ljbGVTdGFydC5nZXRUaW1lKCkgKyA4NjQwMDAwMFxyXG4gICk7XHJcbiAgeWVhcmx5TGlmZWN5Y2xlT2NjdXJhbmNlOiBudW1iZXIgPSAxMDtcclxuICB5ZWFybHlTZWxldGVkTGlmZWN5Y2xlVHlwZTogbnVtYmVyID0gMjtcclxuICB5ZWFybHlTZWxlY3RlZCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpKT8uZ2V0TW9udGgoKTtcclxuICBsaWZlY3ljbGVEZXRhaWxzOiBhbnkgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgcHJldmlvdXNTdGFydERhdGUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICBmcmVxdWVuY3lJbmZvOiBhbnk7XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBmcmVxdWVuY3lEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgbW9kZTogYW55ID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG5cclxuICBAT3V0cHV0KCkgZnJlcXVlbmN5RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb250aExpc3QgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mbyA9IE9iamVjdC5hc3NpZ24odGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLm1vbnRoQXJyYXkubWFwKChtb250aCkgPT5cclxuICAgICAgbW9udGguc3Vic3RyaW5nKDAsIDMpXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4gIT0gJycgJiZcclxuICAgICAgcGFyc2VJbnQodGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuLnNwbGl0KCd+JylbMF0pID09PSA0XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUZyZXF1ZW5jeSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRBbm51YWxGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xyXG4gICAgY29uc3QgcGF0dGVybkluZm8gPSB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKS5tYXAoTnVtYmVyKTtcclxuICAgIHRoaXMueWVhcmx5U2VsZWN0ZWQgPSBwYXR0ZXJuSW5mb1syXSAtIDE7XHJcbiAgICAvLyBjb25zdCBsaWZlY3ljbGVJbmZvID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5saWZlY3ljbGUuc3BsaXQoJ35+Jyk7XHJcbiAgICB0aGlzLnllYXJseUludGVydmFsID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5mYWlsZWRUaW1lO1xyXG4gICAgdGhpcy55ZWFybHlXaW5kb3cgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LndpbmRvdztcclxuICAgIHRoaXMueWVhcmx5SW5wdXQgPSBwYXR0ZXJuSW5mb1szXTtcclxuICAgIHRoaXMueWVhcmx5RGF5ID0gcGF0dGVybkluZm9bMV07XHJcbiAgICAvLyBpZihOdW1iZXIobGlmZWN5Y2xlSW5mb1sxXSkgPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMueWVhcmx5TGlmZWN5Y2xlT2NjdXJhbmNlID0gTnVtYmVyKGxpZmVjeWNsZUluZm9bMV0pO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy55ZWFybHlMaWZlY3ljbGVPY2N1cmFuY2UgPSBOdW1iZXIocGF0dGVybkluZm9bMV0pO1xyXG4gICAgdGhpcy55ZWFybHlMaWZlQ3ljbGVTdGFydCA9IG5ldyBEYXRlKHRoaXMuZnJlcXVlbmN5RGF0YT8uc3RhcnREYXRlICogMTAwMCk7XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZSA9XHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8uc3RhcnRGcm9tID8/IHRoaXMuZnJlcXVlbmN5RGF0YT8uc3RhcnREYXRlO1xyXG4gICAgdGhpcy55ZWFybHlGYWlsZWQgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZDtcclxuICAgIC8vIGlmKCBsaWZlY3ljbGVJbmZvWzBdICE9PSAnMDAwMC0wMC0wMCcpIHtcclxuICAgIC8vICAgY29uc3QgZGF0ZVNlbGVjdGVkID0gbW9tZW50KGxpZmVjeWNsZUluZm9bMF0gKyAnIDExOjU5IHBtJywgJ0RELU1NTU0tWVlZWSBISDptbSBhJykudW5peCgpXHJcbiAgICAvLyAgIHRoaXMueWVhcmx5TGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKGRhdGVTZWxlY3RlZCAqIDEwMDApO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5saWZlY3ljbGU7XHJcbiAgICAvLyBpZiggdGhpcy5mcmVxdWVuY3lEYXRhPy5saWZlY3ljbGUgPT0gJzAwMDAtMDAtMDB+fjAnKSB7XHJcbiAgICAvLyAgIHRoaXMueWVhcmx5U2VsZXRlZExpZmVjeWNsZVR5cGUgPSAyO1xyXG4gICAgLy8gfSBlbHNlIGlmKGxpZmVjeWNsZUluZm9bMF0gIT09ICcwMDAwLTAwLTAwJykge1xyXG4gICAgLy8gICB0aGlzLnllYXJseVNlbGV0ZWRMaWZlY3ljbGVUeXBlID0gMDtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMueWVhcmx5U2VsZXRlZExpZmVjeWNsZVR5cGUgPSAxO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgb25UaW1lQ2hhbmdlZChldmVudDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnllYXJseUludGVydmFsID0gZXZlbnQ7XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnllYXJseURheSA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRBbm51YWxGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZEZpcnN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMueWVhcmx5SW5wdXQgPSBldmVudC52YWx1ZTtcclxuICAgIHRoaXMuZ2V0QW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZE1vbnRoKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMueWVhcmx5U2VsZWN0ZWQgPSBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgdGhpcy5nZXRBbm51YWxGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIGxpZmVjeWNsZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmVuZHNCeSArICd+fjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+ficgKyBldmVudC5lbmRhZnRlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmIChldmVudC5zdGFydEZyb20udG9TdHJpbmcoKS5sZW5ndGggPiAxMCkge1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoZXZlbnQuc3RhcnRGcm9tIC8gMTAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoZXZlbnQuc3RhcnRGcm9tKTtcclxuICAgIH1cclxuICAgIGxldCBlbmRCeURhdGUgPSBNYXRoLmZsb29yKFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk/LmdldFRpbWUoKSAvIDEwMDAgK1xyXG4gICAgICAgIDg2NDAwMDAwXHJcbiAgICApO1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09IDApIHtcclxuICAgICAgZW5kQnlEYXRlID0gZXZlbnQuZW5kc0J5XHJcbiAgICAgICAgPyBtb21lbnQoZXZlbnQuZW5kc0J5ICsgJyAwMDowMDowMCcsICdERC1NTU0tWVlZWSBISDptbTpzcycpLnVuaXgoKVxyXG4gICAgICAgIDogZW5kQnlEYXRlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF90aW1lX3V0YyA9IGVuZEJ5RGF0ZTtcclxuICAgIHRoaXMuZ2V0QW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09PSAnY29tcGxldGVkJykge1xyXG4gICAgICB0aGlzLnllYXJseVdpbmRvdyA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy55ZWFybHlGYWlsZWQgPSBldmVudC52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICAvLyBmcmVxdWVuY3kgcGF0dGVybiBhbmQgZGV0YWlscyBpbmZvXHJcbiAgZ2V0QW5udWFsRnJlcXVlbmN5KCkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBsYWNlaG9sZGVyID0gdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihcclxuICAgICAgTnVtYmVyKHRoaXMueWVhcmx5SW5wdXQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBhdHRlcm4gPVxyXG4gICAgICA0ICtcclxuICAgICAgJ34nICtcclxuICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAnficgK1xyXG4gICAgICAodGhpcy55ZWFybHlTZWxlY3RlZCArIDEpICtcclxuICAgICAgJ34nICtcclxuICAgICAgdGhpcy55ZWFybHlJbnB1dDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5jYXNlID0gJ3llYXJseSc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkQWZ0ZXIgPSB0aGlzLnllYXJseUZhaWxlZDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby53aW5kb3cgPSB0aGlzLnllYXJseVdpbmRvdztcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4xMmhyID0gdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgoXHJcbiAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWxcclxuICAgICk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ubGlmZWN5Y2xlRGV0YWlscyA9IHRoaXMubGlmZWN5Y2xlRGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5zdGFydEZyb20gPSB0aGlzLnN0YXJ0RGF0ZTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5yZXBvcnRJZCA9IDA7XHJcbiAgICBjb25zb2xlLmxvZygnIHRoaXMuZnJlcXVlbmN5SW5mbyA9PT4nLCB0aGlzLmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmVtaXQodGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICB9XHJcblxyXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHllYXJseUlucHV0OiBhbnkpIHtcclxuICAgIGxldCBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgaWYgKHllYXJseUlucHV0ID09PSAxKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckZvclN0MigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyRm9yR3QxKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvLyBpZiB5ZWFybHlJbnB1dCBpcyBzbWFsbGVyIHRoYW4gMiB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsZWRcclxuICBnZXRQbGFjZWhvbGRlckZvclN0MigpIHtcclxuICAgIGxldCBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAxKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID4gMykge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMzEgfHwgdGhpcy55ZWFybHlEYXkgPT09IDIxKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICB0aGlzLnllYXJseURheSArXHJcbiAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAyMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMjMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvLyBpZiB5ZWFybHlJbnB1dCBpcyBncmVhdGVyIHRoYW4gMSB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsZWRcclxuICBnZXRQbGFjZWhvbGRlckZvckd0MSgpIHtcclxuICAgIGxldCBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAxKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnMXN0IG9mICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW5wdXQgK1xyXG4gICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzJuZCBvZiAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUlucHV0ICtcclxuICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICczcmQgb2YgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnB1dCArXHJcbiAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID4gMykge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICd0aCBvZiAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUlucHV0ICtcclxuICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDMxIHx8IHRoaXMueWVhcmx5RGF5ID09PSAyMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICdzdCBvZiAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUlucHV0ICtcclxuICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDIyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICB0aGlzLnllYXJseURheSArXHJcbiAgICAgICAgJ25kIG9mICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW5wdXQgK1xyXG4gICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMjMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAncmQgb2YgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnB1dCArXHJcbiAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWFubnVhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXJhZGlvLWxpc3Q+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1yYWRpby1saXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwtaXRlbSB2eC1tYi01XCI+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWFubnVhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3BcclxuICAgICAgICAgICAgW2lkXT1cIjVcIlxyXG4gICAgICAgICAgICBbaW5wdXRUaW1lXT1cInllYXJseUludGVydmFsXCJcclxuICAgICAgICAgICAgW29jY3VycmVuY2VGaXJzdF09XCJ5ZWFybHlJbnB1dFwiXHJcbiAgICAgICAgICAgIFt5ZWFybHlEYXldPVwieWVhcmx5RGF5XCJcclxuICAgICAgICAgICAgW2ZyZXF1ZW5jeVR5cGVdPVwiMlwiXHJcbiAgICAgICAgICAgICh0aW1lQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkRmlyc3QpPVwidmFsdWVDaGFuZ2VkRmlyc3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh5ZWFybHlEYXRlQ2hhbmdlZCk9XCJkYXRlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXRvcD5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctcmFkaW8tbGlzdFxyXG4gICAgICAgICAgICBbcmFkaW9MaXN0XT1cIm1vbnRoTGlzdFwiIFxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJ5ZWFybHlTZWxlY3RlZFwiIFxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRSYWRpbyk9XCJzZWxlY3RlZE1vbnRoKCRldmVudClcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCInYW5udWFsJ1wiPlxyXG4gICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctcmFkaW8tbGlzdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRU1BSUwgTk9USUZJQ0FUSU9OOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZVxyXG4gICAgICAgICAgICBbcGFnZU5hbWVdPVwiJ3llYXJseSdcIlxyXG4gICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgW2lkXT1cIjVcIlxyXG4gICAgICAgICAgICBbY29tcGxldGVkVmFsdWVdPVwieWVhcmx5V2luZG93XCJcclxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3ktZGlhbG9nL2ZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsL2ZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUW5DLE1BQU0sT0FBTyw4QkFBOEI7SUEyQnpDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBMUJ0RCxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBQzNCLG1CQUFjLEdBQVcsVUFBVSxDQUFDO1FBQ3BDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN4RSx5QkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztR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RCxXQUFXO2dCQUNULElBQUksQ0FBQyxTQUFTO29CQUNkLFFBQVE7b0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO29CQUNwQyxvQkFBb0I7b0JBQ3BCLElBQUksQ0FBQyxXQUFXO29CQUNoQixZQUFZO29CQUNaLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDdkI7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssRUFBRSxFQUFFO1lBQ3pCLFdBQVc7Z0JBQ1QsSUFBSSxDQUFDLFNBQVM7b0JBQ2QsUUFBUTtvQkFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQ3BDLG9CQUFvQjtvQkFDcEIsSUFBSSxDQUFDLFdBQVc7b0JBQ2hCLFlBQVk7b0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN2QjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLEVBQUU7WUFDekIsV0FBVztnQkFDVCxJQUFJLENBQUMsU0FBUztvQkFDZCxRQUFRO29CQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztvQkFDcEMsb0JBQW9CO29CQUNwQixJQUFJLENBQUMsV0FBVztvQkFDaEIsWUFBWTtvQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7MkhBN1NVLDhCQUE4QjsrR0FBOUIsOEJBQThCLHdNQ1QzQyxvNkNBa0NBOzJGRHpCYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsNkJBQTZCO3VHQXlCOUIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZGlhbG9nLWFubnVhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LWRpYWxvZy1hbm51YWwuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeURpYWxvZ0FubnVhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgbW9udGhMaXN0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgeWVhcmx5SW50ZXJ2YWw6IHN0cmluZyA9ICcxMTowMCBwbSc7XHJcbiAgeWVhcmx5SW5wdXQ6IG51bWJlciA9IDE7XHJcbiAgeWVhcmx5RmFpbGVkOiBudW1iZXIgPSA1O1xyXG4gIHllYXJseVdpbmRvdzogbnVtYmVyID0gMzA7XHJcbiAgeWVhcmx5RGF5ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXREYXRlKCk7XHJcbiAgeWVhcmx5TGlmZUN5Y2xlU3RhcnQgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk7XHJcbiAgeWVhcmx5TGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy55ZWFybHlMaWZlQ3ljbGVTdGFydC5nZXRUaW1lKCkgKyA4NjQwMDAwMFxyXG4gICk7XHJcbiAgeWVhcmx5TGlmZWN5Y2xlT2NjdXJhbmNlOiBudW1iZXIgPSAxMDtcclxuICB5ZWFybHlTZWxldGVkTGlmZWN5Y2xlVHlwZTogbnVtYmVyID0gMjtcclxuICB5ZWFybHlTZWxlY3RlZCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpKT8uZ2V0TW9udGgoKTtcclxuICBsaWZlY3ljbGVEZXRhaWxzOiBhbnkgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgcHJldmlvdXNTdGFydERhdGUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICBmcmVxdWVuY3lJbmZvOiBhbnk7XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIGFubnVhbGx5RXh0ZW5zaW9uOiBudW1iZXIgPSA1O1xyXG4gIGFubnVhbFdpbmRvd09wZW46IG51bWJlciA9IDMwO1xyXG5cclxuICBASW5wdXQoKSBmcmVxdWVuY3lEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgbW9kZTogYW55ID0gJyc7XHJcbiAgQElucHV0KCkgc3RhcnREYXRlID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcblxyXG4gIEBPdXRwdXQoKSBmcmVxdWVuY3lEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vbnRoTGlzdCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5tb250aEFycmF5O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvID0gT2JqZWN0LmFzc2lnbih0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJlcXVlbmN5SW5mbyk7XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxyXG4gICAgICBtb250aC5zdWJzdHJpbmcoMCwgMylcclxuICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybiAhPSAnJyAmJlxyXG4gICAgICBwYXJzZUludCh0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKVswXSkgPT09IDRcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVGcmVxdWVuY3koKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuSW5mbyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpLm1hcChOdW1iZXIpO1xyXG4gICAgdGhpcy55ZWFybHlTZWxlY3RlZCA9IHBhdHRlcm5JbmZvWzJdIC0gMTtcclxuICAgIHRoaXMueWVhcmx5SW50ZXJ2YWwgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZFRpbWU7XHJcbiAgICB0aGlzLnllYXJseVdpbmRvdyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ud2luZG93O1xyXG4gICAgdGhpcy55ZWFybHlJbnB1dCA9IHBhdHRlcm5JbmZvWzNdO1xyXG4gICAgdGhpcy55ZWFybHlEYXkgPSBwYXR0ZXJuSW5mb1sxXTtcclxuICAgIHRoaXMueWVhcmx5TGlmZWN5Y2xlT2NjdXJhbmNlID0gTnVtYmVyKHBhdHRlcm5JbmZvWzFdKTtcclxuICAgIHRoaXMueWVhcmx5TGlmZUN5Y2xlU3RhcnQgPSBuZXcgRGF0ZSh0aGlzLmZyZXF1ZW5jeURhdGE/LnN0YXJ0RGF0ZSAqIDEwMDApO1xyXG4gICAgdGhpcy5zdGFydERhdGUgPVxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURhdGE/LnN0YXJ0RnJvbSA/PyB0aGlzLmZyZXF1ZW5jeURhdGE/LnN0YXJ0RGF0ZTtcclxuICAgIHRoaXMueWVhcmx5RmFpbGVkID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5mYWlsZWQ7XHJcbiAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmxpZmVjeWNsZTtcclxuICB9XHJcblxyXG4gIG9uVGltZUNoYW5nZWQoZXZlbnQ6IHN0cmluZykge1xyXG4gICAgdGhpcy55ZWFybHlJbnRlcnZhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRBbm51YWxGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy55ZWFybHlEYXkgPSBldmVudDtcclxuICAgIHRoaXMuZ2V0QW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoYW5nZWRGaXJzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnllYXJseUlucHV0ID0gZXZlbnQudmFsdWU7XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRNb250aChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnllYXJseVNlbGVjdGVkID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgIHRoaXMuZ2V0QW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBsaWZlY3ljbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSBldmVudC5lbmRzQnkgKyAnfn4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4nICsgZXZlbnQuZW5kYWZ0ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuc3RhcnRGcm9tLnRvU3RyaW5nKCkubGVuZ3RoID4gMTApIHtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBNYXRoLmZsb29yKGV2ZW50LnN0YXJ0RnJvbSAvIDEwMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBNYXRoLmZsb29yKGV2ZW50LnN0YXJ0RnJvbSk7XHJcbiAgICB9XHJcbiAgICBsZXQgZW5kQnlEYXRlID0gTWF0aC5mbG9vcihcclxuICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwICtcclxuICAgICAgICA4NjQwMDAwMFxyXG4gICAgKTtcclxuICAgIGlmIChldmVudC50eXBlID09PSAwKSB7XHJcbiAgICAgIGVuZEJ5RGF0ZSA9IGV2ZW50LmVuZHNCeVxyXG4gICAgICAgID8gbW9tZW50KGV2ZW50LmVuZHNCeSArICcgMDA6MDA6MDAnLCAnREQtTU1NLVlZWVkgSEg6bW06c3MnKS51bml4KClcclxuICAgICAgICA6IGVuZEJ5RGF0ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5mYWlsZWRfdGltZV91dGMgPSBlbmRCeURhdGU7XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbXBsZXRlZCcpIHtcclxuICAgICAgdGhpcy55ZWFybHlXaW5kb3cgPSBldmVudC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMueWVhcmx5RmFpbGVkID0gZXZlbnQudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25XaW5kb3dPcGVuQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3dpbmRvdyBvcGVuJykge1xyXG4gICAgICB0aGlzLmFubnVhbFdpbmRvd09wZW4gPSBldmVudD8udmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25FeHRlbnNpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50Py50eXBlPy50b0xvd2VyQ2FzZSgpID09PSAnZXh0ZW5zaW9uJykge1xyXG4gICAgICB0aGlzLmFubnVhbGx5RXh0ZW5zaW9uID0gZXZlbnQudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZnJlcXVlbmN5IHBhdHRlcm4gYW5kIGRldGFpbHMgaW5mb1xyXG4gIGdldEFubnVhbEZyZXF1ZW5jeSgpIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoXHJcbiAgICAgIE51bWJlcih0aGlzLnllYXJseUlucHV0KVxyXG4gICAgKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wYXR0ZXJuID1cclxuICAgICAgNCArXHJcbiAgICAgICd+JyArXHJcbiAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgJ34nICtcclxuICAgICAgKHRoaXMueWVhcmx5U2VsZWN0ZWQgKyAxKSArXHJcbiAgICAgICd+JyArXHJcbiAgICAgIHRoaXMueWVhcmx5SW5wdXQ7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICd5ZWFybHknO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZEFmdGVyID0gdGhpcy55ZWFybHlGYWlsZWQ7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy55ZWFybHlXaW5kb3c7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMTJociA9IHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMjRIciA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lRnJvbTEyaFRvMjRoKFxyXG4gICAgICB0aGlzLnllYXJseUludGVydmFsXHJcbiAgICApO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmxpZmVjeWNsZURldGFpbHMgPSB0aGlzLmxpZmVjeWNsZURldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uc3RhcnRGcm9tID0gdGhpcy5zdGFydERhdGU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucmVwb3J0SWQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF9hZnRlcl9kYXlzID0gdGhpcy5hbm51YWxseUV4dGVuc2lvbjtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5jYW5fYXNzZXNzX2JlZm9yZV9kYXlzID0gdGhpcy5hbm51YWxXaW5kb3dPcGVuO1xyXG4gICAgY29uc29sZS5sb2coJyB0aGlzLmZyZXF1ZW5jeUluZm8gPT0+JywgdGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5lbWl0KHRoaXMuZnJlcXVlbmN5SW5mbyk7XHJcbiAgfVxyXG5cclxuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcih5ZWFybHlJbnB1dDogYW55KSB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmICh5ZWFybHlJbnB1dCA9PT0gMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0UGxhY2Vob2xkZXJGb3JTdDIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckZvckd0MSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gaWYgeWVhcmx5SW5wdXQgaXMgc21hbGxlciB0aGFuIDIgdGhlbiB0aGlzIGZ1bmN0aW9uIHdpbGwgY2FsbGVkXHJcbiAgZ2V0UGxhY2Vob2xkZXJGb3JTdDIoKSB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMykge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA+IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDMxIHx8IHRoaXMueWVhcmx5RGF5ID09PSAyMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMjIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDIzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICB0aGlzLnllYXJseURheSArXHJcbiAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gaWYgeWVhcmx5SW5wdXQgaXMgZ3JlYXRlciB0aGFuIDEgdGhlbiB0aGlzIGZ1bmN0aW9uIHdpbGwgY2FsbGVkXHJcbiAgZ2V0UGxhY2Vob2xkZXJGb3JHdDEoKSB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmICh0aGlzLnllYXJseURheSA9PT0gMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzFzdCBvZiAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUlucHV0ICtcclxuICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICcybmQgb2YgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnB1dCArXHJcbiAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnM3JkIG9mICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW5wdXQgK1xyXG4gICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnllYXJseURheSA+IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAndGggb2YgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnB1dCArXHJcbiAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAzMSB8fCB0aGlzLnllYXJseURheSA9PT0gMjEpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIHRoaXMueWVhcmx5RGF5ICtcclxuICAgICAgICAnc3Qgb2YgJyArXHJcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3RoaXMueWVhcmx5U2VsZWN0ZWRdICtcclxuICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnB1dCArXHJcbiAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUludGVydmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueWVhcmx5RGF5ID09PSAyMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgdGhpcy55ZWFybHlEYXkgK1xyXG4gICAgICAgICduZCBvZiAnICtcclxuICAgICAgICB0aGlzLnNob3J0TW9udGhbdGhpcy55ZWFybHlTZWxlY3RlZF0gK1xyXG4gICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICB0aGlzLnllYXJseUlucHV0ICtcclxuICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW50ZXJ2YWw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy55ZWFybHlEYXkgPT09IDIzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICB0aGlzLnllYXJseURheSArXHJcbiAgICAgICAgJ3JkIG9mICcgK1xyXG4gICAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnllYXJseVNlbGVjdGVkXSArXHJcbiAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgIHRoaXMueWVhcmx5SW5wdXQgK1xyXG4gICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgdGhpcy55ZWFybHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWFubnVhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3BcclxuICAgICAgICAgICAgW2lkXT1cIjVcIlxyXG4gICAgICAgICAgICBbaW5wdXRUaW1lXT1cInllYXJseUludGVydmFsXCJcclxuICAgICAgICAgICAgW29jY3VycmVuY2VGaXJzdF09XCJ5ZWFybHlJbnB1dFwiXHJcbiAgICAgICAgICAgIFt5ZWFybHlEYXldPVwieWVhcmx5RGF5XCJcclxuICAgICAgICAgICAgW2ZyZXF1ZW5jeVR5cGVdPVwiMlwiXHJcbiAgICAgICAgICAgICh0aW1lQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkRmlyc3QpPVwidmFsdWVDaGFuZ2VkRmlyc3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh5ZWFybHlEYXRlQ2hhbmdlZCk9XCJkYXRlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXRvcD5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctcmFkaW8tbGlzdFxyXG4gICAgICAgICAgICBbcmFkaW9MaXN0XT1cIm1vbnRoTGlzdFwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInllYXJseVNlbGVjdGVkXCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW8pPVwic2VsZWN0ZWRNb250aCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ2FubnVhbCdcIj5cclxuICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXJhZGlvLWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZVxyXG4gICAgICBbcGFnZU5hbWVdPVwiJ3llYXJseSdcIlxyXG4gICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgW2lkXT1cIjVcIlxyXG4gICAgICBbY29tcGxldGVkVmFsdWVdPVwieWVhcmx5V2luZG93XCJcclxuICAgICAgW3dpbmRvd0Nsb3Nlc109XCJhbm51YWxseUV4dGVuc2lvblwiXHJcbiAgICAgIFthc3Nlc3NXaW5kb3dPcGVuXT1cImFubnVhbFdpbmRvd09wZW5cIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHdpbmRvd09wZW5DaGFuZ2UpPVwib25XaW5kb3dPcGVuQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoZXh0ZW5zaW9uVmFsdWVDaGFuZ2UpPVwib25FeHRlbnNpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgID5cclxuICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -22,6 +22,8 @@ export class FrequencyDialogBiannualComponent {
22
22
  this.monthNameArray = [];
23
23
  this.shortMonth = [];
24
24
  this.selectedMonthly = [];
25
+ this.biannuallyExtension = 5;
26
+ this.biannualWindowOpen = 30;
25
27
  this.mode = '';
26
28
  this.startDate = Math.floor(Date.now() / 1000);
27
29
  this.lifecycleDetails = '0000-00-00~~0';
@@ -31,7 +33,6 @@ export class FrequencyDialogBiannualComponent {
31
33
  this.frequencyInfo = Object.assign(this.frequencyService.frequencyInfo);
32
34
  this.monthNameArray = [...new Set(this.frequencyService.monthArray)];
33
35
  this.shortMonth = this.frequencyService.monthArray.map((month) => month.substring(0, 3));
34
- console.log('this.frequencyData ==>', this.frequencyData);
35
36
  if (this.frequencyData?.pattern != '' &&
36
37
  parseInt(this.frequencyData?.pattern.split('~')[0]) === 9) {
37
38
  this.populateFrequency();
@@ -43,31 +44,15 @@ export class FrequencyDialogBiannualComponent {
43
44
  this.biannualSelected = patternInfo[2]
44
45
  .split(',')
45
46
  .map((ele) => Number(ele) - 1);
46
- // const lifecycleInfo = this.frequencyData?.lifecycle.split('~~');
47
47
  this.biannualInterval = this.frequencyData?.failedTime;
48
48
  this.biannualWindow = this.frequencyData?.window;
49
49
  this.biannualInput = patternInfo[1];
50
- // if(Number(lifecycleInfo[1]) > 0) {
51
- // this.biannualLifecycleOccurance = Number(lifecycleInfo[1]);
52
- // }
53
50
  this.biannualLifecycleOccurance = Number(patternInfo[1]);
54
51
  this.biannualLifeCycleStart = new Date(this.frequencyData?.startDate * 1000);
55
52
  this.biannualFailed = this.frequencyData?.failed;
56
- // if( lifecycleInfo[0] !== '0000-00-00') {
57
- // const dateSelected = moment(lifecycleInfo[0] + ' 11:59 pm', 'DD-MMMM-YYYY HH:mm a').unix()
58
- // this.biannualLifeCycleEndTime = new Date(dateSelected * 1000);
59
- // }
60
53
  this.lifecycleDetails = this.frequencyData?.lifecycle;
61
- // if( this.frequencyData?.lifecycle == '0000-00-00~~0') {
62
- // this.biannualSeletedLifecycleType = 2;
63
- // } else if(lifecycleInfo[0] !== '0000-00-00') {
64
- // this.biannualSeletedLifecycleType = 0;
65
- // } else {
66
- // this.biannualSeletedLifecycleType = 1;
67
- // }
68
54
  }
69
55
  onMonthSelected(event) {
70
- console.log('event', event);
71
56
  if (event.checked) {
72
57
  this.biannualSelected.push(event.index);
73
58
  }
@@ -77,12 +62,10 @@ export class FrequencyDialogBiannualComponent {
77
62
  this.getBiannualFrequency();
78
63
  }
79
64
  valueChangedFirst(event) {
80
- console.log('event ==>', event);
81
65
  this.biannualInput = event.value;
82
66
  this.getBiannualFrequency();
83
67
  }
84
68
  onTimeChanged(event) {
85
- console.log('time event =>', event);
86
69
  this.biannualInterval = event;
87
70
  this.getBiannualFrequency();
88
71
  }
@@ -95,8 +78,19 @@ export class FrequencyDialogBiannualComponent {
95
78
  }
96
79
  this.getBiannualFrequency();
97
80
  }
81
+ onWindowOpenChange(event) {
82
+ if (event?.type?.toLowerCase() === 'window open') {
83
+ this.biannualWindowOpen = event?.value;
84
+ }
85
+ this.getBiannualFrequency();
86
+ }
87
+ onExtensionChange(event) {
88
+ if (event?.type?.toLowerCase() === 'extension') {
89
+ this.biannuallyExtension = event.value;
90
+ }
91
+ this.getBiannualFrequency();
92
+ }
98
93
  lifecycleChange(event) {
99
- console.log('event==>', event);
100
94
  switch (event.type) {
101
95
  case 0:
102
96
  this.lifecycleDetails = event.endsBy + '~~0';
@@ -109,22 +103,17 @@ export class FrequencyDialogBiannualComponent {
109
103
  break;
110
104
  }
111
105
  if (event.startFrom.toString().length > 10) {
112
- console.log('start 1111');
113
106
  this.startDate = Math.floor(event.startFrom / 1000);
114
107
  }
115
108
  else {
116
- console.log('start 11112222');
117
109
  this.startDate = Math.floor(event.startFrom);
118
110
  }
119
111
  let endByDate = Math.floor(this.frequencyService.changeTimeZone(new Date())?.getTime() / 1000 +
120
112
  86400000);
121
- console.log('strat date ====>', this.startDate);
122
- console.log('end date', endByDate);
123
113
  if (event.type === 0) {
124
114
  endByDate = event.endsBy
125
115
  ? moment(event.endsBy + ' 00:00:00', 'DD-MMM-YYYY HH:mm:ss').unix()
126
116
  : endByDate;
127
- console.log('endByDate', endByDate);
128
117
  }
129
118
  this.frequencyInfo.failed_time_utc = endByDate;
130
119
  this.getBiannualFrequency();
@@ -143,6 +132,8 @@ export class FrequencyDialogBiannualComponent {
143
132
  this.frequencyInfo.startFrom = this.startDate;
144
133
  this.frequencyInfo.reportId = 0;
145
134
  this.frequencyInfo.placeholder = this.getFrequencyPlaceholder(Number(this.biannualInput));
135
+ this.frequencyInfo.failed_after_days = this.biannuallyExtension;
136
+ this.frequencyInfo.can_assess_before_days = this.biannualWindowOpen;
146
137
  this.frequencyDetails.emit(this.frequencyInfo);
147
138
  console.log(' this.frequencyInfo ==>', this.frequencyInfo);
148
139
  }
@@ -208,10 +199,10 @@ export class FrequencyDialogBiannualComponent {
208
199
  }
209
200
  }
210
201
  FrequencyDialogBiannualComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogBiannualComponent, deps: [{ token: i1.FrequencyService }], target: i0.ɵɵFactoryTarget.Component });
211
- FrequencyDialogBiannualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogBiannualComponent, selector: "app-frequency-dialog-biannual", inputs: { mode: "mode", startDate: "startDate", frequencyData: "frequencyData" }, outputs: { frequencyDetails: "frequencyDetails" }, ngImport: i0, template: "<!-- <div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list></app-frequency-dialog-checkbox-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date></app-frequency-dialog-due-date>\r\n </div>\r\n</div> -->\r\n<div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"4\"\r\n [inputTime]=\"biannualInterval\"\r\n [occurrenceFirst]=\"biannualInput\"\r\n [frequencyType]=\"4\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n ></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list \r\n [id]=\"4\"\r\n [listArray]=\"monthNameArray\"\r\n [selectedIndex]=\"biannualSelected\"\r\n (selectedCheckbox)=\"onMonthSelected($event)\">\r\n </app-frequency-dialog-checkbox-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'biannual'\"\r\n [mode]=\"mode\"\r\n [id]=\"4\"\r\n [completedValue]=\"biannualWindow\"\r\n (valueChange)=\"onValueChange($event)\"\r\n ></app-frequency-dialog-due-date>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-biannual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"], dependencies: [{ kind: "component", type: i2.FrequencyDialogTopComponent, selector: "app-frequency-dialog-top", inputs: ["occurrenceFirst", "id", "inputTime", "frequencyType", "yearlyDay"], outputs: ["valueChangedFirst", "nextDisable", "timeChanged", "yearlyDateChanged"] }, { kind: "component", type: i3.FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: ["mode", "completedValue", "deactivateValue", "isDeactivated", "id", "pageName"], outputs: ["valueChange"] }, { kind: "component", type: i4.FrequencyDialogCheckboxListComponent, selector: "app-frequency-dialog-checkbox-list", inputs: ["id", "listArray", "selectedIndex"], outputs: ["selectedCheckbox"] }] });
202
+ FrequencyDialogBiannualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FrequencyDialogBiannualComponent, selector: "app-frequency-dialog-biannual", inputs: { mode: "mode", startDate: "startDate", frequencyData: "frequencyData" }, outputs: { frequencyDetails: "frequencyDetails" }, ngImport: i0, template: "\r\n<div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"4\"\r\n [inputTime]=\"biannualInterval\"\r\n [occurrenceFirst]=\"biannualInput\"\r\n [frequencyType]=\"4\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n ></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list\r\n [id]=\"4\"\r\n [listArray]=\"monthNameArray\"\r\n [selectedIndex]=\"biannualSelected\"\r\n (selectedCheckbox)=\"onMonthSelected($event)\">\r\n </app-frequency-dialog-checkbox-list>\r\n </div>\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'biannual'\"\r\n [mode]=\"mode\"\r\n [id]=\"4\"\r\n [completedValue]=\"biannualWindow\"\r\n [windowCloses]=\"biannuallyExtension\"\r\n [assessWindowOpen]=\"biannualWindowOpen\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (windowOpenChange)=\"onWindowOpenChange($event)\"\r\n (extensionValueChange)=\"onExtensionChange($event)\"\r\n ></app-frequency-dialog-due-date>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-biannual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"], dependencies: [{ kind: "component", type: i2.FrequencyDialogTopComponent, selector: "app-frequency-dialog-top", inputs: ["occurrenceFirst", "id", "inputTime", "frequencyType", "yearlyDay"], outputs: ["valueChangedFirst", "nextDisable", "timeChanged", "yearlyDateChanged"] }, { kind: "component", type: i3.FrequencyDialogDueDateComponent, selector: "app-frequency-dialog-due-date", inputs: ["mode", "completedValue", "deactivateValue", "isDeactivated", "id", "pageName", "windowCloses", "assessWindowOpen"], outputs: ["valueChange", "windowOpenChange", "extensionValueChange"] }, { kind: "component", type: i4.FrequencyDialogCheckboxListComponent, selector: "app-frequency-dialog-checkbox-list", inputs: ["id", "listArray", "selectedIndex"], outputs: ["selectedCheckbox"] }] });
212
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogBiannualComponent, decorators: [{
213
204
  type: Component,
214
- args: [{ selector: 'app-frequency-dialog-biannual', template: "<!-- <div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list></app-frequency-dialog-checkbox-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date></app-frequency-dialog-due-date>\r\n </div>\r\n</div> -->\r\n<div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"4\"\r\n [inputTime]=\"biannualInterval\"\r\n [occurrenceFirst]=\"biannualInput\"\r\n [frequencyType]=\"4\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n ></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list \r\n [id]=\"4\"\r\n [listArray]=\"monthNameArray\"\r\n [selectedIndex]=\"biannualSelected\"\r\n (selectedCheckbox)=\"onMonthSelected($event)\">\r\n </app-frequency-dialog-checkbox-list>\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT EMAIL NOTIFICATION:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'biannual'\"\r\n [mode]=\"mode\"\r\n [id]=\"4\"\r\n [completedValue]=\"biannualWindow\"\r\n (valueChange)=\"onValueChange($event)\"\r\n ></app-frequency-dialog-due-date>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-biannual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"] }]
205
+ args: [{ selector: 'app-frequency-dialog-biannual', template: "\r\n<div class=\"frequency-dialog-biannual\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">REASSESSMENT FREQUENCY:</div>\r\n <div class=\"frequency-dialog-biannual-item vx-mb-5\">\r\n <app-frequency-dialog-top\r\n [id]=\"4\"\r\n [inputTime]=\"biannualInterval\"\r\n [occurrenceFirst]=\"biannualInput\"\r\n [frequencyType]=\"4\"\r\n (timeChanged)=\"onTimeChanged($event)\"\r\n (valueChangedFirst)=\"valueChangedFirst($event)\"\r\n ></app-frequency-dialog-top>\r\n <app-frequency-dialog-checkbox-list\r\n [id]=\"4\"\r\n [listArray]=\"monthNameArray\"\r\n [selectedIndex]=\"biannualSelected\"\r\n (selectedCheckbox)=\"onMonthSelected($event)\">\r\n </app-frequency-dialog-checkbox-list>\r\n </div>\r\n <app-frequency-dialog-due-date\r\n [pageName]=\"'biannual'\"\r\n [mode]=\"mode\"\r\n [id]=\"4\"\r\n [completedValue]=\"biannualWindow\"\r\n [windowCloses]=\"biannuallyExtension\"\r\n [assessWindowOpen]=\"biannualWindowOpen\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (windowOpenChange)=\"onWindowOpenChange($event)\"\r\n (extensionValueChange)=\"onExtensionChange($event)\"\r\n ></app-frequency-dialog-due-date>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.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\";::ng-deep .frequency-dialog-biannual-item{border-radius:.25rem;border:1px solid #f1f1f1}\n"] }]
215
206
  }], ctorParameters: function () { return [{ type: i1.FrequencyService }]; }, propDecorators: { mode: [{
216
207
  type: Input
217
208
  }], startDate: [{
@@ -221,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
221
212
  }], frequencyDetails: [{
222
213
  type: Output
223
214
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC9mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsL2ZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7Ozs7OztBQVFuQyxNQUFNLE9BQU8sZ0NBQWdDO0lBMkIzQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTFCdEQscUJBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQzlCLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxRSwyQkFBc0IsR0FBRyxJQUFJLENBQUMs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Y0FBYztvQkFDZCxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDeEIsTUFBTTtvQkFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzs2SEEvTlUsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsME1DVDdDLDgrREF1Q007MkZEOUJPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSwrQkFBK0I7dUdBdUJoQyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RGlhbG9nQmlhbm51YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGJpYW5udWFsSW50ZXJ2YWwgPSAnMTE6MDAgcG0nO1xyXG4gIGJpYW5udWFsSW5wdXQgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk/LmdldERhdGUoKTtcclxuICBiaWFubnVhbEZhaWxlZCA9IDU7XHJcbiAgYmlhbm51YWxXaW5kb3cgPSAzMDtcclxuICBiaWFubnVhbERheSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpKT8uZ2V0RGF0ZSgpO1xyXG4gIGJpYW5udWFsTGlmZUN5Y2xlU3RhcnQgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk7XHJcbiAgYmlhbm51YWxMaWZlQ3ljbGVFbmRUaW1lID0gbmV3IERhdGUoXHJcbiAgICB0aGlzLmJpYW5udWFsTGlmZUN5Y2xlU3RhcnQuZ2V0VGltZSgpICsgODY0MDAwMDBcclxuICApO1xyXG4gIGJpYW5udWFsTGlmZWN5Y2xlT2NjdXJhbmNlID0gMTA7XHJcbiAgYmlhbm51YWxTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDI7XHJcbiAgYmlhbm51YWxTZWxlY3RlZDogQXJyYXk8bnVtYmVyPiA9IFtdO1xyXG4gIGJpYW5udWFsTGlmZWN5Y2xlID0gZmFsc2U7XHJcbiAgZnJlcXVlbmN5SW5mbzogYW55O1xyXG4gIG1vbnRoTmFtZUFycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHNlbGVjdGVkTW9udGhseTogQXJyYXk8bnVtYmVyPiA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBtb2RlOiBhbnkgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3RhcnREYXRlID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgQElucHV0KCkgZnJlcXVlbmN5RGF0YTogYW55O1xyXG4gIGxpZmVjeWNsZURldGFpbHM6IGFueSA9ICcwMDAwLTAwLTAwfn4wJztcclxuXHJcbiAgQE91dHB1dCgpIGZyZXF1ZW5jeURldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mbyA9IE9iamVjdC5hc3NpZ24odGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgdGhpcy5tb250aE5hbWVBcnJheSA9IFsuLi5uZXcgU2V0KHRoaXMuZnJlcXVlbmN5U2VydmljZS5tb250aEFycmF5KV07XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxyXG4gICAgICBtb250aC5zdWJzdHJpbmcoMCwgMylcclxuICAgICk7XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5mcmVxdWVuY3lEYXRhID09PicsIHRoaXMuZnJlcXVlbmN5RGF0YSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybiAhPSAnJyAmJlxyXG4gICAgICBwYXJzZUludCh0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKVswXSkgPT09IDlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEJpYW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUZyZXF1ZW5jeSgpIHtcclxuICAgIGNvbnN0IHBhdHRlcm5JbmZvID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuLnNwbGl0KCd+Jyk7XHJcbiAgICB0aGlzLmJpYW5udWFsU2VsZWN0ZWQgPSBwYXR0ZXJuSW5mb1syXVxyXG4gICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAubWFwKChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgLSAxKTtcclxuICAgIC8vIGNvbnN0IGxpZmVjeWNsZUluZm8gPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmxpZmVjeWNsZS5zcGxpdCgnfn4nKTtcclxuICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbCA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkVGltZTtcclxuICAgIHRoaXMuYmlhbm51YWxXaW5kb3cgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LndpbmRvdztcclxuICAgIHRoaXMuYmlhbm51YWxJbnB1dCA9IHBhdHRlcm5JbmZvWzFdO1xyXG4gICAgLy8gaWYoTnVtYmVyKGxpZmVjeWNsZUluZm9bMV0pID4gMCkge1xyXG4gICAgLy8gICB0aGlzLmJpYW5udWFsTGlmZWN5Y2xlT2NjdXJhbmNlID0gTnVtYmVyKGxpZmVjeWNsZUluZm9bMV0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMuYmlhbm51YWxMaWZlY3ljbGVPY2N1cmFuY2UgPSBOdW1iZXIocGF0dGVybkluZm9bMV0pO1xyXG4gICAgdGhpcy5iaWFubnVhbExpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUoXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8uc3RhcnREYXRlICogMTAwMFxyXG4gICAgKTtcclxuICAgIHRoaXMuYmlhbm51YWxGYWlsZWQgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZDtcclxuICAgIC8vIGlmKCBsaWZlY3ljbGVJbmZvWzBdICE9PSAnMDAwMC0wMC0wMCcpIHtcclxuICAgIC8vICAgY29uc3QgZGF0ZVNlbGVjdGVkID0gbW9tZW50KGxpZmVjeWNsZUluZm9bMF0gKyAnIDExOjU5IHBtJywgJ0RELU1NTU0tWVlZWSBISDptbSBhJykudW5peCgpXHJcbiAgICAvLyAgIHRoaXMuYmlhbm51YWxMaWZlQ3ljbGVFbmRUaW1lID0gbmV3IERhdGUoZGF0ZVNlbGVjdGVkICogMTAwMCk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmxpZmVjeWNsZTtcclxuICAgIC8vIGlmKCAgdGhpcy5mcmVxdWVuY3lEYXRhPy5saWZlY3ljbGUgPT0gJzAwMDAtMDAtMDB+fjAnKSB7XHJcbiAgICAvLyAgIHRoaXMuYmlhbm51YWxTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDI7XHJcbiAgICAvLyB9IGVsc2UgaWYobGlmZWN5Y2xlSW5mb1swXSAhPT0gJzAwMDAtMDAtMDAnKSB7XHJcbiAgICAvLyAgIHRoaXMuYmlhbm51YWxTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDA7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLmJpYW5udWFsU2VsZXRlZExpZmVjeWNsZVR5cGUgPSAxO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgb25Nb250aFNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KTtcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuYmlhbm51YWxTZWxlY3RlZC5wdXNoKGV2ZW50LmluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmlhbm51YWxTZWxlY3RlZCA9IHRoaXMuYmlhbm51YWxTZWxlY3RlZC5maWx0ZXIoXHJcbiAgICAgICAgKGVsZSkgPT4gZWxlICE9PSBldmVudC5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VkRmlyc3QoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50ID09PicsIGV2ZW50KTtcclxuICAgIHRoaXMuYmlhbm51YWxJbnB1dCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25UaW1lQ2hhbmdlZChldmVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZygndGltZSBldmVudCA9PicsIGV2ZW50KTtcclxuICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbXBsZXRlZCcpIHtcclxuICAgICAgdGhpcy5iaWFubnVhbFdpbmRvdyA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iaWFubnVhbEZhaWxlZCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgbGlmZWN5Y2xlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudD09PicsIGV2ZW50KTtcclxuXHJcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmVuZHNCeSArICd+fjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+ficgKyBldmVudC5lbmRhZnRlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmIChldmVudC5zdGFydEZyb20udG9TdHJpbmcoKS5sZW5ndGggPiAxMCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnc3RhcnQgMTExMScpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoZXZlbnQuc3RhcnRGcm9tIC8gMTAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZygnc3RhcnQgMTExMTIyMjInKTtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBNYXRoLmZsb29yKGV2ZW50LnN0YXJ0RnJvbSk7XHJcbiAgICB9XHJcbiAgICBsZXQgZW5kQnlEYXRlID0gTWF0aC5mbG9vcihcclxuICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwICtcclxuICAgICAgICA4NjQwMDAwMFxyXG4gICAgKTtcclxuICAgIGNvbnNvbGUubG9nKCdzdHJhdCBkYXRlID09PT0+JywgdGhpcy5zdGFydERhdGUpO1xyXG4gICAgY29uc29sZS5sb2coJ2VuZCBkYXRlJywgZW5kQnlEYXRlKTtcclxuICAgIGlmIChldmVudC50eXBlID09PSAwKSB7XHJcbiAgICAgIGVuZEJ5RGF0ZSA9IGV2ZW50LmVuZHNCeVxyXG4gICAgICAgID8gbW9tZW50KGV2ZW50LmVuZHNCeSArICcgMDA6MDA6MDAnLCAnREQtTU1NLVlZWVkgSEg6bW06c3MnKS51bml4KClcclxuICAgICAgICA6IGVuZEJ5RGF0ZTtcclxuICAgICAgY29uc29sZS5sb2coJ2VuZEJ5RGF0ZScsIGVuZEJ5RGF0ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkX3RpbWVfdXRjID0gZW5kQnlEYXRlO1xyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qmlhbm51YWxGcmVxdWVuY3koKSB7XHJcbiAgICB0aGlzLmJpYW5udWFsU2VsZWN0ZWQgPSB0aGlzLmJpYW5udWFsU2VsZWN0ZWQuc29ydCgobjEsIG4yKSA9PiBuMSAtIG4yKTtcclxuICAgIGNvbnN0IG1vbnRoSW5kZXggPSB0aGlzLmJpYW5udWFsU2VsZWN0ZWQubWFwKChlbGUpID0+IGVsZSArIDEpO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBhdHRlcm4gPVxyXG4gICAgICA5ICsgJ34nICsgdGhpcy5iaWFubnVhbElucHV0ICsgJ34nICsgbW9udGhJbmRleC5qb2luKCcsJykgKyAnfjAnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmNhc2UgPSAnYmlhbm51YWwnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZEFmdGVyID0gdGhpcy5iaWFubnVhbEZhaWxlZDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby53aW5kb3cgPSB0aGlzLmJpYW5udWFsV2luZG93O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnRpbWVJbjEyaHIgPSB0aGlzLmJpYW5udWFsSW50ZXJ2YWw7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMjRIciA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lRnJvbTEyaFRvMjRoKFxyXG4gICAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWxcclxuICAgICk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ubGlmZWN5Y2xlRGV0YWlscyA9IHRoaXMubGlmZWN5Y2xlRGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5zdGFydEZyb20gPSB0aGlzLnN0YXJ0RGF0ZTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5yZXBvcnRJZCA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGxhY2Vob2xkZXIgPSB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKFxyXG4gICAgICBOdW1iZXIodGhpcy5iaWFubnVhbElucHV0KVxyXG4gICAgKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5lbWl0KHRoaXMuZnJlcXVlbmN5SW5mbyk7XHJcbiAgICBjb25zb2xlLmxvZygnIHRoaXMuZnJlcXVlbmN5SW5mbyA9PT4nLCB0aGlzLmZyZXF1ZW5jeUluZm8pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoYmlhbm51YWxJbnB1dDogbnVtYmVyKSB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSB0aGlzLmJpYW5udWFsU2VsZWN0ZWQubWFwKChlbGUpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtlbGVdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGJpYW5udWFsSW5wdXQgPT09IDEpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAoYmlhbm51YWxJbnB1dCA9PT0gMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5iaWFubnVhbEludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChiaWFubnVhbElucHV0ID09PSAzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKGJpYW5udWFsSW5wdXQgPT09IDIxIHx8IGJpYW5udWFsSW5wdXQgPT09IDMxKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICBiaWFubnVhbElucHV0ICtcclxuICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAoYmlhbm51YWxJbnB1dCA9PT0gMjIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIGJpYW5udWFsSW5wdXQgK1xyXG4gICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5iaWFubnVhbEludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChiaWFubnVhbElucHV0ID09PSAyMykge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgYmlhbm51YWxJbnB1dCArXHJcbiAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKGJpYW5udWFsSW5wdXQgPiAzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICBiaWFubnVhbElucHV0ICtcclxuICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwtaXRlbSB2eC1tYi01XCI+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXRvcD48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLXRvcD5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctY2hlY2tib3gtbGlzdD48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEVNQUlMIE5PVElGSUNBVElPTjo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEZSRVFVRU5DWTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3BcclxuICAgICAgICAgICAgW2lkXT1cIjRcIlxyXG4gICAgICAgICAgICBbaW5wdXRUaW1lXT1cImJpYW5udWFsSW50ZXJ2YWxcIlxyXG4gICAgICAgICAgICBbb2NjdXJyZW5jZUZpcnN0XT1cImJpYW5udWFsSW5wdXRcIlxyXG4gICAgICAgICAgICBbZnJlcXVlbmN5VHlwZV09XCI0XCJcclxuICAgICAgICAgICAgKHRpbWVDaGFuZ2VkKT1cIm9uVGltZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWRGaXJzdCk9XCJ2YWx1ZUNoYW5nZWRGaXJzdCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3QgXHJcbiAgICAgICAgICAgIFtpZF09XCI0XCJcclxuICAgICAgICAgICAgW2xpc3RBcnJheV09XCJtb250aE5hbWVBcnJheVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cImJpYW5udWFsU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRDaGVja2JveCk9XCJvbk1vbnRoU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctY2hlY2tib3gtbGlzdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRU1BSUwgTk9USUZJQ0FUSU9OOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwtaXRlbSB2eC1tYi01XCI+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlXHJcbiAgICAgICAgICAgIFtwYWdlTmFtZV09XCInYmlhbm51YWwnXCJcclxuICAgICAgICAgICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICAgICAgICAgIFtpZF09XCI0XCJcclxuICAgICAgICAgICAgW2NvbXBsZXRlZFZhbHVlXT1cImJpYW5udWFsV2luZG93XCJcclxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbC9mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsL2ZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7Ozs7OztBQVFuQyxNQUFNLE9BQU8sZ0NBQWdDO0lBNEIzQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTNCdEQscUJBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQzlCLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxRSwyQkFBc0IsR0FBRyxJQUFJLENBQUMs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Z0M7a0JBTDVDLFNBQVM7K0JBQ0UsK0JBQStCO3VHQXlCaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LWRpYWxvZy1iaWFubnVhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWwuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeURpYWxvZ0JpYW5udWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBiaWFubnVhbEludGVydmFsID0gJzExOjAwIHBtJztcclxuICBiaWFubnVhbElucHV0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXREYXRlKCk7XHJcbiAgYmlhbm51YWxGYWlsZWQgPSA1O1xyXG4gIGJpYW5udWFsV2luZG93ID0gMzA7XHJcbiAgYmlhbm51YWxEYXkgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk/LmdldERhdGUoKTtcclxuICBiaWFubnVhbExpZmVDeWNsZVN0YXJ0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpO1xyXG4gIGJpYW5udWFsTGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy5iaWFubnVhbExpZmVDeWNsZVN0YXJ0LmdldFRpbWUoKSArIDg2NDAwMDAwXHJcbiAgKTtcclxuICBiaWFubnVhbExpZmVjeWNsZU9jY3VyYW5jZSA9IDEwO1xyXG4gIGJpYW5udWFsU2VsZXRlZExpZmVjeWNsZVR5cGUgPSAyO1xyXG4gIGJpYW5udWFsU2VsZWN0ZWQ6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICBiaWFubnVhbExpZmVjeWNsZSA9IGZhbHNlO1xyXG4gIGZyZXF1ZW5jeUluZm86IGFueTtcclxuICBtb250aE5hbWVBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHNob3J0TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBzZWxlY3RlZE1vbnRobHk6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICBiaWFubnVhbGx5RXh0ZW5zaW9uOiBudW1iZXIgPSA1O1xyXG4gIGJpYW5udWFsV2luZG93T3BlbjogbnVtYmVyID0gMzA7XHJcblxyXG4gIEBJbnB1dCgpIG1vZGU6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gIEBJbnB1dCgpIGZyZXF1ZW5jeURhdGE6IGFueTtcclxuICBsaWZlY3ljbGVEZXRhaWxzOiBhbnkgPSAnMDAwMC0wMC0wMH5+MCc7XHJcblxyXG4gIEBPdXRwdXQoKSBmcmVxdWVuY3lEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8gPSBPYmplY3QuYXNzaWduKHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmVxdWVuY3lJbmZvKTtcclxuICAgIHRoaXMubW9udGhOYW1lQXJyYXkgPSBbLi4ubmV3IFNldCh0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheSldO1xyXG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLm1vbnRoQXJyYXkubWFwKChtb250aCkgPT5cclxuICAgICAgbW9udGguc3Vic3RyaW5nKDAsIDMpXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4gIT0gJycgJiZcclxuICAgICAgcGFyc2VJbnQodGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuLnNwbGl0KCd+JylbMF0pID09PSA5XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUZyZXF1ZW5jeSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVGcmVxdWVuY3koKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuSW5mbyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpO1xyXG4gICAgdGhpcy5iaWFubnVhbFNlbGVjdGVkID0gcGF0dGVybkluZm9bMl1cclxuICAgICAgLnNwbGl0KCcsJylcclxuICAgICAgLm1hcCgoZWxlOiBhbnkpID0+IE51bWJlcihlbGUpIC0gMSk7XHJcbiAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWwgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZFRpbWU7XHJcbiAgICB0aGlzLmJpYW5udWFsV2luZG93ID0gdGhpcy5mcmVxdWVuY3lEYXRhPy53aW5kb3c7XHJcbiAgICB0aGlzLmJpYW5udWFsSW5wdXQgPSBwYXR0ZXJuSW5mb1sxXTtcclxuICAgIHRoaXMuYmlhbm51YWxMaWZlY3ljbGVPY2N1cmFuY2UgPSBOdW1iZXIocGF0dGVybkluZm9bMV0pO1xyXG4gICAgdGhpcy5iaWFubnVhbExpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUoXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8uc3RhcnREYXRlICogMTAwMFxyXG4gICAgKTtcclxuICAgIHRoaXMuYmlhbm51YWxGYWlsZWQgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZDtcclxuICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ubGlmZWN5Y2xlO1xyXG4gIH1cclxuXHJcbiAgb25Nb250aFNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuYmlhbm51YWxTZWxlY3RlZC5wdXNoKGV2ZW50LmluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmlhbm51YWxTZWxlY3RlZCA9IHRoaXMuYmlhbm51YWxTZWxlY3RlZC5maWx0ZXIoXHJcbiAgICAgICAgKGVsZSkgPT4gZWxlICE9PSBldmVudC5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VkRmlyc3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5iaWFubnVhbElucHV0ID0gZXZlbnQudmFsdWU7XHJcbiAgICB0aGlzLmdldEJpYW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBvblRpbWVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbXBsZXRlZCcpIHtcclxuICAgICAgdGhpcy5iaWFubnVhbFdpbmRvdyA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iaWFubnVhbEZhaWxlZCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRCaWFubnVhbEZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25XaW5kb3dPcGVuQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3dpbmRvdyBvcGVuJykge1xyXG4gICAgICB0aGlzLmJpYW5udWFsV2luZG93T3BlbiA9IGV2ZW50Py52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0Qmlhbm51YWxGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIG9uRXh0ZW5zaW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2V4dGVuc2lvbicpIHtcclxuICAgICAgdGhpcy5iaWFubnVhbGx5RXh0ZW5zaW9uID0gZXZlbnQudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEJpYW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBsaWZlY3ljbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSBldmVudC5lbmRzQnkgKyAnfn4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4nICsgZXZlbnQuZW5kYWZ0ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuc3RhcnRGcm9tLnRvU3RyaW5nKCkubGVuZ3RoID4gMTApIHtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBNYXRoLmZsb29yKGV2ZW50LnN0YXJ0RnJvbSAvIDEwMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBNYXRoLmZsb29yKGV2ZW50LnN0YXJ0RnJvbSk7XHJcbiAgICB9XHJcbiAgICBsZXQgZW5kQnlEYXRlID0gTWF0aC5mbG9vcihcclxuICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwICtcclxuICAgICAgICA4NjQwMDAwMFxyXG4gICAgKTtcclxuICAgIGlmIChldmVudC50eXBlID09PSAwKSB7XHJcbiAgICAgIGVuZEJ5RGF0ZSA9IGV2ZW50LmVuZHNCeVxyXG4gICAgICAgID8gbW9tZW50KGV2ZW50LmVuZHNCeSArICcgMDA6MDA6MDAnLCAnREQtTU1NLVlZWVkgSEg6bW06c3MnKS51bml4KClcclxuICAgICAgICA6IGVuZEJ5RGF0ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5mYWlsZWRfdGltZV91dGMgPSBlbmRCeURhdGU7XHJcbiAgICB0aGlzLmdldEJpYW5udWFsRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWFubnVhbEZyZXF1ZW5jeSgpIHtcclxuICAgIHRoaXMuYmlhbm51YWxTZWxlY3RlZCA9IHRoaXMuYmlhbm51YWxTZWxlY3RlZC5zb3J0KChuMSwgbjIpID0+IG4xIC0gbjIpO1xyXG4gICAgY29uc3QgbW9udGhJbmRleCA9IHRoaXMuYmlhbm51YWxTZWxlY3RlZC5tYXAoKGVsZSkgPT4gZWxlICsgMSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGF0dGVybiA9XHJcbiAgICAgIDkgKyAnficgKyB0aGlzLmJpYW5udWFsSW5wdXQgKyAnficgKyBtb250aEluZGV4LmpvaW4oJywnKSArICd+MCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICdiaWFubnVhbCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkQWZ0ZXIgPSB0aGlzLmJpYW5udWFsRmFpbGVkO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLndpbmRvdyA9IHRoaXMuYmlhbm51YWxXaW5kb3c7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMTJociA9IHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgoXHJcbiAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbFxyXG4gICAgKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5saWZlY3ljbGVEZXRhaWxzID0gdGhpcy5saWZlY3ljbGVEZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnN0YXJ0RnJvbSA9IHRoaXMuc3RhcnREYXRlO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnJlcG9ydElkID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoXHJcbiAgICAgIE51bWJlcih0aGlzLmJpYW5udWFsSW5wdXQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF9hZnRlcl9kYXlzID0gdGhpcy5iaWFubnVhbGx5RXh0ZW5zaW9uO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMgPSB0aGlzLmJpYW5udWFsV2luZG93T3BlbjtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5lbWl0KHRoaXMuZnJlcXVlbmN5SW5mbyk7XHJcbiAgICBjb25zb2xlLmxvZygnIHRoaXMuZnJlcXVlbmN5SW5mbyA9PT4nLCB0aGlzLmZyZXF1ZW5jeUluZm8pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoYmlhbm51YWxJbnB1dDogbnVtYmVyKSB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSB0aGlzLmJpYW5udWFsU2VsZWN0ZWQubWFwKChlbGUpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtlbGVdO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoYmlhbm51YWxJbnB1dCA9PT0gMSkge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5iaWFubnVhbEludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChiaWFubnVhbElucHV0ID09PSAyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKGJpYW5udWFsSW5wdXQgPT09IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICczcmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAoYmlhbm51YWxJbnB1dCA9PT0gMjEgfHwgYmlhbm51YWxJbnB1dCA9PT0gMzEpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIGJpYW5udWFsSW5wdXQgK1xyXG4gICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5iaWFubnVhbEludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChiaWFubnVhbElucHV0ID09PSAyMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgYmlhbm51YWxJbnB1dCArXHJcbiAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLmJpYW5udWFsSW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKGJpYW5udWFsSW5wdXQgPT09IDIzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICBiaWFubnVhbElucHV0ICtcclxuICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMuYmlhbm51YWxJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAoYmlhbm51YWxJbnB1dCA+IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIGJpYW5udWFsSW5wdXQgK1xyXG4gICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5iaWFubnVhbEludGVydmFsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxufVxyXG4iLCJcclxuPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYmlhbm51YWxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEZSRVFVRU5DWTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJpYW5udWFsLWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3BcclxuICAgICAgICAgICAgW2lkXT1cIjRcIlxyXG4gICAgICAgICAgICBbaW5wdXRUaW1lXT1cImJpYW5udWFsSW50ZXJ2YWxcIlxyXG4gICAgICAgICAgICBbb2NjdXJyZW5jZUZpcnN0XT1cImJpYW5udWFsSW5wdXRcIlxyXG4gICAgICAgICAgICBbZnJlcXVlbmN5VHlwZV09XCI0XCJcclxuICAgICAgICAgICAgKHRpbWVDaGFuZ2VkKT1cIm9uVGltZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWRGaXJzdCk9XCJ2YWx1ZUNoYW5nZWRGaXJzdCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3RcclxuICAgICAgICAgICAgW2lkXT1cIjRcIlxyXG4gICAgICAgICAgICBbbGlzdEFycmF5XT1cIm1vbnRoTmFtZUFycmF5XCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwiYmlhbm51YWxTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgIChzZWxlY3RlZENoZWNrYm94KT1cIm9uTW9udGhTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jaGVja2JveC1saXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGVcclxuICAgICAgW3BhZ2VOYW1lXT1cIidiaWFubnVhbCdcIlxyXG4gICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgW2lkXT1cIjRcIlxyXG4gICAgICBbY29tcGxldGVkVmFsdWVdPVwiYmlhbm51YWxXaW5kb3dcIlxyXG4gICAgICBbd2luZG93Q2xvc2VzXT1cImJpYW5udWFsbHlFeHRlbnNpb25cIlxyXG4gICAgICBbYXNzZXNzV2luZG93T3Blbl09XCJiaWFubnVhbFdpbmRvd09wZW5cIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHdpbmRvd09wZW5DaGFuZ2UpPVwib25XaW5kb3dPcGVuQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoZXh0ZW5zaW9uVmFsdWVDaGFuZ2UpPVwib25FeHRlbnNpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==