@pie-element/inline-dropdown 4.7.1-beta.0 → 4.7.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,4 +8,4 @@ var _default = {
8
8
  choices: {}
9
9
  };
10
10
  exports["default"] = _default;
11
- //# sourceMappingURL=defaults.js.map
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaG9pY2VzIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RlZmF1bHRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvaWNlczoge30sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7ZUFBZTtFQUNiQSxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFBQUMsT0FBQSxjQUFBQyxRQUFBIn0=
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -10,35 +9,22 @@ exports.model = model;
10
9
  exports.normalize = void 0;
11
10
  exports.outcome = outcome;
12
11
  exports.validate = void 0;
13
-
14
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
-
16
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
15
  var _map = _interopRequireDefault(require("lodash/map"));
21
-
22
16
  var _reduce = _interopRequireDefault(require("lodash/reduce"));
23
-
24
17
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
25
-
26
18
  var _controllerUtils = require("@pie-lib/controller-utils");
27
-
28
19
  var _utils = require("./utils");
29
-
30
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
-
32
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
-
34
22
  var getFeedback = function getFeedback(correct) {
35
23
  if (correct) {
36
24
  return 'correct';
37
25
  }
38
-
39
26
  return 'incorrect';
40
27
  };
41
-
42
28
  var normalize = function normalize(question) {
43
29
  return _objectSpread({
44
30
  promptEnabled: true,
@@ -48,6 +34,7 @@ var normalize = function normalize(question) {
48
34
  choiceRationaleEnabled: true
49
35
  }, question);
50
36
  };
37
+
51
38
  /**
52
39
  *
53
40
  * @param {*} question
@@ -55,205 +42,178 @@ var normalize = function normalize(question) {
55
42
  * @param {*} env
56
43
  * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
57
44
  */
58
-
59
-
60
45
  exports.normalize = normalize;
61
-
62
46
  function model(question, session, env, updateSession) {
63
47
  return new Promise( /*#__PURE__*/function () {
64
48
  var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
65
49
  var normalizedQuestion, _ref2, _ref2$value, value, choices, feedback, allCorrectResponses, respAreaLength, correctResponses, _loop, i, _ret, lockChoiceOrder, keys, _i, key, teacherInstructions, rationale, choicesWillNullRationales, out;
66
-
67
- return _regenerator["default"].wrap(function _callee$(_context) {
68
- while (1) {
69
- switch (_context.prev = _context.next) {
70
- case 0:
71
- normalizedQuestion = normalize(question);
72
- _ref2 = session || {}, _ref2$value = _ref2.value, value = _ref2$value === void 0 ? {} : _ref2$value;
73
- choices = (0, _reduce["default"])(normalizedQuestion.choices, function (obj, area, key) {
74
- obj[key] = (0, _map["default"])(area, function (choice) {
75
- return choice;
76
- });
77
- return obj;
78
- }, {});
79
- feedback = {};
80
-
81
- if (!(env.mode === 'evaluate')) {
82
- _context.next = 17;
83
- break;
84
- }
85
-
86
- allCorrectResponses = (0, _utils.getAllCorrectResponses)(normalizedQuestion);
87
- respAreaLength = Object.keys(allCorrectResponses).length;
88
- correctResponses = 0;
89
-
90
- _loop = function _loop(i) {
91
- var result = (0, _reduce["default"])(allCorrectResponses, function (obj, choices, key) {
92
- var answer = value && value[key] || '';
93
- var correctChoice = choices[i] || '';
94
- var isCorrect = answer && correctChoice && correctChoice === answer;
95
- obj.feedback[key] = getFeedback(isCorrect);
96
-
97
- if (isCorrect) {
98
- obj.correctResponses += 1;
99
- }
100
-
101
- return obj;
102
- }, {
103
- correctResponses: 0,
104
- feedback: {}
105
- });
106
-
107
- if (result.correctResponses >= correctResponses) {
108
- correctResponses = result.correctResponses;
109
- feedback = result.feedback;
110
- }
111
-
112
- if (result.correctResponses === respAreaLength) {
113
- return "break";
50
+ return _regenerator["default"].wrap(function _callee$(_context2) {
51
+ while (1) switch (_context2.prev = _context2.next) {
52
+ case 0:
53
+ normalizedQuestion = normalize(question);
54
+ _ref2 = session || {}, _ref2$value = _ref2.value, value = _ref2$value === void 0 ? {} : _ref2$value;
55
+ choices = (0, _reduce["default"])(normalizedQuestion.choices, function (obj, area, key) {
56
+ obj[key] = (0, _map["default"])(area, function (choice) {
57
+ return choice;
58
+ });
59
+ return obj;
60
+ }, {});
61
+ feedback = {};
62
+ if (!(env.mode === 'evaluate')) {
63
+ _context2.next = 18;
64
+ break;
65
+ }
66
+ allCorrectResponses = (0, _utils.getAllCorrectResponses)(normalizedQuestion);
67
+ respAreaLength = Object.keys(allCorrectResponses).length;
68
+ correctResponses = 0;
69
+ _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop(i) {
70
+ var result;
71
+ return _regenerator["default"].wrap(function _loop$(_context) {
72
+ while (1) switch (_context.prev = _context.next) {
73
+ case 0:
74
+ result = (0, _reduce["default"])(allCorrectResponses, function (obj, choices, key) {
75
+ var answer = value && value[key] || '';
76
+ var correctChoice = choices[i] || '';
77
+ var isCorrect = answer && correctChoice && correctChoice === answer;
78
+ obj.feedback[key] = getFeedback(isCorrect);
79
+ if (isCorrect) {
80
+ obj.correctResponses += 1;
81
+ }
82
+ return obj;
83
+ }, {
84
+ correctResponses: 0,
85
+ feedback: {}
86
+ });
87
+ if (result.correctResponses >= correctResponses) {
88
+ correctResponses = result.correctResponses;
89
+ feedback = result.feedback;
90
+ }
91
+ if (!(result.correctResponses === respAreaLength)) {
92
+ _context.next = 4;
93
+ break;
94
+ }
95
+ return _context.abrupt("return", "break");
96
+ case 4:
97
+ case "end":
98
+ return _context.stop();
114
99
  }
115
- };
116
-
117
- i = 0;
118
-
119
- case 10:
120
- if (!(i < respAreaLength)) {
121
- _context.next = 17;
122
- break;
123
- }
124
-
125
- _ret = _loop(i);
126
-
127
- if (!(_ret === "break")) {
128
- _context.next = 14;
129
- break;
130
- }
131
-
132
- return _context.abrupt("break", 17);
133
-
134
- case 14:
135
- i++;
136
- _context.next = 10;
100
+ }, _loop);
101
+ });
102
+ i = 0;
103
+ case 10:
104
+ if (!(i < respAreaLength)) {
105
+ _context2.next = 18;
137
106
  break;
138
-
139
- case 17:
140
- lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
141
-
142
- if (lockChoiceOrder) {
143
- _context.next = 29;
144
- break;
145
- }
146
-
147
- keys = Object.keys(choices);
148
- _i = 0;
149
-
150
- case 21:
151
- if (!(_i < keys.length)) {
152
- _context.next = 29;
153
- break;
154
- }
155
-
156
- key = keys[_i];
157
- _context.next = 25;
158
- return (0, _controllerUtils.getShuffledChoices)(choices[key], session, updateSession, 'value');
159
-
160
- case 25:
161
- choices[key] = _context.sent;
162
-
163
- case 26:
164
- _i++;
165
- _context.next = 21;
107
+ }
108
+ return _context2.delegateYield(_loop(i), "t0", 12);
109
+ case 12:
110
+ _ret = _context2.t0;
111
+ if (!(_ret === "break")) {
112
+ _context2.next = 15;
166
113
  break;
167
-
168
- case 29:
169
- teacherInstructions = null;
170
- rationale = null;
171
- choicesWillNullRationales = (Object.keys(choices) || []).reduce(function (acc, currentValue) {
172
- acc[currentValue] = (choices[currentValue] || []).map(function (choice) {
173
- return _objectSpread(_objectSpread({}, choice), {}, {
174
- rationale: null
175
- });
114
+ }
115
+ return _context2.abrupt("break", 18);
116
+ case 15:
117
+ i++;
118
+ _context2.next = 10;
119
+ break;
120
+ case 18:
121
+ lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
122
+ if (lockChoiceOrder) {
123
+ _context2.next = 30;
124
+ break;
125
+ }
126
+ keys = Object.keys(choices);
127
+ _i = 0;
128
+ case 22:
129
+ if (!(_i < keys.length)) {
130
+ _context2.next = 30;
131
+ break;
132
+ }
133
+ key = keys[_i];
134
+ _context2.next = 26;
135
+ return (0, _controllerUtils.getShuffledChoices)(choices[key], session, updateSession, 'value');
136
+ case 26:
137
+ choices[key] = _context2.sent;
138
+ case 27:
139
+ _i++;
140
+ _context2.next = 22;
141
+ break;
142
+ case 30:
143
+ teacherInstructions = null;
144
+ rationale = null;
145
+ choicesWillNullRationales = (Object.keys(choices) || []).reduce(function (acc, currentValue) {
146
+ acc[currentValue] = (choices[currentValue] || []).map(function (choice) {
147
+ return _objectSpread(_objectSpread({}, choice), {}, {
148
+ rationale: null
176
149
  });
177
- return acc;
178
- }, {});
179
-
180
- if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
181
- rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
182
- teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
183
- choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;
184
- } else {
185
- rationale = null;
186
- teacherInstructions = null;
187
- choices = choicesWillNullRationales;
188
- }
189
-
190
- out = {
191
- disabled: env.mode !== 'gather',
192
- mode: env.mode,
193
- prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
194
- displayType: normalizedQuestion.displayType,
195
- markup: normalizedQuestion.markup,
196
- choices: choices,
197
- feedback: feedback,
198
- responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,
199
- rationale: rationale,
200
- teacherInstructions: teacherInstructions
201
- };
202
- resolve(out);
203
-
204
- case 35:
205
- case "end":
206
- return _context.stop();
207
- }
150
+ });
151
+ return acc;
152
+ }, {});
153
+ if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
154
+ rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
155
+ teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
156
+ choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;
157
+ } else {
158
+ rationale = null;
159
+ teacherInstructions = null;
160
+ choices = choicesWillNullRationales;
161
+ }
162
+ out = {
163
+ disabled: env.mode !== 'gather',
164
+ mode: env.mode,
165
+ prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
166
+ displayType: normalizedQuestion.displayType,
167
+ markup: normalizedQuestion.markup,
168
+ choices: choices,
169
+ feedback: feedback,
170
+ responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,
171
+ rationale: rationale,
172
+ teacherInstructions: teacherInstructions
173
+ };
174
+ resolve(out);
175
+ case 36:
176
+ case "end":
177
+ return _context2.stop();
208
178
  }
209
179
  }, _callee);
210
180
  }));
211
-
212
181
  return function (_x) {
213
182
  return _ref.apply(this, arguments);
214
183
  };
215
184
  }());
216
185
  }
217
-
218
186
  var getScore = function getScore(config, session) {
219
187
  var _ref3 = session || {},
220
- _ref3$value = _ref3.value,
221
- value = _ref3$value === void 0 ? {} : _ref3$value;
222
-
188
+ _ref3$value = _ref3.value,
189
+ value = _ref3$value === void 0 ? {} : _ref3$value;
223
190
  var maxScore = config && config.choices ? Object.keys(config.choices).length : 0;
224
191
  var allCorrectResponses = (0, _utils.getAllCorrectResponses)(config);
225
192
  var correctCount = 0;
226
-
227
193
  var _loop2 = function _loop2(i) {
228
194
  var result = (0, _reduce["default"])(allCorrectResponses, function (total, choices, key) {
229
195
  var answer = value && value[key] || '';
230
196
  var correctChoice = choices[i] || '';
231
-
232
197
  if (correctChoice && answer && correctChoice === answer) {
233
198
  return total;
234
199
  }
235
-
236
200
  return total - 1;
237
201
  }, maxScore);
238
-
239
202
  if (result > correctCount) {
240
203
  correctCount = result;
241
204
  }
242
-
243
205
  if (result === maxScore) {
244
206
  return "break";
245
207
  }
246
208
  };
247
-
248
209
  for (var i = 0; i < maxScore; i++) {
249
210
  var _ret2 = _loop2(i);
250
-
251
211
  if (_ret2 === "break") break;
252
212
  }
253
-
254
213
  var str = (correctCount / maxScore).toFixed(2);
255
214
  return parseFloat(str);
256
215
  };
216
+
257
217
  /**
258
218
  *
259
219
  * The score is partial by default for checkbox mode, allOrNothing for radio mode.
@@ -266,10 +226,7 @@ var getScore = function getScore(config, session) {
266
226
  * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides
267
227
  * `model.partialScoring`.
268
228
  */
269
-
270
-
271
229
  exports.getScore = getScore;
272
-
273
230
  function outcome(model, session) {
274
231
  var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
275
232
  return new Promise(function (resolve) {
@@ -279,9 +236,7 @@ function outcome(model, session) {
279
236
  empty: true
280
237
  });
281
238
  }
282
-
283
239
  var partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
284
-
285
240
  var score = getScore(model, session);
286
241
  resolve({
287
242
  score: partialScoringEnabled ? score : Math.floor(score),
@@ -289,50 +244,43 @@ function outcome(model, session) {
289
244
  });
290
245
  });
291
246
  }
