survery-lib 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -52
- package/assets/style.css +383 -58
- package/assets/style.css.map +1 -1
- package/ng-package.json +11 -0
- package/package.json +15 -27
- package/scss/style.scss +88 -0
- package/src/lib/components/question-boolean-template/question-boolean-template.component.html +13 -0
- package/src/lib/components/question-boolean-template/question-boolean-template.component.scss +0 -0
- package/src/lib/components/question-boolean-template/question-boolean-template.component.spec.ts +21 -0
- package/src/lib/components/question-boolean-template/question-boolean-template.component.ts +109 -0
- package/src/lib/components/question-check-box-template/question-check-box-template.component.html +13 -0
- package/src/lib/components/question-check-box-template/question-check-box-template.component.scss +0 -0
- package/src/lib/components/question-check-box-template/question-check-box-template.component.spec.ts +21 -0
- package/src/lib/components/question-check-box-template/question-check-box-template.component.ts +124 -0
- package/src/lib/components/question-dropdown-multi-template/question-dropdown-multi-template.component.html +10 -0
- package/src/lib/components/question-dropdown-multi-template/question-dropdown-multi-template.component.scss +3 -0
- package/src/lib/components/question-dropdown-multi-template/question-dropdown-multi-template.component.spec.ts +21 -0
- package/src/lib/components/question-dropdown-multi-template/question-dropdown-multi-template.component.ts +100 -0
- package/src/lib/components/question-dropdown-template/question-dropdown-template.component.html +10 -0
- package/src/lib/components/question-dropdown-template/question-dropdown-template.component.scss +0 -0
- package/src/lib/components/question-dropdown-template/question-dropdown-template.component.spec.ts +21 -0
- package/src/lib/components/question-dropdown-template/question-dropdown-template.component.ts +87 -0
- package/src/lib/components/question-matrix-template/question-matrix-template.component.html +36 -0
- package/src/lib/components/question-matrix-template/question-matrix-template.component.scss +0 -0
- package/src/lib/components/question-matrix-template/question-matrix-template.component.spec.ts +21 -0
- package/src/lib/components/question-matrix-template/question-matrix-template.component.ts +110 -0
- package/src/lib/components/question-radio-button-template/question-radio-button-template.component.html +13 -0
- package/src/lib/components/question-radio-button-template/question-radio-button-template.component.scss +0 -0
- package/src/lib/components/question-radio-button-template/question-radio-button-template.component.spec.ts +21 -0
- package/src/lib/components/question-radio-button-template/question-radio-button-template.component.ts +111 -0
- package/src/lib/components/question-text-template/question-text-template.component.html +13 -0
- package/src/lib/components/question-text-template/question-text-template.component.scss +0 -0
- package/src/lib/components/question-text-template/question-text-template.component.spec.ts +21 -0
- package/src/lib/components/question-text-template/question-text-template.component.ts +105 -0
- package/src/lib/pipes/default-question-answer.pipe.spec.ts +8 -0
- package/src/lib/pipes/default-question-answer.pipe.ts +18 -0
- package/src/lib/pipes/default-question-answers.pipe.spec.ts +8 -0
- package/src/lib/pipes/default-question-answers.pipe.ts +17 -0
- package/src/lib/pipes/filter-question.pipe.spec.ts +8 -0
- package/src/lib/pipes/filter-question.pipe.ts +14 -0
- package/src/lib/services/survey-lib.service.spec.ts +16 -0
- package/src/lib/services/survey-lib.service.ts +31 -0
- package/src/lib/survery-lib.component.spec.ts +21 -0
- package/src/lib/survery-lib.component.ts +308 -0
- package/src/lib/survery-lib.module.ts +47 -0
- package/src/lib/survey-lib.component.html +67 -0
- package/src/lib/survey-lib.component.scss +4 -0
- package/{lib/usecases/base/use-case.d.ts → src/lib/usecases/base/use-case.ts} +9 -7
- package/src/lib/usecases/check-rule-exps.usecase.ts +188 -0
- package/{public-api.d.ts → src/public-api.ts} +5 -1
- package/src/shared/dtos/default-question-answers.dto.ts +10 -0
- package/{shared/dtos/rule-exp-answer.dto.d.ts → src/shared/dtos/rule-exp-answer.dto.ts} +5 -5
- package/{shared/dtos/rule-exp.dto.d.ts → src/shared/dtos/rule-exp.dto.ts} +14 -13
- package/{shared/dtos/rule-result-question.dto.d.ts → src/shared/dtos/rule-result-question.dto.ts} +5 -4
- package/{shared/dtos/survey-answer.dto.d.ts → src/shared/dtos/survey-answer.dto.ts} +16 -16
- package/{shared/dtos/survey-answers-subject.dto.d.ts → src/shared/dtos/survey-answers-subject.dto.ts} +6 -5
- package/{shared/dtos/survey-page.dto.d.ts → src/shared/dtos/survey-page.dto.ts} +10 -9
- package/{shared/dtos/survey-question-group.dto.d.ts → src/shared/dtos/survey-question-group.dto.ts} +9 -8
- package/{shared/dtos/survey-question.dto.d.ts → src/shared/dtos/survey-question.dto.ts} +19 -18
- package/{shared/dtos/survey-rule.dto.d.ts → src/shared/dtos/survey-rule.dto.ts} +11 -10
- package/{shared/dtos/survey-sub-question.dto.d.ts → src/shared/dtos/survey-sub-question.dto.ts} +9 -9
- package/{shared/dtos/survey.dto.d.ts → src/shared/dtos/survey.dto.ts} +17 -16
- package/{shared/enums/logic-action.enum.d.ts → src/shared/enums/logic-action.enum.ts} +7 -7
- package/src/shared/enums/logic-property.enum.ts +12 -0
- package/src/shared/enums/operator.enum.ts +4 -0
- package/{shared/enums/question-type.enum.d.ts → src/shared/enums/question-type.enum.ts} +9 -8
- package/src/shared/form-interfaces/question-boolean-template.form-interface.ts +17 -0
- package/src/shared/form-interfaces/question-check-box-template.form-interface.ts +18 -0
- package/src/shared/form-interfaces/question-dropdown-multi-template.form-interface.ts +17 -0
- package/src/shared/form-interfaces/question-dropdown-template.form-interface.ts +10 -0
- package/{shared/form-interfaces/question-matrix-template.form-interface.d.ts → src/shared/form-interfaces/question-matrix-template.form-interface.ts} +13 -11
- package/src/shared/form-interfaces/question-radio-button-template.form-interface.ts +17 -0
- package/src/shared/form-interfaces/question-text-template.form-interface.ts +11 -0
- package/src/shared/form-interfaces/survery-lib.form-interface.ts +27 -0
- package/src/shared/models/question-answer.model.ts +6 -0
- package/src/shared/models/survery-question-result.model.ts +8 -0
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/lib/components/question-boolean-template/question-boolean-template.component.mjs +0 -99
- package/esm2022/lib/components/question-check-box-template/question-check-box-template.component.mjs +0 -110
- package/esm2022/lib/components/question-dropdown-template/question-dropdown-template.component.mjs +0 -83
- package/esm2022/lib/components/question-matrix-template/question-matrix-template.component.mjs +0 -101
- package/esm2022/lib/components/question-radio-button-template/question-radio-button-template.component.mjs +0 -99
- package/esm2022/lib/components/question-text-template/question-text-template.component.mjs +0 -99
- package/esm2022/lib/pipes/default-question-answer.pipe.mjs +0 -19
- package/esm2022/lib/pipes/default-question-answers.pipe.mjs +0 -19
- package/esm2022/lib/pipes/filter-question.pipe.mjs +0 -16
- package/esm2022/lib/services/survey-lib.service.mjs +0 -30
- package/esm2022/lib/survery-lib.component.mjs +0 -270
- package/esm2022/lib/survery-lib.module.mjs +0 -59
- package/esm2022/lib/usecases/base/use-case.mjs +0 -2
- package/esm2022/lib/usecases/check-rule-exps.usecase.mjs +0 -154
- package/esm2022/public-api.mjs +0 -8
- package/esm2022/shared/dtos/default-question-answers.dto.mjs +0 -3
- package/esm2022/shared/dtos/rule-exp-answer.dto.mjs +0 -2
- package/esm2022/shared/dtos/rule-exp.dto.mjs +0 -2
- package/esm2022/shared/dtos/rule-result-question.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-answer.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-answers-subject.dto.mjs +0 -3
- package/esm2022/shared/dtos/survey-page.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-question-group.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-question.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-rule.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey-sub-question.dto.mjs +0 -2
- package/esm2022/shared/dtos/survey.dto.mjs +0 -2
- package/esm2022/shared/enums/Logic-Property.enum.mjs +0 -14
- package/esm2022/shared/enums/logic-action.enum.mjs +0 -9
- package/esm2022/shared/enums/operator.enum.mjs +0 -6
- package/esm2022/shared/enums/question-type.enum.mjs +0 -10
- package/esm2022/shared/form-interfaces/question-boolean-template.form-interface.mjs +0 -2
- package/esm2022/shared/form-interfaces/question-check-box-template.form-interface.mjs +0 -3
- package/esm2022/shared/form-interfaces/question-dropdown-template.form-interface.mjs +0 -3
- package/esm2022/shared/form-interfaces/question-matrix-template.form-interface.mjs +0 -2
- package/esm2022/shared/form-interfaces/question-radio-button-template.form-interface.mjs +0 -3
- package/esm2022/shared/form-interfaces/question-text-template.form-interface.mjs +0 -2
- package/esm2022/shared/form-interfaces/survery-lib.form-interface.mjs +0 -2
- package/esm2022/shared/models/question-answer.model.mjs +0 -3
- package/esm2022/shared/models/survery-question-result.model.mjs +0 -3
- package/esm2022/survery-lib.mjs +0 -5
- package/fesm2022/survery-lib.mjs +0 -1120
- package/fesm2022/survery-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/question-boolean-template/question-boolean-template.component.d.ts +0 -36
- package/lib/components/question-check-box-template/question-check-box-template.component.d.ts +0 -37
- package/lib/components/question-dropdown-template/question-dropdown-template.component.d.ts +0 -33
- package/lib/components/question-matrix-template/question-matrix-template.component.d.ts +0 -33
- package/lib/components/question-radio-button-template/question-radio-button-template.component.d.ts +0 -36
- package/lib/components/question-text-template/question-text-template.component.d.ts +0 -35
- package/lib/pipes/default-question-answer.pipe.d.ts +0 -8
- package/lib/pipes/default-question-answers.pipe.d.ts +0 -8
- package/lib/pipes/filter-question.pipe.d.ts +0 -9
- package/lib/services/survey-lib.service.d.ts +0 -14
- package/lib/survery-lib.component.d.ts +0 -45
- package/lib/survery-lib.module.d.ts +0 -22
- package/lib/usecases/check-rule-exps.usecase.d.ts +0 -21
- package/shared/dtos/default-question-answers.dto.d.ts +0 -9
- package/shared/enums/Logic-Property.enum.d.ts +0 -12
- package/shared/enums/operator.enum.d.ts +0 -4
- package/shared/form-interfaces/question-boolean-template.form-interface.d.ts +0 -15
- package/shared/form-interfaces/question-check-box-template.form-interface.d.ts +0 -15
- package/shared/form-interfaces/question-dropdown-template.form-interface.d.ts +0 -9
- package/shared/form-interfaces/question-radio-button-template.form-interface.d.ts +0 -15
- package/shared/form-interfaces/question-text-template.form-interface.d.ts +0 -10
- package/shared/form-interfaces/survery-lib.form-interface.d.ts +0 -24
- package/shared/models/question-answer.model.d.ts +0 -6
- package/shared/models/survery-question-result.model.d.ts +0 -8
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import { QuestionTypeEnum } from '../../../shared/enums/question-type.enum';
|
|
4
|
-
import { debounceTime, filter, map } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ng-stack/forms";
|
|
7
|
-
import * as i2 from "../../services/survey-lib.service";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/forms";
|
|
10
|
-
export class QuestionTextTemplateComponent {
|
|
11
|
-
get fCtrls() {
|
|
12
|
-
return this.rForm.controls;
|
|
13
|
-
}
|
|
14
|
-
get questionTypeEnum() {
|
|
15
|
-
return QuestionTypeEnum;
|
|
16
|
-
}
|
|
17
|
-
set setQuestion(value) {
|
|
18
|
-
this.rForm.patchValue({
|
|
19
|
-
id: value.questionId,
|
|
20
|
-
name: value.questionName,
|
|
21
|
-
title: value.questionTitle,
|
|
22
|
-
typeId: value.questionTypeId,
|
|
23
|
-
description: value.questionDescription
|
|
24
|
-
});
|
|
25
|
-
if (value.surveyAnswers[0]?.answerId != null && value.surveyAnswers[0]?.answerId != undefined) {
|
|
26
|
-
this.fCtrls.surveyAnswerId.setValue(value.surveyAnswers[0].answerId);
|
|
27
|
-
}
|
|
28
|
-
if (value.isRequired == true) {
|
|
29
|
-
this.fCtrls.answer.addValidators([Validators.required]);
|
|
30
|
-
this.fCtrls.answer.updateValueAndValidity();
|
|
31
|
-
}
|
|
32
|
-
this.isShow = value.isVisable;
|
|
33
|
-
this.toggleEnableAnswer(value.isReadOnly);
|
|
34
|
-
}
|
|
35
|
-
set isDisabled(value) {
|
|
36
|
-
this.toggleEnableAnswer(value);
|
|
37
|
-
}
|
|
38
|
-
constructor(_formBuilder, _surveyLibService) {
|
|
39
|
-
this._formBuilder = _formBuilder;
|
|
40
|
-
this._surveyLibService = _surveyLibService;
|
|
41
|
-
this.emitter = new EventEmitter();
|
|
42
|
-
this.isShow = true;
|
|
43
|
-
this.rForm = this._formBuilder.group({
|
|
44
|
-
id: [null],
|
|
45
|
-
name: [null],
|
|
46
|
-
title: [null],
|
|
47
|
-
typeId: [null],
|
|
48
|
-
description: [null],
|
|
49
|
-
surveyAnswerId: [null],
|
|
50
|
-
answer: [null]
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
ngOnInit() {
|
|
54
|
-
this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(200)).subscribe(value => {
|
|
55
|
-
const formValue = this.rForm.value;
|
|
56
|
-
this.emitter.emit({
|
|
57
|
-
QuestionId: formValue.id,
|
|
58
|
-
IsValid: this.fCtrls.answer.valid,
|
|
59
|
-
Answer: value,
|
|
60
|
-
SurveyAnswerId: formValue.surveyAnswerId
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
this.fCtrls.answer.setValue(null);
|
|
64
|
-
this._surveyLibService.surveyAnswersObsrv.pipe(map(x => x.defaultAnswers.filter(x => x.QuestionId == this.fCtrls.id.value)))
|
|
65
|
-
.pipe(filter(x => x.length > 0)).pipe(map(x => x.at(0)))
|
|
66
|
-
.subscribe(answer => {
|
|
67
|
-
this.fCtrls.answer.setValue(answer.AnswerText);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
convertToFormControl(element) {
|
|
71
|
-
return element;
|
|
72
|
-
}
|
|
73
|
-
toggleEnableAnswer(isReadOnly) {
|
|
74
|
-
if (isReadOnly == true) {
|
|
75
|
-
this.fCtrls.answer.disable();
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.fCtrls.answer.enable();
|
|
79
|
-
}
|
|
80
|
-
this.fCtrls.answer.updateValueAndValidity();
|
|
81
|
-
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isShow: "isShow", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\r\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\r\n <h3 class=\"quastion-title \">\r\n {{fCtrls.title.value}}\r\n </h3>\r\n <div class=\"text-quastion\">\r\n <input class=\"form-control\" type=\"text\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\r\n [disabled]=\"isDisabled\" *ngIf=\"isTextArea == false else textAreaTemplate\">\r\n <ng-template #textAreaTemplate>\r\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\r\n [disabled]=\"isDisabled\" ></textarea>\r\n </ng-template>\r\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
84
|
-
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, decorators: [{
|
|
86
|
-
type: Component,
|
|
87
|
-
args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\r\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\r\n <h3 class=\"quastion-title \">\r\n {{fCtrls.title.value}}\r\n </h3>\r\n <div class=\"text-quastion\">\r\n <input class=\"form-control\" type=\"text\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\r\n [disabled]=\"isDisabled\" *ngIf=\"isTextArea == false else textAreaTemplate\">\r\n <ng-template #textAreaTemplate>\r\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\r\n [disabled]=\"isDisabled\" ></textarea>\r\n </ng-template>\r\n </div>" }]
|
|
88
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
89
|
-
type: Output
|
|
90
|
-
}], isShow: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], isTextArea: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], setQuestion: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], isDisabled: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVXZFLE1BQU0sT0FBTyw2QkFBNkI7SUFJeEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBTUQsSUFBYSxXQUFXLENBQUMsS0FBd0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxjQUFj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QU0sR0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckQsU0FBUyxDQUFDLE1BQU0sQ0FBQSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBWTtRQUMvQixPQUFPLE9BQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFVBQW1CO1FBQzVDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUM3QjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDNUI7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQzlDLENBQUM7OEdBdEZVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGlOQ2hCMUMsbXZCQVlVOzsyRkRJRyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNEJBQTRCO2lJQWdCNUIsT0FBTztzQkFBaEIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDTyxXQUFXO3NCQUF2QixLQUFLO2dCQXNCTyxVQUFVO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xTdGFjaywgVmFsaWRhdG9yc01vZGVsIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcXVlc3Rpb24uZHRvJztcclxuaW1wb3J0IHsgUXVlc3Rpb25UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcclxuaW1wb3J0IHsgU3VydmV5TGliU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N1cnZleS1saWIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbi10ZXh0LXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVzdGlvblRleHRUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHJGb3JtOiBGb3JtR3JvdXA8UXVlc3Rpb25UZXh0VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcclxuXHJcbiAgZ2V0IGZDdHJscygpIHtcclxuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XHJcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVzdGlvbkFuc3dlck1vZGVsPigpO1xyXG5cclxuICBASW5wdXQoKSBpc1Nob3c6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzVGV4dEFyZWE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xyXG4gICAgdGhpcy5yRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgaWQ6IHZhbHVlLnF1ZXN0aW9uSWQsXHJcbiAgICAgIG5hbWU6IHZhbHVlLnF1ZXN0aW9uTmFtZSxcclxuICAgICAgdGl0bGU6IHZhbHVlLnF1ZXN0aW9uVGl0bGUsXHJcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWQsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZS5xdWVzdGlvbkRlc2NyaXB0aW9uXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXT8uYW5zd2VySWQgIT0gbnVsbCAmJiB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdPy5hbnN3ZXJJZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5mQ3RybHMuc3VydmV5QW5zd2VySWQuc2V0VmFsdWUodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5hbnN3ZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNTaG93ID0gdmFsdWUuaXNWaXNhYmxlO1xyXG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUuaXNSZWFkT25seSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciAsIHByaXZhdGUgX3N1cnZleUxpYlNlcnZpY2U6U3VydmV5TGliU2VydmljZSkge1xyXG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uVGV4dFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICBpZDogW251bGxdLFxyXG4gICAgICBuYW1lOiBbbnVsbF0sXHJcbiAgICAgIHRpdGxlOiBbbnVsbF0sXHJcbiAgICAgIHR5cGVJZDogW251bGxdLFxyXG4gICAgICBkZXNjcmlwdGlvbjogW251bGxdLFxyXG4gICAgICBzdXJ2ZXlBbnN3ZXJJZDogW251bGxdLFxyXG4gICAgICBhbnN3ZXI6IFtudWxsXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZkN0cmxzLmFuc3dlci52YWx1ZUNoYW5nZXMucGlwZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XHJcbiAgICAgIHRoaXMuZW1pdHRlci5lbWl0KHtcclxuICAgICAgICBRdWVzdGlvbklkOiBmb3JtVmFsdWUuaWQsXHJcbiAgICAgICAgSXNWYWxpZDogdGhpcy5mQ3RybHMuYW5zd2VyLnZhbGlkLFxyXG4gICAgICAgIEFuc3dlcjogdmFsdWUsXHJcbiAgICAgICAgU3VydmV5QW5zd2VySWQ6IGZvcm1WYWx1ZS5zdXJ2ZXlBbnN3ZXJJZFxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5QW5zd2Vyc09ic3J2LnBpcGUobWFwKHg9PiB4LmRlZmF1bHRBbnN3ZXJzLmZpbHRlcih4PT54LlF1ZXN0aW9uSWQgPT0gdGhpcy5mQ3RybHMuaWQudmFsdWUpKSlcclxuICAgIC5waXBlKGZpbHRlcih4PT54Lmxlbmd0aCAgPiAwKSkucGlwZShtYXAoeD0+IHguYXQoMCkpKVxyXG4gICAgLnN1YnNjcmliZShhbnN3ZXI9PntcclxuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGFuc3dlci5BbnN3ZXJUZXh0KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvRm9ybUNvbnRyb2woZWxlbWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRW5hYmxlQW5zd2VyKGlzUmVhZE9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpc1JlYWRPbmx5ID09IHRydWUpIHtcclxuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmRpc2FibGUoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmVuYWJsZSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInF1YXN0aW9uXCIgW2Zvcm1Hcm91cF09XCJyRm9ybVwiIFthdHRyLmlkXT1cIidxdWVzdGlvbl8nK2ZDdHJscy5pZC52YWx1ZVwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2ludmFsaWQtcXVlc3Rpb24nOiBmQ3RybHMuYW5zd2VyLmludmFsaWQgLCAnZC1ub25lJzppc1Nob3cgIT0gdHJ1ZX1cIj5cclxuICAgIDxoMyBjbGFzcz1cInF1YXN0aW9uLXRpdGxlIFwiPlxyXG4gICAgICAgIHt7ZkN0cmxzLnRpdGxlLnZhbHVlfX1cclxuICAgIDwvaDM+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1xdWFzdGlvblwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGZDdHJscy5hbnN3ZXIpXCJcclxuICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiAgICpuZ0lmPVwiaXNUZXh0QXJlYSA9PSBmYWxzZSBlbHNlIHRleHRBcmVhVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RleHRBcmVhVGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCI1XCIgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGZDdHJscy5hbnN3ZXIpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiA+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+Il19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DefaultQuestionAnswerPipe {
|
|
4
|
-
transform(value, questionId, reloadId) {
|
|
5
|
-
if (value != null) {
|
|
6
|
-
return value.find(x => x.QuestionId == questionId);
|
|
7
|
-
}
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswerPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswerPipe, name: "defaultQuestionAnswer" }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswerPipe, decorators: [{
|
|
14
|
-
type: Pipe,
|
|
15
|
-
args: [{
|
|
16
|
-
name: 'defaultQuestionAnswer'
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvcGlwZXMvZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxTQUFTLENBQUMsS0FBaUMsRUFBRSxVQUFrQixFQUFHLFFBQVE7UUFDeEUsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLENBQUM7U0FDcEQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBUlUseUJBQXlCOzRHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSHJDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVCQUF1QjtpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERlZmF1bHRRdWVzdGlvbkFuc3dlckR0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2RlZmF1bHQtcXVlc3Rpb24tYW5zd2Vycy5kdG8nO1xyXG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2RlZmF1bHRRdWVzdGlvbkFuc3dlcidcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRRdWVzdGlvbkFuc3dlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG9bXSwgcXVlc3Rpb25JZDogbnVtYmVyICwgcmVsb2FkSWQpOiBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8ge1xyXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLmZpbmQoeCA9PiB4LlF1ZXN0aW9uSWQgPT0gcXVlc3Rpb25JZCk7ICBcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DefaultQuestionAnswersPipe {
|
|
4
|
-
transform(value, questionId, reloadId) {
|
|
5
|
-
if (value != null) {
|
|
6
|
-
return value.filter(x => x.ParentQuestionId == questionId);
|
|
7
|
-
}
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswersPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswersPipe, name: "defaultQuestionAnswers" }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultQuestionAnswersPipe, decorators: [{
|
|
14
|
-
type: Pipe,
|
|
15
|
-
args: [{
|
|
16
|
-
name: 'defaultQuestionAnswers'
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXJzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3BpcGVzL2RlZmF1bHQtcXVlc3Rpb24tYW5zd2Vycy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sMEJBQTBCO0lBRXJDLFNBQVMsQ0FBQyxLQUFpQyxFQUFFLFVBQWUsRUFBRyxRQUFRO1FBQ3JFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDLENBQUM7U0FDNUQ7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBUlUsMEJBQTBCOzRHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBSHRDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHdCQUF3QjtpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERlZmF1bHRRdWVzdGlvbkFuc3dlckR0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2RlZmF1bHQtcXVlc3Rpb24tYW5zd2Vycy5kdG8nO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdkZWZhdWx0UXVlc3Rpb25BbnN3ZXJzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFF1ZXN0aW9uQW5zd2Vyc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG9bXSwgcXVlc3Rpb25JZDogYW55ICwgcmVsb2FkSWQpOiBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG9bXSB7XHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKHggPT4geC5QYXJlbnRRdWVzdGlvbklkID09IHF1ZXN0aW9uSWQpOyAgXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FilterQuestionPipe {
|
|
4
|
-
transform(value, questionArr) {
|
|
5
|
-
return questionArr.find(x => x.questionId == value.questionId);
|
|
6
|
-
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FilterQuestionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FilterQuestionPipe, name: "filterQuestion" }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FilterQuestionPipe, decorators: [{
|
|
11
|
-
type: Pipe,
|
|
12
|
-
args: [{
|
|
13
|
-
name: 'filterQuestion'
|
|
14
|
-
}]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXF1ZXN0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3BpcGVzL2ZpbHRlci1xdWVzdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFNBQVMsQ0FBQyxLQUF3QixFQUFFLFdBQXFEO1FBQ3ZGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLENBQUMsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7OEdBSlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9zdXJ2ZXJ5LWxpYi5mb3JtLWludGVyZmFjZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2ZpbHRlclF1ZXN0aW9uJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUXVlc3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8sIHF1ZXN0aW9uQXJyOiBRdWVzdGlvbkNoaWxkT2ZTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZVtdKTogUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2Uge1xyXG4gICAgcmV0dXJuIHF1ZXN0aW9uQXJyLmZpbmQoeD0+eC5xdWVzdGlvbklkID09IHZhbHVlLnF1ZXN0aW9uSWQpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class SurveyLibService {
|
|
5
|
-
get surveyDataObsrv() {
|
|
6
|
-
return this.surveyDataSubject.asObservable();
|
|
7
|
-
}
|
|
8
|
-
get surveyAnswersObsrv() {
|
|
9
|
-
return this.surveyAnswersSubject.asObservable();
|
|
10
|
-
}
|
|
11
|
-
constructor() {
|
|
12
|
-
this.surveyDataSubject = new Subject();
|
|
13
|
-
this.surveyAnswersSubject = new Subject();
|
|
14
|
-
}
|
|
15
|
-
setSurveyData(survey) {
|
|
16
|
-
this.surveyDataSubject.next(survey);
|
|
17
|
-
}
|
|
18
|
-
setsurveyAnswers(model) {
|
|
19
|
-
this.surveyAnswersSubject.next(model);
|
|
20
|
-
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, providedIn: 'root' }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, decorators: [{
|
|
25
|
-
type: Injectable,
|
|
26
|
-
args: [{
|
|
27
|
-
providedIn: 'root'
|
|
28
|
-
}]
|
|
29
|
-
}], ctorParameters: function () { return []; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW1CLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPaEQsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRDtRQVhRLHNCQUFpQixHQUF1QixJQUFJLE9BQU8sRUFBYSxDQUFDO1FBQ2pFLHlCQUFvQixHQUFxQyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQVV4RixDQUFDO0lBRWpCLGFBQWEsQ0FBQyxNQUFpQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBckJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cnZleUR0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS5kdG8nO1xyXG5pbXBvcnQgeyBzdXJ2ZXlBbnN3ZXJzU3ViamVjdER0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1hbnN3ZXJzLXN1YmplY3QuZHRvJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cnZleUxpYlNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHN1cnZleURhdGFTdWJqZWN0OiBTdWJqZWN0PFN1cnZleUR0bz4gPSBuZXcgU3ViamVjdDxTdXJ2ZXlEdG8+KCk7XHJcbiAgcHJpdmF0ZSBzdXJ2ZXlBbnN3ZXJzU3ViamVjdDogU3ViamVjdDxzdXJ2ZXlBbnN3ZXJzU3ViamVjdER0bz4gPSBuZXcgU3ViamVjdDxzdXJ2ZXlBbnN3ZXJzU3ViamVjdER0bz4oKTtcclxuXHJcbiAgZ2V0IHN1cnZleURhdGFPYnNydigpIHtcclxuICAgIHJldHVybiB0aGlzLnN1cnZleURhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1cnZleUFuc3dlcnNPYnNydigpIHtcclxuICAgIHJldHVybiB0aGlzLnN1cnZleUFuc3dlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgc2V0U3VydmV5RGF0YShzdXJ2ZXk6IFN1cnZleUR0bykge1xyXG4gICAgdGhpcy5zdXJ2ZXlEYXRhU3ViamVjdC5uZXh0KHN1cnZleSk7XHJcbiAgfVxyXG5cclxuICBzZXRzdXJ2ZXlBbnN3ZXJzKG1vZGVsOiBzdXJ2ZXlBbnN3ZXJzU3ViamVjdER0bykge1xyXG4gICAgdGhpcy5zdXJ2ZXlBbnN3ZXJzU3ViamVjdC5uZXh0KG1vZGVsKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import { QuestionTypeEnum } from '../shared/enums/question-type.enum';
|
|
3
|
-
import { v4 as guidGenerator } from 'uuid';
|
|
4
|
-
import { LogicActionEnum } from '../shared/enums/logic-action.enum';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./services/survey-lib.service";
|
|
7
|
-
import * as i2 from "@ng-stack/forms";
|
|
8
|
-
import * as i3 from "./usecases/check-rule-exps.usecase";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "./components/question-text-template/question-text-template.component";
|
|
11
|
-
import * as i6 from "./components/question-radio-button-template/question-radio-button-template.component";
|
|
12
|
-
import * as i7 from "./components/question-check-box-template/question-check-box-template.component";
|
|
13
|
-
import * as i8 from "./components/question-dropdown-template/question-dropdown-template.component";
|
|
14
|
-
import * as i9 from "./components/question-matrix-template/question-matrix-template.component";
|
|
15
|
-
import * as i10 from "./components/question-boolean-template/question-boolean-template.component";
|
|
16
|
-
import * as i11 from "./pipes/filter-question.pipe";
|
|
17
|
-
export class SurveryLibComponent {
|
|
18
|
-
get fCtrls() {
|
|
19
|
-
return this.rForm.controls;
|
|
20
|
-
}
|
|
21
|
-
get questionTypeEnum() {
|
|
22
|
-
return QuestionTypeEnum;
|
|
23
|
-
}
|
|
24
|
-
get isFirstPage() {
|
|
25
|
-
return this.fCtrls.currentPageIndex.value == 0;
|
|
26
|
-
}
|
|
27
|
-
get isLastPage() {
|
|
28
|
-
return this.fCtrls.currentPageIndex.value == (this.surveyData?.surveyPages.length - 1);
|
|
29
|
-
}
|
|
30
|
-
get surveyResult() {
|
|
31
|
-
return {
|
|
32
|
-
currentPageIndex: this.fCtrls.currentPageIndex.value,
|
|
33
|
-
answers: this.fCtrls.questionArray.value.filter(x => x.isMatrixGroup != true).map(x => {
|
|
34
|
-
return {
|
|
35
|
-
SurveyPageIndex: x.surveyPageIndex,
|
|
36
|
-
QuestionId: x.questionId,
|
|
37
|
-
QuestionType: x.questionType,
|
|
38
|
-
AnswerId: x.answerId,
|
|
39
|
-
AnswerText: x.answerText,
|
|
40
|
-
AnswerIdArr: x.answerIdArr
|
|
41
|
-
};
|
|
42
|
-
})
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
constructor(_surveyLibService, _formBuilder, _checkRuleExpsUsecase) {
|
|
46
|
-
this._surveyLibService = _surveyLibService;
|
|
47
|
-
this._formBuilder = _formBuilder;
|
|
48
|
-
this._checkRuleExpsUsecase = _checkRuleExpsUsecase;
|
|
49
|
-
this.reloadDefaultAnswerId = guidGenerator();
|
|
50
|
-
this.surveyResultEmit = new EventEmitter();
|
|
51
|
-
this.rForm = this._formBuilder.group({
|
|
52
|
-
currentPageIndex: [0],
|
|
53
|
-
questionArray: this._formBuilder.array([]),
|
|
54
|
-
ruleQuestionArray: this._formBuilder.array([])
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
ngOnInit() {
|
|
58
|
-
this._surveyLibService.surveyDataObsrv.subscribe(survey => {
|
|
59
|
-
this.fCtrls.questionArray.clear();
|
|
60
|
-
this.fCtrls.ruleQuestionArray.clear();
|
|
61
|
-
this.surveyData = null;
|
|
62
|
-
if (survey != null) {
|
|
63
|
-
this.surveyData = survey;
|
|
64
|
-
this.loadQuestions(survey);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
this._surveyLibService.surveyAnswersObsrv.subscribe(value => {
|
|
68
|
-
this.defaultAnswers = [];
|
|
69
|
-
if (value != null) {
|
|
70
|
-
this.defaultAnswers = [...value.defaultAnswers];
|
|
71
|
-
this.fCtrls.currentPageIndex.setValue(value.currentpage);
|
|
72
|
-
}
|
|
73
|
-
console.log(this.reloadDefaultAnswerId);
|
|
74
|
-
this.reloadDefaultAnswerId = guidGenerator();
|
|
75
|
-
console.log(this.reloadDefaultAnswerId);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
onPaggingNext() {
|
|
79
|
-
var isHaveInvalidRecords = this.haveInValidateQuestions();
|
|
80
|
-
if (isHaveInvalidRecords == false) {
|
|
81
|
-
var currentPageIndex = this.fCtrls.currentPageIndex.value;
|
|
82
|
-
if (currentPageIndex < (this.surveyData.surveyPages.length - 1)) {
|
|
83
|
-
currentPageIndex = Number(currentPageIndex) + 1;
|
|
84
|
-
this.fCtrls.currentPageIndex.setValue(currentPageIndex);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
var questionArr = this.fCtrls.questionArray.value.filter(x => x.isMatrixGroup != true).map(x => {
|
|
88
|
-
return {
|
|
89
|
-
SurveyPageIndex: x.surveyPageIndex,
|
|
90
|
-
QuestionId: x.questionId,
|
|
91
|
-
QuestionType: x.questionType,
|
|
92
|
-
AnswerId: x.answerId,
|
|
93
|
-
AnswerText: x.answerText,
|
|
94
|
-
AnswerIdArr: x.answerIdArr
|
|
95
|
-
};
|
|
96
|
-
});
|
|
97
|
-
this.surveyResultEmit.emit(questionArr);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
onPaggingChange(index) {
|
|
102
|
-
const formValue = this.rForm.value;
|
|
103
|
-
if (index < formValue.currentPageIndex) {
|
|
104
|
-
this.fCtrls.currentPageIndex.setValue(index);
|
|
105
|
-
}
|
|
106
|
-
else if (index == (formValue.currentPageIndex + 1)) {
|
|
107
|
-
this.onPaggingNext();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
onPaggingBack() {
|
|
111
|
-
var currentPageIndex = this.fCtrls.currentPageIndex.value;
|
|
112
|
-
if (currentPageIndex > 0) {
|
|
113
|
-
currentPageIndex = Number(currentPageIndex) - 1;
|
|
114
|
-
this.fCtrls.currentPageIndex.setValue(currentPageIndex);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
onUpdateAnswers(model) {
|
|
118
|
-
model.forEach(elem => {
|
|
119
|
-
this.onUpdateAnswer(elem);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
onUpdateAnswer(model) {
|
|
123
|
-
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == model.QuestionId);
|
|
124
|
-
var questionGroup = this.fCtrls.questionArray.controls[index];
|
|
125
|
-
questionGroup.controls.isValid.setValue(model.IsValid);
|
|
126
|
-
if (questionGroup.value.questionType == this.questionTypeEnum.TextInput) {
|
|
127
|
-
questionGroup.patchValue({
|
|
128
|
-
answerId: model.SurveyAnswerId,
|
|
129
|
-
answerText: model.Answer
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
else if (questionGroup.value.questionType == this.questionTypeEnum.CheckBox) {
|
|
133
|
-
questionGroup.controls.answerIdArr.setValue(model.Answer);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
questionGroup.controls.answerId.setValue(model.Answer);
|
|
137
|
-
}
|
|
138
|
-
if (this.fCtrls.ruleQuestionArray.value.findIndex(x => x.questionId == model.QuestionId) > -1) {
|
|
139
|
-
this.checkRules();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
loadQuestions(survey) {
|
|
143
|
-
survey.surveyPages.forEach((page, pageIndex) => {
|
|
144
|
-
page.surveyQuestionGroups.forEach(group => {
|
|
145
|
-
group.surveyQuestions.forEach(question => {
|
|
146
|
-
if (question.questionTypeId != 6) {
|
|
147
|
-
this.fCtrls.questionArray.push(this._formBuilder.group({
|
|
148
|
-
surveyPageIndex: pageIndex,
|
|
149
|
-
questionId: [question.questionId],
|
|
150
|
-
questionType: [question.questionTypeId],
|
|
151
|
-
isMatrixGroup: [false],
|
|
152
|
-
answerId: [null],
|
|
153
|
-
answerIdArr: [null],
|
|
154
|
-
answerText: [null],
|
|
155
|
-
isRequired: [question.isRequired],
|
|
156
|
-
isValid: [null],
|
|
157
|
-
isDisabled: [question.isReadOnly],
|
|
158
|
-
isShow: [question.isVisable],
|
|
159
|
-
isDisabled_default: [question.isReadOnly],
|
|
160
|
-
isShow_default: [question.isVisable]
|
|
161
|
-
}));
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
this.fCtrls.questionArray.push(this._formBuilder.group({
|
|
165
|
-
surveyPageIndex: pageIndex,
|
|
166
|
-
questionId: [question.questionId],
|
|
167
|
-
questionType: [question.questionTypeId],
|
|
168
|
-
isMatrixGroup: [true],
|
|
169
|
-
answerId: [null],
|
|
170
|
-
answerIdArr: [null],
|
|
171
|
-
answerText: [null],
|
|
172
|
-
isRequired: [question.isRequired],
|
|
173
|
-
isValid: [null],
|
|
174
|
-
isDisabled: [question.isReadOnly],
|
|
175
|
-
isShow: [question.isVisable],
|
|
176
|
-
isDisabled_default: [question.isReadOnly],
|
|
177
|
-
isShow_default: [question.isVisable],
|
|
178
|
-
}));
|
|
179
|
-
question.surveySubQuestions.forEach(subQuestion => {
|
|
180
|
-
this.fCtrls.questionArray.push(this._formBuilder.group({
|
|
181
|
-
surveyPageIndex: pageIndex,
|
|
182
|
-
questionId: [subQuestion.questionId],
|
|
183
|
-
questionType: [subQuestion.questionTypeId],
|
|
184
|
-
isMatrixGroup: [false],
|
|
185
|
-
answerId: [null],
|
|
186
|
-
answerIdArr: [null],
|
|
187
|
-
answerText: [null],
|
|
188
|
-
isRequired: [question.isRequired],
|
|
189
|
-
isValid: [null],
|
|
190
|
-
isDisabled: [subQuestion.isReadOnly],
|
|
191
|
-
isShow: [subQuestion.isVisable],
|
|
192
|
-
isDisabled_default: [subQuestion.isReadOnly],
|
|
193
|
-
isShow_default: [subQuestion.isVisable]
|
|
194
|
-
}));
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
survey.surveyRules.forEach(rule => {
|
|
201
|
-
rule.ruleExps.forEach(ruleExp => {
|
|
202
|
-
this.fCtrls.ruleQuestionArray.push(this._formBuilder.group({
|
|
203
|
-
questionId: ruleExp.questionId
|
|
204
|
-
}));
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
haveInValidateQuestions() {
|
|
209
|
-
const currentPageIndex = this.fCtrls.currentPageIndex.value;
|
|
210
|
-
var invalidRecords = this.fCtrls.questionArray.value.filter(x => x.surveyPageIndex == currentPageIndex
|
|
211
|
-
&& x.isRequired == true && x.isValid != true
|
|
212
|
-
&& x.isDisabled == false && x.isShow == true && x.isMatrixGroup != true);
|
|
213
|
-
if (invalidRecords.length > 0) {
|
|
214
|
-
$(`#survey-page_${currentPageIndex}`).addClass('survey-page_submitted');
|
|
215
|
-
}
|
|
216
|
-
if (invalidRecords.length > 0) {
|
|
217
|
-
console.log(invalidRecords);
|
|
218
|
-
}
|
|
219
|
-
return invalidRecords.length > 0;
|
|
220
|
-
}
|
|
221
|
-
checkRules() {
|
|
222
|
-
this.surveyData.surveyRules.forEach(rule => {
|
|
223
|
-
this._checkRuleExpsUsecase.execute({
|
|
224
|
-
ruleExps: rule.ruleExps,
|
|
225
|
-
questions: this.fCtrls.questionArray.value
|
|
226
|
-
}).subscribe(result => {
|
|
227
|
-
var isPassed = result.exprestionResultArr.filter(x => x == false).length == 0;
|
|
228
|
-
if (isPassed) {
|
|
229
|
-
rule.ruleResultQuestions.forEach(resultQuestion => {
|
|
230
|
-
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
231
|
-
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
232
|
-
if (rule.logicActionId == LogicActionEnum.Show) {
|
|
233
|
-
questionGroup.controls.isShow.setValue(true);
|
|
234
|
-
}
|
|
235
|
-
else if (rule.logicActionId == LogicActionEnum.Hide) {
|
|
236
|
-
questionGroup.controls.isShow.setValue(false);
|
|
237
|
-
}
|
|
238
|
-
else if (rule.logicActionId == LogicActionEnum.Enable) {
|
|
239
|
-
questionGroup.controls.isDisabled.setValue(false);
|
|
240
|
-
}
|
|
241
|
-
else if (rule.logicActionId == LogicActionEnum.Disable) {
|
|
242
|
-
questionGroup.controls.isDisabled.setValue(true);
|
|
243
|
-
}
|
|
244
|
-
else if (rule.logicActionId == LogicActionEnum.SetAnswer) {
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
rule.ruleResultQuestions.forEach(resultQuestion => {
|
|
250
|
-
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
251
|
-
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
252
|
-
questionGroup.patchValue({
|
|
253
|
-
isShow: questionGroup.value.isShow_default,
|
|
254
|
-
isDisabled: questionGroup.value.isDisabled_default
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveryLibComponent, deps: [{ token: i1.SurveyLibService }, { token: i2.FormBuilder }, { token: i3.CheckRuleExpsUsecase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SurveryLibComponent, selector: "lib-survery-lib", outputs: { surveyResultEmit: "surveyResultEmit" }, ngImport: i0, template: "<div class=\"survay-card\" *ngIf=\"surveyData != null\">\r\n <div *ngFor=\"let surveyPage of surveyData?.surveyPages; let surveyPageIndex = index\"\r\n [attr.id]=\"'survey-page_'+surveyPageIndex\" [ngClass]=\"{'d-none': surveyPageIndex != fCtrls.currentPageIndex.value}\">\r\n <ng-container *ngFor=\"let item of surveyPage.surveyQuestionGroups\">\r\n <div class=\"survay-card\">\r\n <div class=\"survay-card-body\">\r\n <div class=\"survay-group\">\r\n <div class=\"title\">\r\n <h2 class=\"group-title\">\r\n {{item.questionGroupName}}\r\n </h2>\r\n <span class=\"group-sub-title \">\r\n {{item.questionGroupDescription}}\r\n </span>\r\n </div>\r\n <ng-container *ngFor=\"let question of item.surveyQuestions\">\r\n <lib-question-boolean-template #questionBooleanTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Boolean\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-boolean-template>\r\n\r\n <lib-question-text-template #questionTextTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.TextInput\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"\r\n [isTextArea]=\"question.isAdvanceTextArea\" ></lib-question-text-template>\r\n\r\n <lib-question-radio-button-template #questionRadioButtonTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.RadioButton\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-radio-button-template>\r\n\r\n <lib-question-dropdown-template #questionDropdownTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.DropDown\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-dropdown-template>\r\n\r\n <lib-question-check-box-template #questionCheckBoxTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.CheckBox\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-check-box-template>\r\n\r\n <lib-question-matrix-template #questionMatrixTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Matrix\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-matrix-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"survay-card-footr\" *ngIf=\"surveyData != null\">\r\n <div class=\"container\" style=\" justify-content: start;\">\r\n <div class=\"survay-pagination fw-bold\" >\r\n <span>{{fCtrls.currentPageIndex.value + 1}}</span>\r\n <span class=\"ms-2 me-2\">of</span>\r\n <span>{{surveyData.surveyPages.length}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".disable__btn{background-color:gray!important;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: ["isShow", "isTextArea", "setQuestion", "isDisabled"], outputs: ["emitter"] }, { kind: "component", type: i6.QuestionRadioButtonTemplateComponent, selector: "lib-question-radio-button-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: i7.QuestionCheckBoxTemplateComponent, selector: "lib-question-check-box-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: i8.QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: i9.QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: i10.QuestionBooleanTemplateComponent, selector: "lib-question-boolean-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "pipe", type: i11.FilterQuestionPipe, name: "filterQuestion" }] }); }
|
|
263
|
-
}
|
|
264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveryLibComponent, decorators: [{
|
|
265
|
-
type: Component,
|
|
266
|
-
args: [{ selector: 'lib-survery-lib', template: "<div class=\"survay-card\" *ngIf=\"surveyData != null\">\r\n <div *ngFor=\"let surveyPage of surveyData?.surveyPages; let surveyPageIndex = index\"\r\n [attr.id]=\"'survey-page_'+surveyPageIndex\" [ngClass]=\"{'d-none': surveyPageIndex != fCtrls.currentPageIndex.value}\">\r\n <ng-container *ngFor=\"let item of surveyPage.surveyQuestionGroups\">\r\n <div class=\"survay-card\">\r\n <div class=\"survay-card-body\">\r\n <div class=\"survay-group\">\r\n <div class=\"title\">\r\n <h2 class=\"group-title\">\r\n {{item.questionGroupName}}\r\n </h2>\r\n <span class=\"group-sub-title \">\r\n {{item.questionGroupDescription}}\r\n </span>\r\n </div>\r\n <ng-container *ngFor=\"let question of item.surveyQuestions\">\r\n <lib-question-boolean-template #questionBooleanTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Boolean\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-boolean-template>\r\n\r\n <lib-question-text-template #questionTextTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.TextInput\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"\r\n [isTextArea]=\"question.isAdvanceTextArea\" ></lib-question-text-template>\r\n\r\n <lib-question-radio-button-template #questionRadioButtonTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.RadioButton\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-radio-button-template>\r\n\r\n <lib-question-dropdown-template #questionDropdownTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.DropDown\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-dropdown-template>\r\n\r\n <lib-question-check-box-template #questionCheckBoxTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.CheckBox\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-check-box-template>\r\n\r\n <lib-question-matrix-template #questionMatrixTemplate [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Matrix\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\" ></lib-question-matrix-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"survay-card-footr\" *ngIf=\"surveyData != null\">\r\n <div class=\"container\" style=\" justify-content: start;\">\r\n <div class=\"survay-pagination fw-bold\" >\r\n <span>{{fCtrls.currentPageIndex.value + 1}}</span>\r\n <span class=\"ms-2 me-2\">of</span>\r\n <span>{{surveyData.surveyPages.length}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".disable__btn{background-color:gray!important;cursor:not-allowed}\n"] }]
|
|
267
|
-
}], ctorParameters: function () { return [{ type: i1.SurveyLibService }, { type: i2.FormBuilder }, { type: i3.CheckRuleExpsUsecase }]; }, propDecorators: { surveyResultEmit: [{
|
|
268
|
-
type: Output
|
|
269
|
-
}] } });
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmVyeS1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9zdXJ2ZXJ5LWxpYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3N1cnZleS1saWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUtqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsRUFBRSxJQUFJLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU0zQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFpQnBFLE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7WUFDcEQs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QUFPLEVBQUU7NEJBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDbEQ7NkJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUU7eUJBRTNEO29CQUVILENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUNJO29CQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7d0JBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDeEcsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN4RCxhQUFhLENBQUMsVUFBVSxDQUFDOzRCQUN2QixNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjOzRCQUMxQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7eUJBQ25ELENBQUMsQ0FBQTtvQkFDSixDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWxSVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwwR0M3QmhDLGtsSUE2RE07OzJGRGhDTyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO29LQTRDakIsZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlMaWJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlEdG8gfSBmcm9tICcuLi9zaGFyZWQvZHRvcy9zdXJ2ZXkuZHRvJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0BuZy1zdGFjay9mb3Jtcyc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlLCBSdWxlUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2UsIFN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9zdXJ2ZXJ5LWxpYi5mb3JtLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZUVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgdjQgYXMgZ3VpZEdlbmVyYXRvciB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMb2dpY1Byb3BlcnR5RW51bSB9IGZyb20gJy4uL3NoYXJlZC9lbnVtcy9Mb2dpYy1Qcm9wZXJ0eS5lbnVtJztcclxuaW1wb3J0IHsgUnVsZUV4cER0byB9IGZyb20gJy4uL3NoYXJlZC9kdG9zL3J1bGUtZXhwLmR0byc7XHJcbmltcG9ydCB7IE9wZXJhdG9yRW51bSB9IGZyb20gJy4uL3NoYXJlZC9lbnVtcy9vcGVyYXRvci5lbnVtJztcclxuaW1wb3J0IHsgTG9naWNBY3Rpb25FbnVtIH0gZnJvbSAnLi4vc2hhcmVkL2VudW1zL2xvZ2ljLWFjdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgQ2hlY2tSdWxlRXhwc1VzZWNhc2UgfSBmcm9tICcuL3VzZWNhc2VzL2NoZWNrLXJ1bGUtZXhwcy51c2VjYXNlJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25SZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3N1cnZlcnktcXVlc3Rpb24tcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvIH0gZnJvbSAnLi4vc2hhcmVkL2R0b3MvZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXJzLmR0byc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25SYWRpb0J1dHRvblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZS9xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uTWF0cml4VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlL3F1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdXJ2ZXJ5LWxpYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1cnZleS1saWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1cnZleS1saWIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmVyeUxpYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHJlbG9hZERlZmF1bHRBbnN3ZXJJZCA9IGd1aWRHZW5lcmF0b3IoKSBhcyBzdHJpbmc7XHJcbiAgc3VydmV5RGF0YTogU3VydmV5RHRvO1xyXG4gIGRlZmF1bHRBbnN3ZXJzOiBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG9bXTtcclxuICByRm9ybTogRm9ybUdyb3VwPFN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPjtcclxuXHJcbiAgZ2V0IGZDdHJscygpIHtcclxuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XHJcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ZpcnN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlID09IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMYXN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlID09ICh0aGlzLnN1cnZleURhdGE/LnN1cnZleVBhZ2VzLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1cnZleVJlc3VsdCgpOiB7IGFuc3dlcnM6IFN1cnZleVF1ZXN0aW9uUmVzdWx0W10sIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciB9IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUsXHJcbiAgICAgIGFuc3dlcnM6XHJcbiAgICAgICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5maWx0ZXIoeCA9PiB4LmlzTWF0cml4R3JvdXAgIT0gdHJ1ZSkubWFwKHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgU3VydmV5UGFnZUluZGV4OiB4LnN1cnZleVBhZ2VJbmRleCxcclxuICAgICAgICAgICAgUXVlc3Rpb25JZDogeC5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICBRdWVzdGlvblR5cGU6IHgucXVlc3Rpb25UeXBlLFxyXG4gICAgICAgICAgICBBbnN3ZXJJZDogeC5hbnN3ZXJJZCxcclxuICAgICAgICAgICAgQW5zd2VyVGV4dDogeC5hbnN3ZXJUZXh0LFxyXG4gICAgICAgICAgICBBbnN3ZXJJZEFycjogeC5hbnN3ZXJJZEFyclxyXG4gICAgICAgICAgfSBhcyBTdXJ2ZXlRdWVzdGlvblJlc3VsdFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc3VydmV5UmVzdWx0RW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VydmV5UXVlc3Rpb25SZXN1bHRbXT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3VydmV5TGliU2VydmljZTogU3VydmV5TGliU2VydmljZVxyXG4gICAgLCBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2NoZWNrUnVsZUV4cHNVc2VjYXNlOiBDaGVja1J1bGVFeHBzVXNlY2FzZSkge1xyXG5cclxuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICBjdXJyZW50UGFnZUluZGV4OiBbMF0sXHJcbiAgICAgIHF1ZXN0aW9uQXJyYXk6IHRoaXMuX2Zvcm1CdWlsZGVyLmFycmF5PFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPihbXSksXHJcbiAgICAgIHJ1bGVRdWVzdGlvbkFycmF5OiB0aGlzLl9mb3JtQnVpbGRlci5hcnJheTxSdWxlUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KFtdKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5RGF0YU9ic3J2LnN1YnNjcmliZShzdXJ2ZXkgPT4ge1xyXG4gICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuc3VydmV5RGF0YSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoc3VydmV5ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnN1cnZleURhdGEgPSBzdXJ2ZXk7XHJcbiAgICAgICAgdGhpcy5sb2FkUXVlc3Rpb25zKHN1cnZleSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5QW5zd2Vyc09ic3J2LnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdEFuc3dlcnMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0QW5zd2VycyA9Wy4uLnZhbHVlLmRlZmF1bHRBbnN3ZXJzXTtcclxuICAgICAgICB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnNldFZhbHVlKHZhbHVlLmN1cnJlbnRwYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2coIHRoaXMucmVsb2FkRGVmYXVsdEFuc3dlcklkKTtcclxuICAgICAgdGhpcy5yZWxvYWREZWZhdWx0QW5zd2VySWQgPSAgZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcclxuICAgICAgY29uc29sZS5sb2coIHRoaXMucmVsb2FkRGVmYXVsdEFuc3dlcklkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdnaW5nTmV4dCgpIHtcclxuICAgIHZhciBpc0hhdmVJbnZhbGlkUmVjb3JkcyA9IHRoaXMuaGF2ZUluVmFsaWRhdGVRdWVzdGlvbnMoKTtcclxuICAgIGlmIChpc0hhdmVJbnZhbGlkUmVjb3JkcyA9PSBmYWxzZSkge1xyXG5cclxuICAgICAgdmFyIGN1cnJlbnRQYWdlSW5kZXggPSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGN1cnJlbnRQYWdlSW5kZXggPCAodGhpcy5zdXJ2ZXlEYXRhLnN1cnZleVBhZ2VzLmxlbmd0aCAtIDEpKSB7XHJcbiAgICAgICAgY3VycmVudFBhZ2VJbmRleCA9IE51bWJlcihjdXJyZW50UGFnZUluZGV4KSArIDE7XHJcbiAgICAgICAgdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC5zZXRWYWx1ZShjdXJyZW50UGFnZUluZGV4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgcXVlc3Rpb25BcnIgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbHRlcih4ID0+IHguaXNNYXRyaXhHcm91cCAhPSB0cnVlKS5tYXAoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBTdXJ2ZXlQYWdlSW5kZXg6IHguc3VydmV5UGFnZUluZGV4LFxyXG4gICAgICAgICAgICBRdWVzdGlvbklkOiB4LnF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICAgIFF1ZXN0aW9uVHlwZTogeC5xdWVzdGlvblR5cGUsXHJcbiAgICAgICAgICAgIEFuc3dlcklkOiB4LmFuc3dlcklkLFxyXG4gICAgICAgICAgICBBbnN3ZXJUZXh0OiB4LmFuc3dlclRleHQsXHJcbiAgICAgICAgICAgIEFuc3dlcklkQXJyOiB4LmFuc3dlcklkQXJyXHJcbiAgICAgICAgICB9IGFzIFN1cnZleVF1ZXN0aW9uUmVzdWx0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdXJ2ZXlSZXN1bHRFbWl0LmVtaXQocXVlc3Rpb25BcnIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBhZ2dpbmdDaGFuZ2UoaW5kZXgpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XHJcbiAgICBpZiAoaW5kZXggPCBmb3JtVmFsdWUuY3VycmVudFBhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnNldFZhbHVlKGluZGV4KTtcclxuICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gKGZvcm1WYWx1ZS5jdXJyZW50UGFnZUluZGV4ICsgMSkpIHtcclxuICAgICAgdGhpcy5vblBhZ2dpbmdOZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBhZ2dpbmdCYWNrKCkge1xyXG4gICAgdmFyIGN1cnJlbnRQYWdlSW5kZXggPSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlO1xyXG4gICAgaWYgKGN1cnJlbnRQYWdlSW5kZXggPiAwKSB7XHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXggPSBOdW1iZXIoY3VycmVudFBhZ2VJbmRleCkgLSAxO1xyXG4gICAgICB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnNldFZhbHVlKGN1cnJlbnRQYWdlSW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25VcGRhdGVBbnN3ZXJzKG1vZGVsOiBRdWVzdGlvbkFuc3dlck1vZGVsW10pIHtcclxuICAgIG1vZGVsLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgIHRoaXMub25VcGRhdGVBbnN3ZXIoZWxlbSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uVXBkYXRlQW5zd2VyKG1vZGVsOiBRdWVzdGlvbkFuc3dlck1vZGVsKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5xdWVzdGlvbklkID09IG1vZGVsLlF1ZXN0aW9uSWQpO1xyXG4gICAgdmFyIHF1ZXN0aW9uR3JvdXAgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LmNvbnRyb2xzW2luZGV4XTtcclxuICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuaXNWYWxpZC5zZXRWYWx1ZShtb2RlbC5Jc1ZhbGlkKTtcclxuXHJcbiAgICBpZiAocXVlc3Rpb25Hcm91cC52YWx1ZS5xdWVzdGlvblR5cGUgPT0gdGhpcy5xdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dCkge1xyXG4gICAgICBxdWVzdGlvbkdyb3VwLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIGFuc3dlcklkOiBtb2RlbC5TdXJ2ZXlBbnN3ZXJJZCxcclxuICAgICAgICBhbnN3ZXJUZXh0OiBtb2RlbC5BbnN3ZXJcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uR3JvdXAudmFsdWUucXVlc3Rpb25UeXBlID09IHRoaXMucXVlc3Rpb25UeXBlRW51bS5DaGVja0JveCkge1xyXG4gICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmFuc3dlcklkQXJyLnNldFZhbHVlKG1vZGVsLkFuc3dlcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmFuc3dlcklkLnNldFZhbHVlKG1vZGVsLkFuc3dlcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSBtb2RlbC5RdWVzdGlvbklkKSA+IC0xKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tSdWxlcygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRRdWVzdGlvbnMoc3VydmV5OiBTdXJ2ZXlEdG8pIHtcclxuICAgIHN1cnZleS5zdXJ2ZXlQYWdlcy5mb3JFYWNoKChwYWdlLCBwYWdlSW5kZXgpID0+IHtcclxuICAgICAgcGFnZS5zdXJ2ZXlRdWVzdGlvbkdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuXHJcbiAgICAgICAgZ3JvdXAuc3VydmV5UXVlc3Rpb25zLmZvckVhY2gocXVlc3Rpb24gPT4ge1xyXG5cclxuICAgICAgICAgIGlmIChxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCAhPSA2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkucHVzaCh0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkNoaWxkT2ZTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICAgICAgICAgIHN1cnZleVBhZ2VJbmRleDogcGFnZUluZGV4LFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IFtxdWVzdGlvbi5xdWVzdGlvbklkXSxcclxuICAgICAgICAgICAgICBxdWVzdGlvblR5cGU6IFtxdWVzdGlvbi5xdWVzdGlvblR5cGVJZF0sXHJcbiAgICAgICAgICAgICAgaXNNYXRyaXhHcm91cDogW2ZhbHNlXSxcclxuICAgICAgICAgICAgICBhbnN3ZXJJZDogW251bGxdLFxyXG4gICAgICAgICAgICAgIGFuc3dlcklkQXJyOiBbbnVsbF0sXHJcbiAgICAgICAgICAgICAgYW5zd2VyVGV4dDogW251bGxdLFxyXG4gICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IFtxdWVzdGlvbi5pc1JlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBpc1ZhbGlkOiBbbnVsbF0sXHJcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZDogW3F1ZXN0aW9uLmlzUmVhZE9ubHldLFxyXG4gICAgICAgICAgICAgIGlzU2hvdzogW3F1ZXN0aW9uLmlzVmlzYWJsZV0sXHJcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZF9kZWZhdWx0OiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXHJcbiAgICAgICAgICAgICAgaXNTaG93X2RlZmF1bHQ6IFtxdWVzdGlvbi5pc1Zpc2FibGVdXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkucHVzaCh0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkNoaWxkT2ZTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICAgICAgICAgIHN1cnZleVBhZ2VJbmRleDogcGFnZUluZGV4LFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IFtxdWVzdGlvbi5xdWVzdGlvbklkXSxcclxuICAgICAgICAgICAgICBxdWVzdGlvblR5cGU6IFtxdWVzdGlvbi5xdWVzdGlvblR5cGVJZF0sXHJcbiAgICAgICAgICAgICAgaXNNYXRyaXhHcm91cDogW3RydWVdLFxyXG4gICAgICAgICAgICAgIGFuc3dlcklkOiBbbnVsbF0sXHJcbiAgICAgICAgICAgICAgYW5zd2VySWRBcnI6IFtudWxsXSxcclxuICAgICAgICAgICAgICBhbnN3ZXJUZXh0OiBbbnVsbF0sXHJcbiAgICAgICAgICAgICAgaXNSZXF1aXJlZDogW3F1ZXN0aW9uLmlzUmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIGlzVmFsaWQ6IFtudWxsXSxcclxuICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXHJcbiAgICAgICAgICAgICAgaXNTaG93OiBbcXVlc3Rpb24uaXNWaXNhYmxlXSxcclxuICAgICAgICAgICAgICBpc0Rpc2FibGVkX2RlZmF1bHQ6IFtxdWVzdGlvbi5pc1JlYWRPbmx5XSxcclxuICAgICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogW3F1ZXN0aW9uLmlzVmlzYWJsZV0sXHJcbiAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLnN1cnZleVN1YlF1ZXN0aW9ucy5mb3JFYWNoKHN1YlF1ZXN0aW9uID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KHtcclxuICAgICAgICAgICAgICAgIHN1cnZleVBhZ2VJbmRleDogcGFnZUluZGV4LFxyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogW3N1YlF1ZXN0aW9uLnF1ZXN0aW9uSWRdLFxyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBbc3ViUXVlc3Rpb24ucXVlc3Rpb25UeXBlSWRdLFxyXG4gICAgICAgICAgICAgICAgaXNNYXRyaXhHcm91cDogW2ZhbHNlXSxcclxuICAgICAgICAgICAgICAgIGFuc3dlcklkOiBbbnVsbF0sXHJcbiAgICAgICAgICAgICAgICBhbnN3ZXJJZEFycjogW251bGxdLFxyXG4gICAgICAgICAgICAgICAgYW5zd2VyVGV4dDogW251bGxdLFxyXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogW3F1ZXN0aW9uLmlzUmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgaXNWYWxpZDogW251bGxdLFxyXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZDogW3N1YlF1ZXN0aW9uLmlzUmVhZE9ubHldLFxyXG4gICAgICAgICAgICAgICAgaXNTaG93OiBbc3ViUXVlc3Rpb24uaXNWaXNhYmxlXSxcclxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRfZGVmYXVsdDogW3N1YlF1ZXN0aW9uLmlzUmVhZE9ubHldLFxyXG4gICAgICAgICAgICAgICAgaXNTaG93X2RlZmF1bHQ6IFtzdWJRdWVzdGlvbi5pc1Zpc2FibGVdXHJcbiAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzdXJ2ZXkuc3VydmV5UnVsZXMuZm9yRWFjaChydWxlID0+IHtcclxuICAgICAgcnVsZS5ydWxlRXhwcy5mb3JFYWNoKHJ1bGVFeHAgPT4ge1xyXG4gICAgICAgIHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UnVsZVF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPih7XHJcbiAgICAgICAgICBxdWVzdGlvbklkOiBydWxlRXhwLnF1ZXN0aW9uSWRcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGF2ZUluVmFsaWRhdGVRdWVzdGlvbnMoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcclxuICAgIHZhciBpbnZhbGlkUmVjb3JkcyA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmlsdGVyKHggPT4geC5zdXJ2ZXlQYWdlSW5kZXggPT0gY3VycmVudFBhZ2VJbmRleFxyXG4gICAgICAmJiB4LmlzUmVxdWlyZWQgPT0gdHJ1ZSAmJiB4LmlzVmFsaWQgIT0gdHJ1ZVxyXG4gICAgICAmJiB4LmlzRGlzYWJsZWQgPT0gZmFsc2UgJiYgeC5pc1Nob3cgPT0gdHJ1ZSAmJiB4LmlzTWF0cml4R3JvdXAgIT0gdHJ1ZSk7XHJcbiAgICBpZiAoaW52YWxpZFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAkKGAjc3VydmV5LXBhZ2VfJHtjdXJyZW50UGFnZUluZGV4fWApLmFkZENsYXNzKCdzdXJ2ZXktcGFnZV9zdWJtaXR0ZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW52YWxpZFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhpbnZhbGlkUmVjb3Jkcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW52YWxpZFJlY29yZHMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tSdWxlcygpIHtcclxuXHJcbiAgICB0aGlzLnN1cnZleURhdGEuc3VydmV5UnVsZXMuZm9yRWFjaChydWxlID0+IHtcclxuICAgICAgdGhpcy5fY2hlY2tSdWxlRXhwc1VzZWNhc2UuZXhlY3V0ZSh7XHJcbiAgICAgICAgcnVsZUV4cHM6IHJ1bGUucnVsZUV4cHMsXHJcbiAgICAgICAgcXVlc3Rpb25zOiB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlXHJcbiAgICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cclxuICAgICAgICB2YXIgaXNQYXNzZWQgPSByZXN1bHQuZXhwcmVzdGlvblJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IGZhbHNlKS5sZW5ndGggPT0gMDtcclxuICAgICAgICBpZiAoaXNQYXNzZWQpIHtcclxuXHJcbiAgICAgICAgICBydWxlLnJ1bGVSZXN1bHRRdWVzdGlvbnMuZm9yRWFjaChyZXN1bHRRdWVzdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4LnF1ZXN0aW9uSWQgPT0gcmVzdWx0UXVlc3Rpb24ucXVlc3Rpb25JZCk7XHJcbiAgICAgICAgICAgIHZhciBxdWVzdGlvbkdyb3VwID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5hdChpbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLlNob3cpIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzU2hvdy5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLkhpZGUpIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzU2hvdy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZS5sb2dpY0FjdGlvbklkID09IExvZ2ljQWN0aW9uRW51bS5FbmFibGUpIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzRGlzYWJsZWQuc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUubG9naWNBY3Rpb25JZCA9PSBMb2dpY0FjdGlvbkVudW0uRGlzYWJsZSkge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuaXNEaXNhYmxlZC5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLlNldEFuc3dlcikge1xyXG5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJ1bGUucnVsZVJlc3VsdFF1ZXN0aW9ucy5mb3JFYWNoKHJlc3VsdFF1ZXN0aW9uID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSByZXN1bHRRdWVzdGlvbi5xdWVzdGlvbklkKTtcclxuICAgICAgICAgICAgdmFyIHF1ZXN0aW9uR3JvdXAgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LmF0KGluZGV4KTtcclxuICAgICAgICAgICAgcXVlc3Rpb25Hcm91cC5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgICBpc1Nob3c6IHF1ZXN0aW9uR3JvdXAudmFsdWUuaXNTaG93X2RlZmF1bHQsXHJcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZDogcXVlc3Rpb25Hcm91cC52YWx1ZS5pc0Rpc2FibGVkX2RlZmF1bHRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZFwiICpuZ0lmPVwic3VydmV5RGF0YSAhPSBudWxsXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgc3VydmV5UGFnZSBvZiBzdXJ2ZXlEYXRhPy5zdXJ2ZXlQYWdlczsgbGV0IHN1cnZleVBhZ2VJbmRleCA9IGluZGV4XCJcclxuICAgIFthdHRyLmlkXT1cIidzdXJ2ZXktcGFnZV8nK3N1cnZleVBhZ2VJbmRleFwiIFtuZ0NsYXNzXT1cInsnZC1ub25lJzogc3VydmV5UGFnZUluZGV4ICE9IGZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlfVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdXJ2ZXlQYWdlLnN1cnZleVF1ZXN0aW9uR3JvdXBzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmF5LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgIDxoMiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7e2l0ZW0ucXVlc3Rpb25Hcm91cE5hbWV9fVxyXG4gICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncm91cC1zdWItdGl0bGUgXCI+XHJcbiAgICAgICAgICAgICAgICB7e2l0ZW0ucXVlc3Rpb25Hcm91cERlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBpdGVtLnN1cnZleVF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZSAjcXVlc3Rpb25Cb29sZWFuVGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uQm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICBbaXNTaG93XT1cIiAocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNTaG93XCJcclxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCIgPjwvbGliLXF1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZSAjcXVlc3Rpb25UZXh0VGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0XCJcclxuICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lzVGV4dEFyZWFdPVwicXVlc3Rpb24uaXNBZHZhbmNlVGV4dEFyZWFcIiA+PC9saWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGUgI3F1ZXN0aW9uUmFkaW9CdXR0b25UZW1wbGF0ZSBbc2V0UXVlc3Rpb25dPVwicXVlc3Rpb25cIiAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5SYWRpb0J1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbaXNTaG93XT1cIiAocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNTaG93XCJcclxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCIgPjwvbGliLXF1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZSAjcXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCA9PSBxdWVzdGlvblR5cGVFbnVtLkRyb3BEb3duXCJcclxuICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzRGlzYWJsZWRcIiA+PC9saWItcXVlc3Rpb24tZHJvcGRvd24tdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlICNxdWVzdGlvbkNoZWNrQm94VGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uQ2hlY2tCb3hcIlxyXG4gICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiID48L2xpYi1xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlICNxdWVzdGlvbk1hdHJpeFRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCA9PSBxdWVzdGlvblR5cGVFbnVtLk1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICBbaXNTaG93XT1cIiAocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNTaG93XCJcclxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCIgPjwvbGliLXF1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3VydmF5LWNhcmQtZm9vdHJcIiAqbmdJZj1cInN1cnZleURhdGEgIT0gbnVsbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiIGp1c3RpZnktY29udGVudDogc3RhcnQ7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktcGFnaW5hdGlvbiBmdy1ib2xkXCIgPlxyXG4gICAgICAgIDxzcGFuPnt7ZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIG1lLTJcIj5vZjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj57e3N1cnZleURhdGEuc3VydmV5UGFnZXMubGVuZ3RofX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|