@touchpoll/tp-survey 0.0.23 → 0.0.25
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/fesm2022/touchpoll-tp-survey.mjs +202 -150
- package/fesm2022/touchpoll-tp-survey.mjs.map +1 -1
- package/lib/component/answer/answer.ms/answer.ms.component.d.ts +3 -3
- package/lib/component/answer/answer.sl/answer.sl.component.d.ts +3 -3
- package/lib/component/survey.play/survey.play.component.d.ts +2 -2
- package/lib/pipe/get.question.image.background.size/get.question.image.background.css.size.pipe.d.ts +12 -0
- package/lib/tp.survey.interface.d.ts +4 -4
- package/package.json +1 -3
- package/styles/platform/component/survey.checkbox.scss +5 -5
- package/styles/platform/component/survey.radio.button.scss +3 -3
- package/styles/platform/survey.mixins.desktop.scss +9 -9
- package/styles/platform/survey.mixins.tablet.scss +3 -3
- package/styles/survey.mixins.scss +4 -3
- package/styles/survey.themes.scss +5 -2
- package/styles/theme/azure.blue.scss +3 -2
- package/styles/theme/cyan.orange.scss +4 -2
- package/styles/theme/rose.red.scss +3 -2
- package/esm2022/lib/component/answer/answer.additional/answer.additional.component.mjs +0 -49
- package/esm2022/lib/component/answer/answer.additional/directive/additional.answer.caption.position/additional.answer.caption.position.directive.mjs +0 -61
- package/esm2022/lib/component/answer/answer.end/answer.end.component.mjs +0 -30
- package/esm2022/lib/component/answer/answer.info/answer.info.component.mjs +0 -30
- package/esm2022/lib/component/answer/answer.lang/answer.lang.component.mjs +0 -22
- package/esm2022/lib/component/answer/answer.master/answer.master.component.mjs +0 -57
- package/esm2022/lib/component/answer/answer.ms/answer.ms.component.mjs +0 -106
- package/esm2022/lib/component/answer/answer.od/answer.od.component.mjs +0 -39
- package/esm2022/lib/component/answer/answer.ol/answer.ol.component.mjs +0 -40
- package/esm2022/lib/component/answer/answer.sl/answer.sl.component.mjs +0 -131
- package/esm2022/lib/component/answer/answer.sl/pipe/as.form.array/as.form.array.pipe.mjs +0 -17
- package/esm2022/lib/component/answer/answer.sl/pipe/as.form.control/as.form.control.pipe.mjs +0 -17
- package/esm2022/lib/component/answer/answer.ss/answer.ss.component.mjs +0 -51
- package/esm2022/lib/component/answer/container.answer/container.answer.component.mjs +0 -319
- package/esm2022/lib/component/answer/container.answer/container.answer.validator.mjs +0 -130
- package/esm2022/lib/component/navigation.button/navigation.button.component.mjs +0 -21
- package/esm2022/lib/component/question.caption/question.caption.component.mjs +0 -15
- package/esm2022/lib/component/survey.play/survey.play.component.mjs +0 -126
- package/esm2022/lib/component/survey.question.preview/survey.question.preview.component.mjs +0 -60
- package/esm2022/lib/core/tp.servey.quota/tp.survey.quota.mjs +0 -105
- package/esm2022/lib/core/tp.survey.answer/tp.survey.answer.mjs +0 -27
- package/esm2022/lib/core/tp.survey.core/tp.survey.core.service.mjs +0 -455
- package/esm2022/lib/core/tp.survey.interview/tp.survey.interview.service.mjs +0 -68
- package/esm2022/lib/core/tp.survey.logic/tp.survey.logic.service.mjs +0 -42
- package/esm2022/lib/directive/alternatives.container/alternatives.container.directive.mjs +0 -130
- package/esm2022/lib/directive/focus.and.select/focus.and.select.directive.mjs +0 -27
- package/esm2022/lib/directive/survey.theme/survey.theme.directive.mjs +0 -53
- package/esm2022/lib/directive/update.font.size/update.font.size.directive.mjs +0 -28
- package/esm2022/lib/icons/default.icons/default.icons.mjs +0 -15
- package/esm2022/lib/icons/default.icons/default.icons.module.mjs +0 -31
- package/esm2022/lib/pipe/get.active.language/get.active.language.pipe.mjs +0 -17
- package/esm2022/lib/pipe/get.additional.value.by.value/get.additional.value.by.value.pipe.mjs +0 -18
- package/esm2022/lib/pipe/key.values/key.values.pipe.mjs +0 -20
- package/esm2022/lib/pipe/multi.lang.object.to.html/multi.lang.object.to.html.pipe.mjs +0 -48
- package/esm2022/lib/tp.survey.config.mjs +0 -8
- package/esm2022/lib/tp.survey.const.mjs +0 -28
- package/esm2022/lib/tp.survey.enum.mjs +0 -50
- package/esm2022/lib/tp.survey.interface.mjs +0 -2
- package/esm2022/lib/tp.survey.method.mjs +0 -5
- package/esm2022/lib/tp.survey.module.mjs +0 -27
- package/esm2022/lib/tp.survey.type.mjs +0 -2
- package/esm2022/public-api.mjs +0 -14
- package/esm2022/touchpoll-tp-survey.mjs +0 -5
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { executeLogicExpression } from '../../tp.survey.method';
|
|
2
|
-
export class SurveyQuotas {
|
|
3
|
-
#completedQuota = { name: null, guid: null, guid2d: null };
|
|
4
|
-
#quotas = [];
|
|
5
|
-
#quotas2d = [];
|
|
6
|
-
#quotaLimitDestinationQuestionGuid = -1;
|
|
7
|
-
#quotaLimitDestinationQuestionNum = -1;
|
|
8
|
-
setQuotas(quotas1d = [], quotas2d = [], quotaLimitDestinationQuestionGuid = -1, destinationQuestionNum = -1) {
|
|
9
|
-
this.#quotas = quotas1d;
|
|
10
|
-
this.#quotas2d = quotas2d;
|
|
11
|
-
this.#quotaLimitDestinationQuestionGuid = quotaLimitDestinationQuestionGuid;
|
|
12
|
-
this.#quotaLimitDestinationQuestionNum = destinationQuestionNum;
|
|
13
|
-
}
|
|
14
|
-
guidIsDestinationQuestion(guid) {
|
|
15
|
-
return this.#quotaLimitDestinationQuestionGuid === guid;
|
|
16
|
-
}
|
|
17
|
-
get quotaIsCompleted() {
|
|
18
|
-
return this.#completedQuota && (!!this.#completedQuota.guid || !!this.#completedQuota.guid2d);
|
|
19
|
-
}
|
|
20
|
-
get destinationQuestionGuid() {
|
|
21
|
-
return this.#quotaLimitDestinationQuestionGuid;
|
|
22
|
-
}
|
|
23
|
-
get quotaCount() {
|
|
24
|
-
const quotas = this.#quotas && Array.isArray(this.#quotas) ? this.#quotas.length : 0;
|
|
25
|
-
const quotas2d = this.#quotas2d && Array.isArray(this.#quotas2d) ? this.#quotas2d.length : 0;
|
|
26
|
-
return quotas + quotas2d;
|
|
27
|
-
}
|
|
28
|
-
findFilledQuotas(currentQuestionNum, vars, interviewAnswers) {
|
|
29
|
-
/*
|
|
30
|
-
* Поиск заполненной квоты это очень дорогой процесс. Его нужно оптимизировать по максимуму.
|
|
31
|
-
* Перед поиском нужно выполнить ряд проверок.
|
|
32
|
-
* Проверка currentQuestionNum <= this.#quotaLimitDestinationQuestionNum Нужна для оптимизации.
|
|
33
|
-
* DestinationQuestion Желательно располагать после последнего квотного вопроса, потому что нет смысла постоянно проверять квоты, если вопросы которые используются для расчёта квоты меняться не будут.
|
|
34
|
-
* например Квота Q1 + Q2 <= 25. DestinationQuestion нужно делать номером 3 или 4. Потому что как бы респондент не отвечал на последующие вопросы, результат квот не измениться и каждый раз их пересчитывать смысла нет.
|
|
35
|
-
*/
|
|
36
|
-
if ((this.destinationQuestionGuid > 0) && //Глобально в настройках анкеты должен быть указан вопрос который должен отобразиться при достижении квоты, если его нет, то и искать квоты смысла нет.
|
|
37
|
-
(this.quotaCount > 0) && //проверим если у нас вообще квоты
|
|
38
|
-
(currentQuestionNum <= this.#quotaLimitDestinationQuestionNum) && // номер текущий вопроса меньше номера вопроса для перехода по достижении квот
|
|
39
|
-
(!this.quotaIsCompleted) //и на финал проверим если ли уже заполненная квота, повторно не запускаем
|
|
40
|
-
) {
|
|
41
|
-
new Promise((resolve, reject) => {
|
|
42
|
-
if (Array.isArray(this.#quotas)) {
|
|
43
|
-
const completedQuota = this.#quotas.find(quota => executeLogicExpression(quota.expression, vars));
|
|
44
|
-
if (!!completedQuota) {
|
|
45
|
-
return resolve({ name: completedQuota.name, guid: completedQuota.quota_guid });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (Array.isArray(this.#quotas2d)) {
|
|
49
|
-
const answers = this.#quotas2d.length > 0 ? interviewAnswers.map(a => ({ av: a.AnswerValue, qg: a.QuestionGUID })) : [];
|
|
50
|
-
const filledQuota2dArray = this.#quotas2d.filter(quotaValues => {
|
|
51
|
-
/*
|
|
52
|
-
* 2d квоты это всегда таблица. Но может быть иерархия, когда одно значение ответа может включать в себя один или несколько других ответов. Например "Обл центр" это 1, а город или село это другой ответ, хотя город и село это разные альтернативы
|
|
53
|
-
* */
|
|
54
|
-
if (Array.isArray(quotaValues.cqv) && quotaValues.cqv.length > 0) {
|
|
55
|
-
/*
|
|
56
|
-
* это ветка для случая с иерархией. Тут будет 2 массива.
|
|
57
|
-
* В первом будут контролироваться те ответы которое должны совпадать полностью arrayEveryValues
|
|
58
|
-
* Во втором arraySomeValue будет проверяться совпадение хотя бы 1 ответа
|
|
59
|
-
* */
|
|
60
|
-
const questionGuid = quotaValues.cqv[0].guid;
|
|
61
|
-
const masterQuestion = quotaValues.qs.find(q => q.guid === questionGuid);
|
|
62
|
-
const arrayEveryValues = quotaValues.qs.filter(q => q.guid != questionGuid);
|
|
63
|
-
const arraySomeValue = [...quotaValues.cqv, ...[masterQuestion]];
|
|
64
|
-
const arrayEveryResult = arrayEveryValues.every(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
|
|
65
|
-
const arraySomeResult = arraySomeValue.some(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
|
|
66
|
-
//если в обоих массивах совпадают значения значит квота выполнилась
|
|
67
|
-
return arrayEveryResult && arraySomeResult;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
//обычный массив значений, в котором должны совпадать все значения
|
|
71
|
-
return quotaValues.qs.every(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
//если не нашли заполненных квот выходим
|
|
75
|
-
if (filledQuota2dArray.length <= 0) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
//ищем квоту которая заполнена и у нее есть условие и оно выполняется.
|
|
79
|
-
const quota2dWithExpression = filledQuota2dArray.find((q) => !!q.exp && executeLogicExpression(q.exp, vars));
|
|
80
|
-
//если квота есть сообщим
|
|
81
|
-
if (!!quota2dWithExpression) {
|
|
82
|
-
return resolve({ name: null, guid2d: quota2dWithExpression.qvg });
|
|
83
|
-
}
|
|
84
|
-
//если квоты с Expression нет, ищем квоту которая заполнена и у нее нет условия
|
|
85
|
-
const quota2dWithoutExpression = filledQuota2dArray.find((q) => !q.exp || (typeof q.exp === 'string' && q.exp.trim().length === 0));
|
|
86
|
-
if (!!quota2dWithoutExpression) {
|
|
87
|
-
return resolve({ name: null, guid2d: quota2dWithoutExpression.qvg });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
reject(null);
|
|
91
|
-
}).then(quota => {
|
|
92
|
-
if (!!quota) {
|
|
93
|
-
this.#completedQuota = {
|
|
94
|
-
name: quota.name,
|
|
95
|
-
guid: 'guid' in quota ? quota.guid : null,
|
|
96
|
-
guid2d: 'guid2d' in quota ? quota.guid2d : null,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}).catch(err => {
|
|
100
|
-
console.error(err);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LnF1b3RhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHAuc3VydmV5L3NyYy9saWIvY29yZS90cC5zZXJ2ZXkucXVvdGEvdHAuc3VydmV5LnF1b3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBVzlELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLGVBQWUsR0FBb0UsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQzFILE9BQU8sR0FBK0IsRUFBRSxDQUFDO0lBQ3pDLFNBQVMsR0FBdUMsRUFBRSxDQUFDO0lBQ25ELGtDQUFrQyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGlDQUFpQyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBRS9DLFNBQVMsQ0FBQyxXQUF1QyxFQUFFLEVBQUUsV0FBK0MsRUFBRSxFQUFFLG9DQUE0QyxDQUFDLENBQUMsRUFBRSx5QkFBaUMsQ0FBQyxDQUFDO1FBQ3pMLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxpQ0FBaUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsaUNBQWlDLEdBQUcsc0JBQXNCLENBQUM7SUFDbEUsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJLENBQUMsa0NBQWtDLEtBQUssSUFBSSxDQUFDO0lBQzFELENBQUM7SUFHRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMs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QUc7d0JBQ3JCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTt3QkFDaEIsSUFBSSxFQUFFLE1BQU0sSUFBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQzFDLE1BQU0sRUFBRSxRQUFRLElBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUNqRCxDQUFBO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lkYlF1ZXN0aW9uYXJ5UXVvdGEsIElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdH0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICcuLi90cC5zdXJ2ZXkuYW5zd2VyL3RwLnN1cnZleS5hbnN3ZXInO1xyXG5pbXBvcnQge2V4ZWN1dGVMb2dpY0V4cHJlc3Npb259IGZyb20gJy4uLy4uL3RwLnN1cnZleS5tZXRob2QnO1xyXG5pbXBvcnQge0xvZ2ljT2JqZWN0fSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcblxyXG50eXBlIFF1b3RhQ2FsY3VsYXRpb25SZXN1bHQgPSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGd1aWQ6IG51bWJlcjtcclxufSB8IHtcclxuICBuYW1lOiBudWxsO1xyXG4gIGd1aWQyZDogbnVtYmVyO1xyXG59IHwgbnVsbDtcclxuXHJcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlRdW90YXMge1xyXG4gICNjb21wbGV0ZWRRdW90YToge25hbWU6IHN0cmluZyB8IG51bGw7IGd1aWQ6IG51bWJlcnwgbnVsbDsgZ3VpZDJkOiBudW1iZXJ8IG51bGx9ID0ge25hbWU6IG51bGwsIGd1aWQ6IG51bGwsIGd1aWQyZDogbnVsbH07XHJcbiAgI3F1b3RhczogQXJyYXk8SWRiUXVlc3Rpb25hcnlRdW90YT4gPSBbXTtcclxuICAjcXVvdGFzMmQ6IEFycmF5PElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdD4gPSBbXTtcclxuICAjcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25HdWlkOiBudW1iZXIgPSAtMTtcclxuICAjcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25OdW06IG51bWJlciA9IC0xO1xyXG5cclxuICBzZXRRdW90YXMocXVvdGFzMWQ6IEFycmF5PElkYlF1ZXN0aW9uYXJ5UXVvdGE+ID0gW10sIHF1b3RhczJkOiBBcnJheTxJZGJRdWVzdGlvbmFyeVF1b3RhMmRPYmplY3Q+ID0gW10sIHF1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZDogbnVtYmVyID0gLTEsIGRlc3RpbmF0aW9uUXVlc3Rpb25OdW06IG51bWJlciA9IC0xKXtcclxuICAgIHRoaXMuI3F1b3RhcyA9IHF1b3RhczFkO1xyXG4gICAgdGhpcy4jcXVvdGFzMmQgPSBxdW90YXMyZDtcclxuICAgIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCA9IHF1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZDtcclxuICAgIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uTnVtID0gZGVzdGluYXRpb25RdWVzdGlvbk51bTtcclxuICB9XHJcblxyXG4gIGd1aWRJc0Rlc3RpbmF0aW9uUXVlc3Rpb24oZ3VpZDogbnVtYmVyKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLiNxdW90YUxpbWl0RGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPT09IGd1aWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IHF1b3RhSXNDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy4jY29tcGxldGVkUXVvdGEgJiYgKCEhdGhpcy4jY29tcGxldGVkUXVvdGEuZ3VpZCB8fCAhIXRoaXMuI2NvbXBsZXRlZFF1b3RhLmd1aWQyZCkgIDtcclxuICB9XHJcblxyXG4gIGdldCBkZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZFxyXG4gIH1cclxuXHJcbiAgZ2V0IHF1b3RhQ291bnQoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHF1b3RhcyAgID0gdGhpcy4jcXVvdGFzICYmICBBcnJheS5pc0FycmF5KHRoaXMuI3F1b3RhcykgPyB0aGlzLiNxdW90YXMubGVuZ3RoIDogMDtcclxuICAgIGNvbnN0IHF1b3RhczJkID0gdGhpcy4jcXVvdGFzMmQgJiYgIEFycmF5LmlzQXJyYXkodGhpcy4jcXVvdGFzMmQpID8gdGhpcy4jcXVvdGFzMmQubGVuZ3RoIDogMDtcclxuICAgIHJldHVybiBxdW90YXMgKyBxdW90YXMyZDtcclxuICB9XHJcblxyXG4gIGZpbmRGaWxsZWRRdW90YXMoY3VycmVudFF1ZXN0aW9uTnVtOiBudW1iZXIsIHZhcnM6IExvZ2ljT2JqZWN0LCBpbnRlcnZpZXdBbnN3ZXJzOiBBcnJheTxBbnN3ZXI+KTogdm9pZCB7XHJcbiAgICAvKlxyXG4gICAgKiDQn9C+0LjRgdC6INC30LDQv9C+0LvQvdC10L3QvdC+0Lkg0LrQstC+0YLRiyDRjdGC0L4g0L7Rh9C10L3RjCDQtNC+0YDQvtCz0L7QuSDQv9GA0L7RhtC10YHRgS4g0JXQs9C+INC90YPQttC90L4g0L7Qv9GC0LjQvNC40LfQuNGA0L7QstCw0YLRjCDQv9C+INC80LDQutGB0LjQvNGD0LzRgy5cclxuICAgICog0J/QtdGA0LXQtCDQv9C+0LjRgdC60L7QvCDQvdGD0LbQvdC+INCy0YvQv9C+0LvQvdC40YLRjCDRgNGP0LQg0L/RgNC+0LLQtdGA0L7Qui5cclxuICAgICog0J/RgNC+0LLQtdGA0LrQsCBjdXJyZW50UXVlc3Rpb25OdW0gPD0gdGhpcy4jcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25OdW0g0J3Rg9C20L3QsCDQtNC70Y8g0L7Qv9GC0LjQvNC40LfQsNGG0LjQuC5cclxuICAgICogRGVzdGluYXRpb25RdWVzdGlvbiDQltC10LvQsNGC0LXQu9GM0L3QviDRgNCw0YHQv9C+0LvQsNCz0LDRgtGMINC/0L7RgdC70LUg0L/QvtGB0LvQtdC00L3QtdCz0L4g0LrQstC+0YLQvdC+0LPQviDQstC+0L/RgNC+0YHQsCwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdC10YIg0YHQvNGL0YHQu9CwINC/0L7RgdGC0L7Rj9C90L3QviDQv9GA0L7QstC10YDRj9GC0Ywg0LrQstC+0YLRiywg0LXRgdC70Lgg0LLQvtC/0YDQvtGB0Ysg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC00LvRjyDRgNCw0YHRh9GR0YLQsCDQutCy0L7RgtGLINC80LXQvdGP0YLRjNGB0Y8g0L3QtSDQsdGD0LTRg9GCLlxyXG4gICAgKiDQvdCw0L/RgNC40LzQtdGAINCa0LLQvtGC0LAgUTEgKyBRMiA8PSAyNS4gRGVzdGluYXRpb25RdWVzdGlvbiDQvdGD0LbQvdC+INC00LXQu9Cw0YLRjCDQvdC+0LzQtdGA0L7QvCAzINC40LvQuCA0LiDQn9C+0YLQvtC80YMg0YfRgtC+INC60LDQuiDQsdGLINGA0LXRgdC/0L7QvdC00LXQvdGCINC90LUg0L7RgtCy0LXRh9Cw0Lsg0L3QsCDQv9C+0YHQu9C10LTRg9GO0YnQuNC1INCy0L7Qv9GA0L7RgdGLLCDRgNC10LfRg9C70YzRgtCw0YIg0LrQstC+0YIg0L3QtSDQuNC30LzQtdC90LjRgtGM0YHRjyDQuCDQutCw0LbQtNGL0Lkg0YDQsNC3INC40YUg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNGC0Ywg0YHQvNGL0YHQu9CwINC90LXRgi5cclxuICAgICovXHJcbiAgICBpZiAoXHJcbiAgICAgKHRoaXMuZGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPiAwKSAmJiAvL9CT0LvQvtCx0LDQu9GM0L3QviDQsiDQvdCw0YHRgtGA0L7QudC60LDRhSDQsNC90LrQtdGC0Ysg0LTQvtC70LbQtdC9INCx0YvRgtGMINGD0LrQsNC30LDQvSDQstC+0L/RgNC+0YEg0LrQvtGC0L7RgNGL0Lkg0LTQvtC70LbQtdC9INC+0YLQvtCx0YDQsNC30LjRgtGM0YHRjyDQv9GA0Lgg0LTQvtGB0YLQuNC20LXQvdC40Lgg0LrQstC+0YLRiywg0LXRgdC70Lgg0LXQs9C+INC90LXRgiwg0YLQviDQuCDQuNGB0LrQsNGC0Ywg0LrQstC+0YLRiyDRgdC80YvRgdC70LAg0L3QtdGCLlxyXG4gICAgICh0aGlzLnF1b3RhQ291bnQgPiAwKSAmJiAvL9C/0YDQvtCy0LXRgNC40Lwg0LXRgdC70Lgg0YMg0L3QsNGBINCy0L7QvtCx0YnQtSDQutCy0L7RgtGLXHJcbiAgICAgKGN1cnJlbnRRdWVzdGlvbk51bSA8PSB0aGlzLiNxdW90YUxpbWl0RGVzdGluYXRpb25RdWVzdGlvbk51bSkgJiYgLy8g0L3QvtC80LXRgCDRgtC10LrRg9GJ0LjQuSDQstC+0L/RgNC+0YHQsCDQvNC10L3RjNGI0LUg0L3QvtC80LXRgNCwINCy0L7Qv9GA0L7RgdCwINC00LvRjyDQv9C10YDQtdGF0L7QtNCwINC/0L4g0LTQvtGB0YLQuNC20LXQvdC40Lgg0LrQstC+0YJcclxuICAgICAoIXRoaXMucXVvdGFJc0NvbXBsZXRlZCkgLy/QuCDQvdCwINGE0LjQvdCw0Lsg0L/RgNC+0LLQtdGA0LjQvCDQtdGB0LvQuCDQu9C4INGD0LbQtSDQt9Cw0L/QvtC70L3QtdC90L3QsNGPINC60LLQvtGC0LAsINC/0L7QstGC0L7RgNC90L4g0L3QtSDQt9Cw0L/Rg9GB0LrQsNC10LxcclxuICAgICkge1xyXG5cclxuICAgICAgbmV3IFByb21pc2U8UXVvdGFDYWxjdWxhdGlvblJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuI3F1b3RhcykpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZFF1b3RhID0gdGhpcy4jcXVvdGFzLmZpbmQocXVvdGEgPT4gZXhlY3V0ZUxvZ2ljRXhwcmVzc2lvbihxdW90YS5leHByZXNzaW9uLCB2YXJzKSk7XHJcbiAgICAgICAgICBpZiAoISFjb21wbGV0ZWRRdW90YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7bmFtZTogY29tcGxldGVkUXVvdGEubmFtZSwgZ3VpZDogY29tcGxldGVkUXVvdGEucXVvdGFfZ3VpZH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy4jcXVvdGFzMmQpKSB7XHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXJzID0gdGhpcy4jcXVvdGFzMmQubGVuZ3RoID4gMCA/IGludGVydmlld0Fuc3dlcnMubWFwKGEgPT4gKHthdjogYS5BbnN3ZXJWYWx1ZSwgcWc6IGEuUXVlc3Rpb25HVUlEfSkgKSA6IFtdO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGZpbGxlZFF1b3RhMmRBcnJheSA9IHRoaXMuI3F1b3RhczJkLmZpbHRlcihxdW90YVZhbHVlcyA9PiB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICogMmQg0LrQstC+0YLRiyDRjdGC0L4g0LLRgdC10LPQtNCwINGC0LDQsdC70LjRhtCwLiDQndC+INC80L7QttC10YIg0LHRi9GC0Ywg0LjQtdGA0LDRgNGF0LjRjywg0LrQvtCz0LTQsCDQvtC00L3QviDQt9C90LDRh9C10L3QuNC1INC+0YLQstC10YLQsCDQvNC+0LbQtdGCINCy0LrQu9GO0YfQsNGC0Ywg0LIg0YHQtdCx0Y8g0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQtNGA0YPQs9C40YUg0L7RgtCy0LXRgtC+0LIuINCd0LDQv9GA0LjQvNC10YAgXCLQntCx0Lsg0YbQtdC90YLRgFwiINGN0YLQviAxLCDQsCDQs9C+0YDQvtC0INC40LvQuCDRgdC10LvQviDRjdGC0L4g0LTRgNGD0LPQvtC5INC+0YLQstC10YIsINGF0L7RgtGPINCz0L7RgNC+0LQg0Lgg0YHQtdC70L4g0Y3RgtC+INGA0LDQt9C90YvQtSDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YtcclxuICAgICAgICAgICAgKiAqL1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShxdW90YVZhbHVlcy5jcXYpICYmIHF1b3RhVmFsdWVzLmNxdi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAqINGN0YLQviDQstC10YLQutCwINC00LvRjyDRgdC70YPRh9Cw0Y8g0YEg0LjQtdGA0LDRgNGF0LjQtdC5LiDQotGD0YIg0LHRg9C00LXRgiAyINC80LDRgdGB0LjQstCwLlxyXG4gICAgICAgICAgICAgICog0JIg0L/QtdGA0LLQvtC8INCx0YPQtNGD0YIg0LrQvtC90YLRgNC+0LvQuNGA0L7QstCw0YLRjNGB0Y8g0YLQtSDQvtGC0LLQtdGC0Ysg0LrQvtGC0L7RgNC+0LUg0LTQvtC70LbQvdGLINGB0L7QstC/0LDQtNCw0YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gYXJyYXlFdmVyeVZhbHVlc1xyXG4gICAgICAgICAgICAgICog0JLQviDQstGC0L7RgNC+0LwgYXJyYXlTb21lVmFsdWUg0LHRg9C00LXRgiDQv9GA0L7QstC10YDRj9GC0YzRgdGPINGB0L7QstC/0LDQtNC10L3QuNC1INGF0L7RgtGPINCx0YsgMSDQvtGC0LLQtdGC0LBcclxuICAgICAgICAgICAgICAqICovXHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uR3VpZCA9IHF1b3RhVmFsdWVzLmNxdlswXS5ndWlkO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBtYXN0ZXJRdWVzdGlvbiA9IHF1b3RhVmFsdWVzLnFzLmZpbmQoIHEgPT4gcS5ndWlkID09PSBxdWVzdGlvbkd1aWQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFycmF5RXZlcnlWYWx1ZXMgPSBxdW90YVZhbHVlcy5xcy5maWx0ZXIocSA9PiBxLmd1aWQgIT0gcXVlc3Rpb25HdWlkKTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgYXJyYXlTb21lVmFsdWUgPSBbLi4ucXVvdGFWYWx1ZXMuY3F2LCAuLi5bbWFzdGVyUXVlc3Rpb24hXV07XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGFycmF5RXZlcnlSZXN1bHQgPSBhcnJheUV2ZXJ5VmFsdWVzLmV2ZXJ5KHF2cSA9PiAhIWFuc3dlcnMuZmluZChpbnRBbnN3ZXIgPT4gaW50QW5zd2VyLnFnID09PSBxdnEuZ3VpZCAmJiBpbnRBbnN3ZXIuYXYgPT09IHF2cS52YWx1ZSkpXHJcbiAgICAgICAgICAgICAgY29uc3QgYXJyYXlTb21lUmVzdWx0ID0gYXJyYXlTb21lVmFsdWUuc29tZShxdnEgPT4gISFhbnN3ZXJzLmZpbmQoaW50QW5zd2VyID0+IGludEFuc3dlci5xZyA9PT0gcXZxLmd1aWQgJiYgaW50QW5zd2VyLmF2ID09PSBxdnEudmFsdWUpKVxyXG4gICAgICAgICAgICAgIC8v0LXRgdC70Lgg0LIg0L7QsdC+0LjRhSDQvNCw0YHRgdC40LLQsNGFINGB0L7QstC/0LDQtNCw0Y7RgiDQt9C90LDRh9C10L3QuNGPINC30L3QsNGH0LjRgiDQutCy0L7RgtCwINCy0YvQv9C+0LvQvdC40LvQsNGB0YxcclxuICAgICAgICAgICAgICByZXR1cm4gYXJyYXlFdmVyeVJlc3VsdCAmJiBhcnJheVNvbWVSZXN1bHQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy/QvtCx0YvRh9C90YvQuSDQvNCw0YHRgdC40LIg0LfQvdCw0YfQtdC90LjQuSwg0LIg0LrQvtGC0L7RgNC+0Lwg0LTQvtC70LbQvdGLINGB0L7QstC/0LDQtNCw0YLRjCDQstGB0LUg0LfQvdCw0YfQtdC90LjRj1xyXG4gICAgICAgICAgICAgIHJldHVybiBxdW90YVZhbHVlcy5xcy5ldmVyeShxdnEgPT4gISFhbnN3ZXJzLmZpbmQoaW50QW5zd2VyID0+IGludEFuc3dlci5xZyA9PT0gcXZxLmd1aWQgJiYgaW50QW5zd2VyLmF2ID09PSBxdnEudmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8v0LXRgdC70Lgg0L3QtSDQvdCw0YjQu9C4INC30LDQv9C+0LvQvdC10L3QvdGL0YUg0LrQstC+0YIg0LLRi9GF0L7QtNC40LxcclxuICAgICAgICAgIGlmIChmaWxsZWRRdW90YTJkQXJyYXkubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8v0LjRidC10Lwg0LrQstC+0YLRgyDQutC+0YLQvtGA0LDRjyDQt9Cw0L/QvtC70L3QtdC90LAg0Lgg0YMg0L3QtdC1INC10YHRgtGMINGD0YHQu9C+0LLQuNC1INC4INC+0L3QviDQstGL0L/QvtC70L3Rj9C10YLRgdGPLlxyXG4gICAgICAgICAgY29uc3QgcXVvdGEyZFdpdGhFeHByZXNzaW9uID0gZmlsbGVkUXVvdGEyZEFycmF5LmZpbmQoKHE6IElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdCkgPT4gISFxLmV4cCAmJiBleGVjdXRlTG9naWNFeHByZXNzaW9uKHEuZXhwLCB2YXJzKSk7XHJcblxyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQutCy0L7RgtCwINC10YHRgtGMINGB0L7QvtCx0YnQuNC8XHJcbiAgICAgICAgICBpZiAoISFxdW90YTJkV2l0aEV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe25hbWU6IG51bGwsIGd1aWQyZDogcXVvdGEyZFdpdGhFeHByZXNzaW9uLnF2Z30pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8v0LXRgdC70Lgg0LrQstC+0YLRiyDRgSBFeHByZXNzaW9uINC90LXRgiwg0LjRidC10Lwg0LrQstC+0YLRgyDQutC+0YLQvtGA0LDRjyDQt9Cw0L/QvtC70L3QtdC90LAg0Lgg0YMg0L3QtdC1INC90LXRgiDRg9GB0LvQvtCy0LjRj1xyXG4gICAgICAgICAgY29uc3QgcXVvdGEyZFdpdGhvdXRFeHByZXNzaW9uID0gZmlsbGVkUXVvdGEyZEFycmF5LmZpbmQoKHE6IElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdCkgPT4gIXEuZXhwICB8fCAodHlwZW9mIHEuZXhwICA9PT0gJ3N0cmluZycgJiYgcS5leHAudHJpbSgpLmxlbmd0aCA9PT0gMCkpO1xyXG4gICAgICAgICAgaWYgKCEhcXVvdGEyZFdpdGhvdXRFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHtuYW1lOiBudWxsLCBndWlkMmQ6IHF1b3RhMmRXaXRob3V0RXhwcmVzc2lvbi5xdmd9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVqZWN0KG51bGwpXHJcbiAgICAgIH0pLnRoZW4ocXVvdGEgPT4ge1xyXG4gICAgICAgIGlmICghIXF1b3RhKSB7XHJcbiAgICAgICAgICB0aGlzLiNjb21wbGV0ZWRRdW90YSA9IHtcclxuICAgICAgICAgICAgbmFtZTogcXVvdGEubmFtZSxcclxuICAgICAgICAgICAgZ3VpZDogJ2d1aWQnIGluICBxdW90YSA/IHF1b3RhLmd1aWQgOiBudWxsLFxyXG4gICAgICAgICAgICBndWlkMmQ6ICdndWlkMmQnIGluICBxdW90YSA/IHF1b3RhLmd1aWQyZCA6IG51bGwsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { MISSING_VALUE } from '../../tp.survey.const';
|
|
2
|
-
export class Answer {
|
|
3
|
-
constructor(guid, version = -1) {
|
|
4
|
-
this.AnswerAdditional = {};
|
|
5
|
-
this.ViewedAlternativeValues = [];
|
|
6
|
-
this.ViewedSectionGuids = [];
|
|
7
|
-
this.AlternativeSequenceClicks = [];
|
|
8
|
-
this.StartedAt = 0;
|
|
9
|
-
this.FinishedAt = 0;
|
|
10
|
-
this.AnswerValue = MISSING_VALUE;
|
|
11
|
-
this.answerIsComplete = false;
|
|
12
|
-
this.QuestionGUID = guid;
|
|
13
|
-
this.QuestionVersion = version;
|
|
14
|
-
}
|
|
15
|
-
clear() {
|
|
16
|
-
this.StartedAt = 0;
|
|
17
|
-
this.FinishedAt = 0;
|
|
18
|
-
this.AnswerValue = MISSING_VALUE;
|
|
19
|
-
this.ViewedAlternativeValues.length = 0;
|
|
20
|
-
this.ViewedSectionGuids.length = 0;
|
|
21
|
-
this.AlternativeSequenceClicks.length = 0;
|
|
22
|
-
for (const key of Object.keys(this.AnswerAdditional)) {
|
|
23
|
-
this.AnswerAdditional[Number(key)] = null;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmFuc3dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvcmUvdHAuc3VydmV5LmFuc3dlci90cC5zdXJ2ZXkuYW5zd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sTUFBTTtJQVdqQixZQUFZLElBQVksRUFBRSxVQUFrQixDQUFDLENBQUM7UUFSckMscUJBQWdCLEdBQXFDLEVBQUUsQ0FBQztRQUN4RCw0QkFBdUIsR0FBa0IsRUFBRSxDQUFDO1FBQzVDLHVCQUFrQixHQUFrQixFQUFFLENBQUM7UUFDdkMsOEJBQXlCLEdBQTRCLEVBQUUsQ0FBQztRQUNqRSxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQVEsYUFBYSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7Q0FLRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVF1ZXN0aW9uQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtBZGRpdGlvbmFsQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcbmltcG9ydCB7TUlTU0lOR19WQUxVRX0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmNvbnN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBbnN3ZXIgaW1wbGVtZW50cyBJUXVlc3Rpb25BbnN3ZXIge1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uR1VJRDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uVmVyc2lvbjogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IEFuc3dlckFkZGl0aW9uYWw6IFJlY29yZDxzdHJpbmcsIEFkZGl0aW9uYWxBbnN3ZXI+ID0ge307XHJcbiAgcmVhZG9ubHkgVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBWaWV3ZWRTZWN0aW9uR3VpZHM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBBbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBBcnJheTxbbnVtYmVyLCBudW1iZXJdPiA9IFtdO1xyXG4gIFN0YXJ0ZWRBdCA9IDA7XHJcbiAgRmluaXNoZWRBdCA9IDA7XHJcbiAgQW5zd2VyVmFsdWU6IGFueSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgYW5zd2VySXNDb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKGd1aWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyID0gLTEpIHtcclxuICAgIHRoaXMuUXVlc3Rpb25HVUlEID0gZ3VpZDtcclxuICAgIHRoaXMuUXVlc3Rpb25WZXJzaW9uID0gdmVyc2lvbjtcclxuICB9XHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLlN0YXJ0ZWRBdCA9IDA7XHJcbiAgICB0aGlzLkZpbmlzaGVkQXQgPSAwO1xyXG4gICAgdGhpcy5BbnN3ZXJWYWx1ZSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgICB0aGlzLlZpZXdlZEFsdGVybmF0aXZlVmFsdWVzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLlZpZXdlZFNlY3Rpb25HdWlkcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLmxlbmd0aCA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLkFuc3dlckFkZGl0aW9uYWwpKSB7XHJcbiAgICAgIHRoaXMuQW5zd2VyQWRkaXRpb25hbFtOdW1iZXIoa2V5KV0gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBhZGRBbnN3ZXIoYW5zd2VyVmFsdWU6IHVua25vd24sIGFuc3dlckFkZGl0aW9uYWw6IExvZ2ljT2JqZWN0LCBhc0NvbXBsZXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLkFuc3dlclZhbHVlID0gYW5zd2VyVmFsdWU7XHJcbiAgLy8gfVxyXG5cclxufVxyXG4iXX0=
|