292
-
293
247
  var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
294
248
  return new Promise(function (resolve) {
295
249
  if (env.mode !== 'evaluate' && env.role === 'instructor') {
296
250
  var choices = question.choices;
297
- var _value = {};
298
-
251
+ var value = {};
299
252
  if (choices) {
300
253
  Object.keys(choices).forEach(function (key, i) {
301
254
  var correctChoices = choices[key] && choices[key].filter(function (c) {
302
255
  return c.correct;
303
256
  });
304
- _value[i] = correctChoices && correctChoices[0].value;
257
+ value[i] = correctChoices && correctChoices[0].value;
305
258
  });
306
259
  }
307
-
308
260
  resolve({
309
261
  id: '1',
310
- value: _value
262
+ value: value
311
263
  });
312
264
  } else {
313
265
  resolve(null);
314
266
  }
315
267
  });
316
268
  };
317
-
318
269
  exports.createCorrectResponseSession = createCorrectResponseSession;
319
-
320
270
  var validate = function validate() {
321
271
  var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
322
272
  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
323
273
  var markup = model.markup,
324
- choices = model.choices;
274
+ choices = model.choices;
325
275
  var maxResponseAreas = config.maxResponseAreas,
326
- maxResponseAreaChoices = config.maxResponseAreaChoices;
276
+ maxResponseAreaChoices = config.maxResponseAreaChoices;
327
277
  var errors = {};
328
278
  var nbOfResponseAreas = ((markup || '').match(/\{\{(\d+)\}\}/g) || []).length;
329
-
330
279
  if (nbOfResponseAreas > maxResponseAreas) {
331
280
  errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
332
281
  } else if (nbOfResponseAreas < 1) {
333
282
  errors.responseAreasError = 'There should be defined at least 1 response area.';
334
283
  }
335
-
336
284
  (Object.keys(choices) || []).forEach(function (choiceKey) {
337
285
  if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {
338
286
  errors.responseAreaChoicesError = "No more than ".concat(maxResponseAreaChoices, " choices per response area should be defined.");
@@ -340,6 +288,5 @@ var validate = function validate() {
340
288
  });
341
289
  return errors;
342
290
  };
343
-
344
291
  exports.validate = validate;
345
- //# sourceMappingURL=index.js.map
292
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWFwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVkdWNlIiwiX2lzRW1wdHkiLCJfY29udHJvbGxlclV0aWxzIiwiX3V0aWxzIiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJleHBvcnRzIiwibW9kZWwiLCJzZXNzaW9uIiwiZW52IiwidXBkYXRlU2Vzc2lvbiIsIlByb21pc2UiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJyZXNvbHZlIiwibm9ybWFsaXplZFF1ZXN0aW9uIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZSIsInZhbHVlIiwiY2hvaWNlcyIsImZlZWRiYWNrIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiY29ycmVjdFJlc3BvbnNlcyIsIl9sb29wIiwiX3JldCIsImxvY2tDaG9pY2VPcmRlciIsIl9pIiwidGVhY2hlckluc3RydWN0aW9ucyIsInJhdGlvbmFsZSIsImNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXMiLCJvdXQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInJlZHVjZSIsIm9iaiIsImFyZWEiLCJtYXAiLCJjaG9pY2UiLCJtb2RlIiwiZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3VsdCIsIl9sb29wJCIsIl9jb250ZXh0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImFicnVwdCIsInN0b3AiLCJkZWxlZ2F0ZVlpZWxkIiwidDAiLCJsb2NrQ2hvaWNlcyIsImdldFNodWZmbGVkQ2hvaWNlcyIsInNlbnQiLCJhY2MiLCJjdXJyZW50VmFsdWUiLCJyb2xlIiwiZGlzYWJsZWQiLCJwcm9tcHQiLCJkaXNwbGF5VHlwZSIsIm1hcmt1cCIsInJlc3BvbnNlQ29ycmVjdCIsImdldFNjb3JlIiwidW5kZWZpbmVkIiwiX3giLCJjb25maWciLCJfcmVmMyIsIl9yZWYzJHZhbHVlIiwibWF4U2NvcmUiLCJjb3JyZWN0Q291bnQiLCJfbG9vcDIiLCJ0b3RhbCIsIl9yZXQyIiwic3RyIiwidG9GaXhlZCIsInBhcnNlRmxvYXQiLCJvdXRjb21lIiwiaXNFbXB0eSIsInNjb3JlIiwiZW1wdHkiLCJwYXJ0aWFsU2NvcmluZ0VuYWJsZWQiLCJwYXJ0aWFsU2NvcmluZyIsImVuYWJsZWQiLCJNYXRoIiwiZmxvb3IiLCJjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uIiwiY29ycmVjdENob2ljZXMiLCJjIiwiaWQiLCJ2YWxpZGF0ZSIsIm1heFJlc3BvbnNlQXJlYXMiLCJtYXhSZXNwb25zZUFyZWFDaG9pY2VzIiwiZXJyb3JzIiwibmJPZlJlc3BvbnNlQXJlYXMiLCJtYXRjaCIsInJlc3BvbnNlQXJlYXNFcnJvciIsImNvbmNhdCIsImNob2ljZUtleSIsInJlc3BvbnNlQXJlYUNob2ljZXNFcnJvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7IGxvY2tDaG9pY2VzLCBnZXRTaHVmZmxlZENob2ljZXMsIHBhcnRpYWxTY29yaW5nIH0gZnJvbSAnQHBpZS1saWIvY29udHJvbGxlci11dGlscyc7XG5cbmltcG9ydCB7IGdldEFsbENvcnJlY3RSZXNwb25zZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZ2V0RmVlZGJhY2sgPSAoY29ycmVjdCkgPT4ge1xuICBpZiAoY29ycmVjdCkge1xuICAgIHJldHVybiAnY29ycmVjdCc7XG4gIH1cblxuICByZXR1cm4gJ2luY29ycmVjdCc7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gKHF1ZXN0aW9uKSA9PiAoe1xuICBwcm9tcHRFbmFibGVkOiB0cnVlLFxuICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIC4uLnF1ZXN0aW9uLFxufSk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7Kn0gcXVlc3Rpb25cbiAqIEBwYXJhbSB7Kn0gc2Vzc2lvblxuICogQHBhcmFtIHsqfSBlbnZcbiAqIEBwYXJhbSB7Kn0gdXBkYXRlU2Vzc2lvbiAtIG9wdGlvbmFsIC0gYSBmdW5jdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIGl0IG9uIHRoZSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudiwgdXBkYXRlU2Vzc2lvbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlc3Rpb24gPSBub3JtYWxpemUocXVlc3Rpb24pO1xuICAgIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgICBsZXQgY2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzLFxuICAgICAgKG9iaiwgYXJlYSwga2V5KSA9PiB7XG4gICAgICAgIG9ialtrZXldID0gbWFwKGFyZWEsIChjaG9pY2UpID0+IGNob2ljZSk7XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApO1xuXG4gICAgbGV0IGZlZWRiYWNrID0ge307XG5cbiAgICBpZiAoZW52Lm1vZGUgPT09ICdldmFsdWF0ZScpIHtcbiAgICAgIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKG5vcm1hbGl6ZWRRdWVzdGlvbik7XG4gICAgICBjb25zdCByZXNwQXJlYUxlbmd0aCA9IE9iamVjdC5rZXlzKGFsbENvcnJlY3RSZXNwb25zZXMpLmxlbmd0aDtcbiAgICAgIGxldCBjb3JyZWN0UmVzcG9uc2VzID0gMDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwQXJlYUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgICAgICBhbGxDb3JyZWN0UmVzcG9uc2VzLFxuICAgICAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5zd2VyID0gKHZhbHVlICYmIHZhbHVlW2tleV0pIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZSA9IGNob2ljZXNbaV0gfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBpc0NvcnJlY3QgPSBhbnN3ZXIgJiYgY29ycmVjdENob2ljZSAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXI7XG5cbiAgICAgICAgICAgIG9iai5mZWVkYmFja1trZXldID0gZ2V0RmVlZGJhY2soaXNDb3JyZWN0KTtcblxuICAgICAgICAgICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgICAgICAgICBvYmouY29ycmVjdFJlc3BvbnNlcyArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjb3JyZWN0UmVzcG9uc2VzOiAwLCBmZWVkYmFjazoge30gfSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPj0gY29ycmVjdFJlc3BvbnNlcykge1xuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZXMgPSByZXN1bHQuY29ycmVjdFJlc3BvbnNlcztcbiAgICAgICAgICBmZWVkYmFjayA9IHJlc3VsdC5mZWVkYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29ycmVjdFJlc3BvbnNlcyA9PT0gcmVzcEFyZWFMZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2tDaG9pY2VPcmRlciA9IGxvY2tDaG9pY2VzKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbiwgZW52KTtcblxuICAgIGlmICghbG9ja0Nob2ljZU9yZGVyKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hvaWNlcyk7XG4gICAgICBsZXQgaTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBjaG9pY2VzW2tleV0gPSBhd2FpdCBnZXRTaHVmZmxlZENob2ljZXMoY2hvaWNlc1trZXldLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCAndmFsdWUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGVhY2hlckluc3RydWN0aW9ucyA9IG51bGw7XG4gICAgbGV0IHJhdGlvbmFsZSA9IG51bGw7XG5cbiAgICBjb25zdCBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzID0gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICBhY2NbY3VycmVudFZhbHVlXSA9IChjaG9pY2VzW2N1cnJlbnRWYWx1ZV0gfHwgW10pLm1hcCgoY2hvaWNlKSA9PiAoe1xuICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJyAmJiAoZW52Lm1vZGUgPT09ICd2aWV3JyB8fCBlbnYubW9kZSA9PT0gJ2V2YWx1YXRlJykpIHtcbiAgICAgIHJhdGlvbmFsZSA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVFbmFibGVkID8gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZSA6IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNcbiAgICAgICAgOiBudWxsO1xuXG4gICAgICBjaG9pY2VzID0gbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZVJhdGlvbmFsZUVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlcyA6IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvbmFsZSA9IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbnVsbDtcbiAgICAgIGNob2ljZXMgPSBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IG91dCA9IHtcbiAgICAgIGRpc2FibGVkOiBlbnYubW9kZSAhPT0gJ2dhdGhlcicsXG4gICAgICBtb2RlOiBlbnYubW9kZSxcbiAgICAgIHByb21wdDogbm9ybWFsaXplZFF1ZXN0aW9uLnByb21wdEVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0IDogbnVsbCxcbiAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtYXJrdXA6IG5vcm1hbGl6ZWRRdWVzdGlvbi5tYXJrdXAsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmVlZGJhY2ssXG5cbiAgICAgIHJlc3BvbnNlQ29ycmVjdDogZW52Lm1vZGUgPT09ICdldmFsdWF0ZScgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxIDogdW5kZWZpbmVkLFxuICAgICAgcmF0aW9uYWxlLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyxcbiAgICB9O1xuXG4gICAgcmVzb2x2ZShvdXQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNjb3JlID0gKGNvbmZpZywgc2Vzc2lvbikgPT4ge1xuICBjb25zdCB7IHZhbHVlID0ge30gfSA9IHNlc3Npb24gfHwge307XG4gIGNvbnN0IG1heFNjb3JlID0gY29uZmlnICYmIGNvbmZpZy5jaG9pY2VzID8gT2JqZWN0LmtleXMoY29uZmlnLmNob2ljZXMpLmxlbmd0aCA6IDA7XG4gIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKGNvbmZpZyk7XG4gIGxldCBjb3JyZWN0Q291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NvcmU7IGkrKykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAodG90YWwsIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuXG4gICAgICAgIGlmIChjb3JyZWN0Q2hvaWNlICYmIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG90YWwgLSAxO1xuICAgICAgfSxcbiAgICAgIG1heFNjb3JlLFxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID4gY29ycmVjdENvdW50KSB7XG4gICAgICBjb3JyZWN0Q291bnQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gbWF4U2NvcmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ciA9IChjb3JyZWN0Q291bnQgLyBtYXhTY29yZSkudG9GaXhlZCgyKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKlxuICogVGhlIHNjb3JlIGlzIHBhcnRpYWwgYnkgZGVmYXVsdCBmb3IgY2hlY2tib3ggbW9kZSwgYWxsT3JOb3RoaW5nIGZvciByYWRpbyBtb2RlLlxuICogVG8gZGlzYWJsZSBwYXJ0aWFsIHNjb3JpbmcgZm9yIGNoZWNrYm94IG1vZGUgeW91IGVpdGhlciBzZXQgbW9kZWwucGFydGlhbFNjb3JpbmcgPSBmYWxzZSBvciBlbnYucGFydGlhbFNjb3JpbmcgPVxuICogZmFsc2UuIHRoZSB2YWx1ZSBpbiBgZW52YCB3aWxsIG92ZXJyaWRlIHRoZSB2YWx1ZSBpbiBgbW9kZWxgLlxuICogQHBhcmFtIHtPYmplY3R9IG1vZGVsIC0gdGhlIG1haW4gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbW9kZWwucGFydGlhbFNjb3JpbmcgLSBpcyBwYXJ0aWFsIHNjb3JpbmcgZW5hYmxlZCAoaWYgdW5kZWZpbmVkIHNldCB0byB0byB0cnVlKVxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gZW52XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVudi5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgZGVmYXVsdCB0byB0cnVlKSBUaGlzIG92ZXJyaWRlc1xuICogICBgbW9kZWwucGFydGlhbFNjb3JpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3V0Y29tZShtb2RlbCwgc2Vzc2lvbiwgZW52ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICAgIHJlc29sdmUoeyBzY29yZTogMCwgZW1wdHk6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFNjb3JpbmdFbmFibGVkID0gcGFydGlhbFNjb3JpbmcuZW5hYmxlZChtb2RlbCwgZW52KTtcbiAgICBjb25zdCBzY29yZSA9IGdldFNjb3JlKG1vZGVsLCBzZXNzaW9uKTtcblxuICAgIHJlc29sdmUoe1xuICAgICAgc2NvcmU6IHBhcnRpYWxTY29yaW5nRW5hYmxlZCA/IHNjb3JlIDogTWF0aC5mbG9vcihzY29yZSksXG4gICAgICBlbXB0eTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiA9IChxdWVzdGlvbiwgZW52KSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChlbnYubW9kZSAhPT0gJ2V2YWx1YXRlJyAmJiBlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InKSB7XG4gICAgICBjb25zdCB7IGNob2ljZXMgfSA9IHF1ZXN0aW9uO1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcblxuICAgICAgaWYgKGNob2ljZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hvaWNlcykuZm9yRWFjaCgoa2V5LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZXMgPSBjaG9pY2VzW2tleV0gJiYgY2hvaWNlc1trZXldLmZpbHRlcigoYykgPT4gYy5jb3JyZWN0KTtcblxuICAgICAgICAgIHZhbHVlW2ldID0gY29ycmVjdENob2ljZXMgJiYgY29ycmVjdENob2ljZXNbMF0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKG1vZGVsID0ge30sIGNvbmZpZyA9IHt9KSA9PiB7XG4gIGNvbnN0IHsgbWFya3VwLCBjaG9pY2VzIH0gPSBtb2RlbDtcbiAgY29uc3QgeyBtYXhSZXNwb25zZUFyZWFzLCBtYXhSZXNwb25zZUFyZWFDaG9pY2VzIH0gPSBjb25maWc7XG4gIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gIGNvbnN0IG5iT2ZSZXNwb25zZUFyZWFzID0gKChtYXJrdXAgfHwgJycpLm1hdGNoKC9cXHtcXHsoXFxkKylcXH1cXH0vZykgfHwgW10pLmxlbmd0aDtcblxuICBpZiAobmJPZlJlc3BvbnNlQXJlYXMgPiBtYXhSZXNwb25zZUFyZWFzKSB7XG4gICAgZXJyb3JzLnJlc3BvbnNlQXJlYXNFcnJvciA9IGBObyBtb3JlIHRoYW4gJHttYXhSZXNwb25zZUFyZWFzfSByZXNwb25zZSBhcmVhcyBzaG91bGQgYmUgZGVmaW5lZC5gO1xuICB9IGVsc2UgaWYgKG5iT2ZSZXNwb25zZUFyZWFzIDwgMSkge1xuICAgIGVycm9ycy5yZXNwb25zZUFyZWFzRXJyb3IgPSAnVGhlcmUgc2hvdWxkIGJlIGRlZmluZWQgYXQgbGVhc3QgMSByZXNwb25zZSBhcmVhLic7XG4gIH1cblxuICAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLmZvckVhY2goKGNob2ljZUtleSkgPT4ge1xuICAgIGlmIChjaG9pY2VzW2Nob2ljZUtleV0gJiYgY2hvaWNlc1tjaG9pY2VLZXldLmxlbmd0aCA+IG1heFJlc3BvbnNlQXJlYUNob2ljZXMpIHtcbiAgICAgIGVycm9ycy5yZXNwb25zZUFyZWFDaG9pY2VzRXJyb3IgPSBgTm8gbW9yZSB0aGFuICR7bWF4UmVzcG9uc2VBcmVhQ2hvaWNlc30gY2hvaWNlcyBwZXIgcmVzcG9uc2UgYXJlYSBzaG91bGQgYmUgZGVmaW5lZC5gO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFpRCxTQUFBSyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLEdBQUFDLGNBQUEsS0FBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE9BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULElBQUEsRUFBQUcsT0FBQSxZQUFBSCxJQUFBO0FBQUEsU0FBQVUsY0FBQUMsTUFBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFGLENBQUEsVUFBQUcsTUFBQSxXQUFBRixTQUFBLENBQUFELENBQUEs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
@@ -1,31 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.getAllCorrectResponses = void 0;
9
-
10
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
9
  var _forEach = _interopRequireDefault(require("lodash/forEach"));
13
-
14
10
  var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
15
11
  var choices = _ref.choices,
16
- alternateResponse = _ref.alternateResponse;
12
+ alternateResponse = _ref.alternateResponse;
17
13
  alternateResponse = alternateResponse || {};
18
14
  var correctAnswers = {};
19
15
  (0, _forEach["default"])(choices, function (respArea, key) {
20
16
  if (!correctAnswers[key]) {
21
17
  correctAnswers[key] = [];
22
18
  }
23
-
24
19
  if (respArea) {
25
20
  respArea.forEach(function (choice) {
26
21
  if (choice.correct) {
27
22
  correctAnswers[key].push(choice.value);
28
-
29
23
  if (alternateResponse[key]) {
30
24
  correctAnswers[key] = [].concat((0, _toConsumableArray2["default"])(correctAnswers[key]), (0, _toConsumableArray2["default"])(alternateResponse[key]));
31
25
  }
@@ -35,6 +29,5 @@ var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
35
29
  });
36
30
  return correctAnswers;
37
31
  };
38
-
39
32
  exports.getAllCorrectResponses = getAllCorrectResponses;
40
- //# sourceMappingURL=utils.js.map
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZm9yRWFjaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyIsIl9yZWYiLCJjaG9pY2VzIiwiYWx0ZXJuYXRlUmVzcG9uc2UiLCJjb3JyZWN0QW5zd2VycyIsImZvckVhY2giLCJyZXNwQXJlYSIsImtleSIsImNob2ljZSIsImNvcnJlY3QiLCJwdXNoIiwidmFsdWUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9yRWFjaCBmcm9tICdsb2Rhc2gvZm9yRWFjaCc7XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzID0gKHsgY2hvaWNlcywgYWx0ZXJuYXRlUmVzcG9uc2UgfSkgPT4ge1xuICBhbHRlcm5hdGVSZXNwb25zZSA9IGFsdGVybmF0ZVJlc3BvbnNlIHx8IHt9O1xuICBjb25zdCBjb3JyZWN0QW5zd2VycyA9IHt9O1xuXG4gIGZvckVhY2goY2hvaWNlcywgKHJlc3BBcmVhLCBrZXkpID0+IHtcbiAgICBpZiAoIWNvcnJlY3RBbnN3ZXJzW2tleV0pIHtcbiAgICAgIGNvcnJlY3RBbnN3ZXJzW2tleV0gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAocmVzcEFyZWEpIHtcbiAgICAgIHJlc3BBcmVhLmZvckVhY2goKGNob2ljZSkgPT4ge1xuICAgICAgICBpZiAoY2hvaWNlLmNvcnJlY3QpIHtcbiAgICAgICAgICBjb3JyZWN0QW5zd2Vyc1trZXldLnB1c2goY2hvaWNlLnZhbHVlKTtcblxuICAgICAgICAgIGlmIChhbHRlcm5hdGVSZXNwb25zZVtrZXldKSB7XG4gICAgICAgICAgICBjb3JyZWN0QW5zd2Vyc1trZXldID0gWy4uLmNvcnJlY3RBbnN3ZXJzW2tleV0sIC4uLmFsdGVybmF0ZVJlc3BvbnNlW2tleV1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY29ycmVjdEFuc3dlcnM7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUFDLElBQUEsRUFBdUM7RUFBQSxJQUFqQ0MsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFBRUMsaUJBQWlCLEdBQUFGLElBQUEsQ0FBakJFLGlCQUFpQjtFQUNqRUEsaUJBQWlCLEdBQUdBLGlCQUFpQixJQUFJLENBQUMsQ0FBQztFQUMzQyxJQUFNQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0VBRXpCLElBQUFDLG1CQUFPLEVBQUNILE9BQU8sRUFBRSxVQUFDSSxRQUFRLEVBQUVDLEdBQUcsRUFBSztJQUNsQyxJQUFJLENBQUNILGNBQWMsQ0FBQ0csR0FBRyxDQUFDLEVBQUU7TUFDeEJILGNBQWMsQ0FBQ0csR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUMxQjtJQUVBLElBQUlELFFBQVEsRUFBRTtNQUNaQSxRQUFRLENBQUNELE9BQU8sQ0FBQyxVQUFDRyxNQUFNLEVBQUs7UUFDM0IsSUFBSUEsTUFBTSxDQUFDQyxPQUFPLEVBQUU7VUFDbEJMLGNBQWMsQ0FBQ0csR0FBRyxDQUFDLENBQUNHLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7VUFFdEMsSUFBSVIsaUJBQWlCLENBQUNJLEdBQUcsQ0FBQyxFQUFFO1lBQzFCSCxjQUFjLENBQUNHLEdBQUcsQ0FBQyxNQUFBSyxNQUFBLEtBQUFDLG1CQUFBLGFBQU9ULGNBQWMsQ0FBQ0csR0FBRyxDQUFDLE9BQUFNLG1CQUFBLGFBQUtWLGlCQUFpQixDQUFDSSxHQUFHLENBQUMsRUFBQztVQUMzRTtRQUNGO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPSCxjQUFjO0FBQ3ZCLENBQUM7QUFBQ1UsT0FBQSxDQUFBZCxzQkFBQSxHQUFBQSxzQkFBQSJ9
@@ -0,0 +1,11 @@
1
+ {
2
+ "hash": "1884587521",
3
+ "info": [
4
+ {
5
+ "pie": "@pie-element/inline-dropdown",
6
+ "version": {
7
+ "requested": "latest"
8
+ }
9
+ }
10
+ ]
11
+ }