@pie-element/inline-dropdown 3.10.6-next.2 → 3.10.6-next.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,70 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.10.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.5...@pie-element/inline-dropdown@3.10.6) (2022-03-28)
7
+
8
+ **Note:** Version bump only for package @pie-element/inline-dropdown
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.10.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.4...@pie-element/inline-dropdown@3.10.5) (2022-03-22)
15
+
16
+ **Note:** Version bump only for package @pie-element/inline-dropdown
17
+
18
+
19
+
20
+
21
+
22
+ ## [3.10.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.3...@pie-element/inline-dropdown@3.10.4) (2022-03-08)
23
+
24
+ **Note:** Version bump only for package @pie-element/inline-dropdown
25
+
26
+
27
+
28
+
29
+
30
+ ## [3.10.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.2...@pie-element/inline-dropdown@3.10.3) (2022-03-08)
31
+
32
+ **Note:** Version bump only for package @pie-element/inline-dropdown
33
+
34
+
35
+
36
+
37
+
38
+ ## [3.10.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.1...@pie-element/inline-dropdown@3.10.2) (2022-02-21)
39
+
40
+ **Note:** Version bump only for package @pie-element/inline-dropdown
41
+
42
+
43
+
44
+
45
+
46
+ ## [3.10.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.0...@pie-element/inline-dropdown@3.10.1) (2022-02-04)
47
+
48
+ **Note:** Version bump only for package @pie-element/inline-dropdown
49
+
50
+
51
+
52
+
53
+
54
+ # [3.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.9.9...@pie-element/inline-dropdown@3.10.0) (2022-01-24)
55
+
56
+
57
+ ### Bug Fixes
58
+
59
+ * use preview prompt for prompt, rationale and teacher instructions to fix table rendering PD-1456 ([f330601](https://github.com/pie-framework/pie-elements/commit/f3306019a2d1c8ce3e2783823dfe9ef0a0394e4f))
60
+
61
+
62
+ ### Features
63
+
64
+ * **drag-in-the-blank, inline-dropdown:** move rationale after the item content PD-1379 ([fd71c58](https://github.com/pie-framework/pie-elements/commit/fd71c5853bdd63b31a746241dd5649e5de051300))
65
+
66
+
67
+
68
+
69
+
6
70
  ## [3.9.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.9.8...@pie-element/inline-dropdown@3.9.9) (2022-01-10)
7
71
 
8
72
  **Note:** Version bump only for package @pie-element/inline-dropdown
@@ -3,6 +3,62 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.6.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.14...@pie-element/inline-dropdown-configure@3.6.15) (2022-03-28)
7
+
8
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.6.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.13...@pie-element/inline-dropdown-configure@3.6.14) (2022-03-22)
15
+
16
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
17
+
18
+
19
+
20
+
21
+
22
+ ## [3.6.13](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.12...@pie-element/inline-dropdown-configure@3.6.13) (2022-03-08)
23
+
24
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
25
+
26
+
27
+
28
+
29
+
30
+ ## [3.6.12](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.11...@pie-element/inline-dropdown-configure@3.6.12) (2022-03-08)
31
+
32
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
33
+
34
+
35
+
36
+
37
+
38
+ ## [3.6.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.10...@pie-element/inline-dropdown-configure@3.6.11) (2022-02-21)
39
+
40
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
41
+
42
+
43
+
44
+
45
+
46
+ ## [3.6.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.9...@pie-element/inline-dropdown-configure@3.6.10) (2022-02-04)
47
+
48
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
49
+
50
+
51
+
52
+
53
+
54
+ ## [3.6.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.8...@pie-element/inline-dropdown-configure@3.6.9) (2022-01-24)
55
+
56
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
57
+
58
+
59
+
60
+
61
+
6
62
  ## [3.6.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.7...@pie-element/inline-dropdown-configure@3.6.8) (2022-01-10)
7
63
 
8
64
  **Note:** Version bump only for package @pie-element/inline-dropdown-configure
@@ -155,12 +155,6 @@ var styles = function styles(theme) {
155
155
  },
156
156
  panelDetails: {
157
157
  display: 'block'
158
- },
159
- errorText: {
160
- fontSize: '12px',
161
- color: 'red',
162
- paddingTop: '5px',
163
- marginTop: '8px'
164
158
  }
165
159
  };
166
160
  };
@@ -445,11 +439,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
445
439
  promptEnabled = _ref3.promptEnabled,
446
440
  teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
447
441
  choices = _ref3.choices,
448
- spellCheckEnabled = _ref3.spellCheckEnabled,
449
- errors = _ref3.errors;
450
-
451
- var _ref4 = errors || {},
452
- responseAreasError = _ref4.responseAreasError;
442
+ spellCheckEnabled = _ref3.spellCheckEnabled;
453
443
 
454
444
  var renderChoiceRationale = function renderChoiceRationale() {
455
445
  return (Object.keys(choices) || []).map(function (key) {
@@ -560,9 +550,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
560
550
  spellCheck: spellCheckEnabled
561
551
  })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
562
552
  className: classes.text
563
- }, "Define Template, Choices, and Correct Responses"), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
564
- className: classes.errorText
565
- }, responseAreasError), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
553
+ }, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
566
554
  open: dialog.open,
567
555
  title: dialog.message,
568
556
  onCancel: dialog.onCancel,
@@ -605,8 +593,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
605
593
  imageSupport: imageSupport,
606
594
  onBlur: this.onBlur,
607
595
  disabled: false,
608
- highlightShape: false,
609
- error: responseAreasError
596
+ highlightShape: false
610
597
  }), /*#__PURE__*/_react["default"].createElement("br", null), choiceRationaleEnabled && renderChoiceRationale())));
611
598
  }
612
599
  }]);
@@ -629,4 +616,4 @@ exports.Main = Main;
629
616
  var Styled = (0, _styles.withStyles)(styles)(Main);
630
617
  var _default = Styled;
631
618
  exports["default"] = _default;
