@pie-element/multiple-choice 11.2.0-mui-update.1 → 11.2.0-mui-update.2
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/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +1 -1
- package/configure/lib/utils.js +1 -1
- package/configure/package.json +3 -3
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/package.json +1 -1
- package/lib/choice-input.js +1 -1
- package/lib/choice.js +1 -1
- package/lib/feedback-tick.js +1 -1
- package/lib/index.js +1 -1
- package/lib/main.js +1 -1
- package/lib/multiple-choice.js +1 -1
- package/lib/print.js +1 -1
- package/lib/session-updater.js +1 -1
- package/package.json +5 -5
- package/configure/lib/__tests__/root.test.js +0 -248
- package/controller/lib/__tests__/index.test.js +0 -520
- package/controller/lib/__tests__/utils.test.js +0 -8
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/choice-input-test.js +0 -117
- package/lib/__tests__/index-test.js +0 -151
- package/lib/__tests__/key-events-test.js +0 -95
- package/lib/__tests__/multiple-choice-test.js +0 -223
- package/lib/__tests__/session-updater-test.js +0 -70
package/lib/index.js
CHANGED
|
@@ -289,4 +289,4 @@ class MultipleChoice extends HTMLElement {
|
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
291
|
exports.default = MultipleChoice;
|
|
292
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWFpbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2NsaWVudCIsIl9kZWJvdW5jZSIsIl9kZWJ1ZyIsIl9waWVQbGF5ZXJFdmVudHMiLCJfbWF0aFJlbmRlcmluZyIsIl9yZW5kZXJVaSIsIl9zZXNzaW9uVXBkYXRlciIsImxvZyIsImRlYnVnIiwiaXNDb21wbGV0ZSIsInNlc3Npb24iLCJtb2RlbCIsImF1ZGlvQ29tcGxldGUiLCJlbGVtZW50Q29udGV4dCIsImF1dG9wbGF5QXVkaW9FbmFibGVkIiwiY29tcGxldGVBdWRpb0VuYWJsZWQiLCJhdWRpbyIsInF1ZXJ5U2VsZWN0b3IiLCJpc0luc2lkZVByb21wdCIsImNsb3Nlc3QiLCJ2YWx1ZSIsImNob2ljZU1vZGUiLCJtaW5TZWxlY3Rpb25zIiwibWF4U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJsZW5ndGgiLCJleHBvcnRzIiwiTXVsdGlwbGVDaG9pY2UiLCJIVE1MRWxlbWVudCIsImNvbnN0cnVjdG9yIiwiX21vZGVsIiwiX3Nlc3Npb24iLCJfYm91bmRIYW5kbGVLZXlEb3duIiwiaGFuZGxlS2V5RG93biIsImJpbmQiLCJfa2V5Ym9hcmRFdmVudHNFbmFibGVkIiwiX2F1ZGlvSW5pdGlhbGl6ZWQiLCJfcm9vdCIsIl9yZXJlbmRlciIsImRlYm91bmNlIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIk1haW4iLCJvbkNob2ljZUNoYW5nZWQiLCJfb25DaGFuZ2UiLCJvblNob3dDb3JyZWN0VG9nZ2xlIiwic2V0QXR0cmlidXRlIiwic2V0TGFuZ0F0dHJpYnV0ZSIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJxdWV1ZU1pY3JvdGFzayIsInJlbmRlck1hdGgiLCJrZXlib2FyZEV2ZW50c0VuYWJsZWQiLCJlbmFibGVLZXlib2FyZEV2ZW50cyIsImxlYWRpbmciLCJ0cmFpbGluZyIsIl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCIsImRpc3BhdGNoRXZlbnQiLCJTZXNzaW9uQ2hhbmdlZEV2ZW50IiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiX2Rpc3BhdGNoTW9kZWxTZXQiLCJNb2RlbFNldEV2ZW50IiwidW5kZWZpbmVkIiwibGFuZ3VhZ2UiLCJsYW5nIiwic2xpY2UiLCJzIiwiZGF0YSIsInVwZGF0ZVNlc3Npb25WYWx1ZSIsIl9jcmVhdGVBdWRpb0luZm9Ub2FzdCIsImluZm8iLCJkb2N1bWVudCIsImlkIiwiT2JqZWN0IiwiYXNzaWduIiwic3R5bGUiLCJwb3NpdGlvbiIsInRvcCIsIndpZHRoIiwiaGVpZ2h0IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImJhY2tncm91bmQiLCJ6SW5kZXgiLCJjdXJzb3IiLCJpbWciLCJzcmMiLCJFbmFibGVBdWRpb0F1dG9wbGF5SW1hZ2UiLCJhbHQiLCJhcHBlbmRDaGlsZCIsImNvbm5lY3RlZENhbGxiYWNrIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zTGlzdCIsImZvckVhY2giLCJtdXRhdGlvbiIsInR5cGUiLCJjb250YWluZXIiLCJlbmFibGVBdWRpbyIsInBsYXkiLCJyZW1vdmVDaGlsZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwicGF1c2VkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZVBsYXlpbmciLCJ1cGRhdGVTZXNzaW9uTWV0YWRhdGEiLCJhdWRpb1N0YXJ0VGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiaGFuZGxlRW5kZWQiLCJhdWRpb0VuZFRpbWUiLCJfYXVkaW8iLCJfaGFuZGxlUGxheWluZyIsIl9oYW5kbGVFbmRlZCIsIl9lbmFibGVBdWRpbyIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsIndpbmRvdyIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwidW5tb3VudCIsImV2ZW50IiwibW9kZSIsImtleVRvSW5kZXgiLCJrZXkiLCJudW1PZmZzZXQiLCJsZXR0ZXJPZmZzZXQiLCJ0ZXN0IiwiY2hhckNvZGVBdCIsImNob2ljZUluZGV4IiwiY2hvaWNlcyIsImN1cnJlbnRWYWx1ZSIsImNob2ljZUlkIiwibmV3VmFsdWUiLCJzZWxlY3RlZCIsImluY2x1ZGVzIiwic2VsZWN0b3IiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYWluIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgTW9kZWxTZXRFdmVudCwgU2Vzc2lvbkNoYW5nZWRFdmVudCB9IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgeyBFbmFibGVBdWRpb0F1dG9wbGF5SW1hZ2UgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IHsgdXBkYXRlU2Vzc2lvblZhbHVlLCB1cGRhdGVTZXNzaW9uTWV0YWRhdGEgfSBmcm9tICcuL3Nlc3Npb24tdXBkYXRlcic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtdWk6bXVsdGlwbGUtY2hvaWNlJyk7XG5cbmV4cG9ydCBjb25zdCBpc0NvbXBsZXRlID0gKHNlc3Npb24sIG1vZGVsLCBhdWRpb0NvbXBsZXRlLCBlbGVtZW50Q29udGV4dCkgPT4ge1xuICBjb25zdCB7IGF1dG9wbGF5QXVkaW9FbmFibGVkLCBjb21wbGV0ZUF1ZGlvRW5hYmxlZCB9ID0gbW9kZWwgfHwge307XG5cbiAgLy8gY2hlY2sgYXVkaW8gY29tcGxldGlvbiBpZiBhdWRpbyBzZXR0aW5ncyBhcmUgZW5hYmxlZCBhbmQgYXVkaW8gYWN0dWFsbHkgZXhpc3RzXG4gIGlmIChhdXRvcGxheUF1ZGlvRW5hYmxlZCAmJiBjb21wbGV0ZUF1ZGlvRW5hYmxlZCAmJiAhYXVkaW9Db21wbGV0ZSkge1xuICAgIGlmIChlbGVtZW50Q29udGV4dCkge1xuICAgICAgY29uc3QgYXVkaW8gPSBlbGVtZW50Q29udGV4dC5xdWVyeVNlbGVjdG9yKCdhdWRpbycpO1xuICAgICAgY29uc3QgaXNJbnNpZGVQcm9tcHQgPSBhdWRpbyAmJiBhdWRpby5jbG9zZXN0KCcjcHJldmlldy1wcm9tcHQnKTtcblxuICAgICAgLy8gb25seSByZXF1aXJlIGF1ZGlvIGNvbXBsZXRpb24gaWYgYXVkaW8gZXhpc3RzIGFuZCBpcyBpbnNpZGUgdGhlIHByb21wdFxuICAgICAgaWYgKGF1ZGlvICYmIGlzSW5zaWRlUHJvbXB0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24udmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7IGNob2ljZU1vZGUsIG1pblNlbGVjdGlvbnMgPSAxLCBtYXhTZWxlY3Rpb25zIH0gPSBtb2RlbCB8fCB7fTtcbiAgY29uc3Qgc2VsZWN0aW9ucyA9IHNlc3Npb24udmFsdWUubGVuZ3RoIHx8IDA7XG5cbiAgaWYgKGNob2ljZU1vZGUgPT09ICdyYWRpbycpIHtcbiAgICByZXR1cm4gISFzZWxlY3Rpb25zO1xuICB9XG5cbiAgaWYgKHNlbGVjdGlvbnMgPCBtaW5TZWxlY3Rpb25zIHx8IHNlbGVjdGlvbnMgPiBtYXhTZWxlY3Rpb25zKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXBsZUNob2ljZSBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlbCA9IG51bGw7XG4gICAgdGhpcy5fc2Vzc2lvbiA9IG51bGw7XG4gICAgdGhpcy5hdWRpb0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy5fYm91bmRIYW5kbGVLZXlEb3duID0gdGhpcy5oYW5kbGVLZXlEb3duLmJpbmQodGhpcyk7XG4gICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXVkaW9Jbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuXG4gICAgdGhpcy5fcmVyZW5kZXIgPSBkZWJvdW5jZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsICYmIHRoaXMuX3Nlc3Npb24pIHtcbiAgICAgICAgICB2YXIgZWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWFpbiwge1xuICAgICAgICAgICAgbW9kZWw6IHRoaXMuX21vZGVsLFxuICAgICAgICAgICAgc2Vzc2lvbjogdGhpcy5fc2Vzc2lvbixcbiAgICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZDogdGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIG9uU2hvd0NvcnJlY3RUb2dnbGU6IHRoaXMub25TaG93Q29ycmVjdFRvZ2dsZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy9UT0RPOiBhcmlhLWxhYmVsIGlzIHNldCBpbiB0aGUgX3JlcmVuZGVyIGJlY2F1c2Ugd2UgbmVlZCB0byBjaGFuZ2UgaXQgd2hlbiB0aGUgbW9kZWwuY2hvaWNlTW9kZSBpcyB1cGRhdGVkLiBDb25zaWRlciByZXZpc2l0aW5nIHRoZSBwbGFjZW1lbnQgb2YgdGhlIGFyaWEtbGFiZWwgc2V0dGluZyBpbiB0aGUgX3JlcmVuZGVyXG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgICAgICB0aGlzLl9tb2RlbC5jaG9pY2VNb2RlID09PSAncmFkaW8nID8gJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbicgOiAnTXVsdGlwbGUgQ29ycmVjdCBBbnN3ZXIgUXVlc3Rpb24nLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAncmVnaW9uJyk7XG4gICAgICAgICAgdGhpcy5zZXRMYW5nQXR0cmlidXRlKCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuX3Jvb3QpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBjcmVhdGVSb290KHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9yb290LnJlbmRlcihlbGVtZW50KTtcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBsb2coJ3JlbmRlciBjb21wbGV0ZSAtIHJlbmRlciBtYXRoJyk7XG4gICAgICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX21vZGVsLmtleWJvYXJkRXZlbnRzRW5hYmxlZCA9PT0gdHJ1ZSAmJiAhdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUtleWJvYXJkRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygnc2tpcCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgNTAsXG4gICAgICB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoXG4gICAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgaXNDb21wbGV0ZSh0aGlzLl9zZXNzaW9uLCB0aGlzLl9tb2RlbCwgdGhpcy5hdWRpb0NvbXBsZXRlLCB0aGlzKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXNwYXRjaE1vZGVsU2V0ID0gZGVib3VuY2UoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgTW9kZWxTZXRFdmVudChcbiAgICAgICAgICAgIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgaXNDb21wbGV0ZSh0aGlzLl9zZXNzaW9uLCB0aGlzLl9tb2RlbCwgdGhpcy5hdWRpb0NvbXBsZXRlLCB0aGlzKSxcbiAgICAgICAgICAgIHRoaXMuX21vZGVsICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICA1MCxcbiAgICAgIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIG9uU2hvd0NvcnJlY3RUb2dnbGUoKSB7XG4gICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgfVxuXG4gIHNldExhbmdBdHRyaWJ1dGUoKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9tb2RlbCAmJiB0eXBlb2YgdGhpcy5fbW9kZWwubGFuZ3VhZ2UgPyB0aGlzLl9tb2RlbC5sYW5ndWFnZSA6ICcnO1xuICAgIGNvbnN0IGxhbmcgPSBsYW5ndWFnZSA/IGxhbmd1YWdlLnNsaWNlKDAsIDIpIDogJ2VuJztcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGFuZycsIGxhbmcpO1xuICB9XG5cbiAgc2V0IG1vZGVsKHMpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHM7XG4gICAgdGhpcy5fcmVyZW5kZXIoKTtcbiAgICAvLyByZXNldCB0aGUgYXVkaW9Jbml0aWFsaXplZCB0byBmYWxzZSBzaW5jZSB0aGUgbW9kZWwgY2hhbmdlZCwgYW5kIHdlIG1pZ2h0IG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSBhdWRpb1xuICAgIHRoaXMuX2F1ZGlvSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwYXRjaE1vZGVsU2V0KCk7XG4gIH1cblxuICBnZXQgc2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbjtcbiAgfVxuXG4gIHNldCBzZXNzaW9uKHMpIHtcbiAgICB0aGlzLl9zZXNzaW9uID0gcztcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICAgIC8vVE9ETzogcmVtb3ZlIHRoaXMgc2Vzc2lvbi1jaGFuZ2VkIHNob3VsZCBvbmx5IGJlIGVtaXQgb24gdXNlciBjaGFuZ2VcbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCgpO1xuICB9XG5cbiAgX29uQ2hhbmdlKGRhdGEpIHtcbiAgICB1cGRhdGVTZXNzaW9uVmFsdWUodGhpcy5fc2Vzc2lvbiwgdGhpcy5fbW9kZWwuY2hvaWNlTW9kZSwgZGF0YSk7XG4gICAgdGhpcy5fZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQoKTtcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICB9XG5cbiAgX2NyZWF0ZUF1ZGlvSW5mb1RvYXN0KCkge1xuICAgIGNvbnN0IGluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBpbmZvLmlkID0gJ3BsYXktYXVkaW8taW5mbyc7XG5cbiAgICBPYmplY3QuYXNzaWduKGluZm8uc3R5bGUsIHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgekluZGV4OiAnMTAwMCcsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIGltZy5zcmMgPSBFbmFibGVBdWRpb0F1dG9wbGF5SW1hZ2U7XG4gICAgaW1nLmFsdCA9ICdDbGljayBhbnl3aGVyZSB0byBlbmFibGUgYXVkaW8gYXV0b3BsYXknO1xuICAgIGltZy53aWR0aCA9IDUwMDtcbiAgICBpbWcuaGVpZ2h0ID0gMzAwO1xuXG4gICAgaW5mby5hcHBlbmRDaGlsZChpbWcpO1xuICAgIHJldHVybiBpbmZvO1xuICB9XG5cbiAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgdGhpcy5fcmVyZW5kZXIoKTtcblxuICAgIC8vIE9ic2VydmF0aW9uOiAgYXVkaW8gaW4gQ2hyb21lIHdpbGwgaGF2ZSB0aGUgYXV0b3BsYXkgYXR0cmlidXRlLFxuICAgIC8vIHdoaWxlIG90aGVyIGJyb3dzZXJzIHdpbGwgbm90IGhhdmUgdGhlIGF1dG9wbGF5IGF0dHJpYnV0ZSBhbmQgd2lsbCBuZWVkIGEgdXNlciBpbnRlcmFjdGlvbiB0byBwbGF5IHRoZSBhdWRpb1xuICAgIC8vIFRoaXMgd29ya2Fyb3VuZCBmaXhlcyB0aGUgaXNzdWUgb2YgYXVkaW8gYmVpbmcgY2FjaGVkIGFuZCBwbGF5ZWQgb24gYW55IHVzZXIgaW50ZXJhY3Rpb24gaW4gU2FmYXJpIGFuZCBGaXJlZm94XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIG11dGF0aW9uc0xpc3QuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvSW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGF1ZGlvID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdhdWRpbycpO1xuICAgICAgICAgIGNvbnN0IGlzSW5zaWRlUHJvbXB0ID0gYXVkaW8gJiYgYXVkaW8uY2xvc2VzdCgnI3ByZXZpZXctcHJvbXB0Jyk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuX21vZGVsKSByZXR1cm47XG4gICAgICAgICAgaWYgKCF0aGlzLl9tb2RlbC5hdXRvcGxheUF1ZGlvRW5hYmxlZCkgcmV0dXJuO1xuICAgICAgICAgIGlmIChhdWRpbyAmJiAhaXNJbnNpZGVQcm9tcHQpIHJldHVybjtcbiAgICAgICAgICBpZiAoIWF1ZGlvKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5fY3JlYXRlQXVkaW9JbmZvVG9hc3QoKTtcbiAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNtYWluLWNvbnRhaW5lcicpO1xuICAgICAgICAgIGNvbnN0IGVuYWJsZUF1ZGlvID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlTZWxlY3RvcignI3BsYXktYXVkaW8taW5mbycpKSB7XG4gICAgICAgICAgICAgIGF1ZGlvLnBsYXkoKTtcbiAgICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGluZm8pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGVuYWJsZUF1ZGlvKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gaWYgdGhlIGF1ZGlvIGlzIHBhdXNlZCwgaXQgbWVhbnMgdGhlIHVzZXIgaGFzIG5vdCBpbnRlcmFjdGVkIHdpdGggdGhlIHBhZ2UgeWV0IGFuZCB0aGUgYXVkaW8gd2lsbCBub3QgcGxheVxuICAgICAgICAgIC8vIEZJWCBGT1IgU0FGQVJJOiBwbGF5IHdpdGggYSBzbGlnaHQgZGVsYXkgdG8gY2hlY2sgaWYgYXV0b3BsYXkgd2FzIGJsb2NrZWRcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChhdWRpby5wYXVzZWQgJiYgIXRoaXMucXVlcnlTZWxlY3RvcignI3BsYXktYXVkaW8taW5mbycpKSB7XG4gICAgICAgICAgICAgIC8vIGFkZCBpbmZvIG1lc3NhZ2UgYXMgYSB0b2FzdCB0byBlbmFibGUgYXVkaW8gcGxheWJhY2tcbiAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGluZm8pO1xuICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGVuYWJsZUF1ZGlvKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZW5hYmxlQXVkaW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxpc3RlbiBmb3IgdGhlIHBsYXlpbmcgZXZlbnQgdG8gcmVtb3ZlIHRoZSB0b2FzdCBpbiBjYXNlIHRoZSBhdWRpbyBwbGF5cyBiZWNhdXNlIG9mIHJlLXJlbmRlcmluZ1xuICAgICAgICAgIGNvbnN0IGhhbmRsZVBsYXlpbmcgPSAoKSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVTZXNzaW9uTWV0YWRhdGEodGhpcy5fc2Vzc2lvbiwgeyBhdWRpb1N0YXJ0VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNwbGF5LWF1ZGlvLWluZm8nKTtcbiAgICAgICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChpbmZvKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXVkaW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIGhhbmRsZVBsYXlpbmcpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgaGFuZGxlUGxheWluZyk7XG5cbiAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxpc3RlbiBmb3IgdGhlIGVuZGVkIGV2ZW50IHRvIHVwZGF0ZSB0aGUgaXNDb21wbGV0ZSBzdGF0ZVxuICAgICAgICAgIGNvbnN0IGhhbmRsZUVuZGVkID0gKCkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU2Vzc2lvbk1ldGFkYXRhKHRoaXMuX3Nlc3Npb24sIHsgYXVkaW9FbmRUaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSB9KTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW9Db21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgYXVkaW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBoYW5kbGVFbmRlZCk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgaGFuZGxlRW5kZWQpO1xuXG4gICAgICAgICAgLy8gc3RvcmUgcmVmZXJlbmNlcyB0byByZW1vdmUgbGF0ZXJcbiAgICAgICAgICB0aGlzLl9hdWRpbyA9IGF1ZGlvO1xuICAgICAgICAgIHRoaXMuX2hhbmRsZVBsYXlpbmcgPSBoYW5kbGVQbGF5aW5nO1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUVuZGVkID0gaGFuZGxlRW5kZWQ7XG4gICAgICAgICAgdGhpcy5fZW5hYmxlQXVkaW8gPSBlbmFibGVBdWRpbztcbiAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IG11bHRpcGxlIGluaXRpYWxpemF0aW9uc1xuICAgICAgICAgIHRoaXMuX2F1ZGlvSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcywgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIH1cblxuICBlbmFibGVLZXlib2FyZEV2ZW50cygpIHtcbiAgICBpZiAoIXRoaXMuX2tleWJvYXJkRXZlbnRzRW5hYmxlZCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9ib3VuZEhhbmRsZUtleURvd24pO1xuICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX2JvdW5kSGFuZGxlS2V5RG93bik7XG4gICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2VuYWJsZUF1ZGlvKTtcblxuICAgIGlmICh0aGlzLl9hdWRpbykge1xuICAgICAgdGhpcy5fYXVkaW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2hhbmRsZVBsYXlpbmcpO1xuICAgICAgdGhpcy5fYXVkaW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCB0aGlzLl9oYW5kbGVFbmRlZCk7XG4gICAgICB0aGlzLl9hdWRpbyA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jvb3QpIHtcbiAgICAgIHRoaXMuX3Jvb3QudW5tb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGdsb2JhbCBrZXlib2FyZCBldmVudHMgZm9yIHNlbGVjdGluZyBvciB0b2dnbGluZyBtdWx0aXBsZS1jaG9pY2UgYW5zd2Vycy5cbiAgICogTWFwcyBrZXlzICgxLTksIDAsIGEtaiwgQS1KKSB0byBjaG9pY2VzIGFuZCB1cGRhdGVzIHRoZSBzZXNzaW9uIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgKiBFbnN1cmVzIHZhbGlkIGtleSBwcmVzc2VzIHRvZ2dsZSBvciBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGNob2ljZSBiYXNlZCBvbiB0aGUgbW9kZWwuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9tb2RlbCB8fCAhdGhpcy5fc2Vzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbW9kZSB9ID0gdGhpcy5fbW9kZWw7XG4gICAgaWYgKG1vZGUgIT09ICdnYXRoZXInKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qga2V5VG9JbmRleCA9IChrZXkpID0+IHtcbiAgICAgIGNvbnN0IG51bU9mZnNldCA9IGtleSA+PSAnMScgJiYga2V5IDw9ICc5JyA/IGtleSAtICcxJyA6IGtleSA9PT0gJzAnID8gOSA6IC0xO1xuICAgICAgY29uc3QgbGV0dGVyT2Zmc2V0ID0gL15bYS1qQS1KXSQvLnRlc3Qoa2V5KSA/IGtleS50b0xvd2VyQ2FzZSgpLmNoYXJDb2RlQXQoMCkgLSAnYScuY2hhckNvZGVBdCgwKSA6IC0xO1xuICAgICAgcmV0dXJuIG51bU9mZnNldCA+PSAwID8gbnVtT2Zmc2V0IDogbGV0dGVyT2Zmc2V0O1xuICAgIH07XG5cbiAgICBjb25zdCBjaG9pY2VJbmRleCA9IGtleVRvSW5kZXgoZXZlbnQua2V5KTtcblxuICAgIGlmIChjaG9pY2VJbmRleCA9PT0gdW5kZWZpbmVkIHx8IGNob2ljZUluZGV4IDw9IC0xIHx8IGNob2ljZUluZGV4ID49IHRoaXMuX21vZGVsLmNob2ljZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuX3Nlc3Npb24udmFsdWUgfHwgW107XG4gICAgY29uc3QgY2hvaWNlSWQgPSB0aGlzLl9tb2RlbC5jaG9pY2VzW2Nob2ljZUluZGV4XS52YWx1ZTtcblxuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xuICAgICAgdmFsdWU6IGNob2ljZUlkLFxuICAgICAgc2VsZWN0ZWQ6ICFjdXJyZW50VmFsdWUuaW5jbHVkZXMoY2hvaWNlSWQpLFxuICAgICAgc2VsZWN0b3I6ICdLZXlib2FyZCcsXG4gICAgfTtcblxuICAgIHRoaXMuX29uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGNBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGVBQUEsR0FBQVIsT0FBQTtBQUVBLE1BQU1TLEdBQUcsR0FBRyxJQUFBQyxjQUFLLEVBQUMsd0JBQXdCLENBQUM7QUFFcEMsTUFBTUMsVUFBVSxHQUFHQSxDQUFDQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEtBQUs7RUFDM0UsTUFBTTtJQUFFQyxvQkFBb0I7SUFBRUM7RUFBcUIsQ0FBQyxHQUFHSixLQUFLLElBQUksQ0FBQyxDQUFDOztFQUVsRTtFQUNBLElBQUlHLG9CQUFvQixJQUFJQyxvQkFBb0IsSUFBSSxDQUFDSCxhQUFhLEVBQUU7SUFDbEUsSUFBSUMsY0FBYyxFQUFFO01BQ2xCLE1BQU1HLEtBQUssR0FBR0gsY0FBYyxDQUFDSSxhQUFhLENBQUMsT0FBTyxDQUFDO01BQ25ELE1BQU1DLGNBQWMsR0FBR0YsS0FBSyxJQUFJQSxLQUFLLENBQUNHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQzs7TUFFaEU7TUFDQSxJQUFJSCxLQUFLLElBQUlFLGNBQWMsRUFBRTtRQUMzQixPQUFPLEtBQUs7TUFDZDtJ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
|
|
292
|
+
//# sourceMappingURL=index.js.map
|
package/lib/main.js
CHANGED
|
@@ -51,4 +51,4 @@ class Main extends _react.default.Component {
|
|
|
51
51
|
session: {}
|
|
52
52
|
});
|
|
53
53
|
var _default = exports.default = Main;
|
|
54
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=main.js.map
|
package/lib/multiple-choice.js
CHANGED
|
@@ -383,4 +383,4 @@ MultipleChoice.defaultProps = {
|
|
|
383
383
|
}
|
|
384
384
|
};
|
|
385
385
|
var _default = exports.default = MultipleChoice;
|
|
386
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfY29ycmVjdEFuc3dlclRvZ2dsZSIsIl9jbGFzc25hbWVzIiwiX3N0eWxlcyIsIl9Cb3giLCJfcmVuZGVyVWkiLCJfdHJhbnNsYXRvciIsIl9jaG9pY2UiLCJ0cmFuc2xhdG9yIiwiVHJhbnNsYXRvciIsIk1haW5Db250YWluZXIiLCJzdHlsZWQiLCJCb3giLCJjb2xvciIsInRleHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwicG9zaXRpb24iLCJib3JkZXIiLCJQYXJ0TGFiZWwiLCJ0aGVtZSIsImRpc3BsYXkiLCJmb250U2l6ZSIsIm1hcmdpbiIsImZvbnRXZWlnaHQiLCJwYWRkaW5nQm90dG9tIiwic3BhY2luZyIsIlRlYWNoZXJJbnN0cnVjdGlvbnMiLCJtYXJnaW5Cb3R0b20iLCJIb3Jpem9udGFsTGF5b3V0IiwiZmxleERpcmVjdGlvbiIsImZsZXhXcmFwIiwiR3JpZExheW91dCIsIlN0eWxlZEZpZWxkc2V0IiwicGFkZGluZyIsIm1pbldpZHRoIiwib3V0bGluZSIsIlNyT25seSIsImxlZnQiLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93IiwiRXJyb3JUZXh0IiwidHlwb2dyYXBoeSIsInBhbGV0dGUiLCJlcnJvciIsIm1haW4iLCJwYWRkaW5nVG9wIiwiTXVsdGlwbGVDaG9pY2UiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImV2ZW50IiwidmFsdWUiLCJjaGVja2VkIiwidGFyZ2V0IiwibWF4U2VsZWN0aW9ucyIsIm9uQ2hvaWNlQ2hhbmdlZCIsInNlc3Npb24iLCJsZW5ndGgiLCJzZXRTdGF0ZSIsIm1heFNlbGVjdGlvbnNFcnJvclN0YXRlIiwic2VsZWN0ZWQiLCJzZWxlY3RvciIsIm1vZGUiLCJzaG93Q29ycmVjdCIsInN0YXRlIiwib25TaG93Q29ycmVjdFRvZ2dsZSIsImNob2ljZSIsImlzQ29ycmVjdCIsImNvcnJlY3QiLCJpc0NoZWNrZWQiLCJpc1NlbGVjdGVkIiwidW5kZWZpbmVkIiwiZSIsImZpZWxkc2V0IiwiY3VycmVudFRhcmdldCIsImFjdGl2ZUVsIiwiZG9jdW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIiwiZmlyc3RJbnB1dFJlZiIsImN1cnJlbnQiLCJmb2N1cyIsImFsd2F5c1Nob3dDb3JyZWN0Iiwib25Ub2dnbGUiLCJiaW5kIiwiY3JlYXRlUmVmIiwic2Vzc2lvblZhbHVlIiwiaW5kZXhPZiIsIlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwibmV4dFByb3BzIiwiY29ycmVjdFJlc3BvbnNlIiwiaW5kZXhUb1N5bWJvbCIsImluZGV4Iiwia2V5TW9kZSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvVXBwZXJDYXNlIiwiZ2V0Q2hlY2tlZCIsImlzUHJpbnRNb2RlIiwib3B0aW9ucyIsImlzRXZhbHVhdGVNb2RlIiwicmVuZGVySGVhZGluZyIsImNob2ljZU1vZGUiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyIiwiZGlzYWJsZWQiLCJjbGFzc05hbWUiLCJjaG9pY2VzIiwiZ3JpZENvbHVtbnMiLCJwYXJ0TGFiZWwiLCJwcm9tcHQiLCJyZXNwb25zZUNvcnJlY3QiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiYW5pbWF0aW9uc0Rpc2FibGVkIiwibGFuZ3VhZ2UiLCJpc1NlbGVjdGlvbkJ1dHRvbkJlbG93IiwibWluU2VsZWN0aW9ucyIsImF1dG9wbGF5QXVkaW9FbmFibGVkIiwiY3VzdG9tQXVkaW9CdXR0b24iLCJzaG93Q29ycmVjdEFuc3dlclRvZ2dsZSIsImNvbHVtbnNTdHlsZSIsImdyaWRUZW1wbGF0ZUNvbHVtbnMiLCJzZWxlY3Rpb25zIiwidGVhY2hlckluc3RydWN0aW9uc0RpdiIsIlByZXZpZXdQcm9tcHQiLCJ0YWdOYW1lIiwiZGVmYXVsdENsYXNzTmFtZSIsImdldE11bHRpcGxlQ2hvaWNlTWluU2VsZWN0aW9uRXJyb3JNZXNzYWdlIiwidCIsImxuZyIsIkxheW91dENvbXBvbmVudCIsImNob2ljZXNMYXlvdXQiLCJpZCIsImNsYXNzTmFtZXMiLCJDb2xsYXBzaWJsZSIsImxhYmVscyIsImhpZGRlbiIsInZpc2libGUiLCJ0YWJJbmRleCIsIm9uRm9jdXMiLCJoYW5kbGVHcm91cEZvY3VzIiwicm9sZSIsInNob3ciLCJ0b2dnbGVkIiwic3R5bGUiLCJtYXAiLCJhdXRvRm9jdXNSZWYiLCJzZWxlY3RlZEFuc3dlckJhY2tncm91bmRDb2xvciIsInNlbGVjdGVkQW5zd2VyU3Ryb2tlQ29sb3IiLCJzZWxlY3RlZEFuc3dlclN0cm9rZVdpZHRoIiwiaG92ZXJBbnN3ZXJCYWNrZ3JvdW5kQ29sb3IiLCJob3ZlckFuc3dlclN0cm9rZUNvbG9yIiwiaG92ZXJBbnN3ZXJTdHJva2VXaWR0aCIsImtleSIsImNob2ljZXNMZW5ndGgiLCJoYW5kbGVDaGFuZ2UiLCJoaWRlVGljayIsImNvcnJlY3RuZXNzIiwiZ2V0Q29ycmVjdG5lc3MiLCJkaXNwbGF5S2V5IiwiZXhwb3J0cyIsIlByb3BUeXBlcyIsInN0cmluZyIsIm9uZU9mIiwiYXJyYXkiLCJvYmplY3QiLCJib29sIiwiZnVuYyIsIm51bWJlciIsInBsYXlJbWFnZSIsInBhdXNlSW1hZ2UiLCJkZWZhdWx0UHJvcHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tdWx0aXBsZS1jaG9pY2UuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IEJveCBmcm9tICdAbXVpL21hdGVyaWFsL0JveCc7XG5pbXBvcnQgeyBjb2xvciwgQ29sbGFwc2libGUsIFByZXZpZXdQcm9tcHQgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IFRyYW5zbGF0b3IgZnJvbSAnQHBpZS1saWIvdHJhbnNsYXRvcic7XG5cbmltcG9ydCBDaG9pY2UgZnJvbSAnLi9jaG9pY2UnO1xuXG4vLyBNdWx0aXBsZUNob2ljZVxuXG5jb25zdCB7IHRyYW5zbGF0b3IgfSA9IFRyYW5zbGF0b3I7XG5cbmNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQoQm94KSh7XG4gIGNvbG9yOiBjb2xvci50ZXh0KCksXG4gIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAnJiAqJzoge1xuICAgICctd2Via2l0LWZvbnQtc21vb3RoaW5nJzogJ2FudGlhbGlhc2VkJyxcbiAgfSxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIC8vIHJlbW92ZSBib3JkZXIgZnJvbSBsZWdlbmQgdGFncyBpbnNpZGUgbWFpbiB0byBvdmVycmlkZSB0aGUgT1QgZGVmYXVsdCBzdHlsZXNcbiAgJyYgbGVnZW5kJzoge1xuICAgIGJvcmRlcjogJ25vbmUgIWltcG9ydGFudCcsXG4gIH0sXG59KTtcblxuY29uc3QgUGFydExhYmVsID0gc3R5bGVkKCdoMicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGRpc3BsYXk6ICdibG9jaycsXG4gIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gIG1hcmdpbjogJzAnLFxuICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZygyKSxcbn0pKTtcblxuY29uc3QgVGVhY2hlckluc3RydWN0aW9ucyA9IHN0eWxlZChCb3gpKCh7IHRoZW1lIH0pID0+ICh7XG4gIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZygyKSxcbn0pKTtcblxuY29uc3QgSG9yaXpvbnRhbExheW91dCA9IHN0eWxlZChCb3gpKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgZmxleFdyYXA6ICd3cmFwJyxcbn0pO1xuXG5jb25zdCBHcmlkTGF5b3V0ID0gc3R5bGVkKEJveCkoe1xuICBkaXNwbGF5OiAnZ3JpZCcsXG59KTtcblxuY29uc3QgU3R5bGVkRmllbGRzZXQgPSBzdHlsZWQoJ2ZpZWxkc2V0Jykoe1xuICBib3JkZXI6ICcwcHgnLFxuICBwYWRkaW5nOiAnMC4wMWVtIDAgMCAwJyxcbiAgbWFyZ2luOiAnMHB4JyxcbiAgbWluV2lkdGg6ICcwcHgnLFxuICAnJjpmb2N1cyc6IHtcbiAgICBvdXRsaW5lOiAnbm9uZScsXG4gIH0sXG59KTtcblxuY29uc3QgU3JPbmx5ID0gc3R5bGVkKCdoMycpKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIGxlZnQ6ICctMTAwMDBweCcsXG4gIHRvcDogJ2F1dG8nLFxuICB3aWR0aDogJzFweCcsXG4gIGhlaWdodDogJzFweCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbn0pO1xuXG5jb25zdCBFcnJvclRleHQgPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplIC0gMixcbiAgY29sb3I6IHRoZW1lLnBhbGV0dGUuZXJyb3IubWFpbixcbiAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZygxKSxcbn0pKTtcblxuZXhwb3J0IGNsYXNzIE11bHRpcGxlQ2hvaWNlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZTogUHJvcFR5cGVzLm9uZU9mKFsnZ2F0aGVyJywgJ3ZpZXcnLCAnZXZhbHVhdGUnXSksXG4gICAgY2hvaWNlTW9kZTogUHJvcFR5cGVzLm9uZU9mKFsncmFkaW8nLCAnY2hlY2tib3gnXSksXG4gICAga2V5TW9kZTogUHJvcFR5cGVzLm9uZU9mKFsnbnVtYmVycycsICdsZXR0ZXJzJywgJ25vbmUnXSksXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLmFycmF5LFxuICAgIHBhcnRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwcm9tcHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGVhY2hlckluc3RydWN0aW9uczogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZXNzaW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkNob2ljZUNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHJlc3BvbnNlQ29ycmVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29ycmVjdFJlc3BvbnNlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgY2hvaWNlc0xheW91dDogUHJvcFR5cGVzLm9uZU9mKFsndmVydGljYWwnLCAnZ3JpZCcsICdob3Jpem9udGFsJ10pLFxuICAgIGdyaWRDb2x1bW5zOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGFsd2F5c1Nob3dDb3JyZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhbmltYXRpb25zRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGxhbmd1YWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNlbGVjdGVkQW5zd2VyQmFja2dyb3VuZENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNlbGVjdGVkQW5zd2VyU3Ryb2tlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0ZWRBbnN3ZXJTdHJva2VXaWR0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBob3ZlckFuc3dlckJhY2tncm91bmRDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBob3ZlckFuc3dlclN0cm9rZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhvdmVyQW5zd2VyU3Ryb2tlV2lkdGg6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25TaG93Q29ycmVjdFRvZ2dsZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2VsZWN0aW9uczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBtYXhTZWxlY3Rpb25zOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGF1dG9wbGF5QXVkaW9FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjdXN0b21BdWRpb0J1dHRvbjoge1xuICAgICAgcGxheUltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgcGF1c2VJbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9LFxuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2hvd0NvcnJlY3Q6IHRoaXMucHJvcHMuYWx3YXlzU2hvd0NvcnJlY3QgfHwgZmFsc2UsXG4gICAgICBtYXhTZWxlY3Rpb25zRXJyb3JTdGF0ZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHRoaXMub25Ub2dnbGUgPSB0aGlzLm9uVG9nZ2xlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5maXJzdElucHV0UmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlKSB7XG4gICAgY29uc3Qgc2Vzc2lvblZhbHVlID0gdGhpcy5wcm9wcy5zZXNzaW9uICYmIHRoaXMucHJvcHMuc2Vzc2lvbi52YWx1ZTtcblxuICAgIHJldHVybiBzZXNzaW9uVmFsdWUgJiYgc2Vzc2lvblZhbHVlLmluZGV4T2YgJiYgc2Vzc2lvblZhbHVlLmluZGV4T2YodmFsdWUpID49IDA7XG4gIH1cblxuICAvLyBoYW5kbGVDaGFuZ2Ugd2FzIGFkZGVkIGZvciBhY2Nlc3NpYmlsaXR5LiBQbGVhc2Ugc2VlIGNvbW1lbnRzIGFuZCB2aWRlb3MgZnJvbSBQRC0yNDQxLlxuICBoYW5kbGVDaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBjaGVja2VkIH0gPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgeyBtYXhTZWxlY3Rpb25zLCBvbkNob2ljZUNoYW5nZWQsIHNlc3Npb24gfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoc2Vzc2lvbi52YWx1ZSAmJiBzZXNzaW9uLnZhbHVlLmxlbmd0aCA+PSBtYXhTZWxlY3Rpb25zKSB7XG4gICAgICAvLyBzaG93L2hpZGUgbWF4IHNlbGVjdGlvbnMgZXJyb3Igd2hlbiB1c2VyIHNlbGVjdC9kZXNlbGVjdCBhbiBhbnN3ZXJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBtYXhTZWxlY3Rpb25zRXJyb3JTdGF0ZTogY2hlY2tlZCB9KTtcblxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgLy8gcHJldmVudCBzZWxlY3RpbmcgbW9yZSBhbnN3ZXJzXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNob2ljZUNoYW5nZWQoeyB2YWx1ZSwgc2VsZWN0ZWQ6IGNoZWNrZWQsIHNlbGVjdG9yOiAnTW91c2UnIH0pO1xuICB9O1xuXG4gIG9uVG9nZ2xlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm1vZGUgPT09ICdldmFsdWF0ZScpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogIXRoaXMuc3RhdGUuc2hvd0NvcnJlY3QgfSwgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vblNob3dDb3JyZWN0VG9nZ2xlKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblNob3dDb3JyZWN0VG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICBpZiAoIW5leHRQcm9wcy5jb3JyZWN0UmVzcG9uc2UgJiYgdGhpcy5zdGF0ZS5zaG93Q29ycmVjdCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogZmFsc2UgfSwgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vblNob3dDb3JyZWN0VG9nZ2xlKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblNob3dDb3JyZWN0VG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChuZXh0UHJvcHMuYWx3YXlzU2hvd0NvcnJlY3QgJiYgdGhpcy5zdGF0ZS5zaG93Q29ycmVjdCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0OiB0cnVlIH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbmRleFRvU3ltYm9sKGluZGV4KSB7XG4gICAgaWYgKHRoaXMucHJvcHMua2V5TW9kZSA9PT0gJ251bWJlcnMnKSB7XG4gICAgICByZXR1cm4gYCR7aW5kZXggKyAxfWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMua2V5TW9kZSA9PT0gJ2xldHRlcnMnKSB7XG4gICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NyArIGluZGV4KS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldENvcnJlY3RuZXNzID0gKGNob2ljZSA9IHt9KSA9PiB7XG4gICAgY29uc3QgaXNDb3JyZWN0ID0gY2hvaWNlLmNvcnJlY3Q7XG4gICAgY29uc3QgaXNDaGVja2VkID0gdGhpcy5pc1NlbGVjdGVkKGNob2ljZS52YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5zaG93Q29ycmVjdCkge1xuICAgICAgcmV0dXJuIGlzQ29ycmVjdCA/ICdjb3JyZWN0JyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDb3JyZWN0KSB7XG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIC8vIEEgY29ycmVjdCBhbnN3ZXIgaXMgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGEgZ3JlZW4gY2hlY2ttYXJrXG4gICAgICAgIHJldHVybiAnY29ycmVjdCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBIGNvcnJlY3QgYW5zd2VyIGlzIE5PVCBzZWxlY3RlZDogbWFya2VkIHdpdGggYW4gb3JhbmdlIFhcbiAgICAgICAgcmV0dXJuICdpbmNvcnJlY3QnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIC8vIEFuIGluY29ycmVjdCBhbnN3ZXIgaXMgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGFuIG9yYW5nZSBYXG4gICAgICAgIHJldHVybiAnaW5jb3JyZWN0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFuIGluY29ycmVjdCBhbnN3ZXIgaXMgTk9UIHNlbGVjdGVkOiBub3QgbWFya2VkXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGdldENoZWNrZWQoY2hvaWNlKSB7XG4gICAgLy8gY2hlY2sgZm9yIHByaW50IGNvbnRleHQ6IG9wdGlvbnMgcHJvcCBpcyBwYXNzZWQgZnJvbSBwcmludC5qcyBhbmQgYWx3YXlzU2hvd0NvcnJlY3QgaXMgdHJ1ZVxuICAgIGNvbnN0IGlzUHJpbnRNb2RlID0gdGhpcy5wcm9wcy5vcHRpb25zICYmIHRoaXMucHJvcHMuYWx3YXlzU2hvd0NvcnJlY3Q7XG4gICAgXG4gICAgaWYgKGlzUHJpbnRNb2RlKSB7XG4gICAgICByZXR1cm4gY2hvaWNlLmNvcnJlY3QgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZXZhbHVhdGUgbW9kZSB3aXRoIHNob3cgY29ycmVjdCB0b2dnbGVkXG4gICAgY29uc3QgaXNFdmFsdWF0ZU1vZGUgPSB0aGlzLnN0YXRlLnNob3dDb3JyZWN0ICYmIHRoaXMucHJvcHMubW9kZSA9PT0gJ2V2YWx1YXRlJztcbiAgICBcbiAgICBpZiAoaXNFdmFsdWF0ZU1vZGUpIHtcbiAgICAgIHJldHVybiBjaG9pY2UuY29ycmVjdCB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBkZWZhdWx0IGJlaGF2aW9yOiBzaG93IHdoYXQgdGhlIHVzZXIgaGFzIHNlbGVjdGVkXG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuICB9XG5cbiAgLy8gcmVuZGVySGVhZGluZyBmdW5jdGlvbiB3YXMgYWRkZWQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gIHJlbmRlckhlYWRpbmcoKSB7XG4gICAgY29uc3QgeyBtb2RlLCBjaG9pY2VNb2RlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKG1vZGUgIT09ICdnYXRoZXInKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJyA/IChcbiAgICAgIDxTck9ubHk+TXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uPC9Tck9ubHk+XG4gICAgKSA6IChcbiAgICAgIDxTck9ubHk+TXVsdGlwbGUgU2VsZWN0IFF1ZXN0aW9uPC9Tck9ubHk+XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUdyb3VwRm9jdXMgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGZpZWxkc2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgIGNvbnN0IGFjdGl2ZUVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIGlmIChmaWVsZHNldC5jb250YWlucyhhY3RpdmVFbCkgJiYgYWN0aXZlRWwgIT09IGZpZWxkc2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gT25seSBmb2N1cyB0aGUgZmlyc3QgaW5wdXQgaWYgdXNlciBpcyB0YWJiaW5nIGZvcndhcmRcbiAgICBpZiAoIWUucmVsYXRlZFRhcmdldCB8fCBmaWVsZHNldC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpIHtcbiAgICAgIGlmICh0aGlzLmZpcnN0SW5wdXRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgdGhpcy5maXJzdElucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNob2ljZXMgPSBbXSxcbiAgICAgIGNob2ljZU1vZGUsXG4gICAgICBncmlkQ29sdW1ucyxcbiAgICAgIHBhcnRMYWJlbCxcbiAgICAgIHByb21wdCxcbiAgICAgIHJlc3BvbnNlQ29ycmVjdCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgICBhbHdheXNTaG93Q29ycmVjdCxcbiAgICAgIGFuaW1hdGlvbnNEaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdyxcbiAgICAgIG1pblNlbGVjdGlvbnMsXG4gICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgYXV0b3BsYXlBdWRpb0VuYWJsZWQsXG4gICAgICBzZXNzaW9uLFxuICAgICAgY3VzdG9tQXVkaW9CdXR0b24sXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzaG93Q29ycmVjdCwgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNFdmFsdWF0ZU1vZGUgPSBtb2RlID09PSAnZXZhbHVhdGUnO1xuICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gaXNFdmFsdWF0ZU1vZGUgJiYgIXJlc3BvbnNlQ29ycmVjdDtcbiAgICBjb25zdCBjb2x1bW5zU3R5bGUgPSBncmlkQ29sdW1ucyA+IDEgPyB7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtncmlkQ29sdW1uc30sIDFmcilgIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0aW9ucyA9IChzZXNzaW9uLnZhbHVlICYmIHNlc3Npb24udmFsdWUubGVuZ3RoKSB8fCAwO1xuXG4gICAgY29uc3QgdGVhY2hlckluc3RydWN0aW9uc0RpdiA9IChcbiAgICAgIDxQcmV2aWV3UHJvbXB0XG4gICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICBjbGFzc05hbWU9XCJwcm9tcHRcIlxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lPVwidGVhY2hlci1pbnN0cnVjdGlvbnNcIlxuICAgICAgICBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBjb25zdCBnZXRNdWx0aXBsZUNob2ljZU1pblNlbGVjdGlvbkVycm9yTWVzc2FnZSA9ICgpID0+IHtcbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zICYmIG1heFNlbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG1pblNlbGVjdGlvbnMgPT09IG1heFNlbGVjdGlvbnNcbiAgICAgICAgICA/IHRyYW5zbGF0b3IudCgndHJhbnNsYXRpb246bXVsdGlwbGVDaG9pY2U6bWlubWF4U2VsZWN0aW9uc19lcXVhbCcsIHsgbG5nOiBsYW5ndWFnZSwgbWluU2VsZWN0aW9ucyB9KVxuICAgICAgICAgIDogdHJhbnNsYXRvci50KCd0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptaW5tYXhTZWxlY3Rpb25zX3JhbmdlJywge1xuICAgICAgICAgICAgICBsbmc6IGxhbmd1YWdlLFxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25zLFxuICAgICAgICAgICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zKSB7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdG9yLnQoJ3RyYW5zbGF0aW9uOm11bHRpcGxlQ2hvaWNlOm1pblNlbGVjdGlvbnMnLCB7IGxuZzogbGFuZ3VhZ2UsIG1pblNlbGVjdGlvbnMgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnJztcbiAgICB9O1xuXG4gICAgY29uc3QgTGF5b3V0Q29tcG9uZW50ID0gdGhpcy5wcm9wcy5jaG9pY2VzTGF5b3V0ID09PSAnZ3JpZCcgXG4gICAgICA/IEdyaWRMYXlvdXQgXG4gICAgICA6IHRoaXMucHJvcHMuY2hvaWNlc0xheW91dCA9PT0gJ2hvcml6b250YWwnIFxuICAgICAgICA/IEhvcml6b250YWxMYXlvdXQgXG4gICAgICAgIDogQm94O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNYWluQ29udGFpbmVyIGlkPXsnbWFpbi1jb250YWluZXInfSBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCAnbXVsdGlwbGUtY2hvaWNlJyl9PlxuICAgICAgICB7cGFydExhYmVsICYmIDxQYXJ0TGFiZWw+e3BhcnRMYWJlbH08L1BhcnRMYWJlbD59XG5cbiAgICAgICAge3RoaXMucmVuZGVySGVhZGluZygpfVxuXG4gICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zICYmIChcbiAgICAgICAgICA8VGVhY2hlckluc3RydWN0aW9ucz5cbiAgICAgICAgICAgIHshYW5pbWF0aW9uc0Rpc2FibGVkID8gKFxuICAgICAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgICAgICBsYWJlbHM9e3tcbiAgICAgICAgICAgICAgICAgIGhpZGRlbjogJ1Nob3cgVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogJ0hpZGUgVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0Rpdn1cbiAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNEaXZcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9UZWFjaGVySW5zdHJ1Y3Rpb25zPlxuICAgICAgICApfVxuXG4gICAgICAgIDxTdHlsZWRGaWVsZHNldFxuICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgIG9uRm9jdXM9e3RoaXMuaGFuZGxlR3JvdXBGb2N1c31cbiAgICAgICAgICByb2xlPXtjaG9pY2VNb2RlID09PSAncmFkaW8nID8gJ3JhZGlvZ3JvdXAnIDogJ2dyb3VwJ31cbiAgICAgICAgPlxuICAgICAgICAgIDxQcmV2aWV3UHJvbXB0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcm9tcHRcIlxuICAgICAgICAgICAgZGVmYXVsdENsYXNzTmFtZT1cInByb21wdFwiXG4gICAgICAgICAgICBwcm9tcHQ9e3Byb21wdH1cbiAgICAgICAgICAgIHRhZ05hbWU9eydsZWdlbmQnfVxuICAgICAgICAgICAgYXV0b3BsYXlBdWRpb0VuYWJsZWQ9e2F1dG9wbGF5QXVkaW9FbmFibGVkfVxuICAgICAgICAgICAgY3VzdG9tQXVkaW9CdXR0b249e2N1c3RvbUF1ZGlvQnV0dG9ufVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7IWFsd2F5c1Nob3dDb3JyZWN0ICYmIChcbiAgICAgICAgICAgIDxDb3JyZWN0QW5zd2VyVG9nZ2xlXG4gICAgICAgICAgICAgIHNob3c9e3Nob3dDb3JyZWN0QW5zd2VyVG9nZ2xlfVxuICAgICAgICAgICAgICB0b2dnbGVkPXtzaG93Q29ycmVjdH1cbiAgICAgICAgICAgICAgb25Ub2dnbGU9e3RoaXMub25Ub2dnbGUuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgbGFuZ3VhZ2U9e2xhbmd1YWdlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPExheW91dENvbXBvbmVudCBzdHlsZT17Y29sdW1uc1N0eWxlfT5cbiAgICAgICAgICAgIHtjaG9pY2VzLm1hcCgoY2hvaWNlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8Q2hvaWNlXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzUmVmPXtpbmRleCA9PT0gMCA/IHRoaXMuZmlyc3RJbnB1dFJlZiA6IG51bGx9XG4gICAgICAgICAgICAgICAgY2hvaWNlc0xheW91dD17dGhpcy5wcm9wcy5jaG9pY2VzTGF5b3V0fVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQW5zd2VyQmFja2dyb3VuZENvbG9yPXt0aGlzLnByb3BzLnNlbGVjdGVkQW5zd2VyQmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQW5zd2VyU3Ryb2tlQ29sb3I9e3RoaXMucHJvcHMuc2VsZWN0ZWRBbnN3ZXJTdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFuc3dlclN0cm9rZVdpZHRoPXt0aGlzLnByb3BzLnNlbGVjdGVkQW5zd2VyU3Ryb2tlV2lkdGh9XG4gICAgICAgICAgICAgICAgaG92ZXJBbnN3ZXJCYWNrZ3JvdW5kQ29sb3I9e3RoaXMucHJvcHMuaG92ZXJBbnN3ZXJCYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgaG92ZXJBbnN3ZXJTdHJva2VDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckFuc3dlclN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgIGhvdmVyQW5zd2VyU3Ryb2tlV2lkdGg9e3RoaXMucHJvcHMuaG92ZXJBbnN3ZXJTdHJva2VXaWR0aH1cbiAgICAgICAgICAgICAgICBncmlkQ29sdW1ucz17Z3JpZENvbHVtbnN9XG4gICAgICAgICAgICAgICAga2V5PXtgY2hvaWNlLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICBjaG9pY2U9e2Nob2ljZX1cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgY2hvaWNlc0xlbmd0aD17Y2hvaWNlcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgc2hvd0NvcnJlY3Q9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICAgIGlzRXZhbHVhdGVNb2RlPXtpc0V2YWx1YXRlTW9kZX1cbiAgICAgICAgICAgICAgICBjaG9pY2VNb2RlPXtjaG9pY2VNb2RlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0YWdOYW1lPXtwYXJ0TGFiZWwgPyBgZ3JvdXAtJHtwYXJ0TGFiZWx9YCA6ICdncm91cCd9XG4gICAgICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICBoaWRlVGljaz17Y2hvaWNlLmhpZGVUaWNrfVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMuZ2V0Q2hlY2tlZChjaG9pY2UpfVxuICAgICAgICAgICAgICAgIGNvcnJlY3RuZXNzPXtpc0V2YWx1YXRlTW9kZSA/IHRoaXMuZ2V0Q29ycmVjdG5lc3MoY2hvaWNlKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBkaXNwbGF5S2V5PXt0aGlzLmluZGV4VG9TeW1ib2woaW5kZXgpfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0aW9uQnV0dG9uQmVsb3c9e2lzU2VsZWN0aW9uQnV0dG9uQmVsb3d9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0xheW91dENvbXBvbmVudD5cbiAgICAgICAgPC9TdHlsZWRGaWVsZHNldD5cblxuICAgICAgICB7Y2hvaWNlTW9kZSA9PT0gJ2NoZWNrYm94JyAmJiBzZWxlY3Rpb25zIDwgbWluU2VsZWN0aW9ucyAmJiAoXG4gICAgICAgICAgPEVycm9yVGV4dD57Z2V0TXVsdGlwbGVDaG9pY2VNaW5TZWxlY3Rpb25FcnJvck1lc3NhZ2UoKX08L0Vycm9yVGV4dD5cbiAgICAgICAgKX1cbiAgICAgICAge2Nob2ljZU1vZGUgPT09ICdjaGVja2JveCcgJiYgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgJiYgKFxuICAgICAgICAgIDxFcnJvclRleHQ+XG4gICAgICAgICAgICB7dHJhbnNsYXRvci50KGB0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptYXhTZWxlY3Rpb25zXyR7bWF4U2VsZWN0aW9ucyA9PT0gMSA/ICdvbmUnIDogJ290aGVyJ31gLCB7XG4gICAgICAgICAgICAgIGxuZzogbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIG1heFNlbGVjdGlvbnMsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0Vycm9yVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICApO1xuICB9XG59XG5cbk11bHRpcGxlQ2hvaWNlLmRlZmF1bHRQcm9wcyA9IHtcbiAgc2Vzc2lvbjoge1xuICAgIHZhbHVlOiBbXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpcGxlQ2hvaWNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxJQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBUSxPQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFFQTs7QUFFQSxNQUFNO0VBQUVTO0FBQVcsQ0FBQyxHQUFHQyxtQkFBVTtBQUVqQyxNQUFNQyxhQUFhLEdBQUcsSUFBQUMsY0FBTSxFQUFDQyxZ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RXdELGtCQUFTLENBQUNLLElBQUk7RUFDeEJuSCxlQUFlLEVBQUU4RyxrQkFBUyxDQUFDTSxJQUFJO0VBQy9CeEQsZUFBZSxFQUFFa0Qsa0JBQVMsQ0FBQ0ssSUFBSTtFQUMvQjVFLGVBQWUsRUFBRXVFLGtCQUFTLENBQUNHLEtBQUs7RUFDaENqQyxhQUFhLEVBQUU4QixrQkFBUyxDQUFDRSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0VBQ2xFdkQsV0FBVyxFQUFFcUQsa0JBQVMsQ0FBQ0MsTUFBTTtFQUM3QmhGLGlCQUFpQixFQUFFK0Usa0JBQVMsQ0FBQ0ssSUFBSTtFQUNqQ3JELGtCQUFrQixFQUFFZ0Qsa0JBQVMsQ0FBQ0ssSUFBSTtFQUNsQ3BELFFBQVEsRUFBRStDLGtCQUFTLENBQUNDLE1BQU07RUFDMUJmLDZCQUE2QixFQUFFYyxrQkFBUyxDQUFDQyxNQUFNO0VBQy9DZCx5QkFBeUIsRUFBRWEsa0JBQVMsQ0FBQ0MsTUFBTTtFQUMzQ2IseUJBQXlCLEVBQUVZLGtCQUFTLENBQUNDLE1BQU07RUFDM0NaLDBCQUEwQixFQUFFVyxrQkFBUyxDQUFDQyxNQUFNO0VBQzVDWCxzQkFBc0IsRUFBRVUsa0JBQVMsQ0FBQ0MsTUFBTTtFQUN4Q1Ysc0JBQXNCLEVBQUVTLGtCQUFTLENBQUNDLE1BQU07RUFDeENyRyxtQkFBbUIsRUFBRW9HLGtCQUFTLENBQUNNLElBQUk7RUFDbkNwRCxzQkFBc0IsRUFBRThDLGtCQUFTLENBQUNLLElBQUk7RUFDdENsRCxhQUFhLEVBQUU2QyxrQkFBUyxDQUFDTyxNQUFNO0VBQy9CdEgsYUFBYSxFQUFFK0csa0JBQVMsQ0FBQ08sTUFBTTtFQUMvQm5ELG9CQUFvQixFQUFFNEMsa0JBQVMsQ0FBQ0ssSUFBSTtFQUNwQ2hELGlCQUFpQixFQUFFO0lBQ2pCbUQsU0FBUyxFQUFFUixrQkFBUyxDQUFDQyxNQUFNO0lBQzNCUSxVQUFVLEVBQUVULGtCQUFTLENBQUNDO0VBQ3hCLENBQUM7RUFDRC9ELE9BQU8sRUFBRThELGtCQUFTLENBQUNJO0FBQ3JCLENBQUM7QUFzVEg5SCxjQUFjLENBQUNvSSxZQUFZLEdBQUc7RUFDNUJ2SCxPQUFPLEVBQUU7SUFDUEwsS0FBSyxFQUFFO0VBQ1Q7QUFDRixDQUFDO0FBQUMsSUFBQTZILFFBQUEsR0FBQVosT0FBQSxDQUFBbkgsT0FBQSxHQUVhTixjQUFjIiwiaWdub3JlTGlzdCI6W119
|
|
386
|
+
//# sourceMappingURL=multiple-choice.js.map
|
package/lib/print.js
CHANGED
|
@@ -89,4 +89,4 @@ class MultipleChoicePrint extends HTMLElement {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.default = MultipleChoicePrint;
|
|
92
|
-
//# sourceMappingURL=
|
|
92
|
+
//# sourceMappingURL=print.js.map
|
package/lib/session-updater.js
CHANGED
|
@@ -34,4 +34,4 @@ function updateSessionMetadata(session, metadata) {
|
|
|
34
34
|
session.waitTime = session.audioEndTime - session.audioStartTime;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=session-updater.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "11.2.0-mui-update.
|
|
4
|
+
"version": "11.2.0-mui-update.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"@mui/icons-material": "^7.3.4",
|
|
12
12
|
"@mui/material": "^7.3.4",
|
|
13
13
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
14
|
-
"@pie-lib/correct-answer-toggle": "2.
|
|
15
|
-
"@pie-lib/math-rendering": "3.
|
|
16
|
-
"@pie-lib/render-ui": "4.
|
|
17
|
-
"@pie-lib/translator": "2.
|
|
14
|
+
"@pie-lib/correct-answer-toggle": "2.29.0-mui-update.0",
|
|
15
|
+
"@pie-lib/math-rendering": "3.30.0-mui-update.0",
|
|
16
|
+
"@pie-lib/render-ui": "4.39.0-mui-update.0",
|
|
17
|
+
"@pie-lib/translator": "2.28.0-mui-update.0",
|
|
18
18
|
"classnames": "^2.2.5",
|
|
19
19
|
"debug": "^4.1.1",
|
|
20
20
|
"enzyme-to-json": "^3.3.3",
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _enzyme = require("enzyme");
|
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
var _main = require("../main");
|
|
7
|
-
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
8
|
-
var _configUi = require("@pie-lib/config-ui");
|
|
9
|
-
var _index = _interopRequireDefault(require("../index"));
|
|
10
|
-
jest.mock('@pie-lib/config-ui', () => ({
|
|
11
|
-
choiceUtils: {
|
|
12
|
-
firstAvailableIndex: jest.fn(),
|
|
13
|
-
normalizeChoices: jest.fn(model => model)
|
|
14
|
-
},
|
|
15
|
-
settings: {
|
|
16
|
-
Panel: props => /*#__PURE__*/_react.default.createElement("div", props),
|
|
17
|
-
toggle: jest.fn(),
|
|
18
|
-
radio: jest.fn()
|
|
19
|
-
}
|
|
20
|
-
}));
|
|
21
|
-
const model = extras => ({
|
|
22
|
-
..._defaults.default.model,
|
|
23
|
-
prompt: 'Which of these northern European countries are EU members?',
|
|
24
|
-
choiceMode: 'checkbox',
|
|
25
|
-
choices: [{
|
|
26
|
-
correct: true,
|
|
27
|
-
value: 'sweden',
|
|
28
|
-
label: 'Sweden',
|
|
29
|
-
feedback: {
|
|
30
|
-
type: 'none',
|
|
31
|
-
value: ''
|
|
32
|
-
}
|
|
33
|
-
}, {
|
|
34
|
-
value: 'iceland',
|
|
35
|
-
label: 'Iceland',
|
|
36
|
-
feedback: {
|
|
37
|
-
type: 'none',
|
|
38
|
-
value: ''
|
|
39
|
-
}
|
|
40
|
-
}, {
|
|
41
|
-
value: 'norway',
|
|
42
|
-
label: 'Norway',
|
|
43
|
-
feedback: {
|
|
44
|
-
type: 'none',
|
|
45
|
-
value: ''
|
|
46
|
-
}
|
|
47
|
-
}, {
|
|
48
|
-
correct: true,
|
|
49
|
-
value: 'finland',
|
|
50
|
-
label: 'Finland',
|
|
51
|
-
feedback: {
|
|
52
|
-
type: 'none',
|
|
53
|
-
value: ''
|
|
54
|
-
}
|
|
55
|
-
}],
|
|
56
|
-
partialScoring: false,
|
|
57
|
-
configure: {},
|
|
58
|
-
...extras
|
|
59
|
-
});
|
|
60
|
-
describe('Main', () => {
|
|
61
|
-
let w;
|
|
62
|
-
let onModelChanged = jest.fn();
|
|
63
|
-
let onConfigurationChanged = jest.fn();
|
|
64
|
-
let initialModel = model();
|
|
65
|
-
const wrapper = extras => {
|
|
66
|
-
const defaults = {
|
|
67
|
-
onModelChanged,
|
|
68
|
-
onConfigurationChanged,
|
|
69
|
-
classes: {},
|
|
70
|
-
model: model()
|
|
71
|
-
};
|
|
72
|
-
const props = {
|
|
73
|
-
...defaults,
|
|
74
|
-
...extras
|
|
75
|
-
};
|
|
76
|
-
return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_main.Main, props));
|
|
77
|
-
};
|
|
78
|
-
describe('snapshot', () => {
|
|
79
|
-
it('renders with choicePrefix="numbers"', () => {
|
|
80
|
-
w = wrapper({
|
|
81
|
-
model: model({
|
|
82
|
-
choicePrefix: 'numbers'
|
|
83
|
-
})
|
|
84
|
-
});
|
|
85
|
-
expect(w).toMatchSnapshot();
|
|
86
|
-
});
|
|
87
|
-
it('renders with choicePrefix="letters" as default', () => {
|
|
88
|
-
w = wrapper();
|
|
89
|
-
expect(w).toMatchSnapshot();
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
describe('logic', () => {
|
|
93
|
-
beforeEach(() => {
|
|
94
|
-
w = wrapper();
|
|
95
|
-
});
|
|
96
|
-
describe('onRemoveChoice', () => {
|
|
97
|
-
it('removes choice', () => {
|
|
98
|
-
w.instance().onRemoveChoice(0);
|
|
99
|
-
expect(onModelChanged).toBeCalledWith({
|
|
100
|
-
...initialModel,
|
|
101
|
-
choices: initialModel.choices.slice(1)
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
describe('createDefaultModel', () => {
|
|
106
|
-
it('sets choicesLayout: horizontal if verticalMode: false', () => {
|
|
107
|
-
const m = _index.default.createDefaultModel(model({
|
|
108
|
-
verticalMode: false,
|
|
109
|
-
choicesLayout: undefined
|
|
110
|
-
}));
|
|
111
|
-
expect(m.choicesLayout).toEqual('horizontal');
|
|
112
|
-
});
|
|
113
|
-
it('sets choicesLayout: vertical if verticalMode: true', () => {
|
|
114
|
-
const m = _index.default.createDefaultModel(model({
|
|
115
|
-
verticalMode: true,
|
|
116
|
-
choicesLayout: undefined
|
|
117
|
-
}));
|
|
118
|
-
expect(m.choicesLayout).toEqual('vertical');
|
|
119
|
-
});
|
|
120
|
-
it('sets choicesLayout: grid if verticalMode: true && choicesLayout: grid', () => {
|
|
121
|
-
const m = _index.default.createDefaultModel(model({
|
|
122
|
-
verticalMode: true,
|
|
123
|
-
choicesLayout: 'grid'
|
|
124
|
-
}));
|
|
125
|
-
expect(m.choicesLayout).toEqual('grid');
|
|
126
|
-
});
|
|
127
|
-
it('sets choicesLayout: vertical', () => {
|
|
128
|
-
const m = _index.default.createDefaultModel(model());
|
|
129
|
-
expect(m.choicesLayout).toEqual('vertical');
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
describe('onAddChoice', () => {
|
|
133
|
-
it('adds a choice', () => {
|
|
134
|
-
w.instance().onAddChoice();
|
|
135
|
-
expect(onModelChanged).toBeCalledWith({
|
|
136
|
-
...initialModel,
|
|
137
|
-
choices: [...initialModel.choices, {
|
|
138
|
-
label: '',
|
|
139
|
-
value: _configUi.choiceUtils.firstAvailableIndex(initialModel.choices.map(c => c.value), 0),
|
|
140
|
-
feedback: {
|
|
141
|
-
type: 'none'
|
|
142
|
-
}
|
|
143
|
-
}]
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
describe('onChoiceChanged', () => {
|
|
148
|
-
describe('checkbox', () => {
|
|
149
|
-
it('changes choice (there are 2 true values)', () => {
|
|
150
|
-
const newChoices = [...model().choices];
|
|
151
|
-
let choice = {
|
|
152
|
-
correct: true,
|
|
153
|
-
value: 'iceland',
|
|
154
|
-
label: 'Iceland',
|
|
155
|
-
feedback: {
|
|
156
|
-
type: 'none',
|
|
157
|
-
value: ''
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
w.instance().onChoiceChanged(1, choice);
|
|
161
|
-
newChoices[1].correct = true;
|
|
162
|
-
expect(onModelChanged).toBeCalledWith({
|
|
163
|
-
...initialModel,
|
|
164
|
-
choices: newChoices
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
describe('radio', () => {
|
|
169
|
-
it('changes choice (there is only one true value)', () => {
|
|
170
|
-
let choice = {
|
|
171
|
-
correct: true,
|
|
172
|
-
value: 'iceland',
|
|
173
|
-
label: 'Iceland',
|
|
174
|
-
feedback: {
|
|
175
|
-
type: 'none',
|
|
176
|
-
value: ''
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
const newModel = {
|
|
180
|
-
...initialModel,
|
|
181
|
-
choiceMode: 'radio',
|
|
182
|
-
choices: initialModel.choices.slice(0, 2)
|
|
183
|
-
};
|
|
184
|
-
w = wrapper({
|
|
185
|
-
model: newModel
|
|
186
|
-
});
|
|
187
|
-
w.instance().onChoiceChanged(1, choice);
|
|
188
|
-
expect(onModelChanged).toBeCalledWith({
|
|
189
|
-
...newModel,
|
|
190
|
-
choices: [{
|
|
191
|
-
correct: false,
|
|
192
|
-
value: 'sweden',
|
|
193
|
-
label: 'Sweden',
|
|
194
|
-
feedback: {
|
|
195
|
-
type: 'none',
|
|
196
|
-
value: ''
|
|
197
|
-
}
|
|
198
|
-
}, {
|
|
199
|
-
correct: true,
|
|
200
|
-
value: 'iceland',
|
|
201
|
-
label: 'Iceland',
|
|
202
|
-
feedback: {
|
|
203
|
-
type: 'none',
|
|
204
|
-
value: ''
|
|
205
|
-
}
|
|
206
|
-
}]
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
describe('onPromptChanged', () => {
|
|
212
|
-
it('changes prompt', () => {
|
|
213
|
-
w.instance().onPromptChanged('New Prompt');
|
|
214
|
-
expect(onModelChanged).toBeCalledWith({
|
|
215
|
-
...initialModel,
|
|
216
|
-
prompt: 'New Prompt'
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
describe('onTeacherInstructionsChanged', () => {
|
|
221
|
-
it('changes teacher instructions', () => {
|
|
222
|
-
w.instance().onTeacherInstructionsChanged('New Teacher Instructions');
|
|
223
|
-
expect(onModelChanged).toBeCalledWith({
|
|
224
|
-
...initialModel,
|
|
225
|
-
teacherInstructions: 'New Teacher Instructions'
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
describe('onModelChanged', () => {
|
|
230
|
-
it('changes choice and makes incorrect all other choices', () => {
|
|
231
|
-
w.instance().onModelChanged({
|
|
232
|
-
...initialModel,
|
|
233
|
-
choiceMode: 'radio'
|
|
234
|
-
}, 'choiceMode');
|
|
235
|
-
const expectedChoices = model().choices;
|
|
236
|
-
expectedChoices.forEach((eC, index) => {
|
|
237
|
-
eC.correct = index === 0;
|
|
238
|
-
});
|
|
239
|
-
expect(onModelChanged).toBeCalledWith({
|
|
240
|
-
...initialModel,
|
|
241
|
-
choiceMode: 'radio',
|
|
242
|
-
choices: expectedChoices
|
|
243
|
-
}, true);
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZW56eW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbWFpbiIsIl9kZWZhdWx0cyIsIl9jb25maWdVaSIsIl9pbmRleCIsImplc3QiLCJtb2NrIiwiY2hvaWNlVXRpbHMiLCJmaXJzdEF2YWlsYWJsZUluZGV4IiwiZm4iLCJub3JtYWxpemVDaG9pY2VzIiwibW9kZWwiLCJzZXR0aW5ncyIsIlBhbmVsIiwicHJvcHMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsInRvZ2dsZSIsInJhZGlvIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJwcm9tcHQiLCJjaG9pY2VNb2RlIiwiY2hvaWNlcyIsImNvcnJlY3QiLCJ2YWx1ZSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwicGFydGlhbFNjb3JpbmciLCJjb25maWd1cmUiLCJkZXNjcmliZSIsInciLCJvbk1vZGVsQ2hhbmdlZCIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbml0aWFsTW9kZWwiLCJ3cmFwcGVyIiwiY2xhc3NlcyIsInNoYWxsb3ciLCJNYWluIiwiaXQiLCJjaG9pY2VQcmVmaXgiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJiZWZvcmVFYWNoIiwiaW5zdGFuY2UiLCJvblJlbW92ZUNob2ljZSIsInRvQmVDYWxsZWRXaXRoIiwic2xpY2UiLCJtIiwiTXVsdGlwbGVDaG9pY2UiLCJjcmVhdGVEZWZhdWx0TW9kZWwiLCJ2ZXJ0aWNhbE1vZGUiLCJjaG9pY2VzTGF5b3V0IiwidW5kZWZpbmVkIiwidG9FcXVhbCIsIm9uQWRkQ2hvaWNlIiwidXRpbHMiLCJtYXAiLCJjIiwibmV3Q2hvaWNlcyIsImNob2ljZSIsIm9uQ2hvaWNlQ2hhbmdlZCIsIm5ld01vZGVsIiwib25Qcm9tcHRDaGFuZ2VkIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJleHBlY3RlZENob2ljZXMiLCJmb3JFYWNoIiwiZUMiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcm9vdC50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IE1haW4gfSBmcm9tICcuLi9tYWluJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cyc7XG5pbXBvcnQgeyBjaG9pY2VVdGlscyBhcyB1dGlscyB9IGZyb20gJ0BwaWUtbGliL2NvbmZpZy11aSc7XG5pbXBvcnQgTXVsdGlwbGVDaG9pY2UgZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2NvbmZpZy11aScsICgpID0+ICh7XG4gIGNob2ljZVV0aWxzOiB7XG4gICAgZmlyc3RBdmFpbGFibGVJbmRleDogamVzdC5mbigpLFxuICAgIG5vcm1hbGl6ZUNob2ljZXM6IGplc3QuZm4oKG1vZGVsKSA9PiBtb2RlbCksXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IChwcm9wcykgPT4gPGRpdiB7Li4ucHJvcHN9IC8+LFxuICAgIHRvZ2dsZTogamVzdC5mbigpLFxuICAgIHJhZGlvOiBqZXN0LmZuKCksXG4gIH0sXG59KSk7XG5cbmNvbnN0IG1vZGVsID0gKGV4dHJhcykgPT4gKHtcbiAgLi4uZGVmYXVsdHMubW9kZWwsXG4gIHByb21wdDogJ1doaWNoIG9mIHRoZXNlIG5vcnRoZXJuIEV1cm9wZWFuIGNvdW50cmllcyBhcmUgRVUgbWVtYmVycz8nLFxuICBjaG9pY2VNb2RlOiAnY2hlY2tib3gnLFxuICBjaG9pY2VzOiBbXG4gICAge1xuICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgIHZhbHVlOiAnc3dlZGVuJyxcbiAgICAgIGxhYmVsOiAnU3dlZGVuJyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnaWNlbGFuZCcsXG4gICAgICBsYWJlbDogJ0ljZWxhbmQnLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdub3J3YXknLFxuICAgICAgbGFiZWw6ICdOb3J3YXknLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgIHZhbHVlOiAnZmlubGFuZCcsXG4gICAgICBsYWJlbDogJ0ZpbmxhbmQnLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG4gIHBhcnRpYWxTY29yaW5nOiBmYWxzZSxcbiAgY29uZmlndXJlOiB7fSxcbiAgLi4uZXh0cmFzLFxufSk7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuICBsZXQgb25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgbGV0IGluaXRpYWxNb2RlbCA9IG1vZGVsKCk7XG5cbiAgY29uc3Qgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uTW9kZWxDaGFuZ2VkLFxuICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZCxcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgbW9kZWw6IG1vZGVsKCksXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPE1haW4gey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibnVtYmVyc1wiJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoeyBtb2RlbDogbW9kZWwoeyBjaG9pY2VQcmVmaXg6ICdudW1iZXJzJyB9KSB9KTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibGV0dGVyc1wiIGFzIGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdyZW1vdmVzIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVtb3ZlQ2hvaWNlKDApO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgxKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjcmVhdGVEZWZhdWx0TW9kZWwnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiBob3Jpem9udGFsIGlmIHZlcnRpY2FsTW9kZTogZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG0gPSBNdWx0aXBsZUNob2ljZS5jcmVhdGVEZWZhdWx0TW9kZWwobW9kZWwoeyB2ZXJ0aWNhbE1vZGU6IGZhbHNlLCBjaG9pY2VzTGF5b3V0OiB1bmRlZmluZWQgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ2hvcml6b250YWwnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiB2ZXJ0aWNhbCBpZiB2ZXJ0aWNhbE1vZGU6IHRydWUnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG0gPSBNdWx0aXBsZUNob2ljZS5jcmVhdGVEZWZhdWx0TW9kZWwobW9kZWwoeyB2ZXJ0aWNhbE1vZGU6IHRydWUsIGNob2ljZXNMYXlvdXQ6IHVuZGVmaW5lZCB9KSk7XG5cbiAgICAgICAgZXhwZWN0KG0uY2hvaWNlc0xheW91dCkudG9FcXVhbCgndmVydGljYWwnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiBncmlkIGlmIHZlcnRpY2FsTW9kZTogdHJ1ZSAmJiBjaG9pY2VzTGF5b3V0OiBncmlkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ2dyaWQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiB2ZXJ0aWNhbCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgbSA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChtb2RlbCgpKTtcblxuICAgICAgICBleHBlY3QobS5jaG9pY2VzTGF5b3V0KS50b0VxdWFsKCd2ZXJ0aWNhbCcpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25BZGRDaG9pY2UnLCAoKSA9PiB7XG4gICAgICBpdCgnYWRkcyBhIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uQWRkQ2hvaWNlKCk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4uaW5pdGlhbE1vZGVsLFxuICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbC5jaG9pY2VzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgICAgICAgIHZhbHVlOiB1dGlscy5maXJzdEF2YWlsYWJsZUluZGV4KFxuICAgICAgICAgICAgICAgIGluaXRpYWxNb2RlbC5jaG9pY2VzLm1hcCgoYykgPT4gYy52YWx1ZSksXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgZGVzY3JpYmUoJ2NoZWNrYm94JywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGFyZSAyIHRydWUgdmFsdWVzKScsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gWy4uLm1vZGVsKCkuY2hvaWNlc107XG4gICAgICAgICAgbGV0IGNob2ljZSA9IHtcbiAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdJY2VsYW5kJyxcbiAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdy5pbnN0YW5jZSgpLm9uQ2hvaWNlQ2hhbmdlZCgxLCBjaG9pY2UpO1xuXG4gICAgICAgICAgbmV3Q2hvaWNlc1sxXS5jb3JyZWN0ID0gdHJ1ZTtcblxuICAgICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgICAgLi4uaW5pdGlhbE1vZGVsLFxuICAgICAgICAgICAgY2hvaWNlczogbmV3Q2hvaWNlcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3JhZGlvJywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGlzIG9ubHkgb25lIHRydWUgdmFsdWUpJywgKCkgPT4ge1xuICAgICAgICAgIGxldCBjaG9pY2UgPSB7XG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICdpY2VsYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IG5ld01vZGVsID0geyAuLi5pbml0aWFsTW9kZWwsIGNob2ljZU1vZGU6ICdyYWRpbycsIGNob2ljZXM6IGluaXRpYWxNb2RlbC5jaG9pY2VzLnNsaWNlKDAsIDIpIH07XG4gICAgICAgICAgdyA9IHdyYXBwZXIoeyBtb2RlbDogbmV3TW9kZWwgfSk7XG5cbiAgICAgICAgICB3Lmluc3RhbmNlKCkub25DaG9pY2VDaGFuZ2VkKDEsIGNob2ljZSk7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLm5ld01vZGVsLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdzd2VkZW4nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU3dlZGVuJyxcbiAgICAgICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnaWNlbGFuZCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdJY2VsYW5kJyxcbiAgICAgICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUHJvbXB0Q2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGl0KCdjaGFuZ2VzIHByb21wdCcsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUHJvbXB0Q2hhbmdlZCgnTmV3IFByb21wdCcpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBwcm9tcHQ6ICdOZXcgUHJvbXB0JyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ2NoYW5nZXMgdGVhY2hlciBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkKCdOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgdGVhY2hlckluc3RydWN0aW9uczogJ05ldyBUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Nb2RlbENoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgYW5kIG1ha2VzIGluY29ycmVjdCBhbGwgb3RoZXIgY2hvaWNlcycsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uTW9kZWxDaGFuZ2VkKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZU1vZGU6ICdyYWRpbycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY2hvaWNlTW9kZScsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWRDaG9pY2VzID0gbW9kZWwoKS5jaG9pY2VzO1xuXG4gICAgICAgIGV4cGVjdGVkQ2hvaWNlcy5mb3JFYWNoKChlQywgaW5kZXgpID0+IHtcbiAgICAgICAgICBlQy5jb3JyZWN0ID0gaW5kZXggPT09IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uaW5pdGlhbE1vZGVsLFxuICAgICAgICAgICAgY2hvaWNlTW9kZTogJ3JhZGlvJyxcbiAgICAgICAgICAgIGNob2ljZXM6IGV4cGVjdGVkQ2hvaWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBRUFPLElBQUksQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU87RUFDckNDLFdBQVcsRUFBRTtJQUNYQyxtQkFBbUIsRUFBRUgsSUFBSSxDQUFDSSxFQUFFLENBQUMsQ0FBQztJQUM5QkMsZ0JBQWdCLEVBQUVMLElBQUksQ0FBQ0ksRUFBRSxDQUFFRSxLQUFLLElBQUtBLEtBQUs7RUFDNUMsQ0FBQztFQUNEQyxRQUFRLEVBQUU7SUFDUkMsS0FBSyxFQUFHQyxLQUFLLGlCQUFLZixNQUFBLENBQUFnQixPQUFBLENBQUFDLGFBQUEsUUFBU0YsS0FBUSxDQUFDO0lBQ3BDRyxNQUFNLEVBQUVaLElBQUksQ0FBQ0ksRUFBRSxDQUFDLENBQUM7SUFDakJTLEtBQUssRUFBRWIsSUFBSSxDQUFDSSxFQUFFLENBQUM7RUFDakI7QUFDRixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU1FLEtBQUssR0FBSVEsTUFBTSxLQUFNO0VBQ3pCLEdBQUdDLGlCQUFRLENBQUNULEtBQUs7RUFDakJVLE1BQU0sRUFBRSw0REFBNEQ7RUFDcEVDLFVBQVUsRUFBRSxVQUFVO0VBQ3RCQyxPQUFPLEVBQUUsQ0FDUDtJQUNFQyxPQUFPLEVBQUUsSUFBSTtJQUNiQyxLQUFLLEVBQUUsUUFBUTtJQUNmQyxLQUFLLEVBQUUsUUFBUTtJQUNmQyxRQUFRLEVB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
|