botframework-webchat-core 4.13.0 → 4.15.0

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.
Files changed (138) hide show
  1. package/.eslintrc.yml +4 -198
  2. package/.prettierrc.yml +1 -1
  3. package/lib/actions/setNotification.js +1 -1
  4. package/lib/createPromiseQueue.js +1 -1
  5. package/lib/createStore.d.ts +3 -2
  6. package/lib/createStore.d.ts.map +1 -0
  7. package/lib/createStore.js +5 -5
  8. package/lib/index.d.ts +50 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +34 -6
  11. package/lib/reducer.d.ts +1 -0
  12. package/lib/reducer.d.ts.map +1 -0
  13. package/lib/reducers/activities.js +1 -1
  14. package/lib/reducers/clockSkewAdjustment.js +1 -1
  15. package/lib/reducers/lastTypingAt.js +1 -1
  16. package/lib/reducers/notifications.js +21 -14
  17. package/lib/reducers/typing.js +1 -1
  18. package/lib/sagas/connectSaga.js +14 -8
  19. package/lib/sagas/connectionStatusToNotificationSaga.js +1 -1
  20. package/lib/sagas/effects/forkPut.js +1 -1
  21. package/lib/sagas/markAllAsSpokenOnStopSpeakActivitySaga.js +1 -1
  22. package/lib/sagas/observeActivitySaga.js +1 -1
  23. package/lib/sagas/postActivitySaga.js +39 -32
  24. package/lib/sagas/queueIncomingActivitySaga.js +7 -3
  25. package/lib/sagas/sendMessageBackToPostActivitySaga.js +4 -4
  26. package/lib/sagas/sendPostBackToPostActivitySaga.js +4 -4
  27. package/lib/sagas/sendTypingIndicatorOnSetSendBoxSaga.js +1 -1
  28. package/lib/sagas/speakActivityAndStartDictateOnIncomingActivityFromOthersSaga.js +1 -1
  29. package/lib/sagas/startSpeakActivityOnPostActivitySaga.js +1 -1
  30. package/lib/sagas/stopSpeakingActivityOnInputSaga.js +1 -1
  31. package/lib/sagas/submitSendBoxSaga.js +1 -1
  32. package/lib/selectors/combineSelectors.js +8 -3
  33. package/lib/types/OneOrMany.d.ts +3 -0
  34. package/lib/types/OneOrMany.d.ts.map +1 -0
  35. package/lib/types/OneOrMany.js +2 -0
  36. package/lib/types/external/DirectLineActivity.d.ts +3 -0
  37. package/lib/types/external/DirectLineActivity.d.ts.map +1 -0
  38. package/lib/types/external/DirectLineActivity.js +2 -0
  39. package/lib/types/external/DirectLineAnimationCard.d.ts +3 -0
  40. package/lib/types/external/DirectLineAnimationCard.d.ts.map +1 -0
  41. package/lib/types/external/DirectLineAnimationCard.js +2 -0
  42. package/lib/types/external/DirectLineAttachment.d.ts +3 -0
  43. package/lib/types/external/DirectLineAttachment.d.ts.map +1 -0
  44. package/lib/types/external/DirectLineAttachment.js +2 -0
  45. package/lib/types/external/DirectLineAudioCard.d.ts +3 -0
  46. package/lib/types/external/DirectLineAudioCard.d.ts.map +1 -0
  47. package/lib/types/external/DirectLineAudioCard.js +2 -0
  48. package/lib/types/external/DirectLineCardAction.d.ts +110 -0
  49. package/lib/types/external/DirectLineCardAction.d.ts.map +1 -0
  50. package/lib/types/external/DirectLineCardAction.js +2 -0
  51. package/lib/types/external/DirectLineHeroCard.d.ts +3 -0
  52. package/lib/types/external/DirectLineHeroCard.d.ts.map +1 -0
  53. package/lib/types/external/DirectLineHeroCard.js +2 -0
  54. package/lib/types/external/DirectLineJSBotConnection.d.ts +3 -0
  55. package/lib/types/external/DirectLineJSBotConnection.d.ts.map +1 -0
  56. package/lib/types/external/DirectLineJSBotConnection.js +2 -0
  57. package/lib/types/external/DirectLineOAuthCard.d.ts +3 -0
  58. package/lib/types/external/DirectLineOAuthCard.d.ts.map +1 -0
  59. package/lib/types/external/DirectLineOAuthCard.js +2 -0
  60. package/lib/types/external/DirectLineReceiptCard.d.ts +3 -0
  61. package/lib/types/external/DirectLineReceiptCard.d.ts.map +1 -0
  62. package/lib/types/external/DirectLineReceiptCard.js +2 -0
  63. package/lib/types/external/DirectLineSignInCard.d.ts +3 -0
  64. package/lib/types/external/DirectLineSignInCard.d.ts.map +1 -0
  65. package/lib/types/external/DirectLineSignInCard.js +2 -0
  66. package/lib/types/external/DirectLineSuggestedAction.d.ts +3 -0
  67. package/lib/types/external/DirectLineSuggestedAction.d.ts.map +1 -0
  68. package/lib/types/external/DirectLineSuggestedAction.js +2 -0
  69. package/lib/types/external/DirectLineThumbnailCard.d.ts +3 -0
  70. package/lib/types/external/DirectLineThumbnailCard.d.ts.map +1 -0
  71. package/lib/types/external/DirectLineThumbnailCard.js +2 -0
  72. package/lib/types/external/DirectLineVideoCard.d.ts +3 -0
  73. package/lib/types/external/DirectLineVideoCard.d.ts.map +1 -0
  74. package/lib/types/external/DirectLineVideoCard.js +2 -0
  75. package/lib/utils/dateToLocaleISOString.js +37 -0
  76. package/lib/utils/deleteKey.js +2 -3
  77. package/lib/utils/isForbiddenPropertyName.d.ts +2 -0
  78. package/lib/utils/isForbiddenPropertyName.d.ts.map +1 -0
  79. package/lib/utils/isForbiddenPropertyName.js +21 -0
  80. package/lib/utils/mime-wrapper.js +2 -4
  81. package/lib/utils/once.d.ts +2 -0
  82. package/lib/utils/once.d.ts.map +1 -0
  83. package/lib/utils/once.js +17 -0
  84. package/lib/utils/singleToArray.d.ts +2 -0
  85. package/lib/utils/singleToArray.d.ts.map +1 -0
  86. package/lib/utils/singleToArray.js +11 -0
  87. package/lib/utils/uniqueID.js +1 -1
  88. package/lib/utils/warnOnce.d.ts +2 -0
  89. package/lib/utils/warnOnce.d.ts.map +1 -0
  90. package/lib/utils/warnOnce.js +17 -0
  91. package/package.json +19 -22
  92. package/src/__tests__/detectSlowConnectionSaga.spec.js +1 -1
  93. package/src/__tests__/observeOnce.spec.js +3 -3
  94. package/src/actions/setNotification.js +8 -2
  95. package/src/createStore.ts +6 -6
  96. package/src/{index.js → index.ts} +40 -4
  97. package/src/reducers/notifications.js +22 -16
  98. package/src/sagas/connectSaga.js +9 -2
  99. package/src/sagas/connectionStatusToNotificationSaga.js +1 -1
  100. package/src/sagas/postActivitySaga.js +11 -4
  101. package/src/sagas/queueIncomingActivitySaga.js +40 -39
  102. package/src/sagas/sendMessageBackToPostActivitySaga.js +2 -3
  103. package/src/sagas/sendPostBackToPostActivitySaga.js +2 -3
  104. package/src/sagas/sendTypingIndicatorOnSetSendBoxSaga.js +1 -1
  105. package/src/sagas/speakActivityAndStartDictateOnIncomingActivityFromOthersSaga.js +1 -1
  106. package/src/sagas/startSpeakActivityOnPostActivitySaga.js +1 -1
  107. package/src/sagas/stopSpeakingActivityOnInputSaga.js +1 -1
  108. package/src/sagas/submitSendBoxSaga.js +1 -1
  109. package/src/selectors/combineSelectors.js +9 -1
  110. package/src/tsconfig.json +7 -3
  111. package/src/types/OneOrMany.ts +3 -0
  112. package/src/types/external/DirectLineActivity.ts +7 -0
  113. package/src/types/external/DirectLineAnimationCard.ts +5 -0
  114. package/src/types/external/DirectLineAttachment.ts +5 -0
  115. package/src/types/external/DirectLineAudioCard.ts +5 -0
  116. package/src/types/external/DirectLineCardAction.ts +128 -0
  117. package/src/types/external/DirectLineHeroCard.ts +5 -0
  118. package/src/types/external/DirectLineJSBotConnection.ts +5 -0
  119. package/src/types/external/DirectLineOAuthCard.ts +5 -0
  120. package/src/types/external/DirectLineReceiptCard.ts +5 -0
  121. package/src/types/external/DirectLineSignInCard.ts +5 -0
  122. package/src/types/external/DirectLineSuggestedAction.ts +5 -0
  123. package/src/types/external/DirectLineThumbnailCard.ts +5 -0
  124. package/src/types/external/DirectLineVideoCard.ts +5 -0
  125. package/src/utils/dateToLocaleISOString.chatham.spec.js +14 -0
  126. package/src/utils/dateToLocaleISOString.japan.spec.js +14 -0
  127. package/src/utils/dateToLocaleISOString.js +34 -0
  128. package/src/utils/dateToLocaleISOString.pacific.spec.js +14 -0
  129. package/src/utils/dateToLocaleISOString.utc.spec.js +22 -0
  130. package/src/utils/deleteKey.js +1 -3
  131. package/src/utils/isForbiddenPropertyName.spec.js +6 -0
  132. package/src/utils/isForbiddenPropertyName.ts +33 -0
  133. package/src/utils/mime-wrapper.js +1 -2
  134. package/src/utils/once.ts +10 -0
  135. package/src/utils/singleToArray.ts +3 -0
  136. package/src/utils/uniqueID.js +1 -6
  137. package/src/utils/warnOnce.ts +5 -0
  138. package/.eslintignore +0 -9
@@ -15,6 +15,8 @@ var _sagaError = require("../actions/sagaError");
15
15
 
16
16
  var _setNotification = require("../actions/setNotification");
17
17
 
18
+ var _isForbiddenPropertyName = _interopRequireDefault(require("../utils/isForbiddenPropertyName"));
19
+
18
20
  var DEFAULT_STATE = {};
19
21
 
20
22
  function notifications() {
@@ -38,22 +40,27 @@ function notifications() {
38
40
  id = payload.id,
39
41
  level = payload.level,
40
42
  message = payload.message;
41
- var notification = state[id];
42
-
43
- if (!notification || alt !== notification.alt || !Object.is(data, notification.data) || level !== notification.level || message !== notification.message) {
44
- state = (0, _simpleUpdateIn["default"])(state, [id], function () {
45
- return {
46
- alt: alt,
47
- data: data,
48
- id: id,
49
- level: level,
50
- message: message,
51
- timestamp: now
52
- };
53
- });
43
+
44
+ if (!(0, _isForbiddenPropertyName["default"])(id)) {
45
+ // Mitigated through denylisting.
46
+ // eslint-disable-next-line security/detect-object-injection
47
+ var notification = state[id];
48
+
49
+ if (!notification || alt !== notification.alt || !Object.is(data, notification.data) || level !== notification.level || message !== notification.message) {
50
+ state = (0, _simpleUpdateIn["default"])(state, [id], function () {
51
+ return {
52
+ alt: alt,
53
+ data: data,
54
+ id: id,
55
+ level: level,
56
+ message: message,
57
+ timestamp: now
58
+ };
59
+ });
60
+ }
54
61
  }
55
62
  }
56
63
 
57
64
  return state;
58
65
  }
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9ub3RpZmljYXRpb25zLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfU1RBVEUiLCJub3RpZmljYXRpb25zIiwic3RhdGUiLCJwYXlsb2FkIiwidHlwZSIsIm5vdyIsIkRhdGUiLCJESVNNSVNTX05PVElGSUNBVElPTiIsImlkIiwiU0FHQV9FUlJPUiIsIlNFVF9OT1RJRklDQVRJT04iLCJhbHQiLCJkYXRhIiwibGV2ZWwiLCJtZXNzYWdlIiwibm90aWZpY2F0aW9uIiwiT2JqZWN0IiwiaXMiLCJ0aW1lc3RhbXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLGFBQWEsR0FBRyxFQUF0Qjs7QUFFZSxTQUFTQyxhQUFULEdBQWlFO0FBQUEsTUFBMUNDLEtBQTBDLHVFQUFsQ0YsYUFBa0M7O0FBQUE7QUFBQSxNQUFqQkcsT0FBaUIsUUFBakJBLE9BQWlCO0FBQUEsTUFBUkMsSUFBUSxRQUFSQSxJQUFROztBQUM5RSxNQUFNQyxHQUFHLEdBQUdDLElBQUksQ0FBQ0QsR0FBTCxFQUFaOztBQUVBLE1BQUlELElBQUksS0FBS0cseUNBQWIsRUFBbUM7QUFDakNMLElBQUFBLEtBQUssR0FBRyxnQ0FBU0EsS0FBVCxFQUFnQixDQUFDQyxPQUFPLENBQUNLLEVBQVQsQ0FBaEIsQ0FBUjtBQUNELEdBRkQsTUFFTyxJQUFJSixJQUFJLEtBQUtLLHFCQUFiLEVBQXlCO0FBQzlCUCxJQUFBQSxLQUFLLEdBQUcsZ0NBQVNBLEtBQVQsRUFBZ0IsQ0FBQyxvQkFBRCxFQUF1QixTQUF2QixDQUFoQixFQUFtRDtBQUFBLGFBQU0saUJBQU47QUFBQSxLQUFuRCxDQUFSO0FBQ0QsR0FGTSxNQUVBLElBQUlFLElBQUksS0FBS00saUNBQWIsRUFBK0I7QUFBQSxRQUM1QkMsR0FENEIsR0FDTVIsT0FETixDQUM1QlEsR0FENEI7QUFBQSxRQUN2QkMsSUFEdUIsR0FDTVQsT0FETixDQUN2QlMsSUFEdUI7QUFBQSxRQUNqQkosRUFEaUIsR0FDTUwsT0FETixDQUNqQkssRUFEaUI7QUFBQSxRQUNiSyxLQURhLEdBQ01WLE9BRE4sQ0FDYlUsS0FEYTtBQUFBLFFBQ05DLE9BRE0sR0FDTVgsT0FETixDQUNOVyxPQURNO0FBRXBDLFFBQU1DLFlBQVksR0FBR2IsS0FBSyxDQUFDTSxFQUFELENBQTFCOztBQUVBLFFBQ0UsQ0FBQ08sWUFBRCxJQUNBSixHQUFHLEtBQUtJLFlBQVksQ0FBQ0osR0FEckIsSUFFQSxDQUFDSyxNQUFNLENBQUNDLEVBQVAsQ0FBVUwsSUFBVixFQUFnQkcsWUFBWSxDQUFDSCxJQUE3QixDQUZELElBR0FDLEtBQUssS0FBS0UsWUFBWSxDQUFDRixLQUh2QixJQUlBQyxPQUFPLEtBQUtDLFlBQVksQ0FBQ0QsT0FMM0IsRUFNRTtBQUNBWixNQUFBQSxLQUFLLEdBQUcsZ0NBQVNBLEtBQVQsRUFBZ0IsQ0FBQ00sRUFBRCxDQUFoQixFQUFzQjtBQUFBLGVBQU87QUFDbkNHLFVBQUFBLEdBQUcsRUFBSEEsR0FEbUM7QUFFbkNDLFVBQUFBLElBQUksRUFBSkEsSUFGbUM7QUFHbkNKLFVBQUFBLEVBQUUsRUFBRkEsRUFIbUM7QUFJbkNLLFVBQUFBLEtBQUssRUFBTEEsS0FKbUM7QUFLbkNDLFVBQUFBLE9BQU8sRUFBUEEsT0FMbUM7QUFNbkNJLFVBQUFBLFNBQVMsRUFBRWI7QUFOd0IsU0FBUDtBQUFBLE9BQXRCLENBQVI7QUFRRDtBQUNGOztBQUVELFNBQU9ILEtBQVA7QUFDRCIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1cGRhdGVJbiBmcm9tICdzaW1wbGUtdXBkYXRlLWluJztcblxuaW1wb3J0IHsgRElTTUlTU19OT1RJRklDQVRJT04gfSBmcm9tICcuLi9hY3Rpb25zL2Rpc21pc3NOb3RpZmljYXRpb24nO1xuaW1wb3J0IHsgU0FHQV9FUlJPUiB9IGZyb20gJy4uL2FjdGlvbnMvc2FnYUVycm9yJztcbmltcG9ydCB7IFNFVF9OT1RJRklDQVRJT04gfSBmcm9tICcuLi9hY3Rpb25zL3NldE5vdGlmaWNhdGlvbic7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7fTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm90aWZpY2F0aW9ucyhzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgcGF5bG9hZCwgdHlwZSB9KSB7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgaWYgKHR5cGUgPT09IERJU01JU1NfTk9USUZJQ0FUSU9OKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgW3BheWxvYWQuaWRdKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBTQUdBX0VSUk9SKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgWydjb25uZWN0aXZpdHlzdGF0dXMnLCAnbWVzc2FnZSddLCAoKSA9PiAnamF2YXNjcmlwdGVycm9yJyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gU0VUX05PVElGSUNBVElPTikge1xuICAgIGNvbnN0IHsgYWx0LCBkYXRhLCBpZCwgbGV2ZWwsIG1lc3NhZ2UgfSA9IHBheWxvYWQ7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gc3RhdGVbaWRdO1xuXG4gICAgaWYgKFxuICAgICAgIW5vdGlmaWNhdGlvbiB8fFxuICAgICAgYWx0ICE9PSBub3RpZmljYXRpb24uYWx0IHx8XG4gICAgICAhT2JqZWN0LmlzKGRhdGEsIG5vdGlmaWNhdGlvbi5kYXRhKSB8fFxuICAgICAgbGV2ZWwgIT09IG5vdGlmaWNhdGlvbi5sZXZlbCB8fFxuICAgICAgbWVzc2FnZSAhPT0gbm90aWZpY2F0aW9uLm1lc3NhZ2VcbiAgICApIHtcbiAgICAgIHN0YXRlID0gdXBkYXRlSW4oc3RhdGUsIFtpZF0sICgpID0+ICh7XG4gICAgICAgIGFsdCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgaWQsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICB0aW1lc3RhbXA6IG5vd1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9ub3RpZmljYXRpb25zLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfU1RBVEUiLCJub3RpZmljYXRpb25zIiwic3RhdGUiLCJwYXlsb2FkIiwidHlwZSIsIm5vdyIsIkRhdGUiLCJESVNNSVNTX05PVElGSUNBVElPTiIsImlkIiwiU0FHQV9FUlJPUiIsIlNFVF9OT1RJRklDQVRJT04iLCJhbHQiLCJkYXRhIiwibGV2ZWwiLCJtZXNzYWdlIiwibm90aWZpY2F0aW9uIiwiT2JqZWN0IiwiaXMiLCJ0aW1lc3RhbXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLGFBQWEsR0FBRyxFQUF0Qjs7QUFFZSxTQUFTQyxhQUFULEdBQWlFO0FBQUEsTUFBMUNDLEtBQTBDLHVFQUFsQ0YsYUFBa0M7O0FBQUE7QUFBQSxNQUFqQkcsT0FBaUIsUUFBakJBLE9BQWlCO0FBQUEsTUFBUkMsSUFBUSxRQUFSQSxJQUFROztBQUM5RSxNQUFNQyxHQUFHLEdBQUdDLElBQUksQ0FBQ0QsR0FBTCxFQUFaOztBQUVBLE1BQUlELElBQUksS0FBS0cseUNBQWIsRUFBbUM7QUFDakNMLElBQUFBLEtBQUssR0FBRyxnQ0FBU0EsS0FBVCxFQUFnQixDQUFDQyxPQUFPLENBQUNLLEVBQVQsQ0FBaEIsQ0FBUjtBQUNELEdBRkQsTUFFTyxJQUFJSixJQUFJLEtBQUtLLHFCQUFiLEVBQXlCO0FBQzlCUCxJQUFBQSxLQUFLLEdBQUcsZ0NBQVNBLEtBQVQsRUFBZ0IsQ0FBQyxvQkFBRCxFQUF1QixTQUF2QixDQUFoQixFQUFtRDtBQUFBLGFBQU0saUJBQU47QUFBQSxLQUFuRCxDQUFSO0FBQ0QsR0FGTSxNQUVBLElBQUlFLElBQUksS0FBS00saUNBQWIsRUFBK0I7QUFDcEMsUUFBUUMsR0FBUixHQUEwQ1IsT0FBMUMsQ0FBUVEsR0FBUjtBQUFBLFFBQWFDLElBQWIsR0FBMENULE9BQTFDLENBQWFTLElBQWI7QUFBQSxRQUFtQkosRUFBbkIsR0FBMENMLE9BQTFDLENBQW1CSyxFQUFuQjtBQUFBLFFBQXVCSyxLQUF2QixHQUEwQ1YsT0FBMUMsQ0FBdUJVLEtBQXZCO0FBQUEsUUFBOEJDLE9BQTlCLEdBQTBDWCxPQUExQyxDQUE4QlcsT0FBOUI7O0FBRUEsUUFBSSxDQUFDLHlDQUF3Qk4sRUFBeEIsQ0FBTCxFQUFrQztBQUNoQztBQUNBO0FBQ0EsVUFBTU8sWUFBWSxHQUFHYixLQUFLLENBQUNNLEVBQUQsQ0FBMUI7O0FBRUEsVUFDRSxDQUFDTyxZQUFELElBQ0FKLEdBQUcsS0FBS0ksWUFBWSxDQUFDSixHQURyQixJQUVBLENBQUNLLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVTCxJQUFWLEVBQWdCRyxZQUFZLENBQUNILElBQTdCLENBRkQsSUFHQUMsS0FBSyxLQUFLRSxZQUFZLENBQUNGLEtBSHZCLElBSUFDLE9BQU8sS0FBS0MsWUFBWSxDQUFDRCxPQUwzQixFQU1FO0FBQ0FaLFFBQUFBLEtBQUssR0FBRyxnQ0FBU0EsS0FBVCxFQUFnQixDQUFDTSxFQUFELENBQWhCLEVBQXNCO0FBQUEsaUJBQU87QUFDbkNHLFlBQUFBLEdBQUcsRUFBSEEsR0FEbUM7QUFFbkNDLFlBQUFBLElBQUksRUFBSkEsSUFGbUM7QUFHbkNKLFlBQUFBLEVBQUUsRUFBRkEsRUFIbUM7QUFJbkNLLFlBQUFBLEtBQUssRUFBTEEsS0FKbUM7QUFLbkNDLFlBQUFBLE9BQU8sRUFBUEEsT0FMbUM7QUFNbkNJLFlBQUFBLFNBQVMsRUFBRWI7QUFOd0IsV0FBUDtBQUFBLFNBQXRCLENBQVI7QUFRRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBT0gsS0FBUDtBQUNEIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVwZGF0ZUluIGZyb20gJ3NpbXBsZS11cGRhdGUtaW4nO1xuXG5pbXBvcnQgeyBESVNNSVNTX05PVElGSUNBVElPTiB9IGZyb20gJy4uL2FjdGlvbnMvZGlzbWlzc05vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBTQUdBX0VSUk9SIH0gZnJvbSAnLi4vYWN0aW9ucy9zYWdhRXJyb3InO1xuaW1wb3J0IHsgU0VUX05PVElGSUNBVElPTiB9IGZyb20gJy4uL2FjdGlvbnMvc2V0Tm90aWZpY2F0aW9uJztcbmltcG9ydCBpc0ZvcmJpZGRlblByb3BlcnR5TmFtZSBmcm9tICcuLi91dGlscy9pc0ZvcmJpZGRlblByb3BlcnR5TmFtZSc7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7fTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm90aWZpY2F0aW9ucyhzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgcGF5bG9hZCwgdHlwZSB9KSB7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgaWYgKHR5cGUgPT09IERJU01JU1NfTk9USUZJQ0FUSU9OKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgW3BheWxvYWQuaWRdKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBTQUdBX0VSUk9SKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgWydjb25uZWN0aXZpdHlzdGF0dXMnLCAnbWVzc2FnZSddLCAoKSA9PiAnamF2YXNjcmlwdGVycm9yJyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gU0VUX05PVElGSUNBVElPTikge1xuICAgIGNvbnN0IHsgYWx0LCBkYXRhLCBpZCwgbGV2ZWwsIG1lc3NhZ2UgfSA9IHBheWxvYWQ7XG5cbiAgICBpZiAoIWlzRm9yYmlkZGVuUHJvcGVydHlOYW1lKGlkKSkge1xuICAgICAgLy8gTWl0aWdhdGVkIHRocm91Z2ggZGVueWxpc3RpbmcuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHN0YXRlW2lkXTtcblxuICAgICAgaWYgKFxuICAgICAgICAhbm90aWZpY2F0aW9uIHx8XG4gICAgICAgIGFsdCAhPT0gbm90aWZpY2F0aW9uLmFsdCB8fFxuICAgICAgICAhT2JqZWN0LmlzKGRhdGEsIG5vdGlmaWNhdGlvbi5kYXRhKSB8fFxuICAgICAgICBsZXZlbCAhPT0gbm90aWZpY2F0aW9uLmxldmVsIHx8XG4gICAgICAgIG1lc3NhZ2UgIT09IG5vdGlmaWNhdGlvbi5tZXNzYWdlXG4gICAgICApIHtcbiAgICAgICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgW2lkXSwgKCkgPT4gKHtcbiAgICAgICAgICBhbHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHRpbWVzdGFtcDogbm93XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG4iXX0=
@@ -48,4 +48,4 @@ function lastTyping() {
48
48
 
49
49
  return state;
50
50
  }
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy90eXBpbmcuanMiXSwibmFtZXMiOlsiREVGQVVMVF9TVEFURSIsImxhc3RUeXBpbmciLCJzdGF0ZSIsInBheWxvYWQiLCJ0eXBlIiwiSU5DT01JTkdfQUNUSVZJVFkiLCJQT1NUX0FDVElWSVRZX1BFTkRJTkciLCJhY3Rpdml0eSIsImZyb20iLCJpZCIsIm5hbWUiLCJyb2xlIiwiYWN0aXZpdHlUeXBlIiwiYXQiLCJEYXRlIiwibm93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQTs7QUFFQTs7QUFDQTs7QUFOQTs7QUFDQTtBQU9BLElBQU1BLGFBQWEsR0FBRyxFQUF0Qjs7QUFFZSxTQUFTQyxVQUFULEdBQThEO0FBQUEsTUFBMUNDLEtBQTBDLHVFQUFsQ0YsYUFBa0M7O0FBQUE7QUFBQSxNQUFqQkcsT0FBaUIsUUFBakJBLE9BQWlCO0FBQUEsTUFBUkMsSUFBUSxRQUFSQSxJQUFROztBQUMzRSxNQUFJQSxJQUFJLEtBQUtDLG1DQUFULElBQThCRCxJQUFJLEtBQUtFLG1DQUEzQyxFQUFrRTtBQUFBLDRCQU01REgsT0FONEQsQ0FFOURJLFFBRjhEO0FBQUEsa0RBRzVEQyxJQUg0RDtBQUFBLFFBR3BEQyxFQUhvRCx5QkFHcERBLEVBSG9EO0FBQUEsUUFHaERDLElBSGdELHlCQUdoREEsSUFIZ0Q7QUFBQSxRQUcxQ0MsSUFIMEMseUJBRzFDQSxJQUgwQztBQUFBLFFBSXREQyxZQUpzRCxxQkFJNURSLElBSjREOztBQVFoRSxRQUFJUSxZQUFZLEtBQUssUUFBckIsRUFBK0I7QUFDN0JWLE1BQUFBLEtBQUssR0FBRyxnQ0FBU0EsS0FBVCxFQUFnQixDQUFDTyxFQUFELENBQWhCLEVBQXNCO0FBQUEsZUFBTztBQUNuQ0ksVUFBQUEsRUFBRSxFQUFFQyxJQUFJLENBQUNDLEdBQUwsRUFEK0I7QUFFbkNMLFVBQUFBLElBQUksRUFBSkEsSUFGbUM7QUFHbkNDLFVBQUFBLElBQUksRUFBSkE7QUFIbUMsU0FBUDtBQUFBLE9BQXRCLENBQVI7QUFLRCxLQU5ELE1BTU8sSUFBSUMsWUFBWSxLQUFLLFNBQXJCLEVBQWdDO0FBQ3JDVixNQUFBQSxLQUFLLEdBQUcsZ0NBQVNBLEtBQVQsRUFBZ0IsQ0FBQ08sRUFBRCxDQUFoQixDQUFSO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPUCxLQUFQO0FBQ0QiLCJzb3VyY2VSb290IjoiY29yZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyIvKmVzbGludCBuby1jYXNlLWRlY2xhcmF0aW9uczogXCJvZmZcIiovXG4vKmVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiovXG5cbmltcG9ydCB1cGRhdGVJbiBmcm9tICdzaW1wbGUtdXBkYXRlLWluJztcblxuaW1wb3J0IHsgSU5DT01JTkdfQUNUSVZJVFkgfSBmcm9tICcuLi9hY3Rpb25zL2luY29taW5nQWN0aXZpdHknO1xuaW1wb3J0IHsgUE9TVF9BQ1RJVklUWV9QRU5ESU5HIH0gZnJvbSAnLi4vYWN0aW9ucy9wb3N0QWN0aXZpdHknO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3RUeXBpbmcoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHBheWxvYWQsIHR5cGUgfSkge1xuICBpZiAodHlwZSA9PT0gSU5DT01JTkdfQUNUSVZJVFkgfHwgdHlwZSA9PT0gUE9TVF9BQ1RJVklUWV9QRU5ESU5HKSB7XG4gICAgY29uc3Qge1xuICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgZnJvbTogeyBpZCwgbmFtZSwgcm9sZSB9LFxuICAgICAgICB0eXBlOiBhY3Rpdml0eVR5cGVcbiAgICAgIH1cbiAgICB9ID0gcGF5bG9hZDtcblxuICAgIGlmIChhY3Rpdml0eVR5cGUgPT09ICd0eXBpbmcnKSB7XG4gICAgICBzdGF0ZSA9IHVwZGF0ZUluKHN0YXRlLCBbaWRdLCAoKSA9PiAoe1xuICAgICAgICBhdDogRGF0ZS5ub3coKSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcm9sZVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAoYWN0aXZpdHlUeXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgIHN0YXRlID0gdXBkYXRlSW4oc3RhdGUsIFtpZF0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy90eXBpbmcuanMiXSwibmFtZXMiOlsiREVGQVVMVF9TVEFURSIsImxhc3RUeXBpbmciLCJzdGF0ZSIsInBheWxvYWQiLCJ0eXBlIiwiSU5DT01JTkdfQUNUSVZJVFkiLCJQT1NUX0FDVElWSVRZX1BFTkRJTkciLCJhY3Rpdml0eSIsImZyb20iLCJpZCIsIm5hbWUiLCJyb2xlIiwiYWN0aXZpdHlUeXBlIiwiYXQiLCJEYXRlIiwibm93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQTs7QUFFQTs7QUFDQTs7QUFOQTs7QUFDQTtBQU9BLElBQU1BLGFBQWEsR0FBRyxFQUF0Qjs7QUFFZSxTQUFTQyxVQUFULEdBQThEO0FBQUEsTUFBMUNDLEtBQTBDLHVFQUFsQ0YsYUFBa0M7O0FBQUE7QUFBQSxNQUFqQkcsT0FBaUIsUUFBakJBLE9BQWlCO0FBQUEsTUFBUkMsSUFBUSxRQUFSQSxJQUFROztBQUMzRSxNQUFJQSxJQUFJLEtBQUtDLG1DQUFULElBQThCRCxJQUFJLEtBQUtFLG1DQUEzQyxFQUFrRTtBQUNoRSw0QkFLSUgsT0FMSixDQUNFSSxRQURGO0FBQUEsa0RBRUlDLElBRko7QUFBQSxRQUVZQyxFQUZaLHlCQUVZQSxFQUZaO0FBQUEsUUFFZ0JDLElBRmhCLHlCQUVnQkEsSUFGaEI7QUFBQSxRQUVzQkMsSUFGdEIseUJBRXNCQSxJQUZ0QjtBQUFBLFFBR1VDLFlBSFYscUJBR0lSLElBSEo7O0FBT0EsUUFBSVEsWUFBWSxLQUFLLFFBQXJCLEVBQStCO0FBQzdCVixNQUFBQSxLQUFLLEdBQUcsZ0NBQVNBLEtBQVQsRUFBZ0IsQ0FBQ08sRUFBRCxDQUFoQixFQUFzQjtBQUFBLGVBQU87QUFDbkNJLFVBQUFBLEVBQUUsRUFBRUMsSUFBSSxDQUFDQyxHQUFMLEVBRCtCO0FBRW5DTCxVQUFBQSxJQUFJLEVBQUpBLElBRm1DO0FBR25DQyxVQUFBQSxJQUFJLEVBQUpBO0FBSG1DLFNBQVA7QUFBQSxPQUF0QixDQUFSO0FBS0QsS0FORCxNQU1PLElBQUlDLFlBQVksS0FBSyxTQUFyQixFQUFnQztBQUNyQ1YsTUFBQUEsS0FBSyxHQUFHLGdDQUFTQSxLQUFULEVBQWdCLENBQUNPLEVBQUQsQ0FBaEIsQ0FBUjtBQUNEO0FBQ0Y7O0FBRUQsU0FBT1AsS0FBUDtBQUNEIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLyplc2xpbnQgbm8tY2FzZS1kZWNsYXJhdGlvbnM6IFwib2ZmXCIqL1xuLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIqL1xuXG5pbXBvcnQgdXBkYXRlSW4gZnJvbSAnc2ltcGxlLXVwZGF0ZS1pbic7XG5cbmltcG9ydCB7IElOQ09NSU5HX0FDVElWSVRZIH0gZnJvbSAnLi4vYWN0aW9ucy9pbmNvbWluZ0FjdGl2aXR5JztcbmltcG9ydCB7IFBPU1RfQUNUSVZJVFlfUEVORElORyB9IGZyb20gJy4uL2FjdGlvbnMvcG9zdEFjdGl2aXR5JztcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHt9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0VHlwaW5nKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyBwYXlsb2FkLCB0eXBlIH0pIHtcbiAgaWYgKHR5cGUgPT09IElOQ09NSU5HX0FDVElWSVRZIHx8IHR5cGUgPT09IFBPU1RfQUNUSVZJVFlfUEVORElORykge1xuICAgIGNvbnN0IHtcbiAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgIGZyb206IHsgaWQsIG5hbWUsIHJvbGUgfSxcbiAgICAgICAgdHlwZTogYWN0aXZpdHlUeXBlXG4gICAgICB9XG4gICAgfSA9IHBheWxvYWQ7XG5cbiAgICBpZiAoYWN0aXZpdHlUeXBlID09PSAndHlwaW5nJykge1xuICAgICAgc3RhdGUgPSB1cGRhdGVJbihzdGF0ZSwgW2lkXSwgKCkgPT4gKHtcbiAgICAgICAgYXQ6IERhdGUubm93KCksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJvbGVcbiAgICAgIH0pKTtcbiAgICB9IGVsc2UgaWYgKGFjdGl2aXR5VHlwZSA9PT0gJ21lc3NhZ2UnKSB7XG4gICAgICBzdGF0ZSA9IHVwZGF0ZUluKHN0YXRlLCBbaWRdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -15,7 +15,7 @@ var _effects = require("redux-saga/effects");
15
15
 
16
16
  var _botframeworkDirectlinejs = require("botframework-directlinejs");
17
17
 
18
- var _jsonwebtoken = require("jsonwebtoken");
18
+ var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
19
19
 
20
20
  var _connect = require("../actions/connect");
21
21
 
@@ -31,6 +31,10 @@ var _disconnect = require("../actions/disconnect");
31
31
 
32
32
  var _reconnect = require("../actions/reconnect");
33
33
 
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
34
38
  var _marked = /*#__PURE__*/_regenerator["default"].mark(observeAndPutConnectionStatusUpdate),
35
39
  _marked2 = /*#__PURE__*/_regenerator["default"].mark(connectSaga),
36
40
  _marked3 = /*#__PURE__*/_regenerator["default"].mark(reconnectSaga),
@@ -87,9 +91,11 @@ function observeAndPutConnectionStatusUpdate(directLine) {
87
91
 
88
92
  function rectifyUserID(directLine, userIDFromAction) {
89
93
  var token = directLine.token;
94
+ var userIDFromToken; // TODO: Add test to make sure "jwt-decode" work as expected.
90
95
 
91
- var _ref = (0, _jsonwebtoken.decode)(token) || {},
92
- userIDFromToken = _ref.user;
96
+ try {
97
+ userIDFromToken = ((0, _jwtDecode["default"])(token) || {}).user; // eslint-disable-next-line no-empty
98
+ } catch (err) {}
93
99
 
94
100
  var result = {
95
101
  fromAction: userIDFromAction,
@@ -248,13 +254,13 @@ function reconnectSaga() {
248
254
  // Note that after the saga is cancelled, subsequent call to put() will be ignored silently.
249
255
 
250
256
 
251
- function runAsyncEffect(_ref2, callEffectFactory) {
257
+ function runAsyncEffect(_ref, callEffectFactory) {
252
258
  var type, meta, payload, result;
253
259
  return _regenerator["default"].wrap(function runAsyncEffect$(_context4) {
254
260
  while (1) {
255
261
  switch (_context4.prev = _context4.next) {
256
262
  case 0:
257
- type = _ref2.type, meta = _ref2.meta, payload = _ref2.payload;
263
+ type = _ref.type, meta = _ref.meta, payload = _ref.payload;
258
264
  _context4.prev = 1;
259
265
  _context4.next = 4;
260
266
  return (0, _forkPut["default"])({
@@ -528,4 +534,4 @@ function _callee() {
528
534
  }
529
535
  }, _marked6);
530
536
  }
531
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9jb25uZWN0U2FnYS5qcyJdLCJuYW1lcyI6WyJvYnNlcnZlQW5kUHV0Q29ubmVjdGlvblN0YXR1c1VwZGF0ZSIsImNvbm5lY3RTYWdhIiwicmVjb25uZWN0U2FnYSIsInJ1bkFzeW5jRWZmZWN0IiwidGFrZURpc2Nvbm5lY3RBc0Vycm9yIiwiQ09OTkVDVElORyIsIkNvbm5lY3Rpb25TdGF0dXMiLCJDb25uZWN0aW5nIiwiT05MSU5FIiwiT25saW5lIiwiVU5JTklUSUFMSVpFRCIsIlVuaW5pdGlhbGl6ZWQiLCJyYW5kb21Vc2VySUQiLCJzdWJzdHIiLCJkaXJlY3RMaW5lIiwiY29ubmVjdGlvblN0YXR1c1F1ZXVlIiwiY29ubmVjdGlvblN0YXR1c1N1YnNjcmlwdGlvbiIsImNvbm5lY3Rpb25TdGF0dXMkIiwic3Vic2NyaWJlIiwibmV4dCIsInB1c2giLCJzaGlmdCIsImNvbm5lY3Rpb25TdGF0dXMiLCJ1bnN1YnNjcmliZSIsInJlY3RpZnlVc2VySUQiLCJ1c2VySURGcm9tQWN0aW9uIiwidG9rZW4iLCJ1c2VySURGcm9tVG9rZW4iLCJ1c2VyIiwicmVzdWx0IiwiZnJvbUFjdGlvbiIsImZyb21Ub2tlbiIsImNvbnNvbGUiLCJ3YXJuIiwidGVzdCIsImFjdGl2aXR5U3Vic2NyaXB0aW9uIiwiYWN0aXZpdHkkIiwidW5zdWJzY3JpYmVBY3Rpdml0eSIsImJpbmQiLCJVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMiLCJwYXlsb2FkIiwiZW5kIiwiRXJyb3IiLCJjYWxsRWZmZWN0RmFjdG9yeSIsInR5cGUiLCJtZXRhIiwiZXJyb3IiLCJESVNDT05ORUNUIiwicnVuQXN5bmNFZmZlY3RVbnRpbERpc2Nvbm5lY3QiLCJiYXNlQWN0aW9uIiwicnVuVW50aWxEaXNjb25uZWN0IiwiXyIsIkNPTk5FQ1QiLCJ1c2VySUQiLCJ1c2VybmFtZSIsInVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNUYXNrIiwicmVjdGlmaWVkVXNlcklEIiwic2V0VXNlcklkIiwiZGlzY29ubmVjdE1ldGEiLCJlbmREaXJlY3RMaW5lIiwidXBkYXRlQ29ubmVjdGlvblN0YXR1c0FjdGlvbiIsIlJFQ09OTkVDVCIsIkRJU0NPTk5FQ1RfUEVORElORyIsIkRJU0NPTk5FQ1RfRlVMRklMTEVEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O3dEQVFVQSxtQzt5REF5REFDLFc7eURBcUNBQyxhO3lEQWlCQUMsYzt5REFnQkFDLHFCOzs7SUFySVVDLFUsR0FBNkRDLDBDLENBQXpFQyxVO0lBQWdDQyxNLEdBQXlDRiwwQyxDQUFqREcsTTtJQUErQkMsYSxHQUFrQkosMEMsQ0FBakNLLGE7O0FBRWhELFNBQVNDLFlBQVQsR0FBd0I7QUFDdEIscUJBQVksNEJBQVdDLE1BQVgsQ0FBa0IsQ0FBbEIsRUFBcUIsRUFBckIsQ0FBWjtBQUNEOztBQUVELFNBQVViLG1DQUFWLENBQThDYyxVQUE5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDUUMsVUFBQUEscUJBRFIsR0FDZ0MscUNBRGhDO0FBRVFDLFVBQUFBLDRCQUZSLEdBRXVDRixVQUFVLENBQUNHLGlCQUFYLENBQTZCQyxTQUE3QixDQUF1QztBQUFFQyxZQUFBQSxJQUFJLEVBQUVKLHFCQUFxQixDQUFDSztBQUE5QixXQUF2QyxDQUZ2QztBQUFBOztBQUFBO0FBQUE7QUFNK0IsaUJBQU0sbUJBQUtMLHFCQUFxQixDQUFDTSxLQUEzQixDQUFOOztBQU4vQjtBQU1ZQyxVQUFBQSxnQkFOWjtBQUFBO0FBUU0saUJBQU0sa0JBQUksd0NBQXVCQSxnQkFBdkIsQ0FBSixDQUFOOztBQVJOO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBV0lOLFVBQUFBLDRCQUE0QixDQUFDTyxXQUE3QjtBQVhKOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEMsQ0FlQTs7O0FBQ0EsU0FBU0MsYUFBVCxDQUF1QlYsVUFBdkIs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QUFBQSxVQUFVLEVBQVZBO0FBQUY7QUFBN0QscUJBRkksQ0FBTjs7QUF6RVM7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFswLCAxMF0gfV0gKi9cblxuaW1wb3J0IHsgY2FsbCwgY2FuY2VsLCBjYW5jZWxsZWQsIGZvcmssIHB1dCwgcmFjZSwgdGFrZSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5cbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICdib3RmcmFtZXdvcmstZGlyZWN0bGluZWpzJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5cbmltcG9ydCB7IENPTk5FQ1QgfSBmcm9tICcuLi9hY3Rpb25zL2Nvbm5lY3QnO1xuaW1wb3J0IGNyZWF0ZVByb21pc2VRdWV1ZSBmcm9tICcuLi9jcmVhdGVQcm9taXNlUXVldWUnO1xuaW1wb3J0IGZvcmtQdXQgZnJvbSAnLi9lZmZlY3RzL2ZvcmtQdXQnO1xuaW1wb3J0IHVuaXF1ZUlEIGZyb20gJy4uL3V0aWxzL3VuaXF1ZUlEJztcbmltcG9ydCB1cGRhdGVDb25uZWN0aW9uU3RhdHVzLCB7IFVQREFURV9DT05ORUNUSU9OX1NUQVRVUyB9IGZyb20gJy4uL2FjdGlvbnMvdXBkYXRlQ29ubmVjdGlvblN0YXR1cyc7XG5cbmltcG9ydCB7IERJU0NPTk5FQ1QsIERJU0NPTk5FQ1RfUEVORElORywgRElTQ09OTkVDVF9GVUxGSUxMRUQgfSBmcm9tICcuLi9hY3Rpb25zL2Rpc2Nvbm5lY3QnO1xuXG5pbXBvcnQgeyBSRUNPTk5FQ1QgfSBmcm9tICcuLi9hY3Rpb25zL3JlY29ubmVjdCc7XG5cbmNvbnN0IHsgQ29ubmVjdGluZzogQ09OTkVDVElORywgT25saW5lOiBPTkxJTkUsIFVuaW5pdGlhbGl6ZWQ6IFVOSU5JVElBTElaRUQgfSA9IENvbm5lY3Rpb25TdGF0dXM7XG5cbmZ1bmN0aW9uIHJhbmRvbVVzZXJJRCgpIHtcbiAgcmV0dXJuIGByXyR7dW5pcXVlSUQoKS5zdWJzdHIoMCwgMTApfWA7XG59XG5cbmZ1bmN0aW9uKiBvYnNlcnZlQW5kUHV0Q29ubmVjdGlvblN0YXR1c1VwZGF0ZShkaXJlY3RMaW5lKSB7XG4gIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNRdWV1ZSA9IGNyZWF0ZVByb21pc2VRdWV1ZSgpO1xuICBjb25zdCBjb25uZWN0aW9uU3RhdHVzU3Vic2NyaXB0aW9uID0gZGlyZWN0TGluZS5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoeyBuZXh0OiBjb25uZWN0aW9uU3RhdHVzUXVldWUucHVzaCB9KTtcblxuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXMgPSB5aWVsZCBjYWxsKGNvbm5lY3Rpb25TdGF0dXNRdWV1ZS5zaGlmdCk7XG5cbiAgICAgIHlpZWxkIHB1dCh1cGRhdGVDb25uZWN0aW9uU3RhdHVzKGNvbm5lY3Rpb25TdGF0dXMpKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgY29ubmVjdGlvblN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG5cbi8vIFRPRE86IFtQMl0gV2Ugc2hvdWxkIG1vdmUgdGhpcyBjaGVjayBhbmQgcmVjdGlmaWNhdGlvbiB0byBEaXJlY3RMaW5lSlMuXG5mdW5jdGlvbiByZWN0aWZ5VXNlcklEKGRpcmVjdExpbmUsIHVzZXJJREZyb21BY3Rpb24pIHtcbiAgY29uc3QgeyB0b2tlbiB9ID0gZGlyZWN0TGluZTtcbiAgY29uc3QgeyB1c2VyOiB1c2VySURGcm9tVG9rZW4gfSA9IGRlY29kZSh0b2tlbikgfHwge307XG5cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIGZyb21BY3Rpb246IHVzZXJJREZyb21BY3Rpb24sXG4gICAgZnJvbVRva2VuOiB1c2VySURGcm9tVG9rZW5cbiAgfTtcblxuICBpZiAodXNlcklERnJvbVRva2VuKSB7XG4gICAgaWYgKHVzZXJJREZyb21BY3Rpb24gJiYgdXNlcklERnJvbUFjdGlvbiAhPT0gdXNlcklERnJvbVRva2VuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdXZWIgQ2hhdDogdXNlciBJRCBpcyBib3RoIHNwZWNpZmllZCBpbiB0aGUgRGlyZWN0IExpbmUgdG9rZW4gYW5kIHBhc3NlZCBpbiwgd2lsbCB1c2UgdGhlIHVzZXIgSUQgZnJvbSB0aGUgdG9rZW4uJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXN1bHQuZmluYWwgPSB1c2VySURGcm9tVG9rZW47XG4gIH0gZWxzZSBpZiAodXNlcklERnJvbUFjdGlvbikge1xuICAgIGlmICh0eXBlb2YgdXNlcklERnJvbUFjdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnNvbGUud2FybignV2ViIENoYXQ6IHVzZXIgSUQgbXVzdCBiZSBhIHN0cmluZy4nKTtcblxuICAgICAgcmVzdWx0LmZpbmFsID0gcmFuZG9tVXNlcklEKCk7XG4gICAgfSBlbHNlIGlmICgvXmRsXy91LnRlc3QodXNlcklERnJvbUFjdGlvbikpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dlYiBDaGF0OiB1c2VyIElEIHByZWZpeGVkIHdpdGggXCJkbF9cIiBpcyByZXNlcnZlZCBhbmQgbXVzdCBiZSBlbWJlZGRlZCBpbnRvIHRoZSBEaXJlY3QgTGluZSB0b2tlbiB0byBwcmV2ZW50IGZvcmdlcnkuJ1xuICAgICAgKTtcblxuICAgICAgcmVzdWx0LmZpbmFsID0gcmFuZG9tVXNlcklEKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5maW5hbCA9IHVzZXJJREZyb21BY3Rpb247XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5maW5hbCA9IHJhbmRvbVVzZXJJRCgpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gV2UgY291bGQgbWFrZSB0aGlzIGEgUHJvbWlzZSBpbnN0ZWFkIG9mIHNhZ2EgKGZ1bmN0aW9uIGdlbmVyYXRvcikgdG8gbWFrZSB0aGUgY29kZSBjbGVhbmVyLCBpZjpcbi8vIDEuIFdlIGZvdW5kIGEgd2F5IHRvIGNhbmNlbCBQcm9taXNlXG4vLyAyLiBzdWJzY3JpYmUoKSBhcmUgc2hhcmVkIGFtb25nc3QgYWxsIHN1YnNjcmlwdGlvbnMsIGUuZy4gdHVybiBPYnNlcnZhYmxlIGludG8gZXZlbnRzXG5mdW5jdGlvbiogY29ubmVjdFNhZ2EoZGlyZWN0TGluZSkge1xuICAvLyBEaXJlY3RMaW5lSlMgc3RhcnRzIHRoZSBjb25uZWN0aW9uIG9ubHkgYWZ0ZXIgdGhlIGZpcnN0IHN1YnNjcmliZXIgZm9yIGFjdGl2aXR5JCwgbm90IGNvbm5lY3Rpb25TdGF0dXMkXG4gIGNvbnN0IGFjdGl2aXR5U3Vic2NyaXB0aW9uID0gZGlyZWN0TGluZS5hY3Rpdml0eSQuc3Vic2NyaWJlKHsgbmV4dDogKCkgPT4gMCB9KTtcbiAgY29uc3QgdW5zdWJzY3JpYmVBY3Rpdml0eSA9IGFjdGl2aXR5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlLmJpbmQoYWN0aXZpdHlTdWJzY3JpcHRpb24pO1xuXG4gIHRyeSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXlsb2FkOiB7IGNvbm5lY3Rpb25TdGF0dXMgfVxuICAgICAgfSA9IHlpZWxkIHRha2UoVVBEQVRFX0NPTk5FQ1RJT05fU1RBVFVTKTtcblxuICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgPT09IE9OTElORSkge1xuICAgICAgICAvLyBUT0RPOiBbUDJdIERpcmVjdExpbmVKUyBzaG91bGQga2lsbCB0aGUgY29ubmVjdGlvbiB3aGVuIHdlIHVuc3Vic2NyaWJlXG4gICAgICAgIC8vICAgICAgIEJ1dCBjdXJyZW50bHkgaW4gdjMsIERpcmVjdExpbmVKUyBkb2VzIG5vdCBoYXZlIHRoaXMgZnVuY3Rpb25hbGl0eVxuICAgICAgICAvLyAgICAgICBUaHVzLCB3ZSBuZWVkIHRvIGNhbGwgXCJlbmQoKVwiIGV4cGxpY2l0bHlcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIHVuc3Vic2NyaWJlQWN0aXZpdHkoKTtcbiAgICAgICAgICBkaXJlY3RMaW5lLmVuZCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzICE9PSBVTklOSVRJQUxJWkVEICYmIGNvbm5lY3Rpb25TdGF0dXMgIT09IENPTk5FQ1RJTkcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY29ubmVjdCwgRGlyZWN0TGluZUpTIHJldHVybmVkICR7Y29ubmVjdGlvblN0YXR1c30uYCk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBXZSB3aWxsIHVuc3Vic2NyaWJlIGlmIHdlIGZhaWxlZCB0byBjb25uZWN0IG9yIGdvdCBjYW5jZWxsZWQgb25seS5cbiAgICAvLyBXZSBzaG91bGQgbm90IHVuc3Vic2NyaWJlIGluIGhhcHB5IGNhc2UsIGJlY2F1c2UgRGlyZWN0TGluZUpTIHNob3VsZCByZWx5aW5nIG9uIHRoZSBzdWJzY3JpcHRpb24gdG8gY29ubmVjdC9kaXNjb25uZWN0LlxuICAgIHVuc3Vic2NyaWJlQWN0aXZpdHkoKTtcblxuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoeWllbGQgY2FuY2VsbGVkKCkpIHtcbiAgICAgIHVuc3Vic2NyaWJlQWN0aXZpdHkoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24qIHJlY29ubmVjdFNhZ2EoKSB7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCB7XG4gICAgICBwYXlsb2FkOiB7IGNvbm5lY3Rpb25TdGF0dXMgfVxuICAgIH0gPSB5aWVsZCB0YWtlKFVQREFURV9DT05ORUNUSU9OX1NUQVRVUyk7XG5cbiAgICBpZiAoY29ubmVjdGlvblN0YXR1cyA9PT0gT05MSU5FKSB7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT09IENPTk5FQ1RJTkcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlY29ubmVjdC4gRGlyZWN0TGluZUpTIHJldHVybmVkICR7Y29ubmVjdGlvblN0YXR1c30uYCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgaXMgc2ltaWxhciB0byBiZWhhdmlvciBvZiByZWR1eC1wcm9taXNlLW1pZGRsZXdhcmUsIGJ1dCB1c2luZyBzYWdhIGluc3RlYWQgb2YgUHJvbWlzZS5cbi8vIFdlIGd1YXJhbnRlZSBQRU5ESU5HIC0+IEZVTEZJTExJTkcgLT4gRlVMRklMTEVELCBvciBQRU5ESU5HIC0+IFJFSkVDVEVELiBUaGlzIHdpbGwgaGVscCB1cyBzaW1wbGlmeSBsb2dpYyBpbiBvdGhlciBwYXJ0IG9mIGNvZGUuXG4vLyBOb3RlIHRoYXQgYWZ0ZXIgdGhlIHNhZ2EgaXMgY2FuY2VsbGVkLCBzdWJzZXF1ZW50IGNhbGwgdG8gcHV0KCkgd2lsbCBiZSBpZ25vcmVkIHNpbGVudGx5LlxuZnVuY3Rpb24qIHJ1bkFzeW5jRWZmZWN0KHsgdHlwZSwgbWV0YSwgcGF5bG9hZCB9LCBjYWxsRWZmZWN0RmFjdG9yeSkge1xuICB0cnkge1xuICAgIHlpZWxkIGZvcmtQdXQoeyB0eXBlOiBgJHt0eXBlfV9QRU5ESU5HYCwgbWV0YSwgcGF5bG9hZCB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIGNhbGxFZmZlY3RGYWN0b3J5KCk7XG5cbiAgICB5aWVsZCBmb3JrUHV0KHsgdHlwZTogYCR7dHlwZX1fRlVMRklMTElOR2AsIG1ldGEsIHBheWxvYWQgfSwgeyB0eXBlOiBgJHt0eXBlfV9GVUxGSUxMRURgLCBtZXRhLCBwYXlsb2FkIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAocGF5bG9hZCkge1xuICAgIHlpZWxkIGZvcmtQdXQoeyB0eXBlOiBgJHt0eXBlfV9SRUpFQ1RFRGAsIGVycm9yOiB0cnVlLCBtZXRhLCBwYXlsb2FkIH0pO1xuXG4gICAgdGhyb3cgcGF5bG9hZDtcbiAgfVxufVxuXG5mdW5jdGlvbiogdGFrZURpc2Nvbm5lY3RBc0Vycm9yKCkge1xuICB5aWVsZCB0YWtlKERJU0NPTk5FQ1QpO1xuXG4gIHRocm93IG5ldyBFcnJvcignZGlzY29ubmVjdGVkJyk7XG59XG5cbmZ1bmN0aW9uIHJ1bkFzeW5jRWZmZWN0VW50aWxEaXNjb25uZWN0KGJhc2VBY3Rpb24sIGNhbGxFZmZlY3RGYWN0b3J5KSB7XG4gIC8vIFdlIGNhbm5vdCB1c2Ugc2FnYSBjYW5jZWwoKSBoZXJlLCBiZWNhdXNlIGNhbmNlbGxpbmcgc2FnYSB3aWxsIHByb2hpYml0IHVzIGZyb20gc2VuZGluZyAqX1JFSkVDVEVELlxuICAvLyBXaXRob3V0IFJFSkVDVEVELCBpdCBpbXBhY3RzIG91ciBhc3N1bXB0aW9ucyBhcm91bmQgUEVORElORy9GVUxGSUxMRUQvUkVKRUNURUQuXG4gIHJldHVybiBydW5Bc3luY0VmZmVjdChiYXNlQWN0aW9uLCBmdW5jdGlvbiogcnVuVW50aWxEaXNjb25uZWN0KCkge1xuICAgIGNvbnN0IHsgcmVzdWx0IH0gPSB5aWVsZCByYWNlKHtcbiAgICAgIF86IHRha2VEaXNjb25uZWN0QXNFcnJvcigpLFxuICAgICAgcmVzdWx0OiBjYWxsRWZmZWN0RmFjdG9yeSgpXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qICgpIHtcbiAgZm9yICg7Oykge1xuICAgIGNvbnN0IHtcbiAgICAgIHBheWxvYWQ6IHsgZGlyZWN0TGluZSwgdXNlcklEOiB1c2VySURGcm9tQWN0aW9uLCB1c2VybmFtZSB9XG4gICAgfSA9IHlpZWxkIHRha2UoQ09OTkVDVCk7XG5cbiAgICBjb25zdCB1cGRhdGVDb25uZWN0aW9uU3RhdHVzVGFzayA9IHlpZWxkIGZvcmsob2JzZXJ2ZUFuZFB1dENvbm5lY3Rpb25TdGF0dXNVcGRhdGUsIGRpcmVjdExpbmUpO1xuICAgIGNvbnN0IHJlY3RpZmllZFVzZXJJRCA9IHJlY3RpZnlVc2VySUQoZGlyZWN0TGluZSwgdXNlcklERnJvbUFjdGlvbik7XG5cbiAgICAvLyBUT0RPOiBbUDJdIENoZWNrcyBpZiB0aGlzIGF0dGFjaGVkIHN1YnRhc2sgd2lsbCBnZXQga2lsbGVkIGlmIHRoZSBwYXJlbnQgdGFzayBpcyBjb21wbGV0ZSAocGVhY2VmdWxseSksIGVycm9yZWQgb3V0LCBvciBjYW5jZWxsZWQuXG4gICAgY29uc3QgbWV0YSA9IHtcbiAgICAgIHVzZXJJRDogcmVjdGlmaWVkVXNlcklELmZpbmFsLFxuICAgICAgdXNlcm5hbWVcbiAgICB9O1xuXG4gICAgLy8gU2VuZCB1c2VyIElEIHRvIERpcmVjdExpbmVKUyBpZiBpdCB3YXMgc3BlY2lmaWVkIGZyb20gcHJvcHMgb2YgPEFQSS5Db21wb3Nlcj4uXG4gICAgLy8gSG93ZXZlciwgRGlyZWN0TGluZUpTIG1heSBzdGlsbCBwcmVmZXIgdGhlIHVzZXIgSUQgZnJvbSB0b2tlbiBpZiBpdCBpcyBidXJudCBpbnRvIHRoZSB0b2tlbi5cbiAgICAvLyBUbyBwcmV2ZW50IERpcmVjdExpbmVKUyBnaXZpbmcgZmFsc2Ugd2FybmluZ3MsIHdlIHdpbGwgb25seSBjYWxsIHNldFVzZXJJZCgpIGlmIGl0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSB0b2tlbi5cbiAgICBkaXJlY3RMaW5lLnNldFVzZXJJZCAmJiByZWN0aWZpZWRVc2VySUQuZnJvbVRva2VuICE9PSBtZXRhLnVzZXJJRCAmJiBkaXJlY3RMaW5lLnNldFVzZXJJZChtZXRhLnVzZXJJRCk7XG5cbiAgICBsZXQgZGlzY29ubmVjdE1ldGE7XG5cbiAgICAvLyBXZSB3aWxsIGRpc3BhdGNoIENPTk5FQ1RfUEVORElORywgd2FpdCBmb3IgY29ubmVjdCBjb21wbGV0ZWQsIGVycm9yZWQsIG9yIGNhbmNlbGxlZCAodGhydSBkaXNjb25uZWN0KS5cbiAgICAvLyBUaGVuIGRpc3BhdGNoIENPTk5FQ1RfRlVMRklMTEVEL0NPTk5FQ1RfUkVKRUNURUQgYXMgbmVlZGVkLlxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmREaXJlY3RMaW5lID0geWllbGQgcnVuQXN5bmNFZmZlY3RVbnRpbERpc2Nvbm5lY3QoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBDT05ORUNULFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gY2FsbChjb25uZWN0U2FnYSwgZGlyZWN0TGluZSlcbiAgICAgICk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAvLyBXZSBhcmUgd2FpdGluZyBmb3IgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlIG9yIGRpc2Nvbm5lY3QgYWN0aW9uLlxuICAgICAgICAgIGNvbnN0IHsgdXBkYXRlQ29ubmVjdGlvblN0YXR1c0FjdGlvbjogeyBwYXlsb2FkOiB7IGNvbm5lY3Rpb25TdGF0dXMgfSA9IHt9IH0gPSB7fSB9ID0geWllbGQgcmFjZSh7XG4gICAgICAgICAgICBfOiB0YWtlKERJU0NPTk5FQ1QpLFxuICAgICAgICAgICAgdXBkYXRlQ29ubmVjdGlvblN0YXR1c0FjdGlvbjogdGFrZShVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBJZiBpdCBpcyBub3QgZGlzY29ubmVjdCBhY3Rpb24sIGNvbm5lY3Rpb25TdGF0dXMgd2lsbCBub3QgYmUgdW5kZWZpbmVkLlxuICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBDT05ORUNUSU5HKSB7XG4gICAgICAgICAgICAvLyBJZiBEaXJlY3RMaW5lSlMgY2hhbmdlZCBjb25uZWN0aW9uU3RhdHVzIHRvIENPTk5FQ1RJTkcsIHdlIHdpbGwgdHJlYXQgaXQgYXMgcmVjb25uZWN0IHN0YXR1cy5cbiAgICAgICAgICAgIHlpZWxkIHJ1bkFzeW5jRWZmZWN0VW50aWxEaXNjb25uZWN0KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogUkVDT05ORUNULFxuICAgICAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKCkgPT4gY2FsbChyZWNvbm5lY3RTYWdhKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT09IE9OTElORSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25uZWN0aW9uU3RhdHVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtpbGwgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBEaXJlY3RMaW5lSlMgd2FudCB0byBjbG9zZSBpdC5cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2VkIHRvICR7Y29ubmVjdGlvblN0YXR1c31gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFNvbWVvbmUgZGlzcGF0Y2hlZCBkaXNjb25uZWN0IGFjdGlvbi5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBlbmREaXJlY3RMaW5lKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRpc2Nvbm5lY3RNZXRhID0geyBlcnJvciB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB5aWVsZCBjYW5jZWwodXBkYXRlQ29ubmVjdGlvblN0YXR1c1Rhc2spO1xuXG4gICAgICAvLyBFdmVuIGlmIHRoZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkLCB3ZSB3aWxsIHN0aWxsIGVtaXQgRElTQ09OTkVDVF9QRU5ESU5HLlxuICAgICAgLy8gVGhpcyB3aWxsIG1ha2VzIGhhbmRsaW5nIGxvZ2ljIGVhc2llci4gSWYgQ09OTkVDVF9GVUxGSUxMRUQsIHdlIGd1YXJhbnRlZSBESVNDT05ORUNUX1BFTkRJTkcuXG4gICAgICB5aWVsZCBmb3JrUHV0KFxuICAgICAgICB7IHR5cGU6IERJU0NPTk5FQ1RfUEVORElORywgbWV0YTogZGlzY29ubmVjdE1ldGEsIHBheWxvYWQ6IHsgZGlyZWN0TGluZSB9IH0sXG4gICAgICAgIHsgdHlwZTogRElTQ09OTkVDVF9GVUxGSUxMRUQsIG1ldGE6IGRpc2Nvbm5lY3RNZXRhLCBwYXlsb2FkOiB7IGRpcmVjdExpbmUgfSB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
537
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9jb25uZWN0U2FnYS5qcyJdLCJuYW1lcyI6WyJvYnNlcnZlQW5kUHV0Q29ubmVjdGlvblN0YXR1c1VwZGF0ZSIsImNvbm5lY3RTYWdhIiwicmVjb25uZWN0U2FnYSIsInJ1bkFzeW5jRWZmZWN0IiwidGFrZURpc2Nvbm5lY3RBc0Vycm9yIiwiQ09OTkVDVElORyIsIkNvbm5lY3Rpb25TdGF0dXMiLCJDb25uZWN0aW5nIiwiT05MSU5FIiwiT25saW5lIiwiVU5JTklUSUFMSVpFRCIsIlVuaW5pdGlhbGl6ZWQiLCJyYW5kb21Vc2VySUQiLCJzdWJzdHIiLCJkaXJlY3RMaW5lIiwiY29ubmVjdGlvblN0YXR1c1F1ZXVlIiwiY29ubmVjdGlvblN0YXR1c1N1YnNjcmlwdGlvbiIsImNvbm5lY3Rpb25TdGF0dXMkIiwic3Vic2NyaWJlIiwibmV4dCIsInB1c2giLCJzaGlmdCIsImNvbm5lY3Rpb25TdGF0dXMiLCJ1bnN1YnNjcmliZSIsInJlY3RpZnlVc2VySUQiLCJ1c2VySURGcm9tQWN0aW9uIiwidG9rZW4iLCJ1c2VySURGcm9tVG9rZW4iLCJ1c2VyIiwiZXJyIiwicmVzdWx0IiwiZnJvbUFjdGlvbiIsImZyb21Ub2tlbiIsImNvbnNvbGUiLCJ3YXJuIiwidGVzdCIsImFjdGl2aXR5U3Vic2NyaXB0aW9uIiwiYWN0aXZpdHkkIiwidW5zdWJzY3JpYmVBY3Rpdml0eSIsImJpbmQiLCJVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMiLCJwYXlsb2FkIiwiZW5kIiwiRXJyb3IiLCJjYWxsRWZmZWN0RmFjdG9yeSIsInR5cGUiLCJtZXRhIiwiZXJyb3IiLCJESVNDT05ORUNUIiwicnVuQXN5bmNFZmZlY3RVbnRpbERpc2Nvbm5lY3QiLCJiYXNlQWN0aW9uIiwicnVuVW50aWxEaXNjb25uZWN0IiwiXyIsIkNPTk5FQ1QiLCJ1c2VySUQiLCJ1c2VybmFtZSIsInVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNUYXNrIiwicmVjdGlmaWVkVXNlcklEIiwic2V0VXNlcklkIiwiZGlzY29ubmVjdE1ldGEiLCJlbmREaXJlY3RMaW5lIiwidXBkYXRlQ29ubmVjdGlvblN0YXR1c0FjdGlvbiIsIlJFQ09OTkVDVCIsIkRJU0NPTk5FQ1RfUEVORElORyIsIkRJU0NPTk5FQ1RfRlVMRklMTEVEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7Ozs7Ozt3REFRVUEsbUM7eURBZ0VBQyxXO3lEQXFDQUMsYTt5REFpQkFDLGM7eURBZ0JBQyxxQjs7O0FBNUlWLElBQW9CQyxVQUFwQixHQUFpRkMsMENBQWpGLENBQVFDLFVBQVI7QUFBQSxJQUF3Q0MsTUFBeEMsR0FBaUZGLDBDQUFqRixDQUFnQ0csTUFBaEM7QUFBQSxJQUErREMsYUFBL0QsR0FBaUZKLDBDQUFqRixDQUFnREssYUFBaEQ7O0FBRUEsU0FBU0MsWUFBVCxHQUF3QjtBQUN0QixxQkFBWSw0QkFBV0MsTUFBWCxDQUFrQixDQUFsQixFQUFxQixFQUFyQixDQUFaO0FBQ0Q7O0FBRUQsU0FBVWIsbUNBQVYsQ0FBOENjLFVBQTlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRQyxVQUFBQSxxQkFEUixHQUNnQyxxQ0FEaEM7QUFFUUMsVUFBQUEsNEJBRlIsR0FFdUNGLFVBQVUsQ0FBQ0csaUJBQVgsQ0FBNkJDLFNBQTdCLENBQXVDO0FBQUVDLFlBQUFBLElBQUksRUFBRUoscUJBQXFCLENBQUNLO0FBQTlCLFdBQXZDLENBRnZDO0FBQUE7O0FBQUE7QUFBQTtBQU0rQixpQkFBTSxtQkFBS0wscUJBQXFCLENBQUNNLEtBQTNCLENBQU47O0FBTi9CO0FBTVlDLFVBQUFBLGdCQU5aO0FBQUE7QUFRTSxpQkFBTSxrQkFBSSx3Q0FBdUJBLGdCQUF2QixDQUFKLENBQU47O0FBUk47QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFXSU4sVUFBQUEsNEJBQTRCLENBQUNPLFdBQTdCO0FBWEo7O0FBQUE7QUFBQTtBQUFB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LHdCQUFBQSxVQUFVLEVBQVZBO0FBQUY7QUFBM0QscUJBREksRUFFSjtBQUFFK0Isc0JBQUFBLElBQUksRUFBRW1CLGdDQUFSO0FBQThCbEIsc0JBQUFBLElBQUksRUFBRWEsY0FBcEM7QUFBb0RsQixzQkFBQUEsT0FBTyxFQUFFO0FBQUUzQix3QkFBQUEsVUFBVSxFQUFWQTtBQUFGO0FBQTdELHFCQUZJLENBQU47O0FBekVTO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiY29yZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbMCwgMTBdIH1dICovXG5cbmltcG9ydCB7IGNhbGwsIGNhbmNlbCwgY2FuY2VsbGVkLCBmb3JrLCBwdXQsIHJhY2UsIHRha2UgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnO1xuXG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzIH0gZnJvbSAnYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVqcyc7XG5pbXBvcnQgZGVjb2RlIGZyb20gJ2p3dC1kZWNvZGUnO1xuXG5pbXBvcnQgeyBDT05ORUNUIH0gZnJvbSAnLi4vYWN0aW9ucy9jb25uZWN0JztcbmltcG9ydCBjcmVhdGVQcm9taXNlUXVldWUgZnJvbSAnLi4vY3JlYXRlUHJvbWlzZVF1ZXVlJztcbmltcG9ydCBmb3JrUHV0IGZyb20gJy4vZWZmZWN0cy9mb3JrUHV0JztcbmltcG9ydCB1bmlxdWVJRCBmcm9tICcuLi91dGlscy91bmlxdWVJRCc7XG5pbXBvcnQgdXBkYXRlQ29ubmVjdGlvblN0YXR1cywgeyBVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMgfSBmcm9tICcuLi9hY3Rpb25zL3VwZGF0ZUNvbm5lY3Rpb25TdGF0dXMnO1xuXG5pbXBvcnQgeyBESVNDT05ORUNULCBESVNDT05ORUNUX1BFTkRJTkcsIERJU0NPTk5FQ1RfRlVMRklMTEVEIH0gZnJvbSAnLi4vYWN0aW9ucy9kaXNjb25uZWN0JztcblxuaW1wb3J0IHsgUkVDT05ORUNUIH0gZnJvbSAnLi4vYWN0aW9ucy9yZWNvbm5lY3QnO1xuXG5jb25zdCB7IENvbm5lY3Rpbmc6IENPTk5FQ1RJTkcsIE9ubGluZTogT05MSU5FLCBVbmluaXRpYWxpemVkOiBVTklOSVRJQUxJWkVEIH0gPSBDb25uZWN0aW9uU3RhdHVzO1xuXG5mdW5jdGlvbiByYW5kb21Vc2VySUQoKSB7XG4gIHJldHVybiBgcl8ke3VuaXF1ZUlEKCkuc3Vic3RyKDAsIDEwKX1gO1xufVxuXG5mdW5jdGlvbiogb2JzZXJ2ZUFuZFB1dENvbm5lY3Rpb25TdGF0dXNVcGRhdGUoZGlyZWN0TGluZSkge1xuICBjb25zdCBjb25uZWN0aW9uU3RhdHVzUXVldWUgPSBjcmVhdGVQcm9taXNlUXVldWUoKTtcbiAgY29uc3QgY29ubmVjdGlvblN0YXR1c1N1YnNjcmlwdGlvbiA9IGRpcmVjdExpbmUuY29ubmVjdGlvblN0YXR1cyQuc3Vic2NyaWJlKHsgbmV4dDogY29ubmVjdGlvblN0YXR1c1F1ZXVlLnB1c2ggfSk7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uU3RhdHVzID0geWllbGQgY2FsbChjb25uZWN0aW9uU3RhdHVzUXVldWUuc2hpZnQpO1xuXG4gICAgICB5aWVsZCBwdXQodXBkYXRlQ29ubmVjdGlvblN0YXR1cyhjb25uZWN0aW9uU3RhdHVzKSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGNvbm5lY3Rpb25TdGF0dXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG4vLyBUT0RPOiBbUDJdIFdlIHNob3VsZCBtb3ZlIHRoaXMgY2hlY2sgYW5kIHJlY3RpZmljYXRpb24gdG8gRGlyZWN0TGluZUpTLlxuZnVuY3Rpb24gcmVjdGlmeVVzZXJJRChkaXJlY3RMaW5lLCB1c2VySURGcm9tQWN0aW9uKSB7XG4gIGNvbnN0IHsgdG9rZW4gfSA9IGRpcmVjdExpbmU7XG5cbiAgbGV0IHVzZXJJREZyb21Ub2tlbjtcblxuICAvLyBUT0RPOiBBZGQgdGVzdCB0byBtYWtlIHN1cmUgXCJqd3QtZGVjb2RlXCIgd29yayBhcyBleHBlY3RlZC5cbiAgdHJ5IHtcbiAgICB1c2VySURGcm9tVG9rZW4gPSAoZGVjb2RlKHRva2VuKSB8fCB7fSkudXNlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgfSBjYXRjaCAoZXJyKSB7fVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBmcm9tQWN0aW9uOiB1c2VySURGcm9tQWN0aW9uLFxuICAgIGZyb21Ub2tlbjogdXNlcklERnJvbVRva2VuXG4gIH07XG5cbiAgaWYgKHVzZXJJREZyb21Ub2tlbikge1xuICAgIGlmICh1c2VySURGcm9tQWN0aW9uICYmIHVzZXJJREZyb21BY3Rpb24gIT09IHVzZXJJREZyb21Ub2tlbikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnV2ViIENoYXQ6IHVzZXIgSUQgaXMgYm90aCBzcGVjaWZpZWQgaW4gdGhlIERpcmVjdCBMaW5lIHRva2VuIGFuZCBwYXNzZWQgaW4sIHdpbGwgdXNlIHRoZSB1c2VyIElEIGZyb20gdGhlIHRva2VuLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzdWx0LmZpbmFsID0gdXNlcklERnJvbVRva2VuO1xuICB9IGVsc2UgaWYgKHVzZXJJREZyb21BY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIHVzZXJJREZyb21BY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1dlYiBDaGF0OiB1c2VyIElEIG11c3QgYmUgYSBzdHJpbmcuJyk7XG5cbiAgICAgIHJlc3VsdC5maW5hbCA9IHJhbmRvbVVzZXJJRCgpO1xuICAgIH0gZWxzZSBpZiAoL15kbF8vdS50ZXN0KHVzZXJJREZyb21BY3Rpb24pKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdXZWIgQ2hhdDogdXNlciBJRCBwcmVmaXhlZCB3aXRoIFwiZGxfXCIgaXMgcmVzZXJ2ZWQgYW5kIG11c3QgYmUgZW1iZWRkZWQgaW50byB0aGUgRGlyZWN0IExpbmUgdG9rZW4gdG8gcHJldmVudCBmb3JnZXJ5LidcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdC5maW5hbCA9IHJhbmRvbVVzZXJJRCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQuZmluYWwgPSB1c2VySURGcm9tQWN0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXN1bHQuZmluYWwgPSByYW5kb21Vc2VySUQoKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFdlIGNvdWxkIG1ha2UgdGhpcyBhIFByb21pc2UgaW5zdGVhZCBvZiBzYWdhIChmdW5jdGlvbiBnZW5lcmF0b3IpIHRvIG1ha2UgdGhlIGNvZGUgY2xlYW5lciwgaWY6XG4vLyAxLiBXZSBmb3VuZCBhIHdheSB0byBjYW5jZWwgUHJvbWlzZVxuLy8gMi4gc3Vic2NyaWJlKCkgYXJlIHNoYXJlZCBhbW9uZ3N0IGFsbCBzdWJzY3JpcHRpb25zLCBlLmcuIHR1cm4gT2JzZXJ2YWJsZSBpbnRvIGV2ZW50c1xuZnVuY3Rpb24qIGNvbm5lY3RTYWdhKGRpcmVjdExpbmUpIHtcbiAgLy8gRGlyZWN0TGluZUpTIHN0YXJ0cyB0aGUgY29ubmVjdGlvbiBvbmx5IGFmdGVyIHRoZSBmaXJzdCBzdWJzY3JpYmVyIGZvciBhY3Rpdml0eSQsIG5vdCBjb25uZWN0aW9uU3RhdHVzJFxuICBjb25zdCBhY3Rpdml0eVN1YnNjcmlwdGlvbiA9IGRpcmVjdExpbmUuYWN0aXZpdHkkLnN1YnNjcmliZSh7IG5leHQ6ICgpID0+IDAgfSk7XG4gIGNvbnN0IHVuc3Vic2NyaWJlQWN0aXZpdHkgPSBhY3Rpdml0eVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZS5iaW5kKGFjdGl2aXR5U3Vic2NyaXB0aW9uKTtcblxuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGF5bG9hZDogeyBjb25uZWN0aW9uU3RhdHVzIH1cbiAgICAgIH0gPSB5aWVsZCB0YWtlKFVQREFURV9DT05ORUNUSU9OX1NUQVRVUyk7XG5cbiAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBPTkxJTkUpIHtcbiAgICAgICAgLy8gVE9ETzogW1AyXSBEaXJlY3RMaW5lSlMgc2hvdWxkIGtpbGwgdGhlIGNvbm5lY3Rpb24gd2hlbiB3ZSB1bnN1YnNjcmliZVxuICAgICAgICAvLyAgICAgICBCdXQgY3VycmVudGx5IGluIHYzLCBEaXJlY3RMaW5lSlMgZG9lcyBub3QgaGF2ZSB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgLy8gICAgICAgVGh1cywgd2UgbmVlZCB0byBjYWxsIFwiZW5kKClcIiBleHBsaWNpdGx5XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICB1bnN1YnNjcmliZUFjdGl2aXR5KCk7XG4gICAgICAgICAgZGlyZWN0TGluZS5lbmQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cyAhPT0gVU5JTklUSUFMSVpFRCAmJiBjb25uZWN0aW9uU3RhdHVzICE9PSBDT05ORUNUSU5HKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QsIERpcmVjdExpbmVKUyByZXR1cm5lZCAke2Nvbm5lY3Rpb25TdGF0dXN9LmApO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gV2Ugd2lsbCB1bnN1YnNjcmliZSBpZiB3ZSBmYWlsZWQgdG8gY29ubmVjdCBvciBnb3QgY2FuY2VsbGVkIG9ubHkuXG4gICAgLy8gV2Ugc2hvdWxkIG5vdCB1bnN1YnNjcmliZSBpbiBoYXBweSBjYXNlLCBiZWNhdXNlIERpcmVjdExpbmVKUyBzaG91bGQgcmVseWluZyBvbiB0aGUgc3Vic2NyaXB0aW9uIHRvIGNvbm5lY3QvZGlzY29ubmVjdC5cbiAgICB1bnN1YnNjcmliZUFjdGl2aXR5KCk7XG5cbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHlpZWxkIGNhbmNlbGxlZCgpKSB7XG4gICAgICB1bnN1YnNjcmliZUFjdGl2aXR5KCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uKiByZWNvbm5lY3RTYWdhKCkge1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3Qge1xuICAgICAgcGF5bG9hZDogeyBjb25uZWN0aW9uU3RhdHVzIH1cbiAgICB9ID0geWllbGQgdGFrZShVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMpO1xuXG4gICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgPT09IE9OTElORSkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzICE9PSBDT05ORUNUSU5HKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWNvbm5lY3QuIERpcmVjdExpbmVKUyByZXR1cm5lZCAke2Nvbm5lY3Rpb25TdGF0dXN9LmApO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIGlzIHNpbWlsYXIgdG8gYmVoYXZpb3Igb2YgcmVkdXgtcHJvbWlzZS1taWRkbGV3YXJlLCBidXQgdXNpbmcgc2FnYSBpbnN0ZWFkIG9mIFByb21pc2UuXG4vLyBXZSBndWFyYW50ZWUgUEVORElORyAtPiBGVUxGSUxMSU5HIC0+IEZVTEZJTExFRCwgb3IgUEVORElORyAtPiBSRUpFQ1RFRC4gVGhpcyB3aWxsIGhlbHAgdXMgc2ltcGxpZnkgbG9naWMgaW4gb3RoZXIgcGFydCBvZiBjb2RlLlxuLy8gTm90ZSB0aGF0IGFmdGVyIHRoZSBzYWdhIGlzIGNhbmNlbGxlZCwgc3Vic2VxdWVudCBjYWxsIHRvIHB1dCgpIHdpbGwgYmUgaWdub3JlZCBzaWxlbnRseS5cbmZ1bmN0aW9uKiBydW5Bc3luY0VmZmVjdCh7IHR5cGUsIG1ldGEsIHBheWxvYWQgfSwgY2FsbEVmZmVjdEZhY3RvcnkpIHtcbiAgdHJ5IHtcbiAgICB5aWVsZCBmb3JrUHV0KHsgdHlwZTogYCR7dHlwZX1fUEVORElOR2AsIG1ldGEsIHBheWxvYWQgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSB5aWVsZCBjYWxsRWZmZWN0RmFjdG9yeSgpO1xuXG4gICAgeWllbGQgZm9ya1B1dCh7IHR5cGU6IGAke3R5cGV9X0ZVTEZJTExJTkdgLCBtZXRhLCBwYXlsb2FkIH0sIHsgdHlwZTogYCR7dHlwZX1fRlVMRklMTEVEYCwgbWV0YSwgcGF5bG9hZCB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKHBheWxvYWQpIHtcbiAgICB5aWVsZCBmb3JrUHV0KHsgdHlwZTogYCR7dHlwZX1fUkVKRUNURURgLCBlcnJvcjogdHJ1ZSwgbWV0YSwgcGF5bG9hZCB9KTtcblxuICAgIHRocm93IHBheWxvYWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24qIHRha2VEaXNjb25uZWN0QXNFcnJvcigpIHtcbiAgeWllbGQgdGFrZShESVNDT05ORUNUKTtcblxuICB0aHJvdyBuZXcgRXJyb3IoJ2Rpc2Nvbm5lY3RlZCcpO1xufVxuXG5mdW5jdGlvbiBydW5Bc3luY0VmZmVjdFVudGlsRGlzY29ubmVjdChiYXNlQWN0aW9uLCBjYWxsRWZmZWN0RmFjdG9yeSkge1xuICAvLyBXZSBjYW5ub3QgdXNlIHNhZ2EgY2FuY2VsKCkgaGVyZSwgYmVjYXVzZSBjYW5jZWxsaW5nIHNhZ2Egd2lsbCBwcm9oaWJpdCB1cyBmcm9tIHNlbmRpbmcgKl9SRUpFQ1RFRC5cbiAgLy8gV2l0aG91dCBSRUpFQ1RFRCwgaXQgaW1wYWN0cyBvdXIgYXNzdW1wdGlvbnMgYXJvdW5kIFBFTkRJTkcvRlVMRklMTEVEL1JFSkVDVEVELlxuICByZXR1cm4gcnVuQXN5bmNFZmZlY3QoYmFzZUFjdGlvbiwgZnVuY3Rpb24qIHJ1blVudGlsRGlzY29ubmVjdCgpIHtcbiAgICBjb25zdCB7IHJlc3VsdCB9ID0geWllbGQgcmFjZSh7XG4gICAgICBfOiB0YWtlRGlzY29ubmVjdEFzRXJyb3IoKSxcbiAgICAgIHJlc3VsdDogY2FsbEVmZmVjdEZhY3RvcnkoKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiAoKSB7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCB7XG4gICAgICBwYXlsb2FkOiB7IGRpcmVjdExpbmUsIHVzZXJJRDogdXNlcklERnJvbUFjdGlvbiwgdXNlcm5hbWUgfVxuICAgIH0gPSB5aWVsZCB0YWtlKENPTk5FQ1QpO1xuXG4gICAgY29uc3QgdXBkYXRlQ29ubmVjdGlvblN0YXR1c1Rhc2sgPSB5aWVsZCBmb3JrKG9ic2VydmVBbmRQdXRDb25uZWN0aW9uU3RhdHVzVXBkYXRlLCBkaXJlY3RMaW5lKTtcbiAgICBjb25zdCByZWN0aWZpZWRVc2VySUQgPSByZWN0aWZ5VXNlcklEKGRpcmVjdExpbmUsIHVzZXJJREZyb21BY3Rpb24pO1xuXG4gICAgLy8gVE9ETzogW1AyXSBDaGVja3MgaWYgdGhpcyBhdHRhY2hlZCBzdWJ0YXNrIHdpbGwgZ2V0IGtpbGxlZCBpZiB0aGUgcGFyZW50IHRhc2sgaXMgY29tcGxldGUgKHBlYWNlZnVsbHkpLCBlcnJvcmVkIG91dCwgb3IgY2FuY2VsbGVkLlxuICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICB1c2VySUQ6IHJlY3RpZmllZFVzZXJJRC5maW5hbCxcbiAgICAgIHVzZXJuYW1lXG4gICAgfTtcblxuICAgIC8vIFNlbmQgdXNlciBJRCB0byBEaXJlY3RMaW5lSlMgaWYgaXQgd2FzIHNwZWNpZmllZCBmcm9tIHByb3BzIG9mIDxBUEkuQ29tcG9zZXI+LlxuICAgIC8vIEhvd2V2ZXIsIERpcmVjdExpbmVKUyBtYXkgc3RpbGwgcHJlZmVyIHRoZSB1c2VyIElEIGZyb20gdG9rZW4gaWYgaXQgaXMgYnVybnQgaW50byB0aGUgdG9rZW4uXG4gICAgLy8gVG8gcHJldmVudCBEaXJlY3RMaW5lSlMgZ2l2aW5nIGZhbHNlIHdhcm5pbmdzLCB3ZSB3aWxsIG9ubHkgY2FsbCBzZXRVc2VySWQoKSBpZiBpdCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgdG9rZW4uXG4gICAgZGlyZWN0TGluZS5zZXRVc2VySWQgJiYgcmVjdGlmaWVkVXNlcklELmZyb21Ub2tlbiAhPT0gbWV0YS51c2VySUQgJiYgZGlyZWN0TGluZS5zZXRVc2VySWQobWV0YS51c2VySUQpO1xuXG4gICAgbGV0IGRpc2Nvbm5lY3RNZXRhO1xuXG4gICAgLy8gV2Ugd2lsbCBkaXNwYXRjaCBDT05ORUNUX1BFTkRJTkcsIHdhaXQgZm9yIGNvbm5lY3QgY29tcGxldGVkLCBlcnJvcmVkLCBvciBjYW5jZWxsZWQgKHRocnUgZGlzY29ubmVjdCkuXG4gICAgLy8gVGhlbiBkaXNwYXRjaCBDT05ORUNUX0ZVTEZJTExFRC9DT05ORUNUX1JFSkVDVEVEIGFzIG5lZWRlZC5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW5kRGlyZWN0TGluZSA9IHlpZWxkIHJ1bkFzeW5jRWZmZWN0VW50aWxEaXNjb25uZWN0KFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogQ09OTkVDVCxcbiAgICAgICAgICBtZXRhLFxuICAgICAgICAgIHBheWxvYWQ6IHsgZGlyZWN0TGluZSB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IGNhbGwoY29ubmVjdFNhZ2EsIGRpcmVjdExpbmUpXG4gICAgICApO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgLy8gV2UgYXJlIHdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZSBvciBkaXNjb25uZWN0IGFjdGlvbi5cbiAgICAgICAgICBjb25zdCB7IHVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNBY3Rpb246IHsgcGF5bG9hZDogeyBjb25uZWN0aW9uU3RhdHVzIH0gPSB7fSB9ID0ge30gfSA9IHlpZWxkIHJhY2Uoe1xuICAgICAgICAgICAgXzogdGFrZShESVNDT05ORUNUKSxcbiAgICAgICAgICAgIHVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNBY3Rpb246IHRha2UoVVBEQVRFX0NPTk5FQ1RJT05fU1RBVFVTKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gSWYgaXQgaXMgbm90IGRpc2Nvbm5lY3QgYWN0aW9uLCBjb25uZWN0aW9uU3RhdHVzIHdpbGwgbm90IGJlIHVuZGVmaW5lZC5cbiAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cyA9PT0gQ09OTkVDVElORykge1xuICAgICAgICAgICAgLy8gSWYgRGlyZWN0TGluZUpTIGNoYW5nZWQgY29ubmVjdGlvblN0YXR1cyB0byBDT05ORUNUSU5HLCB3ZSB3aWxsIHRyZWF0IGl0IGFzIHJlY29ubmVjdCBzdGF0dXMuXG4gICAgICAgICAgICB5aWVsZCBydW5Bc3luY0VmZmVjdFVudGlsRGlzY29ubmVjdChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFJFQ09OTkVDVCxcbiAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHsgZGlyZWN0TGluZSB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICgpID0+IGNhbGwocmVjb25uZWN0U2FnYSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzICE9PSBPTkxJTkUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29ubmVjdGlvblN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBraWxsIHRoZSBjb25uZWN0aW9uIGJlY2F1c2UgRGlyZWN0TGluZUpTIHdhbnQgdG8gY2xvc2UgaXQuXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlZCB0byAke2Nvbm5lY3Rpb25TdGF0dXN9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTb21lb25lIGRpc3BhdGNoZWQgZGlzY29ubmVjdCBhY3Rpb24uXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZW5kRGlyZWN0TGluZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkaXNjb25uZWN0TWV0YSA9IHsgZXJyb3IgfTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgeWllbGQgY2FuY2VsKHVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNUYXNrKTtcblxuICAgICAgLy8gRXZlbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbnRlcnJ1cHRlZCwgd2Ugd2lsbCBzdGlsbCBlbWl0IERJU0NPTk5FQ1RfUEVORElORy5cbiAgICAgIC8vIFRoaXMgd2lsbCBtYWtlcyBoYW5kbGluZyBsb2dpYyBlYXNpZXIuIElmIENPTk5FQ1RfRlVMRklMTEVELCB3ZSBndWFyYW50ZWUgRElTQ09OTkVDVF9QRU5ESU5HLlxuICAgICAgeWllbGQgZm9ya1B1dChcbiAgICAgICAgeyB0eXBlOiBESVNDT05ORUNUX1BFTkRJTkcsIG1ldGE6IGRpc2Nvbm5lY3RNZXRhLCBwYXlsb2FkOiB7IGRpcmVjdExpbmUgfSB9LFxuICAgICAgICB7IHR5cGU6IERJU0NPTk5FQ1RfRlVMRklMTEVELCBtZXRhOiBkaXNjb25uZWN0TWV0YSwgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH0gfVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -129,4 +129,4 @@ function _callee() {
129
129
  }
130
130
  }, _marked2);
131
131
  }
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9jb25uZWN0aW9uU3RhdHVzVG9Ob3RpZmljYXRpb25TYWdhLmpzIl0sIm5hbWVzIjpbImNvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvbiIsIkNPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lEIiwic3Vic2NyaWJlVG9Qcm9taXNlUXVldWUiLCJvYnNlcnZhYmxlIiwicHVzaCIsInNoaWZ0Iiwic3Vic2NyaXB0aW9uIiwic3Vic2NyaWJlIiwibmV4dCIsInVuc3Vic2NyaWJlIiwiZGlyZWN0TGluZSIsInBheWxvYWQiLCJjb25uZWN0aW9uU3RhdHVzJCIsInZhbHVlIiwiaWQiLCJsZXZlbCIsIm1lc3NhZ2UiLCJyZWNvbm5lY3RpbmciLCJDT05ORUNUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUVBOztBQUNBOztBQUNBOzt3REFnQlVBLDhCOzs7QUFkVixJQUFNQyxtQ0FBbUMsR0FBRyxvQkFBNUM7O0FBRUEsU0FBU0MsdUJBQVQsQ0FBaUNDLFVBQWpDLEVBQTZDO0FBQUEsNEJBQ25CLHNDQURtQjtBQUFBLE1BQ25DQyxJQURtQyx1QkFDbkNBLElBRG1DO0FBQUEsTUFDN0JDLEtBRDZCLHVCQUM3QkEsS0FENkI7O0FBRTNDLE1BQU1DLFlBQVksR0FBR0gsVUFBVSxDQUFDSSxTQUFYLENBQXFCO0FBQUVDLElBQUFBLElBQUksRUFBRUo7QUFBUixHQUFyQixDQUFyQjtBQUVBLFNBQU87QUFDTEMsSUFBQUEsS0FBSyxFQUFMQSxLQURLO0FBRUxJLElBQUFBLFdBRksseUJBRVM7QUFDWkgsTUFBQUEsWUFBWSxDQUFDRyxXQUFiO0FBQ0Q7QUFKSSxHQUFQO0FBTUQ7O0FBRUQsU0FBVVQsOEJBQVY7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzRFUsVUFBQUEsVUFBdEQsUUFBMkNDLE9BQTNDLENBQXNERCxVQUF0RDtBQUFBLGtDQUNpQ1IsdUJBQXVCLENBQUNRLFVBQVUsQ0FBQ0UsaUJBQVosQ0FEeEQsRUFDVVAsS0FEVix5QkFDVUEsS0FEVixFQUNpQkksV0FEakIseUJBQ2lCQSxXQURqQjtBQUFBOztBQUFBO0FBQUE7QUFPb0IsaUJBQU0sbUJBQUtKLEtBQUwsQ0FBTjs7QUFQcEI7QUFPWVEsVUFBQUEsS0FQWjtBQUFBLHdCQVNjQSxLQVRkO0FBQUEsMENBVWEsQ0FWYix1QkFXYSxDQVhiLHVCQXNCYSxDQXRCYix3QkFtQ2EsQ0FuQ2Isd0JBb0NhLENBcENiO0FBQUE7O0FBQUE7QUFBQTtBQVlVLGlCQUFNLGtCQUNKLGlDQUFnQjtBQUNkQyxZQUFBQSxFQUFFLEVBQUViLG1DQURVO0FBRWRjLFlBQUFBLEtBQUssRUFBRSxNQUZPO0FBR2RDLFlBQUFBLE9BQU8sRUFBRUMsWUFBWSxHQUFHLGNBQUgsR0FBb0I7QUFIM0IsV0FBaEIsQ0FESSxDQUFOOztBQVpWO0FBQUE7O0FBQUE7QUF1QlVBLFVBQUFBLFlBQVksR0FBRyxDQUFmO0FBdkJWO0FBeUJVLGlCQUFNLGtCQUNKLGlDQUFnQjtBQUNkSCxZQUFBQSxFQUFFLEVBQUViLG1DQURVO0FBRWRjLFlBQUFBLEtBQUssRUFBRSxTQUZPO0FBR2RDLFlBQUFBLE9BQU8sRUFBRTtBQUhLLFdBQWhCLENBREksQ0FBTjs7QUF6QlY7QUFBQTs7QUFBQTtBQXFDVUMsVUFBQUEsWUFBWSxHQUFHLENBQWY7QUFyQ1Y7QUF1Q1UsaUJBQU0sa0JBQ0osaUNBQWdCO0FBQ2RILFlBQUFBLEVBQUUsRUFBRWIsbUNBRFU7QUFFZGMsWUFBQUEsS0FBSyxFQUFFLE9BRk87QUFHZEMsWUFBQUEsT0FBTyxFQUFFO0FBSEssV0FBaEIsQ0FESSxDQUFOOztBQXZDVjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFzRElQLFVBQUFBLFdBQVc7QUF0RGY7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBMERlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNiLGlCQUFNLHlCQUFXUyxnQkFBWCxFQUFvQmxCLDhCQUFwQixDQUFOOztBQURhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLW1hZ2ljLW51bWJlcnM6IFtcImVycm9yXCIsIHsgXCJpZ25vcmVcIjogWzAsIDEsIDIsIDMsIDRdIH1dICovXG5cbmltcG9ydCB7IGNhbGwsIHB1dCwgdGFrZUxhdGVzdCB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5cbmltcG9ydCB7IENPTk5FQ1QgfSBmcm9tICcuLi9hY3Rpb25zL2Nvbm5lY3QnO1xuaW1wb3J0IGNyZWF0ZVByb21pc2VRdWV1ZSBmcm9tICcuLi9jcmVhdGVQcm9taXNlUXVldWUnO1xuaW1wb3J0IHNldE5vdGlmaWNhdGlvbiBmcm9tICcuLi9hY3Rpb25zL3NldE5vdGlmaWNhdGlvbic7XG5cbmNvbnN0IENPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lEID0gJ2Nvbm5lY3Rpdml0eXN0YXR1cyc7XG5cbmZ1bmN0aW9uIHN1YnNjcmliZVRvUHJvbWlzZVF1ZXVlKG9ic2VydmFibGUpIHtcbiAgY29uc3QgeyBwdXNoLCBzaGlmdCB9ID0gY3JlYXRlUHJvbWlzZVF1ZXVlKCk7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKHsgbmV4dDogcHVzaCB9KTtcblxuICByZXR1cm4ge1xuICAgIHNoaWZ0LFxuICAgIHVuc3Vic2NyaWJlKCkge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiogY29ubmVjdGlvblN0YXR1c1RvTm90aWZpY2F0aW9uKHsgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH0gfSkge1xuICBjb25zdCB7IHNoaWZ0LCB1bnN1YnNjcmliZSB9ID0gc3Vic2NyaWJlVG9Qcm9taXNlUXVldWUoZGlyZWN0TGluZS5jb25uZWN0aW9uU3RhdHVzJCk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmVjb25uZWN0aW5nO1xuXG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgdmFsdWUgPSB5aWVsZCBjYWxsKHNoaWZ0KTtcblxuICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB5aWVsZCBwdXQoXG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBpZDogQ09OTkVDVElWSVRZX1NUQVRVU19OT1RJRklDQVRJT05fSUQsXG4gICAgICAgICAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHJlY29ubmVjdGluZyA/ICdyZWNvbm5lY3RpbmcnIDogJ2Nvbm5lY3RpbmcnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmVjb25uZWN0aW5nID0gMTtcblxuICAgICAgICAgIHlpZWxkIHB1dChcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgIGlkOiBDT05ORUNUSVZJVFlfU1RBVFVTX05PVElGSUNBVElPTl9JRCxcbiAgICAgICAgICAgICAgbGV2ZWw6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ2Nvbm5lY3RlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJlY29ubmVjdGluZyA9IDE7XG5cbiAgICAgICAgICB5aWVsZCBwdXQoXG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBpZDogQ09OTkVDVElWSVRZX1NUQVRVU19OT1RJRklDQVRJT05fSUQsXG4gICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnZmFpbGVkdG9jb25uZWN0J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgdW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIHlpZWxkIHRha2VMYXRlc3QoQ09OTkVDVCwgY29ubmVjdGlvblN0YXR1c1RvTm90aWZpY2F0aW9uKTtcbn1cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9jb25uZWN0aW9uU3RhdHVzVG9Ob3RpZmljYXRpb25TYWdhLmpzIl0sIm5hbWVzIjpbImNvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvbiIsIkNPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lEIiwic3Vic2NyaWJlVG9Qcm9taXNlUXVldWUiLCJvYnNlcnZhYmxlIiwicHVzaCIsInNoaWZ0Iiwic3Vic2NyaXB0aW9uIiwic3Vic2NyaWJlIiwibmV4dCIsInVuc3Vic2NyaWJlIiwiZGlyZWN0TGluZSIsInBheWxvYWQiLCJjb25uZWN0aW9uU3RhdHVzJCIsInZhbHVlIiwiaWQiLCJsZXZlbCIsIm1lc3NhZ2UiLCJyZWNvbm5lY3RpbmciLCJDT05ORUNUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUVBOztBQUNBOztBQUNBOzt3REFnQlVBLDhCOzs7QUFkVixJQUFNQyxtQ0FBbUMsR0FBRyxvQkFBNUM7O0FBRUEsU0FBU0MsdUJBQVQsQ0FBaUNDLFVBQWpDLEVBQTZDO0FBQzNDLDRCQUF3QixzQ0FBeEI7QUFBQSxNQUFRQyxJQUFSLHVCQUFRQSxJQUFSO0FBQUEsTUFBY0MsS0FBZCx1QkFBY0EsS0FBZDs7QUFDQSxNQUFNQyxZQUFZLEdBQUdILFVBQVUsQ0FBQ0ksU0FBWCxDQUFxQjtBQUFFQyxJQUFBQSxJQUFJLEVBQUVKO0FBQVIsR0FBckIsQ0FBckI7QUFFQSxTQUFPO0FBQ0xDLElBQUFBLEtBQUssRUFBTEEsS0FESztBQUVMSSxJQUFBQSxXQUZLLHlCQUVTO0FBQ1pILE1BQUFBLFlBQVksQ0FBQ0csV0FBYjtBQUNEO0FBSkksR0FBUDtBQU1EOztBQUVELFNBQVVULDhCQUFWO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0RVLFVBQUFBLFVBQXRELFFBQTJDQyxPQUEzQyxDQUFzREQsVUFBdEQ7QUFBQSxrQ0FDaUNSLHVCQUF1QixDQUFDUSxVQUFVLENBQUNFLGlCQUFaLENBRHhELEVBQ1VQLEtBRFYseUJBQ1VBLEtBRFYsRUFDaUJJLFdBRGpCLHlCQUNpQkEsV0FEakI7QUFBQTs7QUFBQTtBQUFBO0FBT29CLGlCQUFNLG1CQUFLSixLQUFMLENBQU47O0FBUHBCO0FBT1lRLFVBQUFBLEtBUFo7QUFBQSx3QkFTY0EsS0FUZDtBQUFBLDBDQVVhLENBVmIsdUJBV2EsQ0FYYix1QkFzQmEsQ0F0QmIsd0JBbUNhLENBbkNiLHdCQW9DYSxDQXBDYjtBQUFBOztBQUFBO0FBQUE7QUFZVSxpQkFBTSxrQkFDSixpQ0FBZ0I7QUFDZEMsWUFBQUEsRUFBRSxFQUFFYixtQ0FEVTtBQUVkYyxZQUFBQSxLQUFLLEVBQUUsTUFGTztBQUdkQyxZQUFBQSxPQUFPLEVBQUVDLFlBQVksR0FBRyxjQUFILEdBQW9CO0FBSDNCLFdBQWhCLENBREksQ0FBTjs7QUFaVjtBQUFBOztBQUFBO0FBdUJVQSxVQUFBQSxZQUFZLEdBQUcsQ0FBZjtBQXZCVjtBQXlCVSxpQkFBTSxrQkFDSixpQ0FBZ0I7QUFDZEgsWUFBQUEsRUFBRSxFQUFFYixtQ0FEVTtBQUVkYyxZQUFBQSxLQUFLLEVBQUUsU0FGTztBQUdkQyxZQUFBQSxPQUFPLEVBQUU7QUFISyxXQUFoQixDQURJLENBQU47O0FBekJWO0FBQUE7O0FBQUE7QUFxQ1VDLFVBQUFBLFlBQVksR0FBRyxDQUFmO0FBckNWO0FBdUNVLGlCQUFNLGtCQUNKLGlDQUFnQjtBQUNkSCxZQUFBQSxFQUFFLEVBQUViLG1DQURVO0FBRWRjLFlBQUFBLEtBQUssRUFBRSxPQUZPO0FBR2RDLFlBQUFBLE9BQU8sRUFBRTtBQUhLLFdBQWhCLENBREksQ0FBTjs7QUF2Q1Y7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBc0RJUCxVQUFBQSxXQUFXO0FBdERmOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQTBEZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDYixpQkFBTSx5QkFBV1MsZ0JBQVgsRUFBb0JsQiw4QkFBcEIsQ0FBTjs7QUFEYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFswLCAxLCAyLCAzLCA0XSB9XSAqL1xuXG5pbXBvcnQgeyBjYWxsLCBwdXQsIHRha2VMYXRlc3QgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnO1xuXG5pbXBvcnQgeyBDT05ORUNUIH0gZnJvbSAnLi4vYWN0aW9ucy9jb25uZWN0JztcbmltcG9ydCBjcmVhdGVQcm9taXNlUXVldWUgZnJvbSAnLi4vY3JlYXRlUHJvbWlzZVF1ZXVlJztcbmltcG9ydCBzZXROb3RpZmljYXRpb24gZnJvbSAnLi4vYWN0aW9ucy9zZXROb3RpZmljYXRpb24nO1xuXG5jb25zdCBDT05ORUNUSVZJVFlfU1RBVFVTX05PVElGSUNBVElPTl9JRCA9ICdjb25uZWN0aXZpdHlzdGF0dXMnO1xuXG5mdW5jdGlvbiBzdWJzY3JpYmVUb1Byb21pc2VRdWV1ZShvYnNlcnZhYmxlKSB7XG4gIGNvbnN0IHsgcHVzaCwgc2hpZnQgfSA9IGNyZWF0ZVByb21pc2VRdWV1ZSgpO1xuICBjb25zdCBzdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlLnN1YnNjcmliZSh7IG5leHQ6IHB1c2ggfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzaGlmdCxcbiAgICB1bnN1YnNjcmliZSgpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24qIGNvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvbih7IHBheWxvYWQ6IHsgZGlyZWN0TGluZSB9IH0pIHtcbiAgY29uc3QgeyBzaGlmdCwgdW5zdWJzY3JpYmUgfSA9IHN1YnNjcmliZVRvUHJvbWlzZVF1ZXVlKGRpcmVjdExpbmUuY29ubmVjdGlvblN0YXR1cyQpO1xuXG4gIHRyeSB7XG4gICAgbGV0IHJlY29ubmVjdGluZztcblxuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHZhbHVlID0geWllbGQgY2FsbChzaGlmdCk7XG5cbiAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgeWllbGQgcHV0KFxuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgICAgaWQ6IENPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxuICAgICAgICAgICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgICAgICAgICBtZXNzYWdlOiByZWNvbm5lY3RpbmcgPyAncmVjb25uZWN0aW5nJyA6ICdjb25uZWN0aW5nJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHJlY29ubmVjdGluZyA9IDE7XG5cbiAgICAgICAgICB5aWVsZCBwdXQoXG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBpZDogQ09OTkVDVElWSVRZX1NUQVRVU19OT1RJRklDQVRJT05fSUQsXG4gICAgICAgICAgICAgIGxldmVsOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZWNvbm5lY3RpbmcgPSAxO1xuXG4gICAgICAgICAgeWllbGQgcHV0KFxuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgICAgaWQ6IENPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxuICAgICAgICAgICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ2ZhaWxlZHRvY29ubmVjdCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qICgpIHtcbiAgeWllbGQgdGFrZUxhdGVzdChDT05ORUNULCBjb25uZWN0aW9uU3RhdHVzVG9Ob3RpZmljYXRpb24pO1xufVxuIl19
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _effects = require("redux-saga/effects");
13
13
 
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
14
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15
15
 
16
16
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
17
 
@@ -24,7 +24,7 @@ var _speakingActivity = _interopRequireDefault(require("../definitions/speakingA
24
24
  var _marked = /*#__PURE__*/_regeneratorRuntime2.mark(markAllAsSpoken),
25
25
  _marked2 = /*#__PURE__*/_regeneratorRuntime2.mark(markAllAsSpokenOnStopSpeakActivitySaga);
26
26
 
27
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
27
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
28
28
 
29
29
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
30
30
 
@@ -114,4 +114,4 @@ function observeActivitySaga() {
114
114
  }
115
115
  }, _marked2);
116
116
  }
117
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9vYnNlcnZlQWN0aXZpdHlTYWdhLmpzIl0sIm5hbWVzIjpbIm9ic2VydmVBY3Rpdml0eSIsIm9ic2VydmVBY3Rpdml0eVNhZ2EiLCJQQVNTVEhSVV9GTiIsInZhbHVlIiwicGF0Y2hBY3Rpdml0eVdpdGhGcm9tUm9sZSIsImFjdGl2aXR5IiwidXNlcklEIiwiZnJvbSIsInJvbGUiLCJpZCIsInBhdGNoTnVsbEFzVW5kZWZpbmVkIiwicmVkdWNlIiwibmFtZSIsInVuZGVmaW5lZCIsImRpcmVjdExpbmUiLCJhY3Rpdml0eSQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7cURBcURVQSxlO3NEQVNlQyxtQjs7QUE1RHpCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFKO0FBQUEsQ0FBekI7O0FBRUEsU0FBU0MseUJBQVQsQ0FBbUNDLFFBQW5DLEVBQTZDQyxNQUE3QyxFQUFxRDtBQUNuRDtBQUNBO0FBQ0E7QUFFQTtBQUNBLE1BQUksQ0FBQ0QsUUFBUSxDQUFDRSxJQUFkLEVBQW9CO0FBQ2xCRixJQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGFBQU0sU0FBTjtBQUFBLEtBQXJDLENBQVg7QUFDRCxHQUZELE1BRU8sSUFBSSxDQUFDQSxRQUFRLENBQUNFLElBQVQsQ0FBY0MsSUFBbkIsRUFBeUI7QUFDOUIsUUFBSUgsUUFBUSxDQUFDRSxJQUFULENBQWNFLEVBQWQsS0FBcUJILE1BQXpCLEVBQWlDO0FBQy9CRCxNQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGVBQU0sTUFBTjtBQUFBLE9BQXJDLENBQVg7QUFDRCxLQUZELE1BRU8sSUFBSUEsUUFBUSxDQUFDRSxJQUFULENBQWNFLEVBQWxCLEVBQXNCO0FBQzNCSixNQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGVBQU0sS0FBTjtBQUFBLE9BQXJDLENBQVg7QUFDRCxLQUZNLE1BRUE7QUFDTEEsTUFBQUEsUUFBUSxHQUFHLGdDQUFTQSxRQUFULEVBQW1CLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FBbkIsRUFBcUM7QUFBQSxlQUFNLFNBQU47QUFBQSxPQUFyQyxDQUFYO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPQSxRQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssb0JBQVQsQ0FBOEJMLFFBQTlCLEVBQXdDO0FBQ3RDO0FBQ0E7QUFFQSxTQUFPLENBQ0wsa0JBREssRUFFTCxhQUZLLEVBR0wsYUFISyxFQUlMLGNBSkssRUFLTCxVQUxLLEVBTUwsTUFOSyxFQU9MLFdBUEssRUFRTCxRQVJLLEVBU0wsTUFUSyxFQVVMLFdBVkssRUFXTCxPQVhLLEVBWUwsa0JBWkssRUFhTCxNQWJLLEVBY0wsWUFkSyxFQWVMLFdBZkssRUFnQkwsTUFoQkssRUFpQkxNLE1BakJLLENBaUJFLFVBQUNOLFFBQUQsRUFBV08sSUFBWCxFQUFvQjtBQUFBLFFBQ1hULEtBRFcsR0FDREUsUUFEQyxDQUNsQk8sSUFEa0I7QUFHM0IsV0FBTyxnQ0FBU1AsUUFBVCxFQUFtQixDQUFDTyxJQUFELENBQW5CLEVBQTJCLE9BQU9ULEtBQVAsS0FBaUIsV0FBakIsSUFBZ0NBLEtBQUssS0FBSyxJQUExQyxHQUFpRFUsU0FBakQsR0FBNkRYLFdBQXhGLENBQVA7QUFDRCxHQXJCTSxFQXFCSkcsUUFyQkksQ0FBUDtBQXNCRDs7QUFFRCxTQUFVTCxlQUFWO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QmMsVUFBQUEsVUFBNUIsUUFBNEJBLFVBQTVCLEVBQXdDUixNQUF4QyxRQUF3Q0EsTUFBeEM7QUFBQTtBQUNFLGlCQUFNLDZCQUFZUSxVQUFVLENBQUNDLFNBQXZCLDRDQUFrQyxTQUFVZixlQUFWLENBQTBCSyxRQUExQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ3RDQSxvQkFBQUEsUUFBUSxHQUFHSyxvQkFBb0IsQ0FBQ0wsUUFBRCxDQUEvQjtBQUNBQSxvQkFBQUEsUUFBUSxHQUFHRCx5QkFBeUIsQ0FBQ0MsUUFBRCxFQUFXQyxNQUFYLENBQXBDO0FBRnNDO0FBSXRDLDJCQUFNLGtCQUFJLHVDQUFzQkQsUUFBdEIsQ0FBSixDQUFOOztBQUpzQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBVUwsZUFBVjtBQUFBLFdBQWxDLEVBQU47O0FBREY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBU2UsU0FBVUMsbUJBQVY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ2IsaUJBQU0sZ0NBQWVELGVBQWYsQ0FBTjs7QUFEYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHB1dCB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5pbXBvcnQgdXBkYXRlSW4gZnJvbSAnc2ltcGxlLXVwZGF0ZS1pbic7XG5cbmltcG9ydCBvYnNlcnZlRWFjaCBmcm9tICcuL2VmZmVjdHMvb2JzZXJ2ZUVhY2gnO1xuaW1wb3J0IHF1ZXVlSW5jb21pbmdBY3Rpdml0eSBmcm9tICcuLi9hY3Rpb25zL3F1ZXVlSW5jb21pbmdBY3Rpdml0eSc7XG5pbXBvcnQgd2hpbGVDb25uZWN0ZWQgZnJvbSAnLi9lZmZlY3RzL3doaWxlQ29ubmVjdGVkJztcblxuY29uc3QgUEFTU1RIUlVfRk4gPSB2YWx1ZSA9PiB2YWx1ZTtcblxuZnVuY3Rpb24gcGF0Y2hBY3Rpdml0eVdpdGhGcm9tUm9sZShhY3Rpdml0eSwgdXNlcklEKSB7XG4gIC8vIFNvbWUgYWN0aXZpdGllcywgc3VjaCBhcyBcIkNvbnZlcnNhdGlvblVwZGF0ZVwiLCBkb2VzIG5vdCBoYXZlIFwiZnJvbVwiIGRlZmluZWQuXG4gIC8vIEFuZCBhbHRob3VnaCBcInJvbGVcIiBpcyBkZWZpbmVkIGluIERpcmVjdCBMaW5lIHNwZWMsIGl0IHdhcyBub3Qgc2VudCBvdmVyIHRoZSB3aXJlLlxuICAvLyBXZSBub3JtYWxpemUgdGhlIGFjdGl2aXR5IGhlcmUgdG8gc2ltcGxpZnkgbnVsbC1jaGVjayBhbmQgbG9naWMgbGF0ZXIuXG5cbiAgLy8gUGF0Y2ggYWN0aXZpdHkuZnJvbS5yb2xlIHRvIG1ha2Ugc3VyZSBpdHMgZWl0aGVyIFwiYm90XCIsIFwidXNlclwiLCBvciBcImNoYW5uZWxcIlxuICBpZiAoIWFjdGl2aXR5LmZyb20pIHtcbiAgICBhY3Rpdml0eSA9IHVwZGF0ZUluKGFjdGl2aXR5LCBbJ2Zyb20nLCAncm9sZSddLCAoKSA9PiAnY2hhbm5lbCcpO1xuICB9IGVsc2UgaWYgKCFhY3Rpdml0eS5mcm9tLnJvbGUpIHtcbiAgICBpZiAoYWN0aXZpdHkuZnJvbS5pZCA9PT0gdXNlcklEKSB7XG4gICAgICBhY3Rpdml0eSA9IHVwZGF0ZUluKGFjdGl2aXR5LCBbJ2Zyb20nLCAncm9sZSddLCAoKSA9PiAndXNlcicpO1xuICAgIH0gZWxzZSBpZiAoYWN0aXZpdHkuZnJvbS5pZCkge1xuICAgICAgYWN0aXZpdHkgPSB1cGRhdGVJbihhY3Rpdml0eSwgWydmcm9tJywgJ3JvbGUnXSwgKCkgPT4gJ2JvdCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpdml0eSA9IHVwZGF0ZUluKGFjdGl2aXR5LCBbJ2Zyb20nLCAncm9sZSddLCAoKSA9PiAnY2hhbm5lbCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3Rpdml0eTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hOdWxsQXNVbmRlZmluZWQoYWN0aXZpdHkpIHtcbiAgLy8gVGhlc2UgZmllbGRzIGFyZSBrbm93biB1c2VkIGluIFdlYiBDaGF0IGFuZCBpbiBhbnkgY2FzZXMsIHRoZXkgc2hvdWxkIG5vdCBiZSBudWxsLCBidXQgdW5kZWZpbmVkLlxuICAvLyBUaGUgb25seSBmaWVsZCBvbWl0dGVkIGlzIFwidmFsdWVcIiwgYXMgaXQgY291bGQgYmUgbnVsbCBwdXJwb3NlZnVsbHkuXG5cbiAgcmV0dXJuIFtcbiAgICAnYXR0YWNobWVudExheW91dCcsXG4gICAgJ2F0dGFjaG1lbnRzJyxcbiAgICAnY2hhbm5lbERhdGEnLFxuICAgICdjb252ZXJzYXRpb24nLFxuICAgICdlbnRpdGllcycsXG4gICAgJ2Zyb20nLFxuICAgICdpbnB1dEhpbnQnLFxuICAgICdsb2NhbGUnLFxuICAgICduYW1lJyxcbiAgICAncmVjaXBpZW50JyxcbiAgICAnc3BlYWsnLFxuICAgICdzdWdnZXN0ZWRBY3Rpb25zJyxcbiAgICAndGV4dCcsXG4gICAgJ3RleHRGb3JtYXQnLFxuICAgICd0aW1lc3RhbXAnLFxuICAgICd0eXBlJ1xuICBdLnJlZHVjZSgoYWN0aXZpdHksIG5hbWUpID0+IHtcbiAgICBjb25zdCB7IFtuYW1lXTogdmFsdWUgfSA9IGFjdGl2aXR5O1xuXG4gICAgcmV0dXJuIHVwZGF0ZUluKGFjdGl2aXR5LCBbbmFtZV0sIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiBQQVNTVEhSVV9GTik7XG4gIH0sIGFjdGl2aXR5KTtcbn1cblxuZnVuY3Rpb24qIG9ic2VydmVBY3Rpdml0eSh7IGRpcmVjdExpbmUsIHVzZXJJRCB9KSB7XG4gIHlpZWxkIG9ic2VydmVFYWNoKGRpcmVjdExpbmUuYWN0aXZpdHkkLCBmdW5jdGlvbiogb2JzZXJ2ZUFjdGl2aXR5KGFjdGl2aXR5KSB7XG4gICAgYWN0aXZpdHkgPSBwYXRjaE51bGxBc1VuZGVmaW5lZChhY3Rpdml0eSk7XG4gICAgYWN0aXZpdHkgPSBwYXRjaEFjdGl2aXR5V2l0aEZyb21Sb2xlKGFjdGl2aXR5LCB1c2VySUQpO1xuXG4gICAgeWllbGQgcHV0KHF1ZXVlSW5jb21pbmdBY3Rpdml0eShhY3Rpdml0eSkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIG9ic2VydmVBY3Rpdml0eVNhZ2EoKSB7XG4gIHlpZWxkIHdoaWxlQ29ubmVjdGVkKG9ic2VydmVBY3Rpdml0eSk7XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9vYnNlcnZlQWN0aXZpdHlTYWdhLmpzIl0sIm5hbWVzIjpbIm9ic2VydmVBY3Rpdml0eSIsIm9ic2VydmVBY3Rpdml0eVNhZ2EiLCJQQVNTVEhSVV9GTiIsInZhbHVlIiwicGF0Y2hBY3Rpdml0eVdpdGhGcm9tUm9sZSIsImFjdGl2aXR5IiwidXNlcklEIiwiZnJvbSIsInJvbGUiLCJpZCIsInBhdGNoTnVsbEFzVW5kZWZpbmVkIiwicmVkdWNlIiwibmFtZSIsInVuZGVmaW5lZCIsImRpcmVjdExpbmUiLCJhY3Rpdml0eSQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7cURBcURVQSxlO3NEQVNlQyxtQjs7QUE1RHpCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFKO0FBQUEsQ0FBekI7O0FBRUEsU0FBU0MseUJBQVQsQ0FBbUNDLFFBQW5DLEVBQTZDQyxNQUE3QyxFQUFxRDtBQUNuRDtBQUNBO0FBQ0E7QUFFQTtBQUNBLE1BQUksQ0FBQ0QsUUFBUSxDQUFDRSxJQUFkLEVBQW9CO0FBQ2xCRixJQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGFBQU0sU0FBTjtBQUFBLEtBQXJDLENBQVg7QUFDRCxHQUZELE1BRU8sSUFBSSxDQUFDQSxRQUFRLENBQUNFLElBQVQsQ0FBY0MsSUFBbkIsRUFBeUI7QUFDOUIsUUFBSUgsUUFBUSxDQUFDRSxJQUFULENBQWNFLEVBQWQsS0FBcUJILE1BQXpCLEVBQWlDO0FBQy9CRCxNQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGVBQU0sTUFBTjtBQUFBLE9BQXJDLENBQVg7QUFDRCxLQUZELE1BRU8sSUFBSUEsUUFBUSxDQUFDRSxJQUFULENBQWNFLEVBQWxCLEVBQXNCO0FBQzNCSixNQUFBQSxRQUFRLEdBQUcsZ0NBQVNBLFFBQVQsRUFBbUIsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUFuQixFQUFxQztBQUFBLGVBQU0sS0FBTjtBQUFBLE9BQXJDLENBQVg7QUFDRCxLQUZNLE1BRUE7QUFDTEEsTUFBQUEsUUFBUSxHQUFHLGdDQUFTQSxRQUFULEVBQW1CLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FBbkIsRUFBcUM7QUFBQSxlQUFNLFNBQU47QUFBQSxPQUFyQyxDQUFYO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPQSxRQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssb0JBQVQsQ0FBOEJMLFFBQTlCLEVBQXdDO0FBQ3RDO0FBQ0E7QUFFQSxTQUFPLENBQ0wsa0JBREssRUFFTCxhQUZLLEVBR0wsYUFISyxFQUlMLGNBSkssRUFLTCxVQUxLLEVBTUwsTUFOSyxFQU9MLFdBUEssRUFRTCxRQVJLLEVBU0wsTUFUSyxFQVVMLFdBVkssRUFXTCxPQVhLLEVBWUwsa0JBWkssRUFhTCxNQWJLLEVBY0wsWUFkSyxFQWVMLFdBZkssRUFnQkwsTUFoQkssRUFpQkxNLE1BakJLLENBaUJFLFVBQUNOLFFBQUQsRUFBV08sSUFBWCxFQUFvQjtBQUMzQixRQUFnQlQsS0FBaEIsR0FBMEJFLFFBQTFCLENBQVNPLElBQVQ7QUFFQSxXQUFPLGdDQUFTUCxRQUFULEVBQW1CLENBQUNPLElBQUQsQ0FBbkIsRUFBMkIsT0FBT1QsS0FBUCxLQUFpQixXQUFqQixJQUFnQ0EsS0FBSyxLQUFLLElBQTFDLEdBQWlEVSxTQUFqRCxHQUE2RFgsV0FBeEYsQ0FBUDtBQUNELEdBckJNLEVBcUJKRyxRQXJCSSxDQUFQO0FBc0JEOztBQUVELFNBQVVMLGVBQVY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRCYyxVQUFBQSxVQUE1QixRQUE0QkEsVUFBNUIsRUFBd0NSLE1BQXhDLFFBQXdDQSxNQUF4QztBQUFBO0FBQ0UsaUJBQU0sNkJBQVlRLFVBQVUsQ0FBQ0MsU0FBdkIsNENBQWtDLFNBQVVmLGVBQVYsQ0FBMEJLLFFBQTFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDdENBLG9CQUFBQSxRQUFRLEdBQUdLLG9CQUFvQixDQUFDTCxRQUFELENBQS9CO0FBQ0FBLG9CQUFBQSxRQUFRLEdBQUdELHlCQUF5QixDQUFDQyxRQUFELEVBQVdDLE1BQVgsQ0FBcEM7QUFGc0M7QUFJdEMsMkJBQU0sa0JBQUksdUNBQXNCRCxRQUF0QixDQUFKLENBQU47O0FBSnNDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFVTCxlQUFWO0FBQUEsV0FBbEMsRUFBTjs7QUFERjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFTZSxTQUFVQyxtQkFBVjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDYixpQkFBTSxnQ0FBZUQsZUFBZixDQUFOOztBQURhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHV0IH0gZnJvbSAncmVkdXgtc2FnYS9lZmZlY3RzJztcbmltcG9ydCB1cGRhdGVJbiBmcm9tICdzaW1wbGUtdXBkYXRlLWluJztcblxuaW1wb3J0IG9ic2VydmVFYWNoIGZyb20gJy4vZWZmZWN0cy9vYnNlcnZlRWFjaCc7XG5pbXBvcnQgcXVldWVJbmNvbWluZ0FjdGl2aXR5IGZyb20gJy4uL2FjdGlvbnMvcXVldWVJbmNvbWluZ0FjdGl2aXR5JztcbmltcG9ydCB3aGlsZUNvbm5lY3RlZCBmcm9tICcuL2VmZmVjdHMvd2hpbGVDb25uZWN0ZWQnO1xuXG5jb25zdCBQQVNTVEhSVV9GTiA9IHZhbHVlID0+IHZhbHVlO1xuXG5mdW5jdGlvbiBwYXRjaEFjdGl2aXR5V2l0aEZyb21Sb2xlKGFjdGl2aXR5LCB1c2VySUQpIHtcbiAgLy8gU29tZSBhY3Rpdml0aWVzLCBzdWNoIGFzIFwiQ29udmVyc2F0aW9uVXBkYXRlXCIsIGRvZXMgbm90IGhhdmUgXCJmcm9tXCIgZGVmaW5lZC5cbiAgLy8gQW5kIGFsdGhvdWdoIFwicm9sZVwiIGlzIGRlZmluZWQgaW4gRGlyZWN0IExpbmUgc3BlYywgaXQgd2FzIG5vdCBzZW50IG92ZXIgdGhlIHdpcmUuXG4gIC8vIFdlIG5vcm1hbGl6ZSB0aGUgYWN0aXZpdHkgaGVyZSB0byBzaW1wbGlmeSBudWxsLWNoZWNrIGFuZCBsb2dpYyBsYXRlci5cblxuICAvLyBQYXRjaCBhY3Rpdml0eS5mcm9tLnJvbGUgdG8gbWFrZSBzdXJlIGl0cyBlaXRoZXIgXCJib3RcIiwgXCJ1c2VyXCIsIG9yIFwiY2hhbm5lbFwiXG4gIGlmICghYWN0aXZpdHkuZnJvbSkge1xuICAgIGFjdGl2aXR5ID0gdXBkYXRlSW4oYWN0aXZpdHksIFsnZnJvbScsICdyb2xlJ10sICgpID0+ICdjaGFubmVsJyk7XG4gIH0gZWxzZSBpZiAoIWFjdGl2aXR5LmZyb20ucm9sZSkge1xuICAgIGlmIChhY3Rpdml0eS5mcm9tLmlkID09PSB1c2VySUQpIHtcbiAgICAgIGFjdGl2aXR5ID0gdXBkYXRlSW4oYWN0aXZpdHksIFsnZnJvbScsICdyb2xlJ10sICgpID0+ICd1c2VyJyk7XG4gICAgfSBlbHNlIGlmIChhY3Rpdml0eS5mcm9tLmlkKSB7XG4gICAgICBhY3Rpdml0eSA9IHVwZGF0ZUluKGFjdGl2aXR5LCBbJ2Zyb20nLCAncm9sZSddLCAoKSA9PiAnYm90Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGl2aXR5ID0gdXBkYXRlSW4oYWN0aXZpdHksIFsnZnJvbScsICdyb2xlJ10sICgpID0+ICdjaGFubmVsJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGl2aXR5O1xufVxuXG5mdW5jdGlvbiBwYXRjaE51bGxBc1VuZGVmaW5lZChhY3Rpdml0eSkge1xuICAvLyBUaGVzZSBmaWVsZHMgYXJlIGtub3duIHVzZWQgaW4gV2ViIENoYXQgYW5kIGluIGFueSBjYXNlcywgdGhleSBzaG91bGQgbm90IGJlIG51bGwsIGJ1dCB1bmRlZmluZWQuXG4gIC8vIFRoZSBvbmx5IGZpZWxkIG9taXR0ZWQgaXMgXCJ2YWx1ZVwiLCBhcyBpdCBjb3VsZCBiZSBudWxsIHB1cnBvc2VmdWxseS5cblxuICByZXR1cm4gW1xuICAgICdhdHRhY2htZW50TGF5b3V0JyxcbiAgICAnYXR0YWNobWVudHMnLFxuICAgICdjaGFubmVsRGF0YScsXG4gICAgJ2NvbnZlcnNhdGlvbicsXG4gICAgJ2VudGl0aWVzJyxcbiAgICAnZnJvbScsXG4gICAgJ2lucHV0SGludCcsXG4gICAgJ2xvY2FsZScsXG4gICAgJ25hbWUnLFxuICAgICdyZWNpcGllbnQnLFxuICAgICdzcGVhaycsXG4gICAgJ3N1Z2dlc3RlZEFjdGlvbnMnLFxuICAgICd0ZXh0JyxcbiAgICAndGV4dEZvcm1hdCcsXG4gICAgJ3RpbWVzdGFtcCcsXG4gICAgJ3R5cGUnXG4gIF0ucmVkdWNlKChhY3Rpdml0eSwgbmFtZSkgPT4ge1xuICAgIGNvbnN0IHsgW25hbWVdOiB2YWx1ZSB9ID0gYWN0aXZpdHk7XG5cbiAgICByZXR1cm4gdXBkYXRlSW4oYWN0aXZpdHksIFtuYW1lXSwgdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IFBBU1NUSFJVX0ZOKTtcbiAgfSwgYWN0aXZpdHkpO1xufVxuXG5mdW5jdGlvbiogb2JzZXJ2ZUFjdGl2aXR5KHsgZGlyZWN0TGluZSwgdXNlcklEIH0pIHtcbiAgeWllbGQgb2JzZXJ2ZUVhY2goZGlyZWN0TGluZS5hY3Rpdml0eSQsIGZ1bmN0aW9uKiBvYnNlcnZlQWN0aXZpdHkoYWN0aXZpdHkpIHtcbiAgICBhY3Rpdml0eSA9IHBhdGNoTnVsbEFzVW5kZWZpbmVkKGFjdGl2aXR5KTtcbiAgICBhY3Rpdml0eSA9IHBhdGNoQWN0aXZpdHlXaXRoRnJvbVJvbGUoYWN0aXZpdHksIHVzZXJJRCk7XG5cbiAgICB5aWVsZCBwdXQocXVldWVJbmNvbWluZ0FjdGl2aXR5KGFjdGl2aXR5KSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogb2JzZXJ2ZUFjdGl2aXR5U2FnYSgpIHtcbiAgeWllbGQgd2hpbGVDb25uZWN0ZWQob2JzZXJ2ZUFjdGl2aXR5KTtcbn1cbiJdfQ==
@@ -25,6 +25,8 @@ var _clockSkewAdjustment = _interopRequireDefault(require("../selectors/clockSke
25
25
 
26
26
  var _combineSelectors = _interopRequireDefault(require("../selectors/combineSelectors"));
27
27
 
28
+ var _dateToLocaleISOString = _interopRequireDefault(require("../utils/dateToLocaleISOString"));
29
+
28
30
  var _language = _interopRequireDefault(require("../selectors/language"));
29
31
 
30
32
  var _sendTimeout = _interopRequireDefault(require("../selectors/sendTimeout"));
@@ -42,17 +44,18 @@ var _incomingActivity = require("../actions/incomingActivity");
42
44
  var _marked = /*#__PURE__*/_regeneratorRuntime2.mark(postActivity),
43
45
  _marked2 = /*#__PURE__*/_regeneratorRuntime2.mark(postActivitySaga);
44
46
 
45
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
47
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
46
48
 
47
49
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
48
50
 
49
- function getTimestamp() {
50
- var clockSkewAdjustment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
51
- return new Date(Date.now() + clockSkewAdjustment).toISOString();
51
+ function getTimestamp(date) {
52
+ var clockSkewAdjustment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
53
+ // "+date" will return epoch time in milliseconds, same as Date.getTime().
54
+ return new Date(+date + clockSkewAdjustment).toISOString();
52
55
  }
53
56
 
54
57
  function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
55
- var method, activity, _yield$select, clockSkewAdjustment, locale, _activity, attachments, clientActivityID, meta, echoBackCall, sendTimeout, _yield$race, echoBack;
58
+ var method, activity, _yield$select, clockSkewAdjustment, locale, _activity, attachments, clientActivityID, now, localTimeZone, meta, echoBackCall, sendTimeout, _yield$race, echoBack;
56
59
 
57
60
  return _regenerator["default"].wrap(function postActivity$(_context2) {
58
61
  while (1) {
@@ -71,6 +74,8 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
71
74
  locale = _yield$select.locale;
72
75
  _activity = activity, attachments = _activity.attachments;
73
76
  clientActivityID = (0, _uniqueID["default"])();
77
+ now = new Date();
78
+ localTimeZone = typeof window.Intl === 'undefined' ? undefined : new Intl.DateTimeFormat().resolvedOptions().timeZone;
74
79
  activity = _objectSpread(_objectSpread({}, (0, _deleteKey["default"])(activity, 'id')), {}, {
75
80
  attachments: attachments && attachments.map(function (_ref2) {
76
81
  var contentType = _ref2.contentType,
@@ -87,7 +92,7 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
87
92
  channelData: _objectSpread(_objectSpread({}, (0, _deleteKey["default"])(activity.channelData, 'state')), {}, {
88
93
  clientActivityID: clientActivityID,
89
94
  // This is unskewed local timestamp for estimating clock skew.
90
- clientTimestamp: getTimestamp()
95
+ clientTimestamp: getTimestamp(now)
91
96
  }),
92
97
  channelId: 'webchat',
93
98
  from: {
@@ -96,9 +101,11 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
96
101
  role: 'user'
97
102
  },
98
103
  locale: locale,
104
+ localTimestamp: (0, _dateToLocaleISOString["default"])(now),
105
+ localTimezone: localTimeZone,
99
106
  // This timestamp will be replaced by Direct Line Channel in echoback.
100
107
  // We are temporarily adding this timestamp for sorting.
101
- timestamp: getTimestamp(clockSkewAdjustment)
108
+ timestamp: getTimestamp(now, clockSkewAdjustment)
102
109
  });
103
110
 
104
111
  if (!numActivitiesPosted) {
@@ -116,7 +123,7 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
116
123
  clientActivityID: clientActivityID,
117
124
  method: method
118
125
  };
119
- _context2.next = 13;
126
+ _context2.next = 15;
120
127
  return (0, _effects.put)({
121
128
  type: _postActivity.POST_ACTIVITY_PENDING,
122
129
  meta: meta,
@@ -125,8 +132,8 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
125
132
  }
126
133
  });
127
134
 
128
- case 13:
129
- _context2.prev = 13;
135
+ case 15:
136
+ _context2.prev = 15;
130
137
  // Quirks: We might receive INCOMING_ACTIVITY before the postActivity call completed
131
138
  // So, we setup expectation first, then postActivity afterward
132
139
  echoBackCall = (0, _effects.call)( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
@@ -166,12 +173,12 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
166
173
  // - Direct Line service only respond on HTTP after bot respond to Direct Line
167
174
  // - Activity may take too long time to echo back
168
175
 
169
- _context2.next = 17;
176
+ _context2.next = 19;
170
177
  return (0, _effects.select)(_sendTimeout["default"]);
171
178
 
172
- case 17:
179
+ case 19:
173
180
  sendTimeout = _context2.sent;
174
- _context2.next = 20;
181
+ _context2.next = 22;
175
182
  return (0, _effects.race)({
176
183
  send: (0, _effects.all)({
177
184
  echoBack: echoBackCall,
@@ -184,10 +191,10 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
184
191
  })
185
192
  });
186
193
 
187
- case 20:
194
+ case 22:
188
195
  _yield$race = _context2.sent;
189
196
  echoBack = _yield$race.send.echoBack;
190
- _context2.next = 24;
197
+ _context2.next = 26;
191
198
  return (0, _effects.put)({
192
199
  type: _postActivity.POST_ACTIVITY_FULFILLED,
193
200
  meta: meta,
@@ -196,15 +203,15 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
196
203
  }
197
204
  });
198
205
 
199
- case 24:
200
- _context2.next = 31;
206
+ case 26:
207
+ _context2.next = 33;
201
208
  break;
202
209
 
203
- case 26:
204
- _context2.prev = 26;
205
- _context2.t0 = _context2["catch"](13);
210
+ case 28:
211
+ _context2.prev = 28;
212
+ _context2.t0 = _context2["catch"](15);
206
213
  console.error('botframework-webchat: Failed to post activity to chat adapter.', _context2.t0);
207
- _context2.next = 31;
214
+ _context2.next = 33;
208
215
  return (0, _effects.put)({
209
216
  type: _postActivity.POST_ACTIVITY_REJECTED,
210
217
  error: true,
@@ -212,18 +219,18 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
212
219
  payload: _context2.t0
213
220
  });
214
221
 
215
- case 31:
216
- _context2.prev = 31;
217
- _context2.next = 34;
222
+ case 33:
223
+ _context2.prev = 33;
224
+ _context2.next = 36;
218
225
  return (0, _effects.cancelled)();
219
226
 
220
- case 34:
227
+ case 36:
221
228
  if (!_context2.sent) {
222
- _context2.next = 37;
229
+ _context2.next = 39;
223
230
  break;
224
231
  }
225
232
 
226
- _context2.next = 37;
233
+ _context2.next = 39;
227
234
  return (0, _effects.put)({
228
235
  type: _postActivity.POST_ACTIVITY_REJECTED,
229
236
  error: true,
@@ -231,15 +238,15 @@ function postActivity(directLine, userID, username, numActivitiesPosted, _ref) {
231
238
  payload: new Error('cancelled')
232
239
  });
233
240
 
234
- case 37:
235
- return _context2.finish(31);
241
+ case 39:
242
+ return _context2.finish(33);
236
243
 
237
- case 38:
244
+ case 40:
238
245
  case "end":
239
246
  return _context2.stop();
240
247
  }
241
248
  }
242
- }, _marked, null, [[13, 26, 31, 38]]);
249
+ }, _marked, null, [[15, 28, 33, 40]]);
243
250
  }
244
251
 
245
252
  function postActivitySaga() {
@@ -287,4 +294,4 @@ function postActivitySaga() {
287
294
  }
288
295
  }, _marked2);
289
296
  }
290
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9wb3N0QWN0aXZpdHlTYWdhLmpzIl0sIm5hbWVzIjpbInBvc3RBY3Rpdml0eSIsInBvc3RBY3Rpdml0eVNhZ2EiLCJnZXRUaW1lc3RhbXAiLCJjbG9ja1NrZXdBZGp1c3RtZW50IiwiRGF0ZSIsIm5vdyIsInRvSVNPU3RyaW5nIiwiZGlyZWN0TGluZSIsInVzZXJJRCIsInVzZXJuYW1lIiwibnVtQWN0aXZpdGllc1Bvc3RlZCIsIm1ldGhvZCIsIm1ldGEiLCJhY3Rpdml0eSIsInBheWxvYWQiLCJjbG9ja1NrZXdBZGp1c3RtZW50U2VsZWN0b3IiLCJsb2NhbGUiLCJsYW5ndWFnZVNlbGVjdG9yIiwiYXR0YWNobWVudHMiLCJjbGllbnRBY3Rpdml0eUlEIiwibWFwIiwiY29udGVudFR5cGUiLCJjb250ZW50VXJsIiwibmFtZSIsInRodW1ibmFpbFVybCIsImNoYW5uZWxEYXRhIiwiY2xpZW50VGltZXN0YW1wIiwiY2hhbm5lbElkIiwiZnJvbSIsImlkIiwicm9sZSIsInRpbWVzdGFtcCIsImVudGl0aWVzIiwicmVxdWlyZXNCb3RTdGF0ZSIsInN1cHBvcnRzTGlzdGVuaW5nIiwic3VwcG9ydHNUdHMiLCJ0eXBlIiwiUE9TVF9BQ1RJVklUWV9QRU5ESU5HIiwiZWNob0JhY2tDYWxsIiwiSU5DT01JTkdfQUNUSVZJVFkiLCJzZW5kVGltZW91dFNlbGVjdG9yIiwic2VuZFRpbWVvdXQiLCJzZW5kIiwiZWNob0JhY2siLCJ0aW1lb3V0IiwidGhlbiIsIlByb21pc2UiLCJyZWplY3QiLCJFcnJvciIsIlBPU1RfQUNUSVZJVFlfRlVMRklMTEVEIiwiY29uc29sZSIsImVycm9yIiwiUE9TVF9BQ1RJVklUWV9SRUpFQ1RFRCIsInBvc3RBY3Rpdml0eVdoaWxlQ29ubmVjdGVkIiwiUE9TVF9BQ1RJVklUWSIsInBvc3RBY3Rpdml0eVdyYXBwZXIiLCJhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FB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LFNBQW1EQSxNQUFuRCxFQUEyREMsUUFBM0QsU0FBMkRBLFFBQTNEO0FBQ2ZDLG9CQUFBQSxtQkFEZSxHQUNPLENBRFA7QUFBQTtBQUduQiwyQkFBTSx3QkFBVTRDLDJCQUFWLDRDQUF5QixTQUFVQyxtQkFBVixDQUE4QkMsTUFBOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUM3Qiw2REFBT3hELFlBQVksQ0FBQ08sVUFBRCxFQUFhQyxNQUFiLEVBQXFCQyxRQUFyQixFQUErQkMsbUJBQW1CLEVBQWxELEVBQXNEOEMsTUFBdEQsQ0FBbkI7O0FBRDZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBVUQsbUJBQVY7QUFBQSxxQkFBekIsRUFBTjs7QUFIbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQVVGLDBCQUFWO0FBQUEsV0FBZixFQUFOOztBQURhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWxsLCBjYWxsLCBjYW5jZWxsZWQsIHB1dCwgcmFjZSwgc2VsZWN0LCB0YWtlLCB0YWtlRXZlcnkgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnO1xuXG5pbXBvcnQgb2JzZXJ2ZU9uY2UgZnJvbSAnLi9lZmZlY3RzL29ic2VydmVPbmNlJztcbmltcG9ydCB3aGlsZUNvbm5lY3RlZCBmcm9tICcuL2VmZmVjdHMvd2hpbGVDb25uZWN0ZWQnO1xuXG5pbXBvcnQgY2xvY2tTa2V3QWRqdXN0bWVudFNlbGVjdG9yIGZyb20gJy4uL3NlbGVjdG9ycy9jbG9ja1NrZXdBZGp1c3RtZW50JztcbmltcG9ydCBjb21iaW5lU2VsZWN0b3JzIGZyb20gJy4uL3NlbGVjdG9ycy9jb21iaW5lU2VsZWN0b3JzJztcbmltcG9ydCBsYW5ndWFnZVNlbGVjdG9yIGZyb20gJy4uL3NlbGVjdG9ycy9sYW5ndWFnZSc7XG5pbXBvcnQgc2VuZFRpbWVvdXRTZWxlY3RvciBmcm9tICcuLi9zZWxlY3RvcnMvc2VuZFRpbWVvdXQnO1xuXG5pbXBvcnQgZGVsZXRlS2V5IGZyb20gJy4uL3V0aWxzL2RlbGV0ZUtleSc7XG5pbXBvcnQgc2xlZXAgZnJvbSAnLi4vdXRpbHMvc2xlZXAnO1xuaW1wb3J0IHVuaXF1ZUlEIGZyb20gJy4uL3V0aWxzL3VuaXF1ZUlEJztcblxuaW1wb3J0IHtcbiAgUE9TVF9BQ1RJVklUWSxcbiAgUE9TVF9BQ1RJVklUWV9GVUxGSUxMRUQsXG4gIFBPU1RfQUNUSVZJVFlfUEVORElORyxcbiAgUE9TVF9BQ1RJVklUWV9SRUpFQ1RFRFxufSBmcm9tICcuLi9hY3Rpb25zL3Bvc3RBY3Rpdml0eSc7XG5cbmltcG9ydCB7IElOQ09NSU5HX0FDVElWSVRZIH0gZnJvbSAnLi4vYWN0aW9ucy9pbmNvbWluZ0FjdGl2aXR5JztcblxuZnVuY3Rpb24gZ2V0VGltZXN0YW1wKGNsb2NrU2tld0FkanVzdG1lbnQgPSAwKSB7XG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpICsgY2xvY2tTa2V3QWRqdXN0bWVudCkudG9JU09TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24qIHBvc3RBY3Rpdml0eShkaXJlY3RMaW5lLCB1c2VySUQsIHVzZXJuYW1lLCBudW1BY3Rpdml0aWVzUG9zdGVkLCB7IG1ldGE6IHsgbWV0aG9kIH0sIHBheWxvYWQ6IHsgYWN0aXZpdHkgfSB9KSB7XG4gIGNvbnN0IHsgY2xvY2tTa2V3QWRqdXN0bWVudCwgbG9jYWxlIH0gPSB5aWVsZCBzZWxlY3QoXG4gICAgY29tYmluZVNlbGVjdG9ycyh7IGNsb2NrU2tld0FkanVzdG1lbnQ6IGNsb2NrU2tld0FkanVzdG1lbnRTZWxlY3RvciwgbG9jYWxlOiBsYW5ndWFnZVNlbGVjdG9yIH0pXG4gICk7XG4gIGNvbnN0IHsgYXR0YWNobWVudHMgfSA9IGFjdGl2aXR5O1xuICBjb25zdCBjbGllbnRBY3Rpdml0eUlEID0gdW5pcXVlSUQoKTtcblxuICBhY3Rpdml0eSA9IHtcbiAgICAuLi5kZWxldGVLZXkoYWN0aXZpdHksICdpZCcpLFxuICAgIGF0dGFjaG1lbnRzOlxuICAgICAgYXR0YWNobWVudHMgJiZcbiAgICAgIGF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VHlwZSwgY29udGVudFVybCwgbmFtZSwgdGh1bWJuYWlsVXJsIH0pID0+ICh7XG4gICAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgICBjb250ZW50VXJsLFxuICAgICAgICBuYW1lLFxuICAgICAgICB0aHVtYm5haWxVcmxcbiAgICAgIH0pKSxcbiAgICBjaGFubmVsRGF0YToge1xuICAgICAgLi4uZGVsZXRlS2V5KGFjdGl2aXR5LmNoYW5uZWxEYXRhLCAnc3RhdGUnKSxcbiAgICAgIGNsaWVudEFjdGl2aXR5SUQsXG4gICAgICAvLyBUaGlzIGlzIHVuc2tld2VkIGxvY2FsIHRpbWVzdGFtcCBmb3IgZXN0aW1hdGluZyBjbG9jayBza2V3LlxuICAgICAgY2xpZW50VGltZXN0YW1wOiBnZXRUaW1lc3RhbXAoKVxuICAgIH0sXG4gICAgY2hhbm5lbElkOiAnd2ViY2hhdCcsXG4gICAgZnJvbToge1xuICAgICAgaWQ6IHVzZXJJRCxcbiAgICAgIG5hbWU6IHVzZXJuYW1lLFxuICAgICAgcm9sZTogJ3VzZXInXG4gICAgfSxcbiAgICBsb2NhbGUsXG4gICAgLy8gVGhpcyB0aW1lc3RhbXAgd2lsbCBiZSByZXBsYWNlZCBieSBEaXJlY3QgTGluZSBDaGFubmVsIGluIGVjaG9iYWNrLlxuICAgIC8vIFdlIGFyZSB0ZW1wb3JhcmlseSBhZGRpbmcgdGhpcyB0aW1lc3RhbXAgZm9yIHNvcnRpbmcuXG4gICAgdGltZXN0YW1wOiBnZXRUaW1lc3RhbXAoY2xvY2tTa2V3QWRqdXN0bWVudClcbiAgfTtcblxuICBpZiAoIW51bUFjdGl2aXRpZXNQb3N0ZWQpIHtcbiAgICBhY3Rpdml0eS5lbnRpdGllcyA9IFtcbiAgICAgIC4uLihhY3Rpdml0eS5lbnRpdGllcyB8fCBbXSksXG4gICAgICB7XG4gICAgICAgIC8vIFRPRE86IFtQNF0gQ3VycmVudGx5IGluIHYzLCB3ZSBzZW5kIHRoZSBjYXBhYmlsaXRpZXMgYWx0aG91Z2ggdGhlIGNsaWVudCBtaWdodCBub3QgYWN0dWFsbHkgaGF2ZSB0aGVtXG4gICAgICAgIC8vICAgICAgIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgd2UgbmVlZCB0byBzZW5kIHRoZXNlLCBhbmQgb25seSBzZW5kIGNhcGFiaWxpdGllcyB0aGUgY2xpZW50IGhhdmVcbiAgICAgICAgcmVxdWlyZXNCb3RTdGF0ZTogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydHNMaXN0ZW5pbmc6IHRydWUsXG4gICAgICAgIHN1cHBvcnRzVHRzOiB0cnVlLFxuICAgICAgICB0eXBlOiAnQ2xpZW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBjb25zdCBtZXRhID0geyBjbGllbnRBY3Rpdml0eUlELCBtZXRob2QgfTtcblxuICB5aWVsZCBwdXQoeyB0eXBlOiBQT1NUX0FDVElWSVRZX1BFTkRJTkcsIG1ldGEsIHBheWxvYWQ6IHsgYWN0aXZpdHkgfSB9KTtcblxuICB0cnkge1xuICAgIC8vIFF1aXJrczogV2UgbWlnaHQgcmVjZWl2ZSBJTkNPTUlOR19BQ1RJVklUWSBiZWZvcmUgdGhlIHBvc3RBY3Rpdml0eSBjYWxsIGNvbXBsZXRlZFxuICAgIC8vICAgICAgICAgU28sIHdlIHNldHVwIGV4cGVjdGF0aW9uIGZpcnN0LCB0aGVuIHBvc3RBY3Rpdml0eSBhZnRlcndhcmRcblxuICAgIGNvbnN0IGVjaG9CYWNrQ2FsbCA9IGNhbGwoZnVuY3Rpb24qICgpIHtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBheWxvYWQ6IHsgYWN0aXZpdHkgfVxuICAgICAgICB9ID0geWllbGQgdGFrZShJTkNPTUlOR19BQ1RJVklUWSk7XG4gICAgICAgIGNvbnN0IHsgY2hhbm5lbERhdGEgPSB7fSwgaWQgfSA9IGFjdGl2aXR5O1xuXG4gICAgICAgIGlmIChjaGFubmVsRGF0YS5jbGllbnRBY3Rpdml0eUlEID09PSBjbGllbnRBY3Rpdml0eUlEICYmIGlkKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2aXR5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUaW1lb3V0IGNvdWxkIGJlIGR1ZSB0byBlaXRoZXI6XG4gICAgLy8gLSBQb3N0IGFjdGl2aXR5IGNhbGwgbWF5IHRha2UgdG9vIGxvbmcgdGltZSB0byBjb21wbGV0ZVxuICAgIC8vICAgLSBEaXJlY3QgTGluZSBzZXJ2aWNlIG9ubHkgcmVzcG9uZCBvbiBIVFRQIGFmdGVyIGJvdCByZXNwb25kIHRvIERpcmVjdCBMaW5lXG4gICAgLy8gLSBBY3Rpdml0eSBtYXkgdGFrZSB0b28gbG9uZyB0aW1lIHRvIGVjaG8gYmFja1xuXG4gICAgY29uc3Qgc2VuZFRpbWVvdXQgPSB5aWVsZCBzZWxlY3Qoc2VuZFRpbWVvdXRTZWxlY3Rvcik7XG5cbiAgICBjb25zdCB7XG4gICAgICBzZW5kOiB7IGVjaG9CYWNrIH1cbiAgICB9ID0geWllbGQgcmFjZSh7XG4gICAgICBzZW5kOiBhbGwoe1xuICAgICAgICBlY2hvQmFjazogZWNob0JhY2tDYWxsLFxuICAgICAgICBwb3N0QWN0aXZpdHk6IG9ic2VydmVPbmNlKGRpcmVjdExpbmUucG9zdEFjdGl2aXR5KGFjdGl2aXR5KSlcbiAgICAgIH0pLFxuICAgICAgdGltZW91dDogY2FsbCgoKSA9PiBzbGVlcChzZW5kVGltZW91dCkudGhlbigoKSA9PiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ3RpbWVvdXQnKSkpKVxuICAgIH0pO1xuXG4gICAgeWllbGQgcHV0KHsgdHlwZTogUE9TVF9BQ1RJVklUWV9GVUxGSUxMRUQsIG1ldGEsIHBheWxvYWQ6IHsgYWN0aXZpdHk6IGVjaG9CYWNrIH0gfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBGYWlsZWQgdG8gcG9zdCBhY3Rpdml0eSB0byBjaGF0IGFkYXB0ZXIuJywgZXJyKTtcblxuICAgIHlpZWxkIHB1dCh7IHR5cGU6IFBPU1RfQUNUSVZJVFlfUkVKRUNURUQsIGVycm9yOiB0cnVlLCBtZXRhLCBwYXlsb2FkOiBlcnIgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHlpZWxkIGNhbmNlbGxlZCgpKSB7XG4gICAgICB5aWVsZCBwdXQoeyB0eXBlOiBQT1NUX0FDVElWSVRZX1JFSkVDVEVELCBlcnJvcjogdHJ1ZSwgbWV0YSwgcGF5bG9hZDogbmV3IEVycm9yKCdjYW5jZWxsZWQnKSB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIHBvc3RBY3Rpdml0eVNhZ2EoKSB7XG4gIHlpZWxkIHdoaWxlQ29ubmVjdGVkKGZ1bmN0aW9uKiBwb3N0QWN0aXZpdHlXaGlsZUNvbm5lY3RlZCh7IGRpcmVjdExpbmUsIHVzZXJJRCwgdXNlcm5hbWUgfSkge1xuICAgIGxldCBudW1BY3Rpdml0aWVzUG9zdGVkID0gMDtcblxuICAgIHlpZWxkIHRha2VFdmVyeShQT1NUX0FDVElWSVRZLCBmdW5jdGlvbiogcG9zdEFjdGl2aXR5V3JhcHBlcihhY3Rpb24pIHtcbiAgICAgIHlpZWxkKiBwb3N0QWN0aXZpdHkoZGlyZWN0TGluZSwgdXNlcklELCB1c2VybmFtZSwgbnVtQWN0aXZpdGllc1Bvc3RlZCsrLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
297
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYWdhcy9wb3N0QWN0aXZpdHlTYWdhLmpzIl0sIm5hbWVzIjpbInBvc3RBY3Rpdml0eSIsInBvc3RBY3Rpdml0eVNhZ2EiLCJnZXRUaW1lc3RhbXAiLCJkYXRlIiwiY2xvY2tTa2V3QWRqdXN0bWVudCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRpcmVjdExpbmUiLCJ1c2VySUQiLCJ1c2VybmFtZSIsIm51bUFjdGl2aXRpZXNQb3N0ZWQiLCJtZXRob2QiLCJtZXRhIiwiYWN0aXZpdHkiLCJwYXlsb2FkIiwiY2xvY2tTa2V3QWRqdXN0bWVudFNlbGVjdG9yIiwibG9jYWxlIiwibGFuZ3VhZ2VTZWxlY3RvciIsImF0dGFjaG1lbnRzIiwiY2xpZW50QWN0aXZpdHlJRCIsIm5vdyIsImxvY2FsVGltZVpvbmUiLCJ3aW5kb3ciLCJJbnRsIiwidW5kZWZpbmVkIiwiRGF0ZVRpbWVGb3JtYXQiLCJyZXNvbHZlZE9wdGlvbnMiLCJ0aW1lWm9uZSIsIm1hcCIsImNvbnRlbnRUeXBlIiwiY29udGVudFVybCIsIm5hbWUiLCJ0aHVtYm5haWxVcmwiLCJjaGFubmVsRGF0YSIsImNsaWVudFRpbWVzdGFtcCIsImNoYW5uZWxJZCIsImZyb20iLCJpZCIsInJvbGUiLCJsb2NhbFRpbWVzdGFtcCIsImxvY2FsVGltZXpvbmUiLCJ0aW1lc3RhbXAiLCJlbnRpdGllcyIsInJlcXVpcmVzQm90U3RhdGUiLCJzdXBwb3J0c0xpc3RlbmluZyIsInN1cHBvcnRzVHRzIiwidHlwZSIsIlBPU1RfQUNUSVZJVFlfUEVORElORyIsImVjaG9CYWNrQ2FsbCIsIklOQ09NSU5HX0FDVElWSVRZIiwic2VuZFRpbWVvdXRTZWxlY3RvciIsInNlbmRUaW1lb3V0Iiwic2VuZCIsImVjaG9CYWNrIiwidGltZW91dCIsInRoZW4iLCJQcm9taXNlIiwicmVqZWN0IiwiRXJyb3IiLCJQT1NUX0FDVElWSVRZX0ZVTEZJTExFRCIsImNvbnNvbGUiLCJlcnJvciIsIlBPU1RfQUNUSVZJVFlfUkVKRUNURUQiLCJwb3N0QWN0aXZpdHlXaGlsZUNvbm5lY3RlZCIsIlBPU1RfQUNUSVZJVFkiLCJwb3N0QWN0aXZpdHlXcmFwcGVyIiwiYWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQU9BOztxREFPVUEsWTtzREF3R2VDLGdCOzs7Ozs7QUE3R3pCLFNBQVNDLFlBQVQsQ0FBc0JDLElBQXRCLEVBQXFEO0FBQUEsTUFBekJDLG1CQUF5Qix1RUFBSCxDQUFHO0FBQ25EO0FBQ0EsU0FBTyxJQUFJQyxJQUFKLENBQVMsQ0FBQ0YsSUFBRCxHQUFRQyxtQkFBakIsRUFBc0NFLFdBQXRDLEVBQVA7QUFDRDs7QUFFRCxTQUFVTixZQUFWLENBQXVCTyxVQUF2QixFQUFtQ0MsTUFBbkMsRUFBMkNDLFFBQTNDLEVBQXFEQyxtQkFBckQ7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRkMsVUFBQUEsTUFBcEYsUUFBNEVDLElBQTVFLENBQW9GRCxNQUFwRixFQUF5R0UsUUFBekcsUUFBOEZDLE9BQTlGLENBQXlHRCxRQUF6RztBQUFBO0FBQzBDLGlCQUFNLHFCQUM1QyxrQ0FBaUI7QUFBRVQsWUFBQUEsbUJBQW1CLEVBQUVXLCtCQUF2QjtBQUFvREMsWUFBQUEsTUFBTSxFQUFFQztBQUE1RCxXQUFqQixDQUQ0QyxDQUFOOztBQUQxQztBQUFBO0FBQ1ViLFVBQUFBLG1CQURWLGlCQUNVQSxtQkFEVjtBQUMrQlksVUFBQUEsTUFEL0IsaUJBQytCQSxNQUQvQjtBQUFBLHNCQUkwQkgsUUFKMUIsRUFJVUssV0FKVixhQUlVQSxXQUpWO0FBS1FDLFVBQUFBLGdCQUxSLEdBSzJCLDJCQUwzQjtBQU1RQyxVQUFBQSxHQU5SLEdBTWMsSUFBSWYsSUFBSixFQU5kO0FBT1FnQixVQUFBQSxhQVBSLEdBUUksT0FBT0MsTUFBTSxDQUFDQyxJQUFkLEtBQXVCLFdBQXZCLEdB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QUFBO0FBa0dRLGlCQUFNLHlCQUFOOztBQWxHUjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBbUdNLGlCQUFNLGtCQUFJO0FBQUVnQyxZQUFBQSxJQUFJLEVBQUVnQixvQ0FBUjtBQUFnQ0QsWUFBQUEsS0FBSyxFQUFFLElBQXZDO0FBQTZDakQsWUFBQUEsSUFBSSxFQUFKQSxJQUE3QztBQUFtREUsWUFBQUEsT0FBTyxFQUFFLElBQUk0QyxLQUFKLENBQVUsV0FBVjtBQUE1RCxXQUFKLENBQU47O0FBbkdOO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBd0dlLFNBQVV6RCxnQkFBVjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDYixpQkFBTSwyRUFBZSxTQUFVOEQsMEJBQVY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDeEQsb0JBQUFBLFVBQXZDLFNBQXVDQSxVQUF2QyxFQUFtREMsTUFBbkQsU0FBbURBLE1BQW5ELEVBQTJEQyxRQUEzRCxTQUEyREEsUUFBM0Q7QUFDZkMsb0JBQUFBLG1CQURlLEdBQ08sQ0FEUDtBQUFBO0FBR25CLDJCQUFNLHdCQUFVc0QsMkJBQVYsNENBQXlCLFNBQVVDLG1CQUFWLENBQThCQyxNQUE5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQzdCLDZEQUFPbEUsWUFBWSxDQUFDTyxVQUFELEVBQWFDLE1BQWIsRUFBcUJDLFFBQXJCLEVBQStCQyxtQkFBbUIsRUFBbEQsRUFBc0R3RCxNQUF0RCxDQUFuQjs7QUFENkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHlCQUFVRCxtQkFBVjtBQUFBLHFCQUF6QixFQUFOOztBQUhtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBVUYsMEJBQVY7QUFBQSxXQUFmLEVBQU47O0FBRGE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiY29yZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbGwsIGNhbGwsIGNhbmNlbGxlZCwgcHV0LCByYWNlLCBzZWxlY3QsIHRha2UsIHRha2VFdmVyeSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5cbmltcG9ydCBvYnNlcnZlT25jZSBmcm9tICcuL2VmZmVjdHMvb2JzZXJ2ZU9uY2UnO1xuaW1wb3J0IHdoaWxlQ29ubmVjdGVkIGZyb20gJy4vZWZmZWN0cy93aGlsZUNvbm5lY3RlZCc7XG5cbmltcG9ydCBjbG9ja1NrZXdBZGp1c3RtZW50U2VsZWN0b3IgZnJvbSAnLi4vc2VsZWN0b3JzL2Nsb2NrU2tld0FkanVzdG1lbnQnO1xuaW1wb3J0IGNvbWJpbmVTZWxlY3RvcnMgZnJvbSAnLi4vc2VsZWN0b3JzL2NvbWJpbmVTZWxlY3RvcnMnO1xuaW1wb3J0IGRhdGVUb0xvY2FsZUlTT1N0cmluZyBmcm9tICcuLi91dGlscy9kYXRlVG9Mb2NhbGVJU09TdHJpbmcnO1xuaW1wb3J0IGxhbmd1YWdlU2VsZWN0b3IgZnJvbSAnLi4vc2VsZWN0b3JzL2xhbmd1YWdlJztcbmltcG9ydCBzZW5kVGltZW91dFNlbGVjdG9yIGZyb20gJy4uL3NlbGVjdG9ycy9zZW5kVGltZW91dCc7XG5cbmltcG9ydCBkZWxldGVLZXkgZnJvbSAnLi4vdXRpbHMvZGVsZXRlS2V5JztcbmltcG9ydCBzbGVlcCBmcm9tICcuLi91dGlscy9zbGVlcCc7XG5pbXBvcnQgdW5pcXVlSUQgZnJvbSAnLi4vdXRpbHMvdW5pcXVlSUQnO1xuXG5pbXBvcnQge1xuICBQT1NUX0FDVElWSVRZLFxuICBQT1NUX0FDVElWSVRZX0ZVTEZJTExFRCxcbiAgUE9TVF9BQ1RJVklUWV9QRU5ESU5HLFxuICBQT1NUX0FDVElWSVRZX1JFSkVDVEVEXG59IGZyb20gJy4uL2FjdGlvbnMvcG9zdEFjdGl2aXR5JztcblxuaW1wb3J0IHsgSU5DT01JTkdfQUNUSVZJVFkgfSBmcm9tICcuLi9hY3Rpb25zL2luY29taW5nQWN0aXZpdHknO1xuXG5mdW5jdGlvbiBnZXRUaW1lc3RhbXAoZGF0ZSwgY2xvY2tTa2V3QWRqdXN0bWVudCA9IDApIHtcbiAgLy8gXCIrZGF0ZVwiIHdpbGwgcmV0dXJuIGVwb2NoIHRpbWUgaW4gbWlsbGlzZWNvbmRzLCBzYW1lIGFzIERhdGUuZ2V0VGltZSgpLlxuICByZXR1cm4gbmV3IERhdGUoK2RhdGUgKyBjbG9ja1NrZXdBZGp1c3RtZW50KS50b0lTT1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiogcG9zdEFjdGl2aXR5KGRpcmVjdExpbmUsIHVzZXJJRCwgdXNlcm5hbWUsIG51bUFjdGl2aXRpZXNQb3N0ZWQsIHsgbWV0YTogeyBtZXRob2QgfSwgcGF5bG9hZDogeyBhY3Rpdml0eSB9IH0pIHtcbiAgY29uc3QgeyBjbG9ja1NrZXdBZGp1c3RtZW50LCBsb2NhbGUgfSA9IHlpZWxkIHNlbGVjdChcbiAgICBjb21iaW5lU2VsZWN0b3JzKHsgY2xvY2tTa2V3QWRqdXN0bWVudDogY2xvY2tTa2V3QWRqdXN0bWVudFNlbGVjdG9yLCBsb2NhbGU6IGxhbmd1YWdlU2VsZWN0b3IgfSlcbiAgKTtcbiAgY29uc3QgeyBhdHRhY2htZW50cyB9ID0gYWN0aXZpdHk7XG4gIGNvbnN0IGNsaWVudEFjdGl2aXR5SUQgPSB1bmlxdWVJRCgpO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBsb2NhbFRpbWVab25lID1cbiAgICB0eXBlb2Ygd2luZG93LkludGwgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcblxuICBhY3Rpdml0eSA9IHtcbiAgICAuLi5kZWxldGVLZXkoYWN0aXZpdHksICdpZCcpLFxuICAgIGF0dGFjaG1lbnRzOlxuICAgICAgYXR0YWNobWVudHMgJiZcbiAgICAgIGF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VHlwZSwgY29udGVudFVybCwgbmFtZSwgdGh1bWJuYWlsVXJsIH0pID0+ICh7XG4gICAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgICBjb250ZW50VXJsLFxuICAgICAgICBuYW1lLFxuICAgICAgICB0aHVtYm5haWxVcmxcbiAgICAgIH0pKSxcbiAgICBjaGFubmVsRGF0YToge1xuICAgICAgLi4uZGVsZXRlS2V5KGFjdGl2aXR5LmNoYW5uZWxEYXRhLCAnc3RhdGUnKSxcbiAgICAgIGNsaWVudEFjdGl2aXR5SUQsXG4gICAgICAvLyBUaGlzIGlzIHVuc2tld2VkIGxvY2FsIHRpbWVzdGFtcCBmb3IgZXN0aW1hdGluZyBjbG9jayBza2V3LlxuICAgICAgY2xpZW50VGltZXN0YW1wOiBnZXRUaW1lc3RhbXAobm93KVxuICAgIH0sXG4gICAgY2hhbm5lbElkOiAnd2ViY2hhdCcsXG4gICAgZnJvbToge1xuICAgICAgaWQ6IHVzZXJJRCxcbiAgICAgIG5hbWU6IHVzZXJuYW1lLFxuICAgICAgcm9sZTogJ3VzZXInXG4gICAgfSxcbiAgICBsb2NhbGUsXG4gICAgbG9jYWxUaW1lc3RhbXA6IGRhdGVUb0xvY2FsZUlTT1N0cmluZyhub3cpLFxuICAgIGxvY2FsVGltZXpvbmU6IGxvY2FsVGltZVpvbmUsXG4gICAgLy8gVGhpcyB0aW1lc3RhbXAgd2lsbCBiZSByZXBsYWNlZCBieSBEaXJlY3QgTGluZSBDaGFubmVsIGluIGVjaG9iYWNrLlxuICAgIC8vIFdlIGFyZSB0ZW1wb3JhcmlseSBhZGRpbmcgdGhpcyB0aW1lc3RhbXAgZm9yIHNvcnRpbmcuXG4gICAgdGltZXN0YW1wOiBnZXRUaW1lc3RhbXAobm93LCBjbG9ja1NrZXdBZGp1c3RtZW50KVxuICB9O1xuXG4gIGlmICghbnVtQWN0aXZpdGllc1Bvc3RlZCkge1xuICAgIGFjdGl2aXR5LmVudGl0aWVzID0gW1xuICAgICAgLi4uKGFjdGl2aXR5LmVudGl0aWVzIHx8IFtdKSxcbiAgICAgIHtcbiAgICAgICAgLy8gVE9ETzogW1A0XSBDdXJyZW50bHkgaW4gdjMsIHdlIHNlbmQgdGhlIGNhcGFiaWxpdGllcyBhbHRob3VnaCB0aGUgY2xpZW50IG1pZ2h0IG5vdCBhY3R1YWxseSBoYXZlIHRoZW1cbiAgICAgICAgLy8gICAgICAgV2UgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB3ZSBuZWVkIHRvIHNlbmQgdGhlc2UsIGFuZCBvbmx5IHNlbmQgY2FwYWJpbGl0aWVzIHRoZSBjbGllbnQgaGF2ZVxuICAgICAgICByZXF1aXJlc0JvdFN0YXRlOiB0cnVlLFxuICAgICAgICBzdXBwb3J0c0xpc3RlbmluZzogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydHNUdHM6IHRydWUsXG4gICAgICAgIHR5cGU6ICdDbGllbnRDYXBhYmlsaXRpZXMnXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1ldGEgPSB7IGNsaWVudEFjdGl2aXR5SUQsIG1ldGhvZCB9O1xuXG4gIHlpZWxkIHB1dCh7IHR5cGU6IFBPU1RfQUNUSVZJVFlfUEVORElORywgbWV0YSwgcGF5bG9hZDogeyBhY3Rpdml0eSB9IH0pO1xuXG4gIHRyeSB7XG4gICAgLy8gUXVpcmtzOiBXZSBtaWdodCByZWNlaXZlIElOQ09NSU5HX0FDVElWSVRZIGJlZm9yZSB0aGUgcG9zdEFjdGl2aXR5IGNhbGwgY29tcGxldGVkXG4gICAgLy8gICAgICAgICBTbywgd2Ugc2V0dXAgZXhwZWN0YXRpb24gZmlyc3QsIHRoZW4gcG9zdEFjdGl2aXR5IGFmdGVyd2FyZFxuXG4gICAgY29uc3QgZWNob0JhY2tDYWxsID0gY2FsbChmdW5jdGlvbiogKCkge1xuICAgICAgZm9yICg7Oykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcGF5bG9hZDogeyBhY3Rpdml0eSB9XG4gICAgICAgIH0gPSB5aWVsZCB0YWtlKElOQ09NSU5HX0FDVElWSVRZKTtcbiAgICAgICAgY29uc3QgeyBjaGFubmVsRGF0YSA9IHt9LCBpZCB9ID0gYWN0aXZpdHk7XG5cbiAgICAgICAgaWYgKGNoYW5uZWxEYXRhLmNsaWVudEFjdGl2aXR5SUQgPT09IGNsaWVudEFjdGl2aXR5SUQgJiYgaWQpIHtcbiAgICAgICAgICByZXR1cm4gYWN0aXZpdHk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRpbWVvdXQgY291bGQgYmUgZHVlIHRvIGVpdGhlcjpcbiAgICAvLyAtIFBvc3QgYWN0aXZpdHkgY2FsbCBtYXkgdGFrZSB0b28gbG9uZyB0aW1lIHRvIGNvbXBsZXRlXG4gICAgLy8gICAtIERpcmVjdCBMaW5lIHNlcnZpY2Ugb25seSByZXNwb25kIG9uIEhUVFAgYWZ0ZXIgYm90IHJlc3BvbmQgdG8gRGlyZWN0IExpbmVcbiAgICAvLyAtIEFjdGl2aXR5IG1heSB0YWtlIHRvbyBsb25nIHRpbWUgdG8gZWNobyBiYWNrXG5cbiAgICBjb25zdCBzZW5kVGltZW91dCA9IHlpZWxkIHNlbGVjdChzZW5kVGltZW91dFNlbGVjdG9yKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHNlbmQ6IHsgZWNob0JhY2sgfVxuICAgIH0gPSB5aWVsZCByYWNlKHtcbiAgICAgIHNlbmQ6IGFsbCh7XG4gICAgICAgIGVjaG9CYWNrOiBlY2hvQmFja0NhbGwsXG4gICAgICAgIHBvc3RBY3Rpdml0eTogb2JzZXJ2ZU9uY2UoZGlyZWN0TGluZS5wb3N0QWN0aXZpdHkoYWN0aXZpdHkpKVxuICAgICAgfSksXG4gICAgICB0aW1lb3V0OiBjYWxsKCgpID0+IHNsZWVwKHNlbmRUaW1lb3V0KS50aGVuKCgpID0+IFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigndGltZW91dCcpKSkpXG4gICAgfSk7XG5cbiAgICB5aWVsZCBwdXQoeyB0eXBlOiBQT1NUX0FDVElWSVRZX0ZVTEZJTExFRCwgbWV0YSwgcGF5bG9hZDogeyBhY3Rpdml0eTogZWNob0JhY2sgfSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IEZhaWxlZCB0byBwb3N0IGFjdGl2aXR5IHRvIGNoYXQgYWRhcHRlci4nLCBlcnIpO1xuXG4gICAgeWllbGQgcHV0KHsgdHlwZTogUE9TVF9BQ1RJVklUWV9SRUpFQ1RFRCwgZXJyb3I6IHRydWUsIG1ldGEsIHBheWxvYWQ6IGVyciB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoeWllbGQgY2FuY2VsbGVkKCkpIHtcbiAgICAgIHlpZWxkIHB1dCh7IHR5cGU6IFBPU1RfQUNUSVZJVFlfUkVKRUNURUQsIGVycm9yOiB0cnVlLCBtZXRhLCBwYXlsb2FkOiBuZXcgRXJyb3IoJ2NhbmNlbGxlZCcpIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogcG9zdEFjdGl2aXR5U2FnYSgpIHtcbiAgeWllbGQgd2hpbGVDb25uZWN0ZWQoZnVuY3Rpb24qIHBvc3RBY3Rpdml0eVdoaWxlQ29ubmVjdGVkKHsgZGlyZWN0TGluZSwgdXNlcklELCB1c2VybmFtZSB9KSB7XG4gICAgbGV0IG51bUFjdGl2aXRpZXNQb3N0ZWQgPSAwO1xuXG4gICAgeWllbGQgdGFrZUV2ZXJ5KFBPU1RfQUNUSVZJVFksIGZ1bmN0aW9uKiBwb3N0QWN0aXZpdHlXcmFwcGVyKGFjdGlvbikge1xuICAgICAgeWllbGQqIHBvc3RBY3Rpdml0eShkaXJlY3RMaW5lLCB1c2VySUQsIHVzZXJuYW1lLCBudW1BY3Rpdml0aWVzUG9zdGVkKyssIGFjdGlvbik7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19