632
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJtYXJrdXAiLCJtaW5IZWlnaHQiLCJkZXNpZ24iLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwidGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJjb2xvciIsInJhdGlvbmFsZUxhYmVsIiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJyYXRpb25hbGVDaG9pY2VzIiwibWFyZ2luVG9wIiwicGFuZWxEZXRhaWxzIiwiZXJyb3JUZXh0IiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJwcmVwYXJlVmFsIiwiaHRtbCIsInRtcCIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJpbm5lclRleHQiLCJNYWluIiwiZGlhbG9nIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwib25Nb2RlbENoYW5nZSIsInJhdGlvbmFsZSIsImluZGV4IiwiY2hvaWNlIiwiaW5kZXhPZkNob2ljZSIsImNob2ljZXMiLCJmaW5kSW5kZXgiLCJlbGVtIiwibGFiZWwiLCJzcGxpY2UiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic2xhdGVNYXJrdXAiLCJjYWxsYmFjayIsInNldFN0YXRlIiwibWVzc2FnZSIsInJlc3BBcmVhQ2hvaWNlcyIsInN0YXRlIiwiZG9tTWFya3VwIiwiYWxsUmVzcEFyZWFzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbENob2ljZXMiLCJmb3JFYWNoIiwiZWwiLCJkYXRhc2V0IiwiZXhpc3RpbmdSZXNwQXJlYUNob2ljZXMiLCJvYmoiLCJrZXkiLCJuZXdSZXNwQXJlYUNob2ljZXMiLCJzaG91bGRXYXJuIiwibmV3Q2hvaWNlcyIsImxlbmd0aCIsImZpbmQiLCJjIiwiY29ycmVjdCIsInJlbW92ZSIsInIiLCJtYXAiLCJwYXJzZUludCIsImZpbHRlciIsInZhbCIsImlzTmFOIiwicHVzaCIsInJlc3BJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjaCIsIm5Qcm9wcyIsIm5ld1N0YXRlIiwiZG9tTm9kZSIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJwYXJ0aWFsU2NvcmluZyIsImxvY2tDaG9pY2VPcmRlciIsImNob2ljZVJhdGlvbmFsZSIsInNwZWxsQ2hlY2siLCJyYXRpb25hbGVFbmFibGVkIiwiY2hvaWNlUmF0aW9uYWxlRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwiZXJyb3JzIiwicmVzcG9uc2VBcmVhc0Vycm9yIiwicmVuZGVyQ2hvaWNlUmF0aW9uYWxlIiwiT2JqZWN0Iiwia2V5cyIsIl9faHRtbCIsIm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCIsInRvb2xiYXJPcHRzIiwidG9vbGJhckVkaXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJTZXR0aW5ncyIsIlByb3BlcnRpZXMiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwib25Qcm9tcHRDaGFuZ2VkIiwib25SYXRpb25hbGVDaGFuZ2VkIiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwib3B0aW9ucyIsImR1cGxpY2F0ZXMiLCJyZXNwQXJlYVRvb2xiYXIiLCJub2RlIiwib25Ub29sYmFyRG9uZSIsIm9uQWRkQ2hvaWNlIiwib25DaGVjayIsIm9uUmVtb3ZlQ2hvaWNlIiwiZGF0YSIsImdldCIsIm9uU2VsZWN0Q2hvaWNlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwic2hhcGUiLCJhZGQiLCJTdHlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxNQUFSLEdBQTBCQyxrQkFBMUIsQ0FBUUQsTUFBUjtBQUFBLElBQWdCRSxLQUFoQixHQUEwQkQsa0JBQTFCLENBQWdCQyxLQUFoQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUdDLElBQUgsUUFBR0EsSUFBSDtBQUFBLE1BQVNDLFFBQVQsUUFBU0EsUUFBVDtBQUFBLE1BQW1CQyxJQUFuQixRQUFtQkEsSUFBbkI7QUFBQSxNQUF5QkMsS0FBekIsUUFBeUJBLEtBQXpCO0FBQUEsc0JBQ2pCLGdDQUFDLGtCQUFEO0FBQVEsSUFBQSxJQUFJLEVBQUVIO0FBQWQsa0JBQ0UsZ0NBQUMsdUJBQUQsUUFBY0csS0FBZCxDQURGLGVBRUUsZ0NBQUMseUJBQUQsUUFDR0QsSUFBSSxpQkFDSCxnQ0FBQyxrQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQSxJQUFqQjtBQUF1QixJQUFBLEtBQUssRUFBQztBQUE3QixVQUZKLEVBTUdELFFBQVEsaUJBQ1AsZ0NBQUMsa0JBQUQ7QUFBUSxJQUFBLE9BQU8s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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwsIHsgQUxMX1BMVUdJTlMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyLCBsYXlvdXQsIHNldHRpbmdzIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZyc7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBFeHBhbnNpb25QYW5lbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9FeHBhbnNpb25QYW5lbCc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsU3VtbWFyeSc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxEZXRhaWxzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsRGV0YWlscyc7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0V4cGFuZE1vcmUnO1xuaW1wb3J0IElubGluZURyb3Bkb3duVG9vbGJhciBmcm9tICcuL2lubGluZS1kcm9wZG93bi10b29sYmFyJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCB9ID0gc2V0dGluZ3M7XG5cbmNvbnN0IEluZm9EaWFsb2cgPSAoeyBvcGVuLCBvbkNhbmNlbCwgb25PaywgdGl0bGUgfSkgPT4gKFxuICA8RGlhbG9nIG9wZW49e29wZW59PlxuICAgIDxEaWFsb2dUaXRsZT57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgIHtvbk9rICYmIChcbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbk9rfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBPS1xuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7b25DYW5jZWwgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2FuY2VsfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgPC9EaWFsb2c+XG4pO1xuXG5JbmZvRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBwcm9tcHRIb2xkZXI6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBtYXJrdXA6IHtcbiAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICBtaW5IZWlnaHQ6ICcxMDBweCdcbiAgICB9XG4gIH0sXG4gIGRlc2lnbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMlxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDBcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCdcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgbGluZUhlaWdodDogJzE5cHgnLFxuICAgIGNvbG9yOiAnIzQ5NUI4RidcbiAgfSxcbiAgcmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgcmF0aW9uYWxlQ2hvaWNlczoge1xuICAgIG1hcmdpblRvcDogJzE2cHgnXG4gIH0sXG4gIHBhbmVsRGV0YWlsczoge1xuICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LFxuICBlcnJvclRleHQ6IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAncmVkJyxcbiAgICBwYWRkaW5nVG9wOiAnNXB4JyxcbiAgICBtYXJnaW5Ub3A6ICc4cHgnXG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVFbGVtZW50RnJvbUhUTUwgPSBodG1sU3RyaW5nID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgZGl2LmlubmVySFRNTCA9IChodG1sU3RyaW5nIHx8ICcnKS50cmltKCk7XG5cbiAgcmV0dXJuIGRpdjtcbn07XG5cbmNvbnN0IHByZXBhcmVWYWwgPSBodG1sID0+IHtcbiAgY29uc3QgdG1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cbiAgdG1wLmlubmVySFRNTCA9IGh0bWw7XG5cbiAgY29uc3QgdmFsdWUgPSB0bXAudGV4dENvbnRlbnQgfHwgdG1wLmlubmVyVGV4dCB8fCAnJztcblxuICByZXR1cm4gdmFsdWUudHJpbSgpO1xufTtcblxuZXhwb3J0IGNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVTaWRlUGFuZWw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uTW9kZWxDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGltYWdlU3VwcG9ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGFkZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIGRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgZGlhbG9nOiB7XG4gICAgICBvcGVuOiBmYWxzZVxuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbDogeyBjaG9pY2VzIH1cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIHRoaXMuc2V0U3RhdGUoeyByZXNwQXJlYUNob2ljZXM6IGNsb25lRGVlcChjaG9pY2VzKSB9KTtcbiAgfVxuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5Qcm9wcykge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge307XG5cbiAgICBpZiAoXG4gICAgICAhaXNFcXVhbChuUHJvcHMubW9kZWwuY2hvaWNlcywgdGhpcy5wcm9wcy5tb2RlbC5jaG9pY2VzKSB8fFxuICAgICAgIWlzRXF1YWwoblByb3BzLm1vZGVsLmNob2ljZXMsIHRoaXMuc3RhdGUucmVzcEFyZWFDaG9pY2VzKVxuICAgICkge1xuICAgICAgbmV3U3RhdGUucmVzcEFyZWFDaG9pY2VzID0gY2xvbmVEZWVwKG5Qcm9wcy5tb2RlbC5jaG9pY2VzKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzRW1wdHkobmV3U3RhdGUpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBkb21Ob2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG5cbiAgICByZW5kZXJNYXRoKGRvbU5vZGUpO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZSA9IG5ld1ZhbCA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAuLi50aGlzLnByb3BzLm1vZGVsLFxuICAgICAgLi4ubmV3VmFsXG4gICAgfSk7XG4gIH07XG5cbiAgb25Qcm9tcHRDaGFuZ2VkID0gcHJvbXB0ID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBwcm9tcHQgfSk7XG4gIH07XG5cbiAgb25SYXRpb25hbGVDaGFuZ2VkID0gcmF0aW9uYWxlID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyByYXRpb25hbGUgfSk7XG4gIH07XG5cbiAgb25DaG9pY2VSYXRpb25hbGVDaGFuZ2VkID0gKGluZGV4LCBjaG9pY2UpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGluZGV4T2ZDaG9pY2UgPSBtb2RlbC5jaG9pY2VzICYmIG1vZGVsLmNob2ljZXNbaW5kZXhdICYmIG1vZGVsLmNob2ljZXNbaW5kZXhdXG4gICAgICAuZmluZEluZGV4KGVsZW0gPT4gZWxlbS5sYWJlbCA9PT0gY2hvaWNlLmxhYmVsICYmIGVsZW0udmFsdWUgPT09IGNob2ljZS52YWx1ZSk7XG5cbiAgICBtb2RlbC5jaG9pY2VzW2luZGV4XSAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XS5zcGxpY2UoaW5kZXhPZkNob2ljZSwgMSwgY2hvaWNlKTtcblxuICAgIHRoaXMub25Nb2RlbENoYW5nZShtb2RlbCk7XG4gIH07XG5cbiAgb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCA9IHRlYWNoZXJJbnN0cnVjdGlvbnMgPT4ge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IHRlYWNoZXJJbnN0cnVjdGlvbnMgfSk7XG4gIH07XG5cbiAgb25NYXJrdXBDaGFuZ2VkID0gc2xhdGVNYXJrdXAgPT4ge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IHNsYXRlTWFya3VwIH0pO1xuICB9O1xuXG4gIG9uQ2hlY2sgPSBjYWxsYmFjayA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkaWFsb2c6IHtcbiAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnUmVzcG9uc2UgYXJlYXMgd2l0aCB1bmRlciAyIG9wdGlvbnMgb3Igd2l0aCBubyBjb3JyZWN0IGFuc3dlcnMgd2lsbCBiZSBkaXNjYXJkZWQnLFxuICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25DYW5jZWw6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIG9uQ2hhbmdlID0gbWFya3VwID0+IHtcbiAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBkb21NYXJrdXAgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwobWFya3VwKTtcbiAgICBjb25zdCBhbGxSZXNwQXJlYXMgPSBkb21NYXJrdXAucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICdbZGF0YS10eXBlPVwiaW5saW5lX2Ryb3Bkb3duXCJdJ1xuICAgICk7XG5cbiAgICBjb25zdCBhbGxDaG9pY2VzID0ge307XG5cbiAgICBhbGxSZXNwQXJlYXMuZm9yRWFjaChlbCA9PiB7XG4gICAgICBhbGxDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdID0gZWwuZGF0YXNldC52YWx1ZSB8fCAnJztcbiAgICB9KTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzID0gcmVkdWNlKFxuICAgICAgcmVzcEFyZWFDaG9pY2VzLFxuICAgICAgKG9iaiwgY2hvaWNlcywga2V5KSA9PiB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoYWxsQ2hvaWNlc1trZXldKSkge1xuICAgICAgICAgIG9ialtrZXldID0gcmVzcEFyZWFDaG9pY2VzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IG5ld1Jlc3BBcmVhQ2hvaWNlcyA9IHt9O1xuICAgIGxldCBzaG91bGRXYXJuID0gZmFsc2U7XG5cbiAgICBhbGxSZXNwQXJlYXMuZm9yRWFjaCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuZXdDaG9pY2VzID0gZXhpc3RpbmdSZXNwQXJlYUNob2ljZXNbZWwuZGF0YXNldC5pbmRleF0gfHwgW107XG5cbiAgICAgIGlmIChuZXdDaG9pY2VzLmxlbmd0aCA8IDIgfHwgIW5ld0Nob2ljZXMuZmluZChjID0+IGMuY29ycmVjdCkpIHtcbiAgICAgICAgZWwucmVtb3ZlKCk7XG4gICAgICAgIHNob3VsZFdhcm4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UmVzcEFyZWFDaG9pY2VzW2luZGV4XSA9XG4gICAgICAgICAgZXhpc3RpbmdSZXNwQXJlYUNob2ljZXNbZWwuZGF0YXNldC5pbmRleF0gfHwgW107XG4gICAgICAgIGVsLmRhdGFzZXQuaW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzaG91bGRXYXJuKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgJ1Jlc3BvbnNlIGFyZWFzIHdpdGggdW5kZXIgMiBvcHRpb25zIG9yIHdpdGggbm8gY29ycmVjdCBhbnN3ZXJzIHdpbGwgYmUgZGlzY2FyZGVkJyxcbiAgICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgY2hvaWNlczogY2xvbmVEZWVwKG5ld1Jlc3BBcmVhQ2hvaWNlcyksXG4gICAgICAgICAgICAgICAgICBzbGF0ZU1hcmt1cDogZG9tTWFya3VwLmlubmVySFRNTFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DYW5jZWw6ICgpID0+XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh7XG4gICAgICAgIGNob2ljZXM6IGNsb25lRGVlcChuZXdSZXNwQXJlYUNob2ljZXMpLFxuICAgICAgICBzbGF0ZU1hcmt1cDogZG9tTWFya3VwLmlubmVySFRNTFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIG9uQWRkQ2hvaWNlID0gKGluZGV4LCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKCFyZXNwQXJlYUNob2ljZXNbaW5kZXhdKSB7XG4gICAgICByZXNwQXJlYUNob2ljZXNbaW5kZXhdID0gW107XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0gfHwgW10pLmZpbmQoXG4gICAgICAgIHIgPT4gcHJlcGFyZVZhbChyLmxhYmVsKSA9PT0gcHJlcGFyZVZhbChsYWJlbClcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6ICdEdXBsaWNhdGUgYW5zd2VycyBhcmUgbm90IGFsbG93ZWQuJyxcbiAgICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gKHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0gJiYgbWF4KHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0ubWFwKGMgPT4gcGFyc2VJbnQoYy52YWx1ZSkpLmZpbHRlcih2YWwgPT4gIWlzTmFOKHZhbCkpKSkgfHwgMDtcblxuICAgIHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0ucHVzaCh7XG4gICAgICBsYWJlbCxcbiAgICAgIHZhbHVlOiBgJHt2YWx1ZSArIDF9YCxcbiAgICAgIGNvcnJlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBjaG9pY2VzOiBjbG9uZURlZXAocmVzcEFyZWFDaG9pY2VzKSB9KTtcbiAgfTtcblxuICBvblJlbW92ZUNob2ljZSA9IChyZXNwSW5kZXgsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgb25TZWxlY3RDaG9pY2UgPSAocmVzcEluZGV4LCBzZWxlY3RlZEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XSA9IHJlc3BBcmVhQ2hvaWNlc1tyZXNwSW5kZXhdLm1hcChcbiAgICAgIChjaCwgaW5kZXgpID0+ICh7IC4uLmNoLCBjb3JyZWN0OiBpbmRleCA9PT0gc2VsZWN0ZWRJbmRleCB9KVxuICAgICk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBjaG9pY2VzOiBjbG9uZURlZXAocmVzcEFyZWFDaG9pY2VzKSB9KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBkaWFsb2cgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NlcyxcbiAgICAgIG1vZGVsLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICBpbWFnZVN1cHBvcnRcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBwcm9tcHQgPSB7fSxcbiAgICAgIHBhcnRpYWxTY29yaW5nID0ge30sXG4gICAgICBsb2NrQ2hvaWNlT3JkZXIgPSB7fSxcbiAgICAgIHJhdGlvbmFsZSA9IHt9LFxuICAgICAgY2hvaWNlUmF0aW9uYWxlID0ge30sXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0ge30sXG4gICAgICBzcGVsbENoZWNrID0ge30sXG4gICAgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gICAgY29uc3Qge1xuICAgICAgcmF0aW9uYWxlRW5hYmxlZCxcbiAgICAgIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQsXG4gICAgICBwcm9tcHRFbmFibGVkLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQsXG4gICAgICBjaG9pY2VzLFxuICAgICAgc3BlbGxDaGVja0VuYWJsZWQsXG4gICAgICBlcnJvcnNcbiAgICB9ID1cbiAgICBtb2RlbCB8fCB7fTtcbiAgICBjb25zdCB7IHJlc3BvbnNlQXJlYXNFcnJvciB9ID0gZXJyb3JzIHx8IHt9O1xuXG4gICAgY29uc3QgcmVuZGVyQ2hvaWNlUmF0aW9uYWxlID0gKCkgPT4gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5tYXAoa2V5ID0+XG4gICAgICA8ZGl2IGtleT17a2V5fSBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlQ2hvaWNlc30+XG4gICAgICAgIDxFeHBhbnNpb25QYW5lbD5cbiAgICAgICAgICA8RXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGV4cGFuZEljb249ezxFeHBhbmRNb3JlSWNvbi8+fT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0fT5cbiAgICAgICAgICAgICAge2BSYXRpb25hbGUgZm9yIHJlc3BvbnNlIGFyZWEgIyR7cGFyc2VJbnQoa2V5KSArIDF9YH1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0V4cGFuc2lvblBhbmVsU3VtbWFyeT5cbiAgICAgICAgICA8RXhwYW5zaW9uUGFuZWxEZXRhaWxzIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbERldGFpbHN9PlxuICAgICAgICAgICAgeyhjaG9pY2VzW2tleV0gfHwgW10pLm1hcChjaG9pY2UgPT5cbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtjaG9pY2UubGFiZWx9XG4gICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJhdGlvbmFsZUxhYmVsfVxuICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke3JhdGlvbmFsZS5sYWJlbH0gZm9yICR7Y2hvaWNlLmxhYmVsfSAoJHtjaG9pY2UuY29ycmVjdCA/ICdjb3JyZWN0JyA6ICdpbmNvcnJlY3QnfSlgXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17Y2hvaWNlLnJhdGlvbmFsZSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2MgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNob2ljZVJhdGlvbmFsZUNoYW5nZWQoa2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZTogY1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9FeHBhbnNpb25QYW5lbERldGFpbHM+XG4gICAgICAgIDwvRXhwYW5zaW9uUGFuZWw+XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICBjb25zdCB0b29sYmFyT3B0cyA9IHt9O1xuXG4gICAgc3dpdGNoIChtb2RlbC50b29sYmFyRWRpdG9yUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRvb2xiYXJPcHRzLnBvc2l0aW9uID0gJ3RvcCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAnYm90dG9tJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2lnbn0+XG4gICAgICAgIDxsYXlvdXQuQ29uZmlnTGF5b3V0XG4gICAgICAgICAgc2V0dGluZ3M9e1xuICAgICAgICAgICAgPFBhbmVsXG4gICAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj17Y29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgb25DaGFuZ2VNb2RlbD17bW9kZWwgPT4gdGhpcy5vbk1vZGVsQ2hhbmdlKG1vZGVsKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2VDb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9uID0+XG4gICAgICAgICAgICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZChjb25maWd1cmF0aW9uLCB0cnVlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGdyb3Vwcz17e1xuICAgICAgICAgICAgICAgIFNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZzpcbiAgICAgICAgICAgICAgICAgICAgcGFydGlhbFNjb3Jpbmcuc2V0dGluZ3MgJiYgdG9nZ2xlKHBhcnRpYWxTY29yaW5nLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIGxvY2tDaG9pY2VPcmRlcjpcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Nob2ljZU9yZGVyLnNldHRpbmdzICYmIHRvZ2dsZShsb2NrQ2hvaWNlT3JkZXIubGFiZWwpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgICB0b2dnbGUodGVhY2hlckluc3RydWN0aW9ucy5sYWJlbCksXG4gICAgICAgICAgICAgICAgICByYXRpb25hbGVFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICByYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKHJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBjaG9pY2VSYXRpb25hbGVFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VSYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKGNob2ljZVJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBwcm9tcHRFbmFibGVkOiBwcm9tcHQuc2V0dGluZ3MgJiYgdG9nZ2xlKHByb21wdC5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHNwZWxsQ2hlY2subGFiZWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3RlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9e3RlYWNoZXJJbnN0cnVjdGlvbnMubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnMgfHwgJyd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICBub25FbXB0eT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Byb21wdEVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBsYWJlbD17cHJvbXB0LmxhYmVsfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblByb21wdENoYW5nZWR9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cmF0aW9uYWxlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGxhYmVsPXtyYXRpb25hbGUubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnJhdGlvbmFsZSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUmF0aW9uYWxlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0fT5cbiAgICAgICAgICAgICAgRGVmaW5lIFRlbXBsYXRlLCBDaG9pY2VzLCBhbmQgQ29ycmVjdCBSZXNwb25zZXNcbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIHtyZXNwb25zZUFyZWFzRXJyb3IgJiYgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3JUZXh0fT57cmVzcG9uc2VBcmVhc0Vycm9yfTwvZGl2Pn1cbiAgICAgICAgICAgIDxJbmZvRGlhbG9nXG4gICAgICAgICAgICAgIG9wZW49e2RpYWxvZy5vcGVufVxuICAgICAgICAgICAgICB0aXRsZT17ZGlhbG9nLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtkaWFsb2cub25DYW5jZWx9XG4gICAgICAgICAgICAgIG9uT2s9e2RpYWxvZy5vbk9rfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgYWN0aXZlUGx1Z2lucz17QUxMX1BMVUdJTlN9XG4gICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt7IHBvc2l0aW9uOiAndG9wJyB9fVxuICAgICAgICAgICAgICByZXNwb25zZUFyZWFQcm9wcz17e1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbmxpbmUtZHJvcGRvd24nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXM6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc3BBcmVhVG9vbGJhcjogKG5vZGUsIHZhbHVlLCBvblRvb2xiYXJEb25lKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZURyb3Bkb3duVG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgIG9uQWRkQ2hvaWNlPXt0aGlzLm9uQWRkQ2hvaWNlfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hlY2s9e3RoaXMub25DaGVja31cbiAgICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUNob2ljZT17aW5kZXggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmVDaG9pY2Uobm9kZS5kYXRhLmdldCgnaW5kZXgnKSwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q2hvaWNlPXtpbmRleCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdENob2ljZShub2RlLmRhdGEuZ2V0KCdpbmRleCcpLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZT17bm9kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgb25Ub29sYmFyRG9uZT17b25Ub29sYmFyRG9uZX1cbiAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXtyZXNwQXJlYUNob2ljZXNbbm9kZS5kYXRhLmdldCgnaW5kZXgnKV19XG4gICAgICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5tYXJrdXB9XG4gICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwuc2xhdGVNYXJrdXAgfHwgJyd9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBoaWdobGlnaHRTaGFwZT17ZmFsc2V9XG4gICAgICAgICAgICAgIGVycm9yPXtyZXNwb25zZUFyZWFzRXJyb3J9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7Y2hvaWNlUmF0aW9uYWxlRW5hYmxlZCAmJiByZW5kZXJDaG9pY2VSYXRpb25hbGUoKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9sYXlvdXQuQ29uZmlnTGF5b3V0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBTdHlsZWQgPSB3aXRoU3R5bGVzKHN0eWxlcykoTWFpbik7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZDtcbiJdfQ==
619
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJtYXJrdXAiLCJtaW5IZWlnaHQiLCJkZXNpZ24iLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwidGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJjb2xvciIsInJhdGlvbmFsZUxhYmVsIiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJyYXRpb25hbGVDaG9pY2VzIiwibWFyZ2luVG9wIiwicGFuZWxEZXRhaWxzIiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJwcmVwYXJlVmFsIiwiaHRtbCIsInRtcCIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJpbm5lclRleHQiLCJNYWluIiwiZGlhbG9nIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwib25Nb2RlbENoYW5nZSIsInJhdGlvbmFsZSIsImluZGV4IiwiY2hvaWNlIiwiaW5kZXhPZkNob2ljZSIsImNob2ljZXMiLCJmaW5kSW5kZXgiLCJlbGVtIiwibGFiZWwiLCJzcGxpY2UiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic2xhdGVNYXJrdXAiLCJjYWxsYmFjayIsInNldFN0YXRlIiwibWVzc2FnZSIsInJlc3BBcmVhQ2hvaWNlcyIsInN0YXRlIiwiZG9tTWFya3VwIiwiYWxsUmVzcEFyZWFzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbENob2ljZXMiLCJmb3JFYWNoIiwiZWwiLCJkYXRhc2V0IiwiZXhpc3RpbmdSZXNwQXJlYUNob2ljZXMiLCJvYmoiLCJrZXkiLCJuZXdSZXNwQXJlYUNob2ljZXMiLCJzaG91bGRXYXJuIiwibmV3Q2hvaWNlcyIsImxlbmd0aCIsImZpbmQiLCJjIiwiY29ycmVjdCIsInJlbW92ZSIsInIiLCJtYXAiLCJwYXJzZUludCIsImZpbHRlciIsInZhbCIsImlzTmFOIiwicHVzaCIsInJlc3BJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjaCIsIm5Qcm9wcyIsIm5ld1N0YXRlIiwiZG9tTm9kZSIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJwYXJ0aWFsU2NvcmluZyIsImxvY2tDaG9pY2VPcmRlciIsImNob2ljZVJhdGlvbmFsZSIsInNwZWxsQ2hlY2siLCJyYXRpb25hbGVFbmFibGVkIiwiY2hvaWNlUmF0aW9uYWxlRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwicmVuZGVyQ2hvaWNlUmF0aW9uYWxlIiwiT2JqZWN0Iiwia2V5cyIsIl9faHRtbCIsIm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCIsInRvb2xiYXJPcHRzIiwidG9vbGJhckVkaXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJTZXR0aW5ncyIsIlByb3BlcnRpZXMiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwib25Qcm9tcHRDaGFuZ2VkIiwib25SYXRpb25hbGVDaGFuZ2VkIiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwib3B0aW9ucyIsImR1cGxpY2F0ZXMiLCJyZXNwQXJlYVRvb2xiYXIiLCJub2RlIiwib25Ub29sYmFyRG9uZSIsIm9uQWRkQ2hvaWNlIiwib25DaGVjayIsIm9uUmVtb3ZlQ2hvaWNlIiwiZGF0YSIsImdldCIsIm9uU2VsZWN0Q2hvaWNlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwic2hhcGUiLCJhZGQiLCJTdHlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxNQUFSLEdBQTBCQyxrQkFBMUIsQ0FBUUQsTUFBUjtBQUFBLElBQWdCRSxLQUFoQixHQUEwQkQsa0JBQTFCLENBQWdCQyxLQUFoQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUdDLElBQUgsUUFBR0EsSUFBSDtBQUFBLE1BQVNDLFFBQVQsUUFBU0EsUUFBVDtBQUFBLE1BQW1CQyxJQUFuQixRQUFtQkEsSUFBbkI7QUFBQSxNQUF5QkMsS0FBekIsUUFBeUJBLEtBQXpCO0FBQUEsc0JBQ2pCLGdDQUFDLGtCQUFEO0FBQVEsSUFBQSxJQUFJLEVBQUVIO0FBQWQsa0JBQ0UsZ0NBQUMsdUJBQUQsUUFBY0csS0FBZCxDQURGLGVBRUUsZ0NBQUMseUJBQUQsUUFDR0QsSUFBSSxpQkFDSCxnQ0FBQyxrQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQSxJQUFqQjtBQUF1QixJQUFBLEtBQUssRUFBQztBQUE3QixVQUZKLEVBTUdELFFBQVEsaUJBQ1AsZ0NBQUMsa0JBQUQ7QUFBUSxJQUFBLE9BQU8sRUFBRUEsUUFBakI7QUFBMkIsSUFBQSxLQUFLLEVBQUM7QUFBakMsY0FQ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O2lDQUFuQmxHLEksZUFDUTtBQUNqQnlELEVBQUFBLGFBQWEsRUFBRXZHLHNCQUFVaUosTUFBVixDQUFpQkMsVUFEZjtBQUVqQi9GLEVBQUFBLEtBQUssRUFBRW5ELHNCQUFVaUosTUFBVixDQUFpQkMsVUFGUDtBQUdqQkMsRUFBQUEsZ0JBQWdCLEVBQUVuSixzQkFBVUMsSUFIWDtBQUlqQmlELEVBQUFBLGNBQWMsRUFBRWxELHNCQUFVRSxJQUFWLENBQWVnSixVQUpkO0FBS2pCMUMsRUFBQUEsc0JBQXNCLEVBQUV4RyxzQkFBVUUsSUFBVixDQUFlZ0osVUFMdEI7QUFNakI1QyxFQUFBQSxPQUFPLEVBQUV0RyxzQkFBVWlKLE1BQVYsQ0FBaUJDLFVBTlQ7QUFPakJ6QyxFQUFBQSxZQUFZLEVBQUV6RyxzQkFBVW9KLEtBQVYsQ0FBZ0I7QUFDNUJDLElBQUFBLEdBQUcsRUFBRXJKLHNCQUFVRSxJQUFWLENBQWVnSixVQURRO0FBRTVCLGNBQVFsSixzQkFBVUUsSUFBVixDQUFlZ0o7QUFGSyxHQUFoQjtBQVBHLEM7QUFtZHJCLElBQU1JLE1BQU0sR0FBRyx3QkFBV2xKLE1BQVgsRUFBbUIwQyxJQUFuQixDQUFmO2VBRWV3RyxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwsIHsgQUxMX1BMVUdJTlMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyLCBsYXlvdXQsIHNldHRpbmdzIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZyc7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBFeHBhbnNpb25QYW5lbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9FeHBhbnNpb25QYW5lbCc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsU3VtbWFyeSc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxEZXRhaWxzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsRGV0YWlscyc7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0V4cGFuZE1vcmUnO1xuaW1wb3J0IElubGluZURyb3Bkb3duVG9vbGJhciBmcm9tICcuL2lubGluZS1kcm9wZG93bi10b29sYmFyJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCB9ID0gc2V0dGluZ3M7XG5cbmNvbnN0IEluZm9EaWFsb2cgPSAoeyBvcGVuLCBvbkNhbmNlbCwgb25PaywgdGl0bGUgfSkgPT4gKFxuICA8RGlhbG9nIG9wZW49e29wZW59PlxuICAgIDxEaWFsb2dUaXRsZT57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgIHtvbk9rICYmIChcbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbk9rfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBPS1xuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7b25DYW5jZWwgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2FuY2VsfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgPC9EaWFsb2c+XG4pO1xuXG5JbmZvRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBwcm9tcHRIb2xkZXI6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBtYXJrdXA6IHtcbiAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICBtaW5IZWlnaHQ6ICcxMDBweCdcbiAgICB9XG4gIH0sXG4gIGRlc2lnbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMlxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDBcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCdcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgbGluZUhlaWdodDogJzE5cHgnLFxuICAgIGNvbG9yOiAnIzQ5NUI4RidcbiAgfSxcbiAgcmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgcmF0aW9uYWxlQ2hvaWNlczoge1xuICAgIG1hcmdpblRvcDogJzE2cHgnXG4gIH0sXG4gIHBhbmVsRGV0YWlsczoge1xuICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRWxlbWVudEZyb21IVE1MID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSAoaHRtbFN0cmluZyB8fCAnJykudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5jb25zdCBwcmVwYXJlVmFsID0gaHRtbCA9PiB7XG4gIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXG4gIHRtcC5pbm5lckhUTUwgPSBodG1sO1xuXG4gIGNvbnN0IHZhbHVlID0gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XG5cbiAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBNYWluIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlU2lkZVBhbmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbk1vZGVsQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBpbWFnZVN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBkZWxldGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9KVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGRpYWxvZzoge1xuICAgICAgb3BlbjogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZWw6IHsgY2hvaWNlcyB9XG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgcmVzcEFyZWFDaG9pY2VzOiBjbG9uZURlZXAoY2hvaWNlcykgfSk7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuUHJvcHMpIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHt9O1xuXG4gICAgaWYgKFxuICAgICAgIWlzRXF1YWwoblByb3BzLm1vZGVsLmNob2ljZXMsIHRoaXMucHJvcHMubW9kZWwuY2hvaWNlcykgfHxcbiAgICAgICFpc0VxdWFsKG5Qcm9wcy5tb2RlbC5jaG9pY2VzLCB0aGlzLnN0YXRlLnJlc3BBcmVhQ2hvaWNlcylcbiAgICApIHtcbiAgICAgIG5ld1N0YXRlLnJlc3BBcmVhQ2hvaWNlcyA9IGNsb25lRGVlcChuUHJvcHMubW9kZWwuY2hvaWNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0VtcHR5KG5ld1N0YXRlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc3QgZG9tTm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuXG4gICAgcmVuZGVyTWF0aChkb21Ob2RlKTtcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UgPSBuZXdWYWwgPT4ge1xuICAgIHRoaXMucHJvcHMub25Nb2RlbENoYW5nZWQoe1xuICAgICAgLi4udGhpcy5wcm9wcy5tb2RlbCxcbiAgICAgIC4uLm5ld1ZhbFxuICAgIH0pO1xuICB9O1xuXG4gIG9uUHJvbXB0Q2hhbmdlZCA9IHByb21wdCA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcHJvbXB0IH0pO1xuICB9O1xuXG4gIG9uUmF0aW9uYWxlQ2hhbmdlZCA9IHJhdGlvbmFsZSA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcmF0aW9uYWxlIH0pO1xuICB9O1xuXG4gIG9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCA9IChpbmRleCwgY2hvaWNlKSA9PiB7XG4gICAgY29uc3QgeyBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmRleE9mQ2hvaWNlID0gbW9kZWwuY2hvaWNlcyAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XSAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XVxuICAgICAgLmZpbmRJbmRleChlbGVtID0+IGVsZW0ubGFiZWwgPT09IGNob2ljZS5sYWJlbCAmJiBlbGVtLnZhbHVlID09PSBjaG9pY2UudmFsdWUpO1xuXG4gICAgbW9kZWwuY2hvaWNlc1tpbmRleF0gJiYgbW9kZWwuY2hvaWNlc1tpbmRleF0uc3BsaWNlKGluZGV4T2ZDaG9pY2UsIDEsIGNob2ljZSk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zIH0pO1xuICB9O1xuXG4gIG9uTWFya3VwQ2hhbmdlZCA9IHNsYXRlTWFya3VwID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBzbGF0ZU1hcmt1cCB9KTtcbiAgfTtcblxuICBvbkNoZWNrID0gY2FsbGJhY2sgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGlhbG9nOiB7XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ1Jlc3BvbnNlIGFyZWFzIHdpdGggdW5kZXIgMiBvcHRpb25zIG9yIHdpdGggbm8gY29ycmVjdCBhbnN3ZXJzIHdpbGwgYmUgZGlzY2FyZGVkJyxcbiAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBvbkNoYW5nZSA9IG1hcmt1cCA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZG9tTWFya3VwID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKG1hcmt1cCk7XG4gICAgY29uc3QgYWxsUmVzcEFyZWFzID0gZG9tTWFya3VwLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnW2RhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiXSdcbiAgICApO1xuXG4gICAgY29uc3QgYWxsQ2hvaWNlcyA9IHt9O1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goZWwgPT4ge1xuICAgICAgYWxsQ2hvaWNlc1tlbC5kYXRhc2V0LmluZGV4XSA9IGVsLmRhdGFzZXQudmFsdWUgfHwgJyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBleGlzdGluZ1Jlc3BBcmVhQ2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIHJlc3BBcmVhQ2hvaWNlcyxcbiAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGFsbENob2ljZXNba2V5XSkpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHJlc3BBcmVhQ2hvaWNlc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBjb25zdCBuZXdSZXNwQXJlYUNob2ljZXMgPSB7fTtcbiAgICBsZXQgc2hvdWxkV2FybiA9IGZhbHNlO1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuXG4gICAgICBpZiAobmV3Q2hvaWNlcy5sZW5ndGggPCAyIHx8ICFuZXdDaG9pY2VzLmZpbmQoYyA9PiBjLmNvcnJlY3QpKSB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgICBzaG91bGRXYXJuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jlc3BBcmVhQ2hvaWNlc1tpbmRleF0gPVxuICAgICAgICAgIGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuICAgICAgICBlbC5kYXRhc2V0LmluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2hvdWxkV2Fybikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdSZXNwb25zZSBhcmVhcyB3aXRoIHVuZGVyIDIgb3B0aW9ucyBvciB3aXRoIG5vIGNvcnJlY3QgYW5zd2VycyB3aWxsIGJlIGRpc2NhcmRlZCcsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgIGNob2ljZXM6IGNsb25lRGVlcChuZXdSZXNwQXJlYUNob2ljZXMpLFxuICAgICAgICAgICAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoe1xuICAgICAgICBjaG9pY2VzOiBjbG9uZURlZXAobmV3UmVzcEFyZWFDaG9pY2VzKSxcbiAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBvbkFkZENob2ljZSA9IChpbmRleCwgbGFiZWwpID0+IHtcbiAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmICghcmVzcEFyZWFDaG9pY2VzW2luZGV4XSkge1xuICAgICAgcmVzcEFyZWFDaG9pY2VzW2luZGV4XSA9IFtdO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChyZXNwQXJlYUNob2ljZXNbaW5kZXhdIHx8IFtdKS5maW5kKFxuICAgICAgICByID0+IHByZXBhcmVWYWwoci5sYWJlbCkgPT09IHByZXBhcmVWYWwobGFiZWwpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiAnRHVwbGljYXRlIGFuc3dlcnMgYXJlIG5vdCBhbGxvd2VkLicsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IChyZXNwQXJlYUNob2ljZXNbaW5kZXhdICYmIG1heChyZXNwQXJlYUNob2ljZXNbaW5kZXhdLm1hcChjID0+IHBhcnNlSW50KGMudmFsdWUpKS5maWx0ZXIodmFsID0+ICFpc05hTih2YWwpKSkpIHx8IDA7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbaW5kZXhdLnB1c2goe1xuICAgICAgbGFiZWwsXG4gICAgICB2YWx1ZTogYCR7dmFsdWUgKyAxfWAsXG4gICAgICBjb3JyZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAocmVzcEluZGV4LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IGNob2ljZXM6IGNsb25lRGVlcChyZXNwQXJlYUNob2ljZXMpIH0pO1xuICB9O1xuXG4gIG9uU2VsZWN0Q2hvaWNlID0gKHJlc3BJbmRleCwgc2VsZWN0ZWRJbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0gPSByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XS5tYXAoXG4gICAgICAoY2gsIGluZGV4KSA9PiAoeyAuLi5jaCwgY29ycmVjdDogaW5kZXggPT09IHNlbGVjdGVkSW5kZXggfSlcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlhbG9nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzZXMsXG4gICAgICBtb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLFxuICAgICAgaW1hZ2VTdXBwb3J0XG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgcHJvbXB0ID0ge30sXG4gICAgICBwYXJ0aWFsU2NvcmluZyA9IHt9LFxuICAgICAgbG9ja0Nob2ljZU9yZGVyID0ge30sXG4gICAgICByYXRpb25hbGUgPSB7fSxcbiAgICAgIGNob2ljZVJhdGlvbmFsZSA9IHt9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgc3BlbGxDaGVjayA9IHt9LFxuICAgIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIHJhdGlvbmFsZUVuYWJsZWQsXG4gICAgICBjaG9pY2VSYXRpb25hbGVFbmFibGVkLFxuICAgICAgcHJvbXB0RW5hYmxlZCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIHNwZWxsQ2hlY2tFbmFibGVkXG4gICAgfSA9XG4gICAgbW9kZWwgfHwge307XG5cbiAgICBjb25zdCByZW5kZXJDaG9pY2VSYXRpb25hbGUgPSAoKSA9PiAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLm1hcChrZXkgPT5cbiAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT17Y2xhc3Nlcy5yYXRpb25hbGVDaG9pY2VzfT5cbiAgICAgICAgPEV4cGFuc2lvblBhbmVsPlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbFN1bW1hcnkgZXhwYW5kSWNvbj17PEV4cGFuZE1vcmVJY29uLz59PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICB7YFJhdGlvbmFsZSBmb3IgcmVzcG9uc2UgYXJlYSAjJHtwYXJzZUludChrZXkpICsgMX1gfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvRXhwYW5zaW9uUGFuZWxTdW1tYXJ5PlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbERldGFpbHMgY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsRGV0YWlsc30+XG4gICAgICAgICAgICB7KGNob2ljZXNba2V5XSB8fCBbXSkubWFwKGNob2ljZSA9PlxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2Nob2ljZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlTGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgICAgICAgX19odG1sOlxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cmF0aW9uYWxlLmxhYmVsfSBmb3IgJHtjaG9pY2UubGFiZWx9ICgke2Nob2ljZS5jb3JyZWN0ID8gJ2NvcnJlY3QnIDogJ2luY29ycmVjdCd9KWBcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgICAgbWFya3VwPXtjaG9pY2UucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17YyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZChrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgICAgICAgICAgcmF0aW9uYWxlOiBjXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0V4cGFuc2lvblBhbmVsRGV0YWlscz5cbiAgICAgICAgPC9FeHBhbnNpb25QYW5lbD5cbiAgICAgIDwvZGl2PlxuICAgIClcblxuICAgIGNvbnN0IHRvb2xiYXJPcHRzID0ge307XG5cbiAgICBzd2l0Y2ggKG1vZGVsLnRvb2xiYXJFZGl0b3JQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0b29sYmFyT3B0cy5wb3NpdGlvbiA9ICdib3R0b20nO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVzaWdufT5cbiAgICAgICAgPGxheW91dC5Db25maWdMYXlvdXRcbiAgICAgICAgICBzZXR0aW5ncz17XG4gICAgICAgICAgICA8UGFuZWxcbiAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZU1vZGVsPXttb2RlbCA9PiB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpfVxuICAgICAgICAgICAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb249e2NvbmZpZ3VyYXRpb24gPT5cbiAgICAgICAgICAgICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKGNvbmZpZ3VyYXRpb24sIHRydWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZ3JvdXBzPXt7XG4gICAgICAgICAgICAgICAgU2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nOlxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZy5zZXR0aW5ncyAmJiB0b2dnbGUocGFydGlhbFNjb3JpbmcubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgbG9ja0Nob2ljZU9yZGVyOlxuICAgICAgICAgICAgICAgICAgICBsb2NrQ2hvaWNlT3JkZXIuc2V0dGluZ3MgJiYgdG9nZ2xlKGxvY2tDaG9pY2VPcmRlci5sYWJlbClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLnNldHRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZSh0ZWFjaGVySW5zdHJ1Y3Rpb25zLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUocmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUoY2hvaWNlUmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHByb21wdEVuYWJsZWQ6IHByb21wdC5zZXR0aW5ncyAmJiB0b2dnbGUocHJvbXB0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2tFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjay5zZXR0aW5ncyAmJiB0b2dnbGUoc3BlbGxDaGVjay5sYWJlbClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBsYWJlbD17dGVhY2hlckluc3RydWN0aW9ucy5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWR9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cHJvbXB0RW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGxhYmVsPXtwcm9tcHQubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgICAgbm9uRW1wdHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9e3JhdGlvbmFsZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICBEZWZpbmUgVGVtcGxhdGUsIENob2ljZXMsIGFuZCBDb3JyZWN0IFJlc3BvbnNlc1xuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPEluZm9EaWFsb2dcbiAgICAgICAgICAgICAgb3Blbj17ZGlhbG9nLm9wZW59XG4gICAgICAgICAgICAgIHRpdGxlPXtkaWFsb2cubWVzc2FnZX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e2RpYWxvZy5vbkNhbmNlbH1cbiAgICAgICAgICAgICAgb25Paz17ZGlhbG9nLm9uT2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICBhY3RpdmVQbHVnaW5zPXtBTExfUExVR0lOU31cbiAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3sgcG9zaXRpb246ICd0b3AnIH19XG4gICAgICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXt7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2lubGluZS1kcm9wZG93bicsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlczogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzcEFyZWFUb29sYmFyOiAobm9kZSwgdmFsdWUsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lRHJvcGRvd25Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgb25BZGRDaG9pY2U9e3RoaXMub25BZGRDaG9pY2V9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGVjaz17dGhpcy5vbkNoZWNrfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXtpbmRleCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZUNob2ljZShub2RlLmRhdGEuZ2V0KCdpbmRleCcpLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RDaG9pY2U9e2luZGV4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0Q2hvaWNlKG5vZGUuZGF0YS5nZXQoJ2luZGV4JyksIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBub2RlPXtub2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvblRvb2xiYXJEb25lPXtvblRvb2xiYXJEb25lfVxuICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9e3Jlc3BBcmVhQ2hvaWNlc1tub2RlLmRhdGEuZ2V0KCdpbmRleCcpXX1cbiAgICAgICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmt1cH1cbiAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5zbGF0ZU1hcmt1cCB8fCAnJ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIGhpZ2hsaWdodFNoYXBlPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHtjaG9pY2VSYXRpb25hbGVFbmFibGVkICYmIHJlbmRlckNob2ljZVJhdGlvbmFsZSgpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xheW91dC5Db25maWdMYXlvdXQ+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZCA9IHdpdGhTdHlsZXMoc3R5bGVzKShNYWluKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","errorText","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","errors","responseAreasError","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px',\n marginTop: '8px'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled,\n errors\n } =\n model || {};\n const { responseAreasError } = errors || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n />\n );\n }\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled\n } =\n model || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n />\n );\n }\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/inline-dropdown-configure",
3
- "version": "3.6.8",
3
+ "version": "3.6.15",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -8,8 +8,8 @@
8
8
  "@material-ui/core": "^3.9.2",
9
9
  "@material-ui/icons": "^3.0.1",
10
10
  "@pie-framework/pie-configure-events": "^1.2.0",
11
- "@pie-lib/config-ui": "^10.10.24",
12
- "@pie-lib/editable-html": "^7.19.3",
11
+ "@pie-lib/config-ui": "^10.11.0",
12
+ "@pie-lib/editable-html": "^7.20.0",
13
13
  "@pie-lib/math-rendering": "^2.3.13",
14
14
  "classnames": "^2.2.6",
15
15
  "debug": "^3.1.0",
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.3.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.4...@pie-element/inline-dropdown-controller@3.3.5) (2022-03-22)
7
+
8
+ **Note:** Version bump only for package @pie-element/inline-dropdown-controller
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.3.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.3...@pie-element/inline-dropdown-controller@3.3.4) (2022-03-08)
15
+
16
+ **Note:** Version bump only for package @pie-element/inline-dropdown-controller
17
+
18
+
19
+
20
+
21
+
6
22
  # [3.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.2.17...@pie-element/inline-dropdown-controller@3.3.0) (2021-09-20)
7
23
 
8
24
 
@@ -9,7 +9,6 @@ exports.getScore = exports.createCorrectResponseSession = void 0;
9
9
  exports.model = model;
10
10
  exports.normalize = void 0;
11
11
  exports.outcome = outcome;
12
- exports.validate = void 0;
13
12
 
14
13
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
14
 
@@ -316,23 +315,4 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
316
315
  };
317
316
 
318
317
  exports.createCorrectResponseSession = createCorrectResponseSession;
319
-
320
- var validate = function validate() {
321
- var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
322
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
323
- var markup = model.markup;
324
- var maxResponseAreas = config.maxResponseAreas;
325
- var errors = {};
326
- var nbOfResponseAreas = (markup.match(/\{\{(\d+)\}\}/g) || []).length;
327
-
328
- if (nbOfResponseAreas > maxResponseAreas) {
329
- errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
330
- } else if (nbOfResponseAreas < 1) {
331
- errors.responseAreasError = 'There should be defined at least 1 response area.';
332
- }
333
-
334
- return errors;
335
- };
336
-
337
- exports.validate = validate;
338
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJtb2RlbCIsInNlc3Npb24iLCJlbnYiLCJ1cGRhdGVTZXNzaW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJub3JtYWxpemVkUXVlc3Rpb24iLCJ2YWx1ZSIsImNob2ljZXMiLCJvYmoiLCJhcmVhIiwia2V5IiwiY2hvaWNlIiwiZmVlZGJhY2siLCJtb2RlIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNvcnJlY3RSZXNwb25zZXMiLCJpIiwicmVzdWx0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImxvY2tDaG9pY2VPcmRlciIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyYXRpb25hbGUiLCJjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzIiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwibWFwIiwicm9sZSIsIm91dCIsImRpc2FibGVkIiwicHJvbXB0IiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsImNvbmZpZyIsIm1heFNjb3JlIiwiY29ycmVjdENvdW50IiwidG90YWwiLCJzdHIiLCJ0b0ZpeGVkIiwicGFyc2VGbG9hdCIsIm91dGNvbWUiLCJzY29yZSIsImVtcHR5IiwicGFydGlhbFNjb3JpbmdFbmFibGVkIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiIsImZvckVhY2giLCJjb3JyZWN0Q2hvaWNlcyIsImZpbHRlciIsImMiLCJpZCIsInZhbGlkYXRlIiwibWF4UmVzcG9uc2VBcmVhcyIsImVycm9ycyIsIm5iT2ZSZXNwb25zZUFyZWFzIiwibWF0Y2giLCJyZXNwb25zZUFyZWFzRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsT0FBRCxFQUFhO0FBQy9CLE1BQUlBLE9BQUosRUFBYTtBQUNYLFdBQU8sU0FBUDtBQUNEOztBQUVELFNBQU8sV0FBUDtBQUNELENBTkQ7O0FBUU8sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsUUFBRDtBQUFBO0FBQ3ZCQyxJQUFBQSxhQUFhLEVBQUUsSUFEUTtBQUV2QkMsSUFBQUEsZ0JBQWdCLEVBQUUsSUFGSztBQUd2QkMsSUFBQUEsMEJBQTBCLEVBQUUsSUFITDtBQUl2QkMsSUFBQUEsMEJBQTBCLEVBQUUsSUFKTDtBQUt2QkMsSUFBQUEsc0JBQXNCLEVBQUU7QUFMRCxLQU1wQkwsUUFOb0I7QUFBQSxDQUFsQjtBQVNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLFNBQVNNLEtBQVQsQ0FBZU4sUUFBZixFQUF5Qk8sT0FBekIsRUFBa0NDLEdBQWxDLEVBQXVDQyxhQUF2QyxFQUFzRDtBQUMzRCxTQUFPLElBQUlDLE9BQUo7QUFBQSw2RkFBWSxpQkFBT0MsT0FBUDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1hDLGNBQUFBLGtCQURXLEdBQ1ViLFNBQVMsQ0FBQ0MsUUFBRCxDQURuQjtBQUFBLHNCQUVNTyxPQUFPLElBQUksRUFGakIsc0JBRVRNLEtBRlMsRUFFVEEsS0FGUyw0QkFFRCxFQUZDO0FBR2JDLGNBQUFBLE9BSGEsR0FHSCx3QkFDWkYsa0JBQWtCLENBQUNFLE9BRFAsRUFFWixVQUFDQyxHQUFELEVBQU1DLElB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QUNELENBZE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7XG4gIGxvY2tDaG9pY2VzLFxuICBnZXRTaHVmZmxlZENob2ljZXMsXG4gIHBhcnRpYWxTY29yaW5nLFxufSBmcm9tICdAcGllLWxpYi9jb250cm9sbGVyLXV0aWxzJztcblxuaW1wb3J0IHsgZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBnZXRGZWVkYmFjayA9IChjb3JyZWN0KSA9PiB7XG4gIGlmIChjb3JyZWN0KSB7XG4gICAgcmV0dXJuICdjb3JyZWN0JztcbiAgfVxuXG4gIHJldHVybiAnaW5jb3JyZWN0Jztcbn07XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemUgPSAocXVlc3Rpb24pID0+ICh7XG4gIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gIHJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOiB0cnVlLFxuICBzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgY2hvaWNlUmF0aW9uYWxlRW5hYmxlZDogdHJ1ZSxcbiAgLi4ucXVlc3Rpb24sXG59KTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBxdWVzdGlvblxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0geyp9IGVudlxuICogQHBhcmFtIHsqfSB1cGRhdGVTZXNzaW9uIC0gb3B0aW9uYWwgLSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBzZXQgdGhlIHByb3BlcnRpZXMgcGFzc2VkIGludG8gaXQgb24gdGhlIHNlc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbChxdWVzdGlvbiwgc2Vzc2lvbiwgZW52LCB1cGRhdGVTZXNzaW9uKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVzdGlvbiA9IG5vcm1hbGl6ZShxdWVzdGlvbik7XG4gICAgY29uc3QgeyB2YWx1ZSA9IHt9IH0gPSBzZXNzaW9uIHx8IHt9O1xuICAgIGxldCBjaG9pY2VzID0gcmVkdWNlKFxuICAgICAgbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZXMsXG4gICAgICAob2JqLCBhcmVhLCBrZXkpID0+IHtcbiAgICAgICAgb2JqW2tleV0gPSBtYXAoYXJlYSwgKGNob2ljZSkgPT4gY2hvaWNlKTtcblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGxldCBmZWVkYmFjayA9IHt9O1xuXG4gICAgaWYgKGVudi5tb2RlID09PSAnZXZhbHVhdGUnKSB7XG4gICAgICBjb25zdCBhbGxDb3JyZWN0UmVzcG9uc2VzID0gZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyhub3JtYWxpemVkUXVlc3Rpb24pO1xuICAgICAgY29uc3QgcmVzcEFyZWFMZW5ndGggPSBPYmplY3Qua2V5cyhhbGxDb3JyZWN0UmVzcG9uc2VzKS5sZW5ndGg7XG4gICAgICBsZXQgY29ycmVjdFJlc3BvbnNlcyA9IDA7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcEFyZWFMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZWR1Y2UoXG4gICAgICAgICAgYWxsQ29ycmVjdFJlc3BvbnNlcyxcbiAgICAgICAgICAob2JqLCBjaG9pY2VzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFuc3dlciA9ICh2YWx1ZSAmJiB2YWx1ZVtrZXldKSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgaXNDb3JyZWN0ID1cbiAgICAgICAgICAgICAgYW5zd2VyICYmIGNvcnJlY3RDaG9pY2UgJiYgY29ycmVjdENob2ljZSA9PT0gYW5zd2VyO1xuXG4gICAgICAgICAgICBvYmouZmVlZGJhY2tba2V5XSA9IGdldEZlZWRiYWNrKGlzQ29ycmVjdCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvcnJlY3QpIHtcbiAgICAgICAgICAgICAgb2JqLmNvcnJlY3RSZXNwb25zZXMgKz0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY29ycmVjdFJlc3BvbnNlczogMCwgZmVlZGJhY2s6IHt9IH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPj0gY29ycmVjdFJlc3BvbnNlcykge1xuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZXMgPSByZXN1bHQuY29ycmVjdFJlc3BvbnNlcztcbiAgICAgICAgICBmZWVkYmFjayA9IHJlc3VsdC5mZWVkYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29ycmVjdFJlc3BvbnNlcyA9PT0gcmVzcEFyZWFMZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2tDaG9pY2VPcmRlciA9IGxvY2tDaG9pY2VzKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbiwgZW52KTtcblxuICAgIGlmICghbG9ja0Nob2ljZU9yZGVyKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hvaWNlcyk7XG4gICAgICBsZXQgaTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBjaG9pY2VzW2tleV0gPSBhd2FpdCBnZXRTaHVmZmxlZENob2ljZXMoXG4gICAgICAgICAgY2hvaWNlc1trZXldLFxuICAgICAgICAgIHNlc3Npb24sXG4gICAgICAgICAgdXBkYXRlU2Vzc2lvbixcbiAgICAgICAgICAndmFsdWUnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBudWxsO1xuICAgIGxldCByYXRpb25hbGUgPSBudWxsO1xuXG4gICAgY29uc3QgY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcyA9IChPYmplY3Qua2V5cyhjaG9pY2VzKSB8fCBbXSkucmVkdWNlKFxuICAgICAgKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIGFjY1tjdXJyZW50VmFsdWVdID0gKGNob2ljZXNbY3VycmVudFZhbHVlXSB8fCBbXSkubWFwKChjaG9pY2UpID0+ICh7XG4gICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJyAmJlxuICAgICAgKGVudi5tb2RlID09PSAndmlldycgfHwgZW52Lm1vZGUgPT09ICdldmFsdWF0ZScpXG4gICAgKSB7XG4gICAgICByYXRpb25hbGUgPSBub3JtYWxpemVkUXVlc3Rpb24ucmF0aW9uYWxlRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVcbiAgICAgICAgOiBudWxsO1xuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IG5vcm1hbGl6ZWRRdWVzdGlvbi50ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi50ZWFjaGVySW5zdHJ1Y3Rpb25zXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgY2hvaWNlcyA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VSYXRpb25hbGVFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZXNcbiAgICAgICAgOiBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByYXRpb25hbGUgPSBudWxsO1xuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IG51bGw7XG4gICAgICBjaG9pY2VzID0gY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcztcbiAgICB9XG5cbiAgICBjb25zdCBvdXQgPSB7XG4gICAgICBkaXNhYmxlZDogZW52Lm1vZGUgIT09ICdnYXRoZXInLFxuICAgICAgbW9kZTogZW52Lm1vZGUsXG4gICAgICBwcm9tcHQ6IG5vcm1hbGl6ZWRRdWVzdGlvbi5wcm9tcHRFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnByb21wdFxuICAgICAgICA6IG51bGwsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtYXJrdXA6IG5vcm1hbGl6ZWRRdWVzdGlvbi5tYXJrdXAsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmVlZGJhY2ssXG5cbiAgICAgIHJlc3BvbnNlQ29ycmVjdDpcbiAgICAgICAgZW52Lm1vZGUgPT09ICdldmFsdWF0ZSdcbiAgICAgICAgICA/IGdldFNjb3JlKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbikgPT09IDFcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJhdGlvbmFsZSxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgfTtcblxuICAgIHJlc29sdmUob3V0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRTY29yZSA9IChjb25maWcsIHNlc3Npb24pID0+IHtcbiAgY29uc3QgeyB2YWx1ZSA9IHt9IH0gPSBzZXNzaW9uIHx8IHt9O1xuICBjb25zdCBtYXhTY29yZSA9XG4gICAgY29uZmlnICYmIGNvbmZpZy5jaG9pY2VzID8gT2JqZWN0LmtleXMoY29uZmlnLmNob2ljZXMpLmxlbmd0aCA6IDA7XG4gIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKGNvbmZpZyk7XG4gIGxldCBjb3JyZWN0Q291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NvcmU7IGkrKykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAodG90YWwsIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuXG4gICAgICAgIGlmIChjb3JyZWN0Q2hvaWNlICYmIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG90YWwgLSAxO1xuICAgICAgfSxcbiAgICAgIG1heFNjb3JlXG4gICAgKTtcblxuICAgIGlmIChyZXN1bHQgPiBjb3JyZWN0Q291bnQpIHtcbiAgICAgIGNvcnJlY3RDb3VudCA9IHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSBtYXhTY29yZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyID0gKGNvcnJlY3RDb3VudCAvIG1heFNjb3JlKS50b0ZpeGVkKDIpO1xuXG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cik7XG59O1xuXG4vKipcbiAqXG4gKiBUaGUgc2NvcmUgaXMgcGFydGlhbCBieSBkZWZhdWx0IGZvciBjaGVja2JveCBtb2RlLCBhbGxPck5vdGhpbmcgZm9yIHJhZGlvIG1vZGUuXG4gKiBUbyBkaXNhYmxlIHBhcnRpYWwgc2NvcmluZyBmb3IgY2hlY2tib3ggbW9kZSB5b3UgZWl0aGVyIHNldCBtb2RlbC5wYXJ0aWFsU2NvcmluZyA9IGZhbHNlIG9yIGVudi5wYXJ0aWFsU2NvcmluZyA9XG4gKiBmYWxzZS4gdGhlIHZhbHVlIGluIGBlbnZgIHdpbGwgb3ZlcnJpZGUgdGhlIHZhbHVlIGluIGBtb2RlbGAuXG4gKiBAcGFyYW0ge09iamVjdH0gbW9kZWwgLSB0aGUgbWFpbiBtb2RlbFxuICogQHBhcmFtIHtib29sZWFufSBtb2RlbC5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgc2V0IHRvIHRvIHRydWUpXG4gKiBAcGFyYW0geyp9IHNlc3Npb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnZcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZW52LnBhcnRpYWxTY29yaW5nIC0gaXMgcGFydGlhbCBzY29yaW5nIGVuYWJsZWQgKGlmIHVuZGVmaW5lZCBkZWZhdWx0IHRvIHRydWUpIFRoaXMgb3ZlcnJpZGVzXG4gKiAgIGBtb2RlbC5wYXJ0aWFsU2NvcmluZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRjb21lKG1vZGVsLCBzZXNzaW9uLCBlbnYgPSB7fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoIXNlc3Npb24gfHwgaXNFbXB0eShzZXNzaW9uKSkge1xuICAgICAgcmVzb2x2ZSh7IHNjb3JlOiAwLCBlbXB0eTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsU2NvcmluZ0VuYWJsZWQgPSBwYXJ0aWFsU2NvcmluZy5lbmFibGVkKG1vZGVsLCBlbnYpO1xuICAgIGNvbnN0IHNjb3JlID0gZ2V0U2NvcmUobW9kZWwsIHNlc3Npb24pO1xuXG4gICAgcmVzb2x2ZSh7XG4gICAgICBzY29yZTogcGFydGlhbFNjb3JpbmdFbmFibGVkID8gc2NvcmUgOiBNYXRoLmZsb29yKHNjb3JlKSxcbiAgICAgIGVtcHR5OiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uID0gKHF1ZXN0aW9uLCBlbnYpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKGVudi5tb2RlICE9PSAnZXZhbHVhdGUnICYmIGVudi5yb2xlID09PSAnaW5zdHJ1Y3RvcicpIHtcbiAgICAgIGNvbnN0IHsgY2hvaWNlcyB9ID0gcXVlc3Rpb247XG4gICAgICBjb25zdCB2YWx1ZSA9IHt9O1xuXG4gICAgICBpZiAoY2hvaWNlcykge1xuICAgICAgICBPYmplY3Qua2V5cyhjaG9pY2VzKS5mb3JFYWNoKChrZXksIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlcyA9XG4gICAgICAgICAgICBjaG9pY2VzW2tleV0gJiYgY2hvaWNlc1trZXldLmZpbHRlcigoYykgPT4gYy5jb3JyZWN0KTtcblxuICAgICAgICAgIHZhbHVlW2ldID0gY29ycmVjdENob2ljZXMgJiYgY29ycmVjdENob2ljZXNbMF0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKG1vZGVsID0ge30sIGNvbmZpZyA9IHt9KSA9PiB7XG4gIGNvbnN0IHsgbWFya3VwIH0gPSBtb2RlbDtcbiAgY29uc3QgeyBtYXhSZXNwb25zZUFyZWFzIH0gPSBjb25maWc7XG4gIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gIGNvbnN0IG5iT2ZSZXNwb25zZUFyZWFzID0gKG1hcmt1cC5tYXRjaCgvXFx7XFx7KFxcZCspXFx9XFx9L2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgaWYgKG5iT2ZSZXNwb25zZUFyZWFzID4gbWF4UmVzcG9uc2VBcmVhcykge1xuICAgIGVycm9ycy5yZXNwb25zZUFyZWFzRXJyb3IgPSBgTm8gbW9yZSB0aGFuICR7bWF4UmVzcG9uc2VBcmVhc30gcmVzcG9uc2UgYXJlYXMgc2hvdWxkIGJlIGRlZmluZWQuYDtcbiAgfSBlbHNlIGlmIChuYk9mUmVzcG9uc2VBcmVhcyA8IDEpIHtcbiAgICBlcnJvcnMucmVzcG9uc2VBcmVhc0Vycm9yID0gJ1RoZXJlIHNob3VsZCBiZSBkZWZpbmVkIGF0IGxlYXN0IDEgcmVzcG9uc2UgYXJlYS4nO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG4iXX0=
318
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJtb2RlbCIsInNlc3Npb24iLCJlbnYiLCJ1cGRhdGVTZXNzaW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJub3JtYWxpemVkUXVlc3Rpb24iLCJ2YWx1ZSIsImNob2ljZXMiLCJvYmoiLCJhcmVhIiwia2V5IiwiY2hvaWNlIiwiZmVlZGJhY2siLCJtb2RlIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNvcnJlY3RSZXNwb25zZXMiLCJpIiwicmVzdWx0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImxvY2tDaG9pY2VPcmRlciIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyYXRpb25hbGUiLCJjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzIiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwibWFwIiwicm9sZSIsIm91dCIsImRpc2FibGVkIiwicHJvbXB0IiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsImNvbmZpZyIsIm1heFNjb3JlIiwiY29ycmVjdENvdW50IiwidG90YWwiLCJzdHIiLCJ0b0ZpeGVkIiwicGFyc2VGbG9hdCIsIm91dGNvbWUiLCJzY29yZSIsImVtcHR5IiwicGFydGlhbFNjb3JpbmdFbmFibGVkIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lv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bUJBQU9BLENBQUMsQ0FBQ3RFLE9BQVQ7QUFBQSxXQUFwQixDQURsQjtBQUdBZSxVQUFBQSxNQUFLLENBQUNjLENBQUQsQ0FBTCxHQUFXdUMsY0FBYyxJQUFJQSxjQUFjLENBQUMsQ0FBRCxDQUFkLENBQWtCckQsS0FBL0M7QUFDRCxTQUxEO0FBTUQ7O0FBRURGLE1BQUFBLE9BQU8sQ0FBQztBQUNOMEQsUUFBQUEsRUFBRSxFQUFFLEdBREU7QUFFTnhELFFBQUFBLEtBQUssRUFBTEE7QUFGTSxPQUFELENBQVA7QUFJRCxLQWpCRCxNQWlCTztBQUNMRixNQUFBQSxPQUFPLENBQUMsSUFBRCxDQUFQO0FBQ0Q7QUFDRixHQXJCTSxDQUFQO0FBc0JELENBdkJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmltcG9ydCByZWR1Y2UgZnJvbSAnbG9kYXNoL3JlZHVjZSc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQge1xuICBsb2NrQ2hvaWNlcyxcbiAgZ2V0U2h1ZmZsZWRDaG9pY2VzLFxuICBwYXJ0aWFsU2NvcmluZyxcbn0gZnJvbSAnQHBpZS1saWIvY29udHJvbGxlci11dGlscyc7XG5cbmltcG9ydCB7IGdldEFsbENvcnJlY3RSZXNwb25zZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZ2V0RmVlZGJhY2sgPSAoY29ycmVjdCkgPT4ge1xuICBpZiAoY29ycmVjdCkge1xuICAgIHJldHVybiAnY29ycmVjdCc7XG4gIH1cblxuICByZXR1cm4gJ2luY29ycmVjdCc7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gKHF1ZXN0aW9uKSA9PiAoe1xuICBwcm9tcHRFbmFibGVkOiB0cnVlLFxuICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIC4uLnF1ZXN0aW9uLFxufSk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7Kn0gcXVlc3Rpb25cbiAqIEBwYXJhbSB7Kn0gc2Vzc2lvblxuICogQHBhcmFtIHsqfSBlbnZcbiAqIEBwYXJhbSB7Kn0gdXBkYXRlU2Vzc2lvbiAtIG9wdGlvbmFsIC0gYSBmdW5jdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIGl0IG9uIHRoZSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudiwgdXBkYXRlU2Vzc2lvbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlc3Rpb24gPSBub3JtYWxpemUocXVlc3Rpb24pO1xuICAgIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgICBsZXQgY2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzLFxuICAgICAgKG9iaiwgYXJlYSwga2V5KSA9PiB7XG4gICAgICAgIG9ialtrZXldID0gbWFwKGFyZWEsIChjaG9pY2UpID0+IGNob2ljZSk7XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBsZXQgZmVlZGJhY2sgPSB7fTtcblxuICAgIGlmIChlbnYubW9kZSA9PT0gJ2V2YWx1YXRlJykge1xuICAgICAgY29uc3QgYWxsQ29ycmVjdFJlc3BvbnNlcyA9IGdldEFsbENvcnJlY3RSZXNwb25zZXMobm9ybWFsaXplZFF1ZXN0aW9uKTtcbiAgICAgIGNvbnN0IHJlc3BBcmVhTGVuZ3RoID0gT2JqZWN0LmtleXMoYWxsQ29ycmVjdFJlc3BvbnNlcykubGVuZ3RoO1xuICAgICAgbGV0IGNvcnJlY3RSZXNwb25zZXMgPSAwO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BBcmVhTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVkdWNlKFxuICAgICAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAgICAgKG9iaiwgY2hvaWNlcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlID0gY2hvaWNlc1tpXSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzQ29ycmVjdCA9XG4gICAgICAgICAgICAgIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlICYmIGNvcnJlY3RDaG9pY2UgPT09IGFuc3dlcjtcblxuICAgICAgICAgICAgb2JqLmZlZWRiYWNrW2tleV0gPSBnZXRGZWVkYmFjayhpc0NvcnJlY3QpO1xuXG4gICAgICAgICAgICBpZiAoaXNDb3JyZWN0KSB7XG4gICAgICAgICAgICAgIG9iai5jb3JyZWN0UmVzcG9uc2VzICs9IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNvcnJlY3RSZXNwb25zZXM6IDAsIGZlZWRiYWNrOiB7fSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5jb3JyZWN0UmVzcG9uc2VzID49IGNvcnJlY3RSZXNwb25zZXMpIHtcbiAgICAgICAgICBjb3JyZWN0UmVzcG9uc2VzID0gcmVzdWx0LmNvcnJlY3RSZXNwb25zZXM7XG4gICAgICAgICAgZmVlZGJhY2sgPSByZXN1bHQuZmVlZGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPT09IHJlc3BBcmVhTGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsb2NrQ2hvaWNlT3JkZXIgPSBsb2NrQ2hvaWNlcyhub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24sIGVudik7XG5cbiAgICBpZiAoIWxvY2tDaG9pY2VPcmRlcikge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNob2ljZXMpO1xuICAgICAgbGV0IGk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG5cbiAgICAgICAgY2hvaWNlc1trZXldID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKFxuICAgICAgICAgIGNob2ljZXNba2V5XSxcbiAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIHVwZGF0ZVNlc3Npb24sXG4gICAgICAgICAgJ3ZhbHVlJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbnVsbDtcbiAgICBsZXQgcmF0aW9uYWxlID0gbnVsbDtcblxuICAgIGNvbnN0IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXMgPSAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICBhY2NbY3VycmVudFZhbHVlXSA9IChjaG9pY2VzW2N1cnJlbnRWYWx1ZV0gfHwgW10pLm1hcCgoY2hvaWNlKSA9PiAoe1xuICAgICAgICAgIC4uLmNob2ljZSxcbiAgICAgICAgICByYXRpb25hbGU6IG51bGwsXG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIGVudi5yb2xlID09PSAnaW5zdHJ1Y3RvcicgJiZcbiAgICAgIChlbnYubW9kZSA9PT0gJ3ZpZXcnIHx8IGVudi5tb2RlID09PSAnZXZhbHVhdGUnKVxuICAgICkge1xuICAgICAgcmF0aW9uYWxlID0gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZUVuYWJsZWRcbiAgICAgICAgPyBub3JtYWxpemVkUXVlc3Rpb24ucmF0aW9uYWxlXG4gICAgICAgIDogbnVsbDtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBub3JtYWxpemVkUXVlc3Rpb24udGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWRcbiAgICAgICAgPyBub3JtYWxpemVkUXVlc3Rpb24udGVhY2hlckluc3RydWN0aW9uc1xuICAgICAgICA6IG51bGw7XG5cbiAgICAgIGNob2ljZXMgPSBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlUmF0aW9uYWxlRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzXG4gICAgICAgIDogY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmF0aW9uYWxlID0gbnVsbDtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBudWxsO1xuICAgICAgY2hvaWNlcyA9IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0ID0ge1xuICAgICAgZGlzYWJsZWQ6IGVudi5tb2RlICE9PSAnZ2F0aGVyJyxcbiAgICAgIG1vZGU6IGVudi5tb2RlLFxuICAgICAgcHJvbXB0OiBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0RW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5wcm9tcHRcbiAgICAgICAgOiBudWxsLFxuICAgICAgICBkaXNwbGF5VHlwZTogbm9ybWFsaXplZFF1ZXN0aW9uLmRpc3BsYXlUeXBlLFxuICAgICAgbWFya3VwOiBub3JtYWxpemVkUXVlc3Rpb24ubWFya3VwLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIGZlZWRiYWNrLFxuXG4gICAgICByZXNwb25zZUNvcnJlY3Q6XG4gICAgICAgIGVudi5tb2RlID09PSAnZXZhbHVhdGUnXG4gICAgICAgICAgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByYXRpb25hbGUsXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgIH07XG5cbiAgICByZXNvbHZlKG91dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0U2NvcmUgPSAoY29uZmlnLCBzZXNzaW9uKSA9PiB7XG4gIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgY29uc3QgbWF4U2NvcmUgPVxuICAgIGNvbmZpZyAmJiBjb25maWcuY2hvaWNlcyA/IE9iamVjdC5rZXlzKGNvbmZpZy5jaG9pY2VzKS5sZW5ndGggOiAwO1xuICBjb25zdCBhbGxDb3JyZWN0UmVzcG9uc2VzID0gZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyhjb25maWcpO1xuICBsZXQgY29ycmVjdENvdW50ID0gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjb3JlOyBpKyspIHtcbiAgICBjb25zdCByZXN1bHQgPSByZWR1Y2UoXG4gICAgICBhbGxDb3JyZWN0UmVzcG9uc2VzLFxuICAgICAgKHRvdGFsLCBjaG9pY2VzLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgYW5zd2VyID0gKHZhbHVlICYmIHZhbHVlW2tleV0pIHx8ICcnO1xuICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlID0gY2hvaWNlc1tpXSB8fCAnJztcblxuICAgICAgICBpZiAoY29ycmVjdENob2ljZSAmJiBhbnN3ZXIgJiYgY29ycmVjdENob2ljZSA9PT0gYW5zd2VyKSB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvdGFsIC0gMTtcbiAgICAgIH0sXG4gICAgICBtYXhTY29yZVxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID4gY29ycmVjdENvdW50KSB7XG4gICAgICBjb3JyZWN0Q291bnQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gbWF4U2NvcmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ciA9IChjb3JyZWN0Q291bnQgLyBtYXhTY29yZSkudG9GaXhlZCgyKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKlxuICogVGhlIHNjb3JlIGlzIHBhcnRpYWwgYnkgZGVmYXVsdCBmb3IgY2hlY2tib3ggbW9kZSwgYWxsT3JOb3RoaW5nIGZvciByYWRpbyBtb2RlLlxuICogVG8gZGlzYWJsZSBwYXJ0aWFsIHNjb3JpbmcgZm9yIGNoZWNrYm94IG1vZGUgeW91IGVpdGhlciBzZXQgbW9kZWwucGFydGlhbFNjb3JpbmcgPSBmYWxzZSBvciBlbnYucGFydGlhbFNjb3JpbmcgPVxuICogZmFsc2UuIHRoZSB2YWx1ZSBpbiBgZW52YCB3aWxsIG92ZXJyaWRlIHRoZSB2YWx1ZSBpbiBgbW9kZWxgLlxuICogQHBhcmFtIHtPYmplY3R9IG1vZGVsIC0gdGhlIG1haW4gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbW9kZWwucGFydGlhbFNjb3JpbmcgLSBpcyBwYXJ0aWFsIHNjb3JpbmcgZW5hYmxlZCAoaWYgdW5kZWZpbmVkIHNldCB0byB0byB0cnVlKVxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gZW52XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVudi5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgZGVmYXVsdCB0byB0cnVlKSBUaGlzIG92ZXJyaWRlc1xuICogICBgbW9kZWwucGFydGlhbFNjb3JpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3V0Y29tZShtb2RlbCwgc2Vzc2lvbiwgZW52ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICAgIHJlc29sdmUoeyBzY29yZTogMCwgZW1wdHk6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFNjb3JpbmdFbmFibGVkID0gcGFydGlhbFNjb3JpbmcuZW5hYmxlZChtb2RlbCwgZW52KTtcbiAgICBjb25zdCBzY29yZSA9IGdldFNjb3JlKG1vZGVsLCBzZXNzaW9uKTtcblxuICAgIHJlc29sdmUoe1xuICAgICAgc2NvcmU6IHBhcnRpYWxTY29yaW5nRW5hYmxlZCA/IHNjb3JlIDogTWF0aC5mbG9vcihzY29yZSksXG4gICAgICBlbXB0eTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiA9IChxdWVzdGlvbiwgZW52KSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChlbnYubW9kZSAhPT0gJ2V2YWx1YXRlJyAmJiBlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InKSB7XG4gICAgICBjb25zdCB7IGNob2ljZXMgfSA9IHF1ZXN0aW9uO1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcblxuICAgICAgaWYgKGNob2ljZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hvaWNlcykuZm9yRWFjaCgoa2V5LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZXMgPVxuICAgICAgICAgICAgY2hvaWNlc1trZXldICYmIGNob2ljZXNba2V5XS5maWx0ZXIoKGMpID0+IGMuY29ycmVjdCk7XG5cbiAgICAgICAgICB2YWx1ZVtpXSA9IGNvcnJlY3RDaG9pY2VzICYmIGNvcnJlY3RDaG9pY2VzWzBdLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgfVxuICB9KTtcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","choiceRationaleEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","out","disabled","prompt","displayType","markup","responseCorrect","getScore","undefined","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id","validate","maxResponseAreas","errors","nbOfResponseAreas","match","responseAreasError"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/controller-utils';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n choiceRationaleEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {}\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect =\n answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} }\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce(\n (acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n },\n {}\n );\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled\n ? normalizedQuestion.choices\n : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices =\n choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { markup } = model;\n const { maxResponseAreas } = config;\n const errors = {};\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","choiceRationaleEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","out","disabled","prompt","displayType","markup","responseCorrect","getScore","undefined","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/controller-utils';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n choiceRationaleEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {}\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect =\n answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} }\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce(\n (acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n },\n {}\n );\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled\n ? normalizedQuestion.choices\n : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices =\n choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/inline-dropdown-controller",
3
3
  "private": true,
4
- "version": "3.3.3",
4
+ "version": "3.3.5",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/lib/index.js CHANGED
@@ -111,4 +111,4 @@ var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
111
111
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
112
112
 
113
113
  exports["default"] = RootInlineDropdown;
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSb290SW5saW5lRHJvcGRvd24iLCJfbW9kZWwiLCJfc2Vzc2lvbiIsImVsZW0iLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJJbmxpbmVEcm9wZG93biIsInByb21wdCIsInJhdGlvbmFsZSIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJkaXNhYmxlZCIsImRpc3BsYXlUeXBlIiwibWFya3VwIiwibW9kZSIsImNob2ljZXMiLCJ2YWx1ZSIsImZlZWRiYWNrIiwib25DaGFuZ2UiLCJjaGFuZ2VTZXNzaW9uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInNlc3Npb24iLCJkaXNwYXRjaENoYW5nZWRFdmVudCIsIl9yZW5kZXIiLCJtIiwiTW9kZWxTZXRFdmVudCIsInMiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOzs7Ozs7SUFFcUJBLGtCOzs7OztBQUNuQixnQ0FBYztBQUFBOztBQUFBO0FBQ1o7QUFEWSxnR0E0QkosWUFBTTtBQUNkLFVBQUksTUFBS0MsTUFBTCxJQUFlLE1BQUtDLFFBQXhCLEVBQWtDO0FBQ2hDLFlBQUlDLElBQUksZ0JBQUdDLGtCQUFNQyxhQUFOLENBQW9CQywwQkFBcEIsRUFBb0M7QUFDN0NDLFVBQUFBLE1BQU0sRUFBRSxNQUFLTixNQUFMLENBQVlNLE1BRHlCO0FBRTdDQyxVQUFBQSxTQUFTLEVBQUUsTUFBS1AsTUFBTCxDQUFZTyxTQUZzQjtBQUc3Q0MsVUFBQUEsbUJBQW1CLEVBQUUsTUFBS1IsTUFBTCxDQUFZUSxtQkFIWTtBQUk3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtULE1BQUwsQ0FBWVMsUUFKdUI7QUFLN0NDLFVBQUFBLFdBQVcsRUFBRSxNQUFLVixNQUFMLENBQVlVLFdBTG9CO0FBTTdDQyxVQUFBQSxNQUFNLEVBQUUsTUFBS1gsTUFBTCxDQUFZVyxNQU55QjtBQU83Q0MsVUFBQUEsSUFBSSxFQUFFLE1BQUtaLE1BQUwsQ0FBWVksSUFQMkI7QUFRN0NDLFVBQUFBLE9BQU8sRUFBRSxNQUFLYixNQUFMLENBQVlhLE9BUndCO0FBUzdDQyxVQUFBQSxLQUFLLEVBQUUsTUFBS2IsUUFBTCxDQUFjYSxLQVR3QjtBQVU3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtmLE1BQUwsQ0FBWWUsUUFWdUI7QUFXN0NDLFVBQUFBLFFBQVEsRUFBRSxNQUFLQztBQVg4QixTQUFwQyxDQUFYOztBQWFBQyw2QkFBU0MsTUFBVCxDQUFnQmpCLElBQWhCLGtEQUE0QixZQUFNO0FBQ2hDO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0EvQ2E7QUFBQSw2R0FpRFMsWUFBTTtBQUMzQixZQUFLa0IsYUFBTCxDQUNFLElBQUlDLG9DQUFKLENBQ0UsTUFBS0MsT0FBTCxDQUFhQyxXQUFiLEVBREYsRUFFRSxNQUFLQyxPQUFMLElBQWdCLENBQUMsQ0FBQyxNQUFLQSxPQUFMLENBQWFWLEtBRmpDLENBREY7QUFNRCxLQXhEYTtBQUFBLHNHQTBERSxVQUFBQSxLQUFLLEVBQUk7QUFDdkIsWUFBS1UsT0FBTCxDQUFhVixLQUFiLEdBQXFCQSxLQUFyQjs7QUFDQSxZQUFLVyxvQkFBTDs7QUFDQSxZQUFLQyxPQUFMO0FBQ0QsS0E5RGE7QUFFWixVQUFLMUIsTUFBTCxHQUFjLElBQWQ7QUFDQSxVQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBSFk7QUFJYjs7OztTQUVELGFBQVUwQixDQUFWLEVBQWE7QUFDWCxXQUFLM0IsTUFBTCxHQUFjMkIsQ0FBZDtBQUNBLFdBQUtQLGFBQUwsQ0FDRSxJQUFJUSw4QkFBSixDQUNFLEtBQUtOLE9BQUwsQ0FBYUMsV0FBYixFQURGLEVBRUUsS0FBS0MsT0FBTCxJQUFnQixDQUFDLENBQUMsS0FBS0EsT0FBTCxDQUFhVixLQUZqQyxFQUdFLENBQUMsQ0FBQyxLQUFLZCxNQUhULENBREY7O0FBUUEsV0FBSzBCLE9BQUw7QUFDRDs7O1NBT0QsZUFBYztBQUNaLGFBQU8sS0FBS3pCLFFBQVo7QUFDRCxLO1NBUEQsYUFBWTRCLENBQVosRUFBZTtBQUNiLFdBQUs1QixRQUFMLEdBQWdCNEIsQ0FBaEI7O0FBQ0EsV0FBS0gsT0FBTDtBQUNEOzs7V0EwQ0QsNkJBQW9CO0FBQ2xCLFdBQUtBLE9BQUw7QUFDRDs7O2tEQW5FNkNJLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQge1xuICBNb2RlbFNldEV2ZW50LFxuICBTZXNzaW9uQ2hhbmdlZEV2ZW50XG59IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgSW5saW5lRHJvcGRvd24gZnJvbSAnLi9pbmxpbmUtZHJvcGRvd24nOyBcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vdElubGluZURyb3Bkb3duIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gbnVsbDtcbiAgfVxuXG4gIHNldCBtb2RlbChtKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBtO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBNb2RlbFNldEV2ZW50KFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlLFxuICAgICAgICAhIXRoaXMuX21vZGVsXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgc2V0IHNlc3Npb24ocykge1xuICAgIHRoaXMuX3Nlc3Npb24gPSBzO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb247XG4gIH1cblxuICBfcmVuZGVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl9tb2RlbCAmJiB0aGlzLl9zZXNzaW9uKSB7XG4gICAgICBsZXQgZWxlbSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5saW5lRHJvcGRvd24sIHtcbiAgICAgICAgcHJvbXB0OiB0aGlzLl9tb2RlbC5wcm9tcHQsXG4gICAgICAgIHJhdGlvbmFsZTogdGhpcy5fbW9kZWwucmF0aW9uYWxlLFxuICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiB0aGlzLl9tb2RlbC50ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5fbW9kZWwuZGlzYWJsZWQsXG4gICAgICAgIGRpc3BsYXlUeXBlOiB0aGlzLl9tb2RlbC5kaXNwbGF5VHlwZSxcbiAgICAgICAgbWFya3VwOiB0aGlzLl9tb2RlbC5tYXJrdXAsXG4gICAgICAgIG1vZGU6IHRoaXMuX21vZGVsLm1vZGUsXG4gICAgICAgIGNob2ljZXM6IHRoaXMuX21vZGVsLmNob2ljZXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl9zZXNzaW9uLnZhbHVlLFxuICAgICAgICBmZWVkYmFjazogdGhpcy5fbW9kZWwuZmVlZGJhY2ssXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVNlc3Npb25cbiAgICAgIH0pO1xuICAgICAgUmVhY3RET00ucmVuZGVyKGVsZW0sIHRoaXMsICgpID0+IHtcbiAgICAgICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBkaXNwYXRjaENoYW5nZWRFdmVudCA9ICgpID0+IHtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudChcbiAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIHRoaXMuc2Vzc2lvbiAmJiAhIXRoaXMuc2Vzc2lvbi52YWx1ZVxuICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgY2hhbmdlU2Vzc2lvbiA9IHZhbHVlID0+IHtcbiAgICB0aGlzLnNlc3Npb24udmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmRpc3BhdGNoQ2hhbmdlZEV2ZW50KCk7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH07XG5cbiAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSb290SW5saW5lRHJvcGRvd24iLCJfbW9kZWwiLCJfc2Vzc2lvbiIsImVsZW0iLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJJbmxpbmVEcm9wZG93biIsInByb21wdCIsInJhdGlvbmFsZSIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJkaXNhYmxlZCIsImRpc3BsYXlUeXBlIiwibWFya3VwIiwibW9kZSIsImNob2ljZXMiLCJ2YWx1ZSIsImZlZWRiYWNrIiwib25DaGFuZ2UiLCJjaGFuZ2VTZXNzaW9uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInNlc3Npb24iLCJkaXNwYXRjaENoYW5nZWRFdmVudCIsIl9yZW5kZXIiLCJtIiwiTW9kZWxTZXRFdmVudCIsInMiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOzs7Ozs7SUFFcUJBLGtCOzs7OztBQUNuQixnQ0FBYztBQUFBOztBQUFBO0FBQ1o7QUFEWSxnR0E0QkosWUFBTTtBQUNkLFVBQUksTUFBS0MsTUFBTCxJQUFlLE1BQUtDLFFBQXhCLEVBQWtDO0FBQ2hDLFlBQUlDLElBQUksZ0JBQUdDLGtCQUFNQyxhQUFOLENBQW9CQywwQkFBcEIsRUFBb0M7QUFDN0NDLFVBQUFBLE1BQU0sRUFBRSxNQUFLTixNQUFMLENBQVlNLE1BRHlCO0FBRTdDQyxVQUFBQSxTQUFTLEVBQUUsTUFBS1AsTUFBTCxDQUFZTyxTQUZzQjtBQUc3Q0MsVUFBQUEsbUJBQW1CLEVBQUUsTUFBS1IsTUFBTCxDQUFZUSxtQkFIWTtBQUk3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtULE1BQUwsQ0FBWVMsUUFKdUI7QUFLN0NDLFVBQUFBLFdBQVcsRUFBRSxNQUFLVixNQUFMLENBQVlVLFdBTG9CO0FBTTdDQyxVQUFBQSxNQUFNLEVBQUUsTUFBS1gsTUFBTCxDQUFZVyxNQU55QjtBQU83Q0MsVUFBQUEsSUFBSSxFQUFFLE1BQUtaLE1BQUwsQ0FBWVksSUFQMkI7QUFRN0NDLFVBQUFBLE9BQU8sRUFBRSxNQUFLYixNQUFMLENBQVlhLE9BUndCO0FBUzdDQyxVQUFBQSxLQUFLLEVBQUUsTUFBS2IsUUFBTCxDQUFjYSxLQVR3QjtBQVU3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtmLE1BQUwsQ0FBWWUsUUFWdUI7QUFXN0NDLFVBQUFBLFFBQVEsRUFBRSxNQUFLQztBQVg4QixTQUFwQyxDQUFYOztBQWNBQyw2QkFBU0MsTUFBVCxDQUFnQmpCLElBQWhCLGtEQUE0QixZQUFNO0FBQ2hDO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0FoRGE7QUFBQSw2R0FrRFMsWUFBTTtBQUMzQixZQUFLa0IsYUFBTCxDQUNFLElBQUlDLG9DQUFKLENBQ0UsTUFBS0MsT0FBTCxDQUFhQyxXQUFiLEVBREYsRUFFRSxNQUFLQyxPQUFMLElBQWdCLENBQUMsQ0FBQyxNQUFLQSxPQUFMLENBQWFWLEtBRmpDLENBREY7QUFNRCxLQXpEYTtBQUFBLHNHQTJERSxVQUFBQSxLQUFLLEVBQUk7QUFDdkIsWUFBS1UsT0FBTCxDQUFhVixLQUFiLEdBQXFCQSxLQUFyQjs7QUFDQSxZQUFLVyxvQkFBTDs7QUFDQSxZQUFLQyxPQUFMO0FBQ0QsS0EvRGE7QUFFWixVQUFLMUIsTUFBTCxHQUFjLElBQWQ7QUFDQSxVQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBSFk7QUFJYjs7OztTQUVELGFBQVUwQixDQUFWLEVBQWE7QUFDWCxXQUFLM0IsTUFBTCxHQUFjMkIsQ0FBZDtBQUNBLFdBQUtQLGFBQUwsQ0FDRSxJQUFJUSw4QkFBSixDQUNFLEtBQUtOLE9BQUwsQ0FBYUMsV0FBYixFQURGLEVBRUUsS0FBS0MsT0FBTCxJQUFnQixDQUFDLENBQUMsS0FBS0EsT0FBTCxDQUFhVixLQUZqQyxFQUdFLENBQUMsQ0FBQyxLQUFLZCxNQUhULENBREY7O0FBUUEsV0FBSzBCLE9BQUw7QUFDRDs7O1NBT0QsZUFBYztBQUNaLGFBQU8sS0FBS3pCLFFBQVo7QUFDRCxLO1NBUEQsYUFBWTRCLENBQVosRUFBZTtBQUNiLFdBQUs1QixRQUFMLEdBQWdCNEIsQ0FBaEI7O0FBQ0EsV0FBS0gsT0FBTDtBQUNEOzs7V0EyQ0QsNkJBQW9CO0FBQ2xCLFdBQUtBLE9BQUw7QUFDRDs7O2tEQXBFNkNJLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQge1xuICBNb2RlbFNldEV2ZW50LFxuICBTZXNzaW9uQ2hhbmdlZEV2ZW50XG59IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgSW5saW5lRHJvcGRvd24gZnJvbSAnLi9pbmxpbmUtZHJvcGRvd24nOyBcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vdElubGluZURyb3Bkb3duIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gbnVsbDtcbiAgfVxuXG4gIHNldCBtb2RlbChtKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBtO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBNb2RlbFNldEV2ZW50KFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlLFxuICAgICAgICAhIXRoaXMuX21vZGVsXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgc2V0IHNlc3Npb24ocykge1xuICAgIHRoaXMuX3Nlc3Npb24gPSBzO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb247XG4gIH1cblxuICBfcmVuZGVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl9tb2RlbCAmJiB0aGlzLl9zZXNzaW9uKSB7XG4gICAgICBsZXQgZWxlbSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5saW5lRHJvcGRvd24sIHtcbiAgICAgICAgcHJvbXB0OiB0aGlzLl9tb2RlbC5wcm9tcHQsXG4gICAgICAgIHJhdGlvbmFsZTogdGhpcy5fbW9kZWwucmF0aW9uYWxlLFxuICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiB0aGlzLl9tb2RlbC50ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5fbW9kZWwuZGlzYWJsZWQsXG4gICAgICAgIGRpc3BsYXlUeXBlOiB0aGlzLl9tb2RlbC5kaXNwbGF5VHlwZSxcbiAgICAgICAgbWFya3VwOiB0aGlzLl9tb2RlbC5tYXJrdXAsXG4gICAgICAgIG1vZGU6IHRoaXMuX21vZGVsLm1vZGUsXG4gICAgICAgIGNob2ljZXM6IHRoaXMuX21vZGVsLmNob2ljZXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl9zZXNzaW9uLnZhbHVlLFxuICAgICAgICBmZWVkYmFjazogdGhpcy5fbW9kZWwuZmVlZGJhY2ssXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVNlc3Npb25cbiAgICAgIH0pO1xuXG4gICAgICBSZWFjdERPTS5yZW5kZXIoZWxlbSwgdGhpcywgKCkgPT4ge1xuICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRpc3BhdGNoQ2hhbmdlZEV2ZW50ID0gKCkgPT4ge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlXG4gICAgICApXG4gICAgKTtcbiAgfTtcblxuICBjaGFuZ2VTZXNzaW9uID0gdmFsdWUgPT4ge1xuICAgIHRoaXMuc2Vzc2lvbi52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZGlzcGF0Y2hDaGFuZ2VkRXZlbnQoKTtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfTtcblxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfVxufVxuIl19
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA4BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;AAaAC,6BAASC,MAAT,CAAgBjB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KA/Ca;AAAA,6GAiDS,YAAM;AAC3B,YAAKkB,aAAL,CACE,IAAIC,oCAAJ,CACE,MAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaV,KAFjC,CADF;AAMD,KAxDa;AAAA,sGA0DE,UAAAA,KAAK,EAAI;AACvB,YAAKU,OAAL,CAAaV,KAAb,GAAqBA,KAArB;;AACA,YAAKW,oBAAL;;AACA,YAAKC,OAAL;AACD,KA9Da;AAEZ,UAAK1B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAU0B,CAAV,EAAa;AACX,WAAK3B,MAAL,GAAc2B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaV,KAFjC,EAGE,CAAC,CAAC,KAAKd,MAHT,CADF;;AAQA,WAAK0B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKzB,QAAZ;AACD,K;SAPD,aAAY4B,CAAZ,EAAe;AACb,WAAK5B,QAAL,GAAgB4B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WA0CD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;kDAnE6CI,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelSetEvent,\n SessionChangedEvent\n} from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown'; \n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value,\n !!this._model\n )\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n onChange: this.changeSession\n });\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(\n new SessionChangedEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value\n )\n );\n };\n\n changeSession = value => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this._render();\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA4BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;AAcAC,6BAASC,MAAT,CAAgBjB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KAhDa;AAAA,6GAkDS,YAAM;AAC3B,YAAKkB,aAAL,CACE,IAAIC,oCAAJ,CACE,MAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaV,KAFjC,CADF;AAMD,KAzDa;AAAA,sGA2DE,UAAAA,KAAK,EAAI;AACvB,YAAKU,OAAL,CAAaV,KAAb,GAAqBA,KAArB;;AACA,YAAKW,oBAAL;;AACA,YAAKC,OAAL;AACD,KA/Da;AAEZ,UAAK1B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAU0B,CAAV,EAAa;AACX,WAAK3B,MAAL,GAAc2B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaV,KAFjC,EAGE,CAAC,CAAC,KAAKd,MAHT,CADF;;AAQA,WAAK0B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKzB,QAAZ;AACD,K;SAPD,aAAY4B,CAAZ,EAAe;AACb,WAAK5B,QAAL,GAAgB4B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WA2CD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;kDApE6CI,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelSetEvent,\n SessionChangedEvent\n} from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown'; \n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value,\n !!this._model\n )\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n onChange: this.changeSession\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(\n new SessionChangedEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value\n )\n );\n };\n\n changeSession = value => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this._render();\n }\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "3.10.6-next.2",
7
+ "version": "3.10.6-next.3",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",