studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/lib/components/ActionList.js +170 -34
  2. package/lib/components/AlertDialog.js +133 -9
  3. package/lib/components/AlertWithIcon.js +92 -25
  4. package/lib/components/ConnectedModal.js +43 -13
  5. package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +111 -21
  8. package/lib/components/Dropdowns/index.js +27 -9
  9. package/lib/components/EntityOwnerList.js +52 -18
  10. package/lib/components/Error.js +106 -11
  11. package/lib/components/ErrorBoundary.js +134 -35
  12. package/lib/components/ErrorMessage.js +44 -9
  13. package/lib/components/Forms/DateField.js +61 -42
  14. package/lib/components/Forms/TimeField.js +81 -42
  15. package/lib/components/Forms/index.js +27 -4
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
  17. package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
  18. package/lib/components/Groups/ExternalGroups/Table.js +181 -45
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  20. package/lib/components/Groups/RosterSyncInfo.js +147 -20
  21. package/lib/components/HOC/AccessibleAppComponent.js +98 -73
  22. package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
  23. package/lib/components/HOC/AsyncComponent.js +54 -39
  24. package/lib/components/HOC/AuthenticatedComponent.js +58 -38
  25. package/lib/components/HOC/CollectionComponent.js +170 -110
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
  27. package/lib/components/HOC/CollectionItemComponent.js +168 -106
  28. package/lib/components/HOC/ConnectedModalComponent.js +109 -80
  29. package/lib/components/HOC/DataDependentComponent.js +29 -21
  30. package/lib/components/HOC/EntityComponent.js +71 -57
  31. package/lib/components/HOC/FullscreenModalComponent.js +163 -123
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
  33. package/lib/components/HOC/GuidComponent.js +29 -22
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
  36. package/lib/components/HOC/SearchPersistorComponent.js +240 -166
  37. package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
  38. package/lib/components/HOC/UserComponent.js +12 -7
  39. package/lib/components/Icons/IconAlphaList.js +33 -5
  40. package/lib/components/Icons/IconExternalUser.js +33 -5
  41. package/lib/components/Icons/IconImpersonation.js +33 -5
  42. package/lib/components/Icons/IconStopImpersonating.js +33 -5
  43. package/lib/components/Icons/IconTable.js +35 -7
  44. package/lib/components/Icons/IconTableDeleteCol.js +33 -5
  45. package/lib/components/Icons/IconTableDeleteRow.js +33 -5
  46. package/lib/components/Icons/IconTableInsertCol.js +33 -5
  47. package/lib/components/Icons/IconTableInsertRow.js +33 -5
  48. package/lib/components/Impersonation/Button.js +77 -13
  49. package/lib/components/Impersonation/Link.js +77 -13
  50. package/lib/components/Impersonation/UserDetail.js +66 -9
  51. package/lib/components/Loading.js +26 -4
  52. package/lib/components/LockDownBrowser/Check.js +194 -49
  53. package/lib/components/LockDownBrowser/ExitButton.js +26 -9
  54. package/lib/components/LockDownBrowser/Launch.js +70 -62
  55. package/lib/components/Lti/Confirm.js +152 -11
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
  57. package/lib/components/Lti/Launch.js +105 -24
  58. package/lib/components/Lti/LaunchGroup.js +85 -13
  59. package/lib/components/ManageTable.js +309 -87
  60. package/lib/components/ManageTableNoDataComponent.js +42 -4
  61. package/lib/components/NewVersionAlert.js +82 -46
  62. package/lib/components/NotFound.js +86 -10
  63. package/lib/components/Notifications.js +185 -126
  64. package/lib/components/PaginationNextButton.js +33 -6
  65. package/lib/components/PaginationPreviousButton.js +33 -6
  66. package/lib/components/Quill/CustomToolbar.js +432 -218
  67. package/lib/components/Quill/Formats/Image.js +73 -63
  68. package/lib/components/Quill/Formats/List.js +45 -45
  69. package/lib/components/Quill/Formats/Video.js +28 -24
  70. package/lib/components/Quill/ImageDropModule.js +147 -117
  71. package/lib/components/Quill/ImageWarning.js +47 -9
  72. package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
  81. package/lib/components/Quill/TableModule/constants.js +45 -41
  82. package/lib/components/Quill/TableModule/index.js +362 -301
  83. package/lib/components/Quill/TableModule/utils.js +42 -38
  84. package/lib/components/Quill/accessibilityFix.js +234 -232
  85. package/lib/components/Quill/index.js +34 -28
  86. package/lib/components/RefreshIndicator/Bordered.js +47 -6
  87. package/lib/components/RefreshIndicator/Inline.js +47 -8
  88. package/lib/components/RefreshIndicator/index.js +263 -59
  89. package/lib/components/SearchControls.js +216 -11
  90. package/lib/components/SentryRoute.js +11 -6
  91. package/lib/components/Tables/RoleFilter.js +69 -32
  92. package/lib/components/Tables/TextFilter.js +62 -13
  93. package/lib/components/UserRoles/Add.js +199 -96
  94. package/lib/components/UserRoles/Context.js +11 -7
  95. package/lib/components/UserRoles/RoleCell.js +181 -72
  96. package/lib/components/UserRoles/Select.js +157 -17
  97. package/lib/components/UserRoles/Table.js +221 -80
  98. package/lib/components/UserRoles/index.js +534 -384
  99. package/lib/config/eslint/index.js +32 -28
  100. package/lib/config/eslint/lib/order.js +26 -27
  101. package/lib/config/eslint/lib/prettier.js +20 -18
  102. package/lib/config/eslint/lib/typescript.js +93 -112
  103. package/lib/config/eslint/react.js +24 -14
  104. package/lib/constants/baseActivity.js +30 -26
  105. package/lib/constants/baseRole.js +14 -10
  106. package/lib/constants/configuration.js +33 -29
  107. package/lib/constants/externalProviderType.js +10 -6
  108. package/lib/constants/fetchErrorData.js +15 -11
  109. package/lib/constants/index.js +137 -14
  110. package/lib/constants/lockDownBrowser.js +28 -24
  111. package/lib/constants/mockData.js +382 -297
  112. package/lib/constants/modelStatus.js +15 -11
  113. package/lib/constants/notificationType.js +12 -8
  114. package/lib/constants/operatingSystem.js +12 -8
  115. package/lib/constants/shard.js +11 -7
  116. package/lib/constants/table.js +21 -21
  117. package/lib/constants/tier.js +12 -8
  118. package/lib/constants/userRole.js +15 -5
  119. package/lib/endpointMappings.js +197 -181
  120. package/lib/hooks/useCollection.js +82 -62
  121. package/lib/hooks/useCollectionConfiguration.js +228 -83
  122. package/lib/hooks/useCollectionItem.js +154 -54
  123. package/lib/hooks/useGuid.js +20 -8
  124. package/lib/hooks/usePrevious.js +19 -13
  125. package/lib/index.js +157 -25
  126. package/lib/redux/actionCreator.js +50 -28
  127. package/lib/redux/actions/AuthAction.js +44 -31
  128. package/lib/redux/actions/ModalAction.js +10 -6
  129. package/lib/redux/actions/ModelAction.js +77 -39
  130. package/lib/redux/actions/NotificationAction.js +10 -6
  131. package/lib/redux/actions/SearchAction.js +9 -5
  132. package/lib/redux/actions/index.js +60 -7
  133. package/lib/redux/configureReducers.js +60 -49
  134. package/lib/redux/configureStore.js +83 -87
  135. package/lib/redux/helpers.js +6 -2
  136. package/lib/redux/reducers/authReducer.js +50 -43
  137. package/lib/redux/reducers/index.js +41 -13
  138. package/lib/redux/reducers/modalsReducer.js +47 -29
  139. package/lib/redux/reducers/modelsReducer.js +178 -173
  140. package/lib/redux/reducers/notificationsReducer.js +24 -18
  141. package/lib/redux/reducers/searchReducer.js +25 -19
  142. package/lib/redux/sagas/appInsightsSaga.js +22 -18
  143. package/lib/redux/sagas/authSaga.js +253 -218
  144. package/lib/redux/sagas/caliperSaga.js +159 -143
  145. package/lib/redux/sagas/clockOffsetSaga.js +34 -31
  146. package/lib/redux/sagas/configurationSaga.js +11 -7
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
  148. package/lib/redux/sagas/errorSaga.js +27 -21
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
  150. package/lib/redux/sagas/identityProviderSaga.js +22 -18
  151. package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
  153. package/lib/redux/sagas/modelFetchSaga.js +355 -322
  154. package/lib/redux/sagas/noStoreSaga.js +61 -48
  155. package/lib/redux/sagas/postLoginDataSaga.js +45 -34
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
  157. package/lib/redux/sagas/rootSaga.js +82 -57
  158. package/lib/redux/sagas/sentrySaga.js +29 -25
  159. package/lib/redux/sagas/userIdSaga.js +16 -12
  160. package/lib/services/codeProviderService.js +25 -19
  161. package/lib/services/dateService.js +12 -7
  162. package/lib/services/documentService.js +17 -12
  163. package/lib/services/fetchService.js +129 -112
  164. package/lib/services/persistenceService.js +33 -29
  165. package/lib/services/ticketProviderService.js +29 -23
  166. package/lib/services/tokenPersistenceService.js +12 -8
  167. package/lib/services/windowService.js +18 -14
  168. package/lib/startup.js +132 -114
  169. package/lib/types/AppConfiguration.js +5 -1
  170. package/lib/types/Artifact.js +11 -7
  171. package/lib/types/BaseReduxState.js +5 -1
  172. package/lib/types/Client.js +5 -1
  173. package/lib/types/Collection.js +5 -1
  174. package/lib/types/Configuration.js +5 -1
  175. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  176. package/lib/types/DeletableModel.js +5 -1
  177. package/lib/types/Event.js +5 -1
  178. package/lib/types/ExternalGroup.js +5 -1
  179. package/lib/types/ExternalProvider.js +5 -1
  180. package/lib/types/ExternalTerm.js +5 -1
  181. package/lib/types/Group.js +5 -1
  182. package/lib/types/IdentityProvider.js +5 -1
  183. package/lib/types/LtiLaunch.js +5 -1
  184. package/lib/types/NameOnlyEntity.js +5 -1
  185. package/lib/types/Notification.js +5 -1
  186. package/lib/types/OptionalRecord.js +5 -1
  187. package/lib/types/OwnerSchedule.js +5 -1
  188. package/lib/types/PropertyOfType.js +5 -1
  189. package/lib/types/Quill.js +5 -1
  190. package/lib/types/RoleDescription.js +5 -1
  191. package/lib/types/Search.js +5 -1
  192. package/lib/types/SimpleLocation.js +5 -1
  193. package/lib/types/UniTime.js +5 -1
  194. package/lib/types/User.js +5 -1
  195. package/lib/types/UserRole.js +5 -1
  196. package/lib/types/auth/AuthState.js +5 -1
  197. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  198. package/lib/types/auth/ClientCredentials.js +5 -1
  199. package/lib/types/auth/CodeProviderService.js +5 -1
  200. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  201. package/lib/types/auth/TicketProviderService.js +5 -1
  202. package/lib/types/auth/TokenPersistenceService.js +5 -1
  203. package/lib/types/auth/index.js +82 -9
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +313 -30
  206. package/lib/types/net/EndpointConfig.js +5 -1
  207. package/lib/types/net/EndpointMapping.js +5 -1
  208. package/lib/types/net/EndpointMappings.js +5 -1
  209. package/lib/types/net/ErrorHandler.js +5 -1
  210. package/lib/types/net/FetchConfig.js +5 -1
  211. package/lib/types/net/FetchErrorData.js +10 -6
  212. package/lib/types/net/FetchResult.js +5 -1
  213. package/lib/types/net/HTTPMethod.js +5 -1
  214. package/lib/types/net/HTTPStatusCode.js +16 -12
  215. package/lib/types/net/Metadata.js +5 -1
  216. package/lib/types/net/Model.js +5 -1
  217. package/lib/types/net/ModelCollection.js +5 -1
  218. package/lib/types/net/ModelsState.js +5 -1
  219. package/lib/types/net/OAuthToken.js +5 -1
  220. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  221. package/lib/types/net/TokenAccessFunction.js +5 -1
  222. package/lib/types/net/index.js +181 -18
  223. package/lib/utils/baseActivity.js +133 -123
  224. package/lib/utils/baseRole.js +37 -33
  225. package/lib/utils/collection.js +425 -298
  226. package/lib/utils/cookies.js +22 -19
  227. package/lib/utils/date.js +303 -279
  228. package/lib/utils/dom.js +176 -165
  229. package/lib/utils/domainIdentifier.js +9 -5
  230. package/lib/utils/entityUserRole.js +6 -2
  231. package/lib/utils/error.js +17 -15
  232. package/lib/utils/events.js +40 -31
  233. package/lib/utils/externalGroup.js +22 -18
  234. package/lib/utils/externalProviders.js +8 -4
  235. package/lib/utils/externalTerms.js +10 -3
  236. package/lib/utils/fetch.js +179 -180
  237. package/lib/utils/group.js +18 -7
  238. package/lib/utils/groupDates.js +37 -33
  239. package/lib/utils/groupRoles.js +25 -21
  240. package/lib/utils/lockDownBrowser.js +15 -11
  241. package/lib/utils/logger.js +26 -22
  242. package/lib/utils/lti.js +9 -4
  243. package/lib/utils/model.js +36 -41
  244. package/lib/utils/number.js +21 -18
  245. package/lib/utils/promise.js +28 -21
  246. package/lib/utils/quill.js +65 -62
  247. package/lib/utils/route.js +58 -55
  248. package/lib/utils/search.js +76 -80
  249. package/lib/utils/shard.js +37 -37
  250. package/lib/utils/sort.js +50 -42
  251. package/lib/utils/string.js +13 -8
  252. package/lib/utils/table.js +38 -33
  253. package/lib/utils/timezone.js +10 -6
  254. package/lib/utils/url.js +142 -142
  255. package/lib/utils/user.js +58 -55
  256. package/lib/utils/userAgent.js +10 -10
  257. package/lib/utils/userRole.js +57 -49
  258. package/package.json +17 -3
@@ -1,199 +1,204 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = modelsReducer;
3
8
  exports.getMetadata = getMetadata;
4
9
  exports.isCollection = isCollection;
5
10
  exports.isNullResponse = isNullResponse;
6
11
  exports.merge = merge;
7
12
  exports.updateMetadataForChildCollections = updateMetadataForChildCollections;
8
- exports.default = modelsReducer;
9
- const tslib_1 = require("tslib");
10
- const lodash_1 = require("lodash");
11
- const fp_1 = tslib_1.__importDefault(require("lodash/fp"));
12
- const actions_1 = require("../actions");
13
- /**
14
- * Given the state and a path into that state object, return the prop that
15
- * is named "_metadata"
16
- *
17
- * @param state The redux state object
18
- * @param path An array of keys that represent the path to the entity in question
13
+ var _lodash = require("lodash");
14
+ var _fp2 = _interopRequireDefault(require("lodash/fp"));
15
+ var _actions = require("../actions");
16
+ /**
17
+ * Given the state and a path into that state object, return the prop that
18
+ * is named "_metadata"
19
+ *
20
+ * @param state The redux state object
21
+ * @param path An array of keys that represent the path to the entity in question
19
22
  */
20
23
  function getMetadata(state, path) {
21
- return (0, lodash_1.merge)({}, (0, lodash_1.get)(state, path.concat('_metadata')));
24
+ return (0, _lodash.merge)({}, (0, _lodash.get)(state, path.concat('_metadata')));
22
25
  }
23
- /**
24
- * Get whether or not an object is a "collection" (id key-value dictionary).
25
- * @param obj
26
- * @returns A boolean
26
+
27
+ /**
28
+ * Get whether or not an object is a "collection" (id key-value dictionary).
29
+ * @param obj
30
+ * @returns A boolean
27
31
  */
28
32
  function isCollection(obj) {
29
- return (!(0, lodash_1.isArray)(obj) &&
30
- (0, lodash_1.isPlainObject)(obj) &&
31
- Object.keys(obj).length > 0 &&
32
- Object.keys(obj).every(key => {
33
- const child = obj[key];
34
- return ((0, lodash_1.isPlainObject)(child) &&
35
- (key === '_metadata' ||
36
- (Object.prototype.hasOwnProperty.call(child, 'id') &&
37
- (child.id === parseInt(key, 10) || child.id === key))));
38
- }));
33
+ return !(0, _lodash.isArray)(obj) && (0, _lodash.isPlainObject)(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
34
+ const child = obj[key];
35
+ return (0, _lodash.isPlainObject)(child) && (key === '_metadata' || Object.prototype.hasOwnProperty.call(child, 'id') && (child.id === parseInt(key, 10) || child.id === key));
36
+ });
39
37
  }
40
- /**
41
- * Get whether or not an object is a "null response".
42
- * @param obj
43
- * @returns A boolean
38
+
39
+ /**
40
+ * Get whether or not an object is a "null response".
41
+ * @param obj
42
+ * @returns A boolean
44
43
  */
45
44
  function isNullResponse(obj) {
46
- return ((0, lodash_1.isPlainObject)(obj) &&
47
- Object.keys(obj).length > 0 &&
48
- Object.keys(obj).every(key => {
49
- const child = obj[key];
50
- return key === '_metadata' || (key === 'response' && child === null);
51
- }));
45
+ return (0, _lodash.isPlainObject)(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
46
+ const child = obj[key];
47
+ return key === '_metadata' || key === 'response' && child === null;
48
+ });
52
49
  }
53
- /**
54
- * Merge the `current` and `incoming` objects recursively, returning a new combined object.
55
- *
56
- * For each key in `current`:
57
- * * remove if `current` is a "collection" and item key is not in `incoming`
58
- * * recurse if `incoming` is an object or array and has a value
59
- * * or preserve existing value
60
- *
61
- * For each key in `incoming` not in `current`:
62
- * * copy value to result
63
- *
64
- * @param current
65
- * @param incoming
50
+
51
+ /**
52
+ * Merge the `current` and `incoming` objects recursively, returning a new combined object.
53
+ *
54
+ * For each key in `current`:
55
+ * * remove if `current` is a "collection" and item key is not in `incoming`
56
+ * * recurse if `incoming` is an object or array and has a value
57
+ * * or preserve existing value
58
+ *
59
+ * For each key in `incoming` not in `current`:
60
+ * * copy value to result
61
+ *
62
+ * @param current
63
+ * @param incoming
66
64
  */
67
65
  function merge(current, incoming) {
68
- // do not merge arrays
69
- if ((0, lodash_1.isArray)(current)) {
70
- return !(0, lodash_1.isUndefined)(incoming) ? incoming : current;
71
- }
72
- // if incoming is `null` or a null response (`{'response': null}`), do not merge, just use incoming
73
- if (incoming === null || (!(0, lodash_1.isUndefined)(incoming) && isNullResponse(incoming))) {
74
- return incoming;
66
+ // do not merge arrays
67
+ if ((0, _lodash.isArray)(current)) {
68
+ return !(0, _lodash.isUndefined)(incoming) ? incoming : current;
69
+ }
70
+ // if incoming is `null` or a null response (`{'response': null}`), do not merge, just use incoming
71
+ if (incoming === null || !(0, _lodash.isUndefined)(incoming) && isNullResponse(incoming)) {
72
+ return incoming;
73
+ }
74
+ const result = Object.keys(current).reduce((out, k) => {
75
+ const c = current[k];
76
+ const i = incoming && incoming[k];
77
+ // non-relations
78
+ if (!(0, _lodash.isArray)(c) && !(0, _lodash.isPlainObject)(c)) {
79
+ // copy incoming value, if any, otherwise keep current
80
+ out[k] = !(0, _lodash.isUndefined)(i) ? i : c;
81
+ return out;
75
82
  }
76
- const result = Object.keys(current).reduce((out, k) => {
77
- const c = current[k];
78
- const i = incoming && incoming[k];
79
- // non-relations
80
- if (!(0, lodash_1.isArray)(c) && !(0, lodash_1.isPlainObject)(c)) {
81
- // copy incoming value, if any, otherwise keep current
82
- out[k] = !(0, lodash_1.isUndefined)(i) ? i : c;
83
- return out;
84
- }
85
- // remove "collection" item not included in incoming
86
- if ((isCollection(current) || isCollection(incoming)) && !(0, lodash_1.isUndefined)(incoming) && (0, lodash_1.isUndefined)(i)) {
87
- return out;
88
- }
89
- // merge relations
90
- out[k] = merge(c, i);
91
- return out;
92
- }, {});
93
- if (!(0, lodash_1.isNil)(incoming) && (0, lodash_1.isPlainObject)(incoming)) {
94
- // copy incoming properties that are not on current
95
- Object.keys(incoming).forEach(k => {
96
- const c = current[k];
97
- const i = incoming[k];
98
- if ((0, lodash_1.isUndefined)(c)) {
99
- result[k] = i;
100
- }
101
- });
83
+ // remove "collection" item not included in incoming
84
+ if ((isCollection(current) || isCollection(incoming)) && !(0, _lodash.isUndefined)(incoming) && (0, _lodash.isUndefined)(i)) {
85
+ return out;
102
86
  }
103
- return result;
87
+ // merge relations
88
+ out[k] = merge(c, i);
89
+ return out;
90
+ }, {});
91
+ if (!(0, _lodash.isNil)(incoming) && (0, _lodash.isPlainObject)(incoming)) {
92
+ // copy incoming properties that are not on current
93
+ Object.keys(incoming).forEach(k => {
94
+ const c = current[k];
95
+ const i = incoming[k];
96
+ if ((0, _lodash.isUndefined)(c)) {
97
+ result[k] = i;
98
+ }
99
+ });
100
+ }
101
+ return result;
104
102
  }
105
- /**
106
- * Sets `_metadata` on any nested collections and collection items in the data
107
- * @param data
108
- * @param metadata
103
+
104
+ /**
105
+ * Sets `_metadata` on any nested collections and collection items in the data
106
+ * @param data
107
+ * @param metadata
109
108
  */
110
109
  function updateMetadataForChildCollections(data, metadata) {
111
- const isDataCollection = isCollection(data);
112
- Object.keys(data).forEach(key => {
113
- const value = data[key];
114
- if ((isDataCollection && key !== '_metadata' && (0, lodash_1.isPlainObject)(value)) || isCollection(value)) {
115
- value._metadata = metadata;
116
- updateMetadataForChildCollections(value, metadata);
117
- }
118
- });
110
+ const isDataCollection = isCollection(data);
111
+ Object.keys(data).forEach(key => {
112
+ const value = data[key];
113
+ if (isDataCollection && key !== '_metadata' && (0, _lodash.isPlainObject)(value) || isCollection(value)) {
114
+ value._metadata = metadata;
115
+ updateMetadataForChildCollections(value, metadata);
116
+ }
117
+ });
119
118
  }
120
- /**
121
- * Reducer for fetching and updating `models` in redux.
122
- *
123
- * Fetching state updated with every action.
124
- * Data updated on result received.
125
- * Data and fetchedDate NOT deleted on failed request. All data at key removed on MODEL_REMOVE_KEY.
126
- *
127
- * All actions require a `modelPath` key to function with this reducer.
128
- *
129
- * Arrays are converted to objects that represent a dictionary with the numeric id of the object used
130
- * as the key and the entire object used as the value
131
- *
132
- * @export
133
- * @param state The state of the models. Initially empty
134
- * @param action The action upon which we dispatch
135
- * @returns The updated state
119
+
120
+ /**
121
+ * Reducer for fetching and updating `models` in redux.
122
+ *
123
+ * Fetching state updated with every action.
124
+ * Data updated on result received.
125
+ * Data and fetchedDate NOT deleted on failed request. All data at key removed on MODEL_REMOVE_KEY.
126
+ *
127
+ * All actions require a `modelPath` key to function with this reducer.
128
+ *
129
+ * Arrays are converted to objects that represent a dictionary with the numeric id of the object used
130
+ * as the key and the entire object used as the value
131
+ *
132
+ * @export
133
+ * @param state The state of the models. Initially empty
134
+ * @param action The action upon which we dispatch
135
+ * @returns The updated state
136
136
  */
137
- function modelsReducer(state = {}, action) {
138
- if (!action.modelPath) {
139
- return state;
140
- }
141
- const path = action.modelPath.split('.');
142
- // the object value at the specified path
143
- let valueAtPath = (0, lodash_1.merge)({}, (0, lodash_1.get)(state, path));
144
- const metadata = getMetadata(state, path);
145
- let metadataUpdate;
146
- switch (action.type) {
147
- case actions_1.MODEL_FETCH_START_ACTION_TYPE.FETCH_START:
148
- // Retain the entity data, update the metadata to reflect fetch in request state
149
- metadataUpdate = {
150
- isFetching: true,
151
- hasError: false,
152
- lastFetchErrorData: undefined
153
- };
154
- valueAtPath._metadata = (0, lodash_1.merge)(metadata, metadataUpdate);
155
- if (action.guid) {
156
- valueAtPath.guid = action.guid;
157
- }
158
- return fp_1.default.setWith(Object, path, valueAtPath, state);
159
- case actions_1.MODEL_FETCH_RESULT_ACTION_TYPE.FETCH_RESULT_RECEIVED: {
160
- // Update the metadata to reflect fetch is complete.
161
- metadataUpdate = {
162
- isFetching: false,
163
- hasError: false,
164
- lastFetchErrorData: undefined,
165
- fetchedAt: new Date()
166
- };
167
- const incoming = !(0, lodash_1.isPlainObject)(action.data) && !(0, lodash_1.isArray)(action.data) ? { response: action.data } : action.data;
168
- updateMetadataForChildCollections(incoming, metadataUpdate);
169
- // merging the incoming with existing
170
- // otherwise completely replace the existing value in redux
171
- if (!action.replaceValue) {
172
- valueAtPath = merge(valueAtPath, incoming);
173
- }
174
- else {
175
- valueAtPath = (0, lodash_1.merge)({}, incoming);
176
- }
177
- valueAtPath._metadata = (0, lodash_1.merge)({}, metadata, metadataUpdate);
178
- const result = fp_1.default.setWith(Object, path, valueAtPath, state);
179
- return result;
137
+ function modelsReducer() {
138
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
139
+ let action = arguments.length > 1 ? arguments[1] : undefined;
140
+ if (!action.modelPath) {
141
+ return state;
142
+ }
143
+ const path = action.modelPath.split('.');
144
+ // the object value at the specified path
145
+ let valueAtPath = (0, _lodash.merge)({}, (0, _lodash.get)(state, path));
146
+ const metadata = getMetadata(state, path);
147
+ let metadataUpdate;
148
+ switch (action.type) {
149
+ case _actions.MODEL_FETCH_START_ACTION_TYPE.FETCH_START:
150
+ // Retain the entity data, update the metadata to reflect fetch in request state
151
+ metadataUpdate = {
152
+ isFetching: true,
153
+ hasError: false,
154
+ lastFetchErrorData: undefined
155
+ };
156
+ valueAtPath._metadata = (0, _lodash.merge)(metadata, metadataUpdate);
157
+ if (action.guid) {
158
+ valueAtPath.guid = action.guid;
159
+ }
160
+ return _fp2.default.setWith(Object, path, valueAtPath, state);
161
+ case _actions.MODEL_FETCH_RESULT_ACTION_TYPE.FETCH_RESULT_RECEIVED:
162
+ {
163
+ // Update the metadata to reflect fetch is complete.
164
+ metadataUpdate = {
165
+ isFetching: false,
166
+ hasError: false,
167
+ lastFetchErrorData: undefined,
168
+ fetchedAt: new Date()
169
+ };
170
+ const incoming = !(0, _lodash.isPlainObject)(action.data) && !(0, _lodash.isArray)(action.data) ? {
171
+ response: action.data
172
+ } : action.data;
173
+ updateMetadataForChildCollections(incoming, metadataUpdate);
174
+ // merging the incoming with existing
175
+ // otherwise completely replace the existing value in redux
176
+ if (!action.replaceValue) {
177
+ valueAtPath = merge(valueAtPath, incoming);
178
+ } else {
179
+ valueAtPath = (0, _lodash.merge)({}, incoming);
180
180
  }
181
- case actions_1.MODEL_FETCH_ERROR_ACTION_TYPE.FETCH_FAILED:
182
- // Retain the object, update the metadata to reflect the fact that the request failed
183
- metadataUpdate = {
184
- isFetching: false,
185
- hasError: true,
186
- lastFetchErrorData: action.errorData
187
- };
188
- valueAtPath._metadata = (0, lodash_1.merge)(metadata, metadataUpdate);
189
- if (action.guid) {
190
- valueAtPath.guid = action.guid;
191
- }
192
- return fp_1.default.setWith(Object, path, valueAtPath, state);
193
- case actions_1.MODEL_REMOVE_KEY_ACTION_TYPE:
194
- // Completely remove the object at the path from the state
195
- return fp_1.default.unset(path, state);
196
- default:
197
- return state;
198
- }
181
+ valueAtPath._metadata = (0, _lodash.merge)({}, metadata, metadataUpdate);
182
+ const result = _fp2.default.setWith(Object, path, valueAtPath, state);
183
+ return result;
184
+ }
185
+ case _actions.MODEL_FETCH_ERROR_ACTION_TYPE.FETCH_FAILED:
186
+ // Retain the object, update the metadata to reflect the fact that the request failed
187
+ metadataUpdate = {
188
+ isFetching: false,
189
+ hasError: true,
190
+ lastFetchErrorData: action.errorData
191
+ };
192
+ valueAtPath._metadata = (0, _lodash.merge)(metadata, metadataUpdate);
193
+ if (action.guid) {
194
+ valueAtPath.guid = action.guid;
195
+ }
196
+ return _fp2.default.setWith(Object, path, valueAtPath, state);
197
+ case _actions.MODEL_REMOVE_KEY_ACTION_TYPE:
198
+ // Completely remove the object at the path from the state
199
+ return _fp2.default.unset(path, state);
200
+ default:
201
+ return state;
202
+ }
199
203
  }
204
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9mcDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJnZXRNZXRhZGF0YSIsInN0YXRlIiwicGF0aCIsImxvZGFzaE1lcmdlIiwiZ2V0IiwiY29uY2F0IiwiaXNDb2xsZWN0aW9uIiwib2JqIiwiaXNBcnJheSIsImlzUGxhaW5PYmplY3QiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZXZlcnkiLCJrZXkiLCJjaGlsZCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImlkIiwicGFyc2VJbnQiLCJpc051bGxSZXNwb25zZSIsIm1lcmdlIiwiY3VycmVudCIsImluY29taW5nIiwiaXNVbmRlZmluZWQiLCJyZXN1bHQiLCJyZWR1Y2UiLCJvdXQiLCJrIiwiYyIsImkiLCJpc05pbCIsImZvckVhY2giLCJ1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMiLCJkYXRhIiwibWV0YWRhdGEiLCJpc0RhdGFDb2xsZWN0aW9uIiwidmFsdWUiLCJfbWV0YWRhdGEiLCJtb2RlbHNSZWR1Y2VyIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwibW9kZWxQYXRoIiwic3BsaXQiLCJ2YWx1ZUF0UGF0aCIsIm1ldGFkYXRhVXBkYXRlIiwidHlwZSIsIk1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFIiwiRkVUQ0hfU1RBUlQiLCJpc0ZldGNoaW5nIiwiaGFzRXJyb3IiLCJsYXN0RmV0Y2hFcnJvckRhdGEiLCJndWlkIiwiX2ZwIiwic2V0V2l0aCIsIk1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsImZldGNoZWRBdCIsIkRhdGUiLCJyZXNwb25zZSIsInJlcGxhY2VWYWx1ZSIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiRkVUQ0hfRkFJTEVEIiwiZXJyb3JEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsInVuc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3JlZHVjZXJzL21vZGVsc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgZ2V0LCBpc0FycmF5LCBpc05pbCwgaXNQbGFpbk9iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlIGFzIGxvZGFzaE1lcmdlIH0gZnJvbSAnbG9kYXNoJ1xyXG5pbXBvcnQgX2ZwIGZyb20gJ2xvZGFzaC9mcCdcclxuaW1wb3J0IHsgTWV0YWRhdGEsIE1vZGVsIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7XHJcblx0TU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUsXHJcblx0TU9ERUxfRkVUQ0hfUkVTVUxUX0FDVElPTl9UWVBFLFxyXG5cdE1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFLFxyXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXHJcblx0TW9kZWxTdG9yZUFjdGlvblxyXG59IGZyb20gJy4uL2FjdGlvbnMnXHJcblxyXG4vKipcclxuICogR2l2ZW4gdGhlIHN0YXRlIGFuZCBhIHBhdGggaW50byB0aGF0IHN0YXRlIG9iamVjdCwgcmV0dXJuIHRoZSBwcm9wIHRoYXRcclxuICogaXMgbmFtZWQgXCJfbWV0YWRhdGFcIlxyXG4gKlxyXG4gKiBAcGFyYW0gc3RhdGUgVGhlIHJlZHV4IHN0YXRlIG9iamVjdFxyXG4gKiBAcGFyYW0gcGF0aCBBbiBhcnJheSBvZiBrZXlzIHRoYXQgcmVwcmVzZW50IHRoZSBwYXRoIHRvIHRoZSBlbnRpdHkgaW4gcXVlc3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YShzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZ1tdKTogTWV0YWRhdGEge1xyXG5cdHJldHVybiBsb2Rhc2hNZXJnZSh7fSwgZ2V0KHN0YXRlLCBwYXRoLmNvbmNhdCgnX21ldGFkYXRhJykpKVxyXG59XHJcblxyXG4vKipcclxuICogR2V0IHdoZXRoZXIgb3Igbm90IGFuIG9iamVjdCBpcyBhIFwiY29sbGVjdGlvblwiIChpZCBrZXktdmFsdWUgZGljdGlvbmFyeSkuXHJcbiAqIEBwYXJhbSBvYmpcclxuICogQHJldHVybnMgQSBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xsZWN0aW9uKG9iajogYW55KSB7XHJcblx0cmV0dXJuIChcclxuXHRcdCFpc0FycmF5KG9iaikgJiZcclxuXHRcdGlzUGxhaW5PYmplY3Qob2JqKSAmJlxyXG5cdFx0T2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwICYmXHJcblx0XHRPYmplY3Qua2V5cyhvYmopLmV2ZXJ5KGtleSA9PiB7XHJcblx0XHRcdGNvbnN0IGNoaWxkID0gb2JqW2tleV1cclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRpc1BsYWluT2JqZWN0KGNoaWxkKSAmJlxyXG5cdFx0XHRcdChrZXkgPT09ICdfbWV0YWRhdGEnIHx8XHJcblx0XHRcdFx0XHQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoaWxkLCAnaWQnKSAmJlxyXG5cdFx0XHRcdFx0XHQoY2hpbGQuaWQgPT09IHBhcnNlSW50KGtleSwgMTApIHx8IGNoaWxkLmlkID09PSBrZXkpKSlcclxuXHRcdFx0KVxyXG5cdFx0fSlcclxuXHQpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgd2hldGhlciBvciBub3QgYW4gb2JqZWN0IGlzIGEgXCJudWxsIHJlc3BvbnNlXCIuXHJcbiAqIEBwYXJhbSBvYmpcclxuICogQHJldHVybnMgQSBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsUmVzcG9uc2Uob2JqOiBhbnkpIHtcclxuXHRyZXR1cm4gKFxyXG5cdFx0aXNQbGFpbk9iamVjdChvYmopICYmXHJcblx0XHRPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IDAgJiZcclxuXHRcdE9iamVjdC5rZXlzKG9iaikuZXZlcnkoa2V5ID0+IHtcclxuXHRcdFx0Y29uc3QgY2hpbGQgPSBvYmpba2V5XVxyXG5cdFx0XHRyZXR1cm4ga2V5ID09PSAnX21ldGFkYXRhJyB8fCAoa2V5ID09PSAncmVzcG9uc2UnICYmIGNoaWxkID09PSBudWxsKVxyXG5cdFx0fSlcclxuXHQpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNZXJnZSB0aGUgYGN1cnJlbnRgIGFuZCBgaW5jb21pbmdgIG9iamVjdHMgcmVjdXJzaXZlbHksIHJldHVybmluZyBhIG5ldyBjb21iaW5lZCBvYmplY3QuXHJcbiAqXHJcbiAqIEZvciBlYWNoIGtleSBpbiBgY3VycmVudGA6XHJcbiAqICogcmVtb3ZlIGlmIGBjdXJyZW50YCBpcyBhIFwiY29sbGVjdGlvblwiIGFuZCBpdGVtIGtleSBpcyBub3QgaW4gYGluY29taW5nYFxyXG4gKiAqIHJlY3Vyc2UgaWYgYGluY29taW5nYCBpcyBhbiBvYmplY3Qgb3IgYXJyYXkgYW5kIGhhcyBhIHZhbHVlXHJcbiAqICogb3IgcHJlc2VydmUgZXhpc3RpbmcgdmFsdWVcclxuICpcclxuICogRm9yIGVhY2gga2V5IGluIGBpbmNvbWluZ2Agbm90IGluIGBjdXJyZW50YDpcclxuICogKiBjb3B5IHZhbHVlIHRvIHJlc3VsdFxyXG4gKlxyXG4gKiBAcGFyYW0gY3VycmVudFxyXG4gKiBAcGFyYW0gaW5jb21pbmdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShjdXJyZW50OiBEaWN0aW9uYXJ5PGFueT4sIGluY29taW5nPzogRGljdGlvbmFyeTxhbnk+IHwgbnVsbCkge1xyXG5cdC8vIGRvIG5vdCBtZXJnZSBhcnJheXNcclxuXHRpZiAoaXNBcnJheShjdXJyZW50KSkge1xyXG5cdFx0cmV0dXJuICFpc1VuZGVmaW5lZChpbmNvbWluZykgPyBpbmNvbWluZyA6IGN1cnJlbnRcclxuXHR9XHJcblx0Ly8gaWYgaW5jb21pbmcgaXMgYG51bGxgIG9yIGEgbnVsbCByZXNwb25zZSAoYHsncmVzcG9uc2UnOiBudWxsfWApLCBkbyBub3QgbWVyZ2UsIGp1c3QgdXNlIGluY29taW5nXHJcblx0aWYgKGluY29taW5nID09PSBudWxsIHx8ICghaXNVbmRlZmluZWQoaW5jb21pbmcpICYmIGlzTnVsbFJlc3BvbnNlKGluY29taW5nKSkpIHtcclxuXHRcdHJldHVybiBpbmNvbWluZ1xyXG5cdH1cclxuXHRjb25zdCByZXN1bHQ6IERpY3Rpb25hcnk8YW55PiA9IE9iamVjdC5rZXlzKGN1cnJlbnQpLnJlZHVjZSgob3V0OiBEaWN0aW9uYXJ5PGFueT4sIGspID0+IHtcclxuXHRcdGNvbnN0IGMgPSBjdXJyZW50W2tdXHJcblx0XHRjb25zdCBpID0gaW5jb21pbmcgJiYgaW5jb21pbmdba11cclxuXHRcdC8vIG5vbi1yZWxhdGlvbnNcclxuXHRcdGlmICghaXNBcnJheShjKSAmJiAhaXNQbGFpbk9iamVjdChjKSkge1xyXG5cdFx0XHQvLyBjb3B5IGluY29taW5nIHZhbHVlLCBpZiBhbnksIG90aGVyd2lzZSBrZWVwIGN1cnJlbnRcclxuXHRcdFx0b3V0W2tdID0gIWlzVW5kZWZpbmVkKGkpID8gaSA6IGNcclxuXHRcdFx0cmV0dXJuIG91dFxyXG5cdFx0fVxyXG5cdFx0Ly8gcmVtb3ZlIFwiY29sbGVjdGlvblwiIGl0ZW0gbm90IGluY2x1ZGVkIGluIGluY29taW5nXHJcblx0XHRpZiAoKGlzQ29sbGVjdGlvbihjdXJyZW50KSB8fCBpc0NvbGxlY3Rpb24oaW5jb21pbmcpKSAmJiAhaXNVbmRlZmluZWQoaW5jb21pbmcpICYmIGlzVW5kZWZpbmVkKGkpKSB7XHJcblx0XHRcdHJldHVybiBvdXRcclxuXHRcdH1cclxuXHRcdC8vIG1lcmdlIHJlbGF0aW9uc1xyXG5cdFx0b3V0W2tdID0gbWVyZ2UoYywgaSlcclxuXHRcdHJldHVybiBvdXRcclxuXHR9LCB7fSlcclxuXHRpZiAoIWlzTmlsKGluY29taW5nKSAmJiBpc1BsYWluT2JqZWN0KGluY29taW5nKSkge1xyXG5cdFx0Ly8gY29weSBpbmNvbWluZyBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBvbiBjdXJyZW50XHJcblx0XHRPYmplY3Qua2V5cyhpbmNvbWluZykuZm9yRWFjaChrID0+IHtcclxuXHRcdFx0Y29uc3QgYyA9IGN1cnJlbnRba11cclxuXHRcdFx0Y29uc3QgaSA9IGluY29taW5nW2tdXHJcblx0XHRcdGlmIChpc1VuZGVmaW5lZChjKSkge1xyXG5cdFx0XHRcdHJlc3VsdFtrXSA9IGlcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblx0cmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG4vKipcclxuICogU2V0cyBgX21ldGFkYXRhYCBvbiBhbnkgbmVzdGVkIGNvbGxlY3Rpb25zIGFuZCBjb2xsZWN0aW9uIGl0ZW1zIGluIHRoZSBkYXRhXHJcbiAqIEBwYXJhbSBkYXRhXHJcbiAqIEBwYXJhbSBtZXRhZGF0YVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyhkYXRhOiBEaWN0aW9uYXJ5PGFueT4sIG1ldGFkYXRhOiBNZXRhZGF0YSkge1xyXG5cdGNvbnN0IGlzRGF0YUNvbGxlY3Rpb24gPSBpc0NvbGxlY3Rpb24oZGF0YSlcclxuXHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IGRhdGFba2V5XVxyXG5cdFx0aWYgKChpc0RhdGFDb2xsZWN0aW9uICYmIGtleSAhPT0gJ19tZXRhZGF0YScgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHx8IGlzQ29sbGVjdGlvbih2YWx1ZSkpIHtcclxuXHRcdFx0dmFsdWUuX21ldGFkYXRhID0gbWV0YWRhdGFcclxuXHRcdFx0dXBkYXRlTWV0YWRhdGFGb3JDaGlsZENvbGxlY3Rpb25zKHZhbHVlIGFzIG9iamVjdCwgbWV0YWRhdGEpXHJcblx0XHR9XHJcblx0fSlcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlZHVjZXIgZm9yIGZldGNoaW5nIGFuZCB1cGRhdGluZyBgbW9kZWxzYCBpbiByZWR1eC5cclxuICpcclxuICogRmV0Y2hpbmcgc3RhdGUgdXBkYXRlZCB3aXRoIGV2ZXJ5IGFjdGlvbi5cclxuICogRGF0YSB1cGRhdGVkIG9uIHJlc3VsdCByZWNlaXZlZC5cclxuICogRGF0YSBhbmQgZmV0Y2hlZERhdGUgTk9UIGRlbGV0ZWQgb24gZmFpbGVkIHJlcXVlc3QuIEFsbCBkYXRhIGF0IGtleSByZW1vdmVkIG9uIE1PREVMX1JFTU9WRV9LRVkuXHJcbiAqXHJcbiAqIEFsbCBhY3Rpb25zIHJlcXVpcmUgYSBgbW9kZWxQYXRoYCBrZXkgdG8gZnVuY3Rpb24gd2l0aCB0aGlzIHJlZHVjZXIuXHJcbiAqXHJcbiAqIEFycmF5cyBhcmUgY29udmVydGVkIHRvIG9iamVjdHMgdGhhdCByZXByZXNlbnQgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIG51bWVyaWMgaWQgb2YgdGhlIG9iamVjdCB1c2VkXHJcbiAqIGFzIHRoZSBrZXkgYW5kIHRoZSBlbnRpcmUgb2JqZWN0IHVzZWQgYXMgdGhlIHZhbHVlXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHBhcmFtIHN0YXRlIFRoZSBzdGF0ZSBvZiB0aGUgbW9kZWxzLiBJbml0aWFsbHkgZW1wdHlcclxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHVwb24gd2hpY2ggd2UgZGlzcGF0Y2hcclxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgc3RhdGVcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vZGVsc1JlZHVjZXIoc3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sIGFjdGlvbjogTW9kZWxTdG9yZUFjdGlvbikge1xyXG5cdGlmICghYWN0aW9uLm1vZGVsUGF0aCkge1xyXG5cdFx0cmV0dXJuIHN0YXRlXHJcblx0fVxyXG5cdGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gYWN0aW9uLm1vZGVsUGF0aC5zcGxpdCgnLicpXHJcblx0Ly8gdGhlIG9iamVjdCB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGhcclxuXHRsZXQgdmFsdWVBdFBhdGg6IE1vZGVsID0gbG9kYXNoTWVyZ2Uoe30sIGdldChzdGF0ZSwgcGF0aCkpXHJcblx0Y29uc3QgbWV0YWRhdGEgPSBnZXRNZXRhZGF0YShzdGF0ZSwgcGF0aClcclxuXHRsZXQgbWV0YWRhdGFVcGRhdGU6IE1ldGFkYXRhXHJcblxyXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcclxuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfU1RBUlRfQUNUSU9OX1RZUEUuRkVUQ0hfU1RBUlQ6XHJcblx0XHRcdC8vIFJldGFpbiB0aGUgZW50aXR5IGRhdGEsIHVwZGF0ZSB0aGUgbWV0YWRhdGEgdG8gcmVmbGVjdCBmZXRjaCBpbiByZXF1ZXN0IHN0YXRlXHJcblx0XHRcdG1ldGFkYXRhVXBkYXRlID0ge1xyXG5cdFx0XHRcdGlzRmV0Y2hpbmc6IHRydWUsXHJcblx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxyXG5cdFx0XHRcdGxhc3RGZXRjaEVycm9yRGF0YTogdW5kZWZpbmVkXHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVBdFBhdGguX21ldGFkYXRhID0gbG9kYXNoTWVyZ2UobWV0YWRhdGEsIG1ldGFkYXRhVXBkYXRlKVxyXG5cdFx0XHRpZiAoYWN0aW9uLmd1aWQpIHtcclxuXHRcdFx0XHR2YWx1ZUF0UGF0aC5ndWlkID0gYWN0aW9uLmd1aWRcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gX2ZwLnNldFdpdGgoT2JqZWN0LCBwYXRoLCB2YWx1ZUF0UGF0aCwgc3RhdGUpXHJcblxyXG5cdFx0Y2FzZSBNT0RFTF9GRVRDSF9SRVNVTFRfQUNUSU9OX1RZUEUuRkVUQ0hfUkVTVUxUX1JFQ0VJVkVEOiB7XHJcblx0XHRcdC8vIFVwZGF0ZSB0aGUgbWV0YWRhdGEgdG8gcmVmbGVjdCBmZXRjaCBpcyBjb21wbGV0ZS5cclxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XHJcblx0XHRcdFx0aXNGZXRjaGluZzogZmFsc2UsXHJcblx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxyXG5cdFx0XHRcdGxhc3RGZXRjaEVycm9yRGF0YTogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdGZldGNoZWRBdDogbmV3IERhdGUoKVxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IGluY29taW5nOiBvYmplY3QgPVxyXG5cdFx0XHRcdCFpc1BsYWluT2JqZWN0KGFjdGlvbi5kYXRhKSAmJiAhaXNBcnJheShhY3Rpb24uZGF0YSkgPyB7IHJlc3BvbnNlOiBhY3Rpb24uZGF0YSB9IDogYWN0aW9uLmRhdGFcclxuXHRcdFx0dXBkYXRlTWV0YWRhdGFGb3JDaGlsZENvbGxlY3Rpb25zKGluY29taW5nLCBtZXRhZGF0YVVwZGF0ZSlcclxuXHRcdFx0Ly8gbWVyZ2luZyB0aGUgaW5jb21pbmcgd2l0aCBleGlzdGluZ1xyXG5cdFx0XHQvLyBvdGhlcndpc2UgY29tcGxldGVseSByZXBsYWNlIHRoZSBleGlzdGluZyB2YWx1ZSBpbiByZWR1eFxyXG5cdFx0XHRpZiAoIWFjdGlvbi5yZXBsYWNlVmFsdWUpIHtcclxuXHRcdFx0XHR2YWx1ZUF0UGF0aCA9IG1lcmdlKHZhbHVlQXRQYXRoLCBpbmNvbWluZykgYXMgTW9kZWxcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR2YWx1ZUF0UGF0aCA9IGxvZGFzaE1lcmdlKHt9LCBpbmNvbWluZykgYXMgTW9kZWxcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZUF0UGF0aC5fbWV0YWRhdGEgPSBsb2Rhc2hNZXJnZSh7fSwgbWV0YWRhdGEsIG1ldGFkYXRhVXBkYXRlKVxyXG5cdFx0XHRjb25zdCByZXN1bHQgPSBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcclxuXHRcdFx0cmV0dXJuIHJlc3VsdFxyXG5cdFx0fVxyXG5cdFx0Y2FzZSBNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRS5GRVRDSF9GQUlMRUQ6XHJcblx0XHRcdC8vIFJldGFpbiB0aGUgb2JqZWN0LCB1cGRhdGUgdGhlIG1ldGFkYXRhIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGUgcmVxdWVzdCBmYWlsZWRcclxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XHJcblx0XHRcdFx0aXNGZXRjaGluZzogZmFsc2UsXHJcblx0XHRcdFx0aGFzRXJyb3I6IHRydWUsXHJcblx0XHRcdFx0bGFzdEZldGNoRXJyb3JEYXRhOiBhY3Rpb24uZXJyb3JEYXRhXHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVBdFBhdGguX21ldGFkYXRhID0gbG9kYXNoTWVyZ2UobWV0YWRhdGEsIG1ldGFkYXRhVXBkYXRlKVxyXG5cdFx0XHRpZiAoYWN0aW9uLmd1aWQpIHtcclxuXHRcdFx0XHR2YWx1ZUF0UGF0aC5ndWlkID0gYWN0aW9uLmd1aWRcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gX2ZwLnNldFdpdGgoT2JqZWN0LCBwYXRoLCB2YWx1ZUF0UGF0aCwgc3RhdGUpXHJcblxyXG5cdFx0Y2FzZSBNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFOlxyXG5cdFx0XHQvLyBDb21wbGV0ZWx5IHJlbW92ZSB0aGUgb2JqZWN0IGF0IHRoZSBwYXRoIGZyb20gdGhlIHN0YXRlXHJcblx0XHRcdHJldHVybiBfZnAudW5zZXQocGF0aCwgc3RhdGUpXHJcblxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxXQUFXQSxDQUFDQyxLQUE4QixFQUFFQyxJQUFjLEVBQVk7RUFDckYsT0FBTyxJQUFBQyxhQUFXLEVBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBQUMsV0FBRyxFQUFDSCxLQUFLLEVBQUVDLElBQUksQ0FBQ0csTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDN0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLFlBQVlBLENBQUNDLEdBQVEsRUFBRTtFQUN0QyxPQUNDLENBQUMsSUFBQUMsZUFBTyxFQUFDRCxHQUFHLENBQUMsSUFDYixJQUFBRSxxQkFBYSxFQUFDRixHQUFHLENBQUMsSUFDbEJHLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixHQUFHLENBQUMsQ0FBQ0ssTUFBTSxHQUFHLENBQUMsSUFDM0JGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixHQUFHLENBQUMsQ0FBQ00sS0FBSyxDQUFDQyxHQUFHLElBQUk7SUFDN0IsTUFBTUMsS0FBSyxHQUFHUixHQUFHLENBQUNPLEdBQUcsQ0FBQztJQUN0QixPQUNDLElBQUFMLHFCQUFhLEVBQUNNLEtBQUssQ0FBQyxLQUNuQkQsR0FBRyxLQUFLLFdBQVcsSUFDbEJKLE1BQU0sQ0FBQ00sU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUNoREEsS0FBSyxDQUFDSSxFQUFFLEtBQUtDLFFBQVEsQ0FBQ04sR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJQyxLQUFLLENBQUNJLEVBQUUsS0FBS0wsR0FBRyxDQUFFLENBQUM7RUFFMUQsQ0FBQyxDQUFDO0FBRUo7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNPLGNBQWNBLENBQUNkLEdBQVEsRUFBRTtFQUN4QyxPQUNDLElBQUFFLHFCQUFhLEVBQUNGLEdBQUcsQ0FBQyxJQUNsQkcsTUFBTSxDQUFDQyxJQUFJLENBQUNKLEdBQUcsQ0FBQyxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxJQUMzQkYsTUFBTSxDQUFDQyxJQUFJLENBQUNKLEdBQUcsQ0FBQyxDQUFDTSxLQUFLLENBQUNDLEdBQUcsSUFBSTtJQUM3QixNQUFNQyxLQUFLLEdBQUdSLEdBQUcsQ0FBQ08sR0FBRyxDQUFDO0lBQ3RCLE9BQU9BLEdBQUcsS0FBSyxXQUFXLElBQUtBLEdBQUcsS0FBSyxVQUFVLElBQUlDLEtBQUssS0FBSyxJQUFLO0VBQ3JFLENBQUMsQ0FBQztBQUVKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTTyxLQUFLQSxDQUFDQyxPQUF3QixFQUFFQyxRQUFpQyxFQUFFO0VBQ2xGO0VBQ0EsSUFBSSxJQUFBaEIsZUFBTyxFQUFDZSxPQUFPLENBQUMsRUFBRTtJQUNyQixPQUFPLENBQUMsSUFBQUUsbUJBQVcsRUFBQ0QsUUFBUSxDQUFDLEdBQUdBLFFBQVEsR0FBR0QsT0FBTztFQUNuRDtFQUNBO0VBQ0EsSUFBSUMsUUFBUSxLQUFLLElBQUksSUFBSyxDQUFDLElBQUFDLG1CQUFXLEVBQUNELFFBQVEsQ0FBQyxJQUFJSCxjQUFjLENBQUNHLFFBQVEsQ0FBRSxFQUFFO0lBQzlFLE9BQU9BLFFBQVE7RUFDaEI7RUFDQSxNQUFNRSxNQUF1QixHQUFHaEIsTUFBTSxDQUFDQyxJQUFJLENBQUNZLE9BQU8sQ0FBQyxDQUFDSSxNQUFNLENBQUMsQ0FBQ0MsR0FBb0IsRUFBRUMsQ0FBQyxLQUFLO0lBQ3hGLE1BQU1DLENBQUMsR0FBR1AsT0FBTyxDQUFDTSxDQUFDLENBQUM7SUFDcEIsTUFBTUUsQ0FBQyxHQUFHUCxRQUFRLElBQUlBLFFBQVEsQ0FBQ0ssQ0FBQyxDQUFDO0lBQ2pDO0lBQ0EsSUFBSSxDQUFDLElBQUFyQixlQUFPLEVBQUNzQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUFyQixxQkFBYSxFQUFDcUIsQ0FBQyxDQUFDLEVBQUU7TUFDckM7TUFDQUYsR0FBRyxDQUFDQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUFKLG1CQUFXLEVBQUNNLENBQUMsQ0FBQyxHQUFHQSxDQUFDLEdBQUdELENBQUM7TUFDaEMsT0FBT0YsR0FBRztJQUNYO0lBQ0E7SUFDQSxJQUFJLENBQUN0QixZQUFZLENBQUNpQixPQUFPLENBQUMsSUFBSWpCLFlBQVksQ0FBQ2tCLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBQUMsbUJBQVcsRUFBQ0QsUUFBUSxDQUFDLElBQUksSUFBQUMsbUJBQVcsRUFBQ00sQ0FBQyxDQUFDLEVBQUU7TUFDbEcsT0FBT0gsR0FBRztJQUNYO0lBQ0E7SUFDQUEsR0FBRyxDQUFDQyxDQUFDLENBQUMsR0FBR1AsS0FBSyxDQUFDUSxDQUFDLEVBQUVDLENBQUMsQ0FBQztJQUNwQixPQUFPSCxHQUFHO0VBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ04sSUFBSSxDQUFDLElBQUFJLGFBQUssRUFBQ1IsUUFBUSxDQUFDLElBQUksSUFBQWYscUJBQWEsRUFBQ2UsUUFBUSxDQUFDLEVBQUU7SUFDaEQ7SUFDQWQsTUFBTSxDQUFDQyxJQUFJLENBQUNhLFFBQVEsQ0FBQyxDQUFDUyxPQUFPLENBQUNKLENBQUMsSUFBSTtNQUNsQyxNQUFNQyxDQUFDLEdBQUdQLE9BQU8sQ0FBQ00sQ0FBQyxDQUFDO01BQ3BCLE1BQU1FLENBQUMsR0FBR1AsUUFBUSxDQUFDSyxDQUFDLENBQUM7TUFDckIsSUFBSSxJQUFBSixtQkFBVyxFQUFDSyxDQUFDLENBQUMsRUFBRTtRQUNuQkosTUFBTSxDQUFDRyxDQUFDLENBQUMsR0FBR0UsQ0FBQztNQUNkO0lBQ0QsQ0FBQyxDQUFDO0VBQ0g7RUFDQSxPQUFPTCxNQUFNO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNRLGlDQUFpQ0EsQ0FBQ0MsSUFBcUIsRUFBRUMsUUFBa0IsRUFBRTtFQUM1RixNQUFNQyxnQkFBZ0IsR0FBRy9CLFlBQVksQ0FBQzZCLElBQUksQ0FBQztFQUMzQ3pCLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDd0IsSUFBSSxDQUFDLENBQUNGLE9BQU8sQ0FBQ25CLEdBQUcsSUFBSTtJQUNoQyxNQUFNd0IsS0FBSyxHQUFHSCxJQUFJLENBQUNyQixHQUFHLENBQUM7SUFDdkIsSUFBS3VCLGdCQUFnQixJQUFJdkIsR0FBRyxLQUFLLFdBQVcsSUFBSSxJQUFBTCxxQkFBYSxFQUFDNkIsS0FBSyxDQUFDLElBQUtoQyxZQUFZLENBQUNnQyxLQUFLLENBQUMsRUFBRTtNQUM3RkEsS0FBSyxDQUFDQyxTQUFTLEdBQUdILFFBQVE7TUFDMUJGLGlDQUFpQyxDQUFDSSxLQUFLLEVBQVlGLFFBQVEsQ0FBQztJQUM3RDtFQUNELENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTSSxhQUFhQSxDQUFBLEVBQWdFO0VBQUEsSUFBL0R2QyxLQUE4QixHQUFBd0MsU0FBQSxDQUFBN0IsTUFBQSxRQUFBNkIsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxJQUFFRSxNQUF3QixHQUFBRixTQUFBLENBQUE3QixNQUFBLE9BQUE2QixTQUFBLE1BQUFDLFNBQUE7RUFDbEcsSUFBSSxDQUFDQyxNQUFNLENBQUNDLFNBQVMsRUFBRTtJQUN0QixPQUFPM0MsS0FBSztFQUNiO0VBQ0EsTUFBTUMsSUFBYyxHQUFHeUMsTUFBTSxDQUFDQyxTQUFTLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUM7RUFDbEQ7RUFDQSxJQUFJQyxXQUFrQixHQUFHLElBQUEzQyxhQUFXLEVBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBQUMsV0FBRyxFQUFDSCxLQUFLLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQzFELE1BQU1rQyxRQUFRLEdBQUdwQyxXQUFXLENBQUNDLEtBQUssRUFBRUMsSUFBSSxDQUFDO0VBQ3pDLElBQUk2QyxjQUF3QjtFQUU1QixRQUFRSixNQUFNLENBQUNLLElBQUk7SUFDbEIsS0FBS0Msc0NBQTZCLENBQUNDLFdBQVc7TUFDN0M7TUFDQUgsY0FBYyxHQUFHO1FBQ2hCSSxVQUFVLEVBQUUsSUFBSTtRQUNoQkMsUUFBUSxFQUFFLEtBQUs7UUFDZkMsa0JBQWtCLEVBQUVYO01BQ3JCLENBQUM7TUFDREksV0FBVyxDQUFDUCxTQUFTLEdBQUcsSUFBQXBDLGFBQVcsRUFBQ2lDLFFBQVEsRUFBRVcsY0FBYyxDQUFDO01BQzdELElBQUlKLE1BQU0sQ0FBQ1csSUFBSSxFQUFFO1FBQ2hCUixXQUFXLENBQUNRLElBQUksR0FBR1gsTUFBTSxDQUFDVyxJQUFJO01BQy9CO01BQ0EsT0FBT0MsWUFBRyxDQUFDQyxPQUFPLENBQUM5QyxNQUFNLEVBQUVSLElBQUksRUFBRTRDLFdBQVcsRUFBRTdDLEtBQUssQ0FBQztJQUVyRCxLQUFLd0QsdUNBQThCLENBQUNDLHFCQUFxQjtNQUFFO1FBQzFEO1FBQ0FYLGNBQWMsR0FBRztVQUNoQkksVUFBVSxFQUFFLEtBQUs7VUFDakJDLFFBQVEsRUFBRSxLQUFLO1VBQ2ZDLGtCQUFrQixFQUFFWCxTQUFTO1VBQzdCaUIsU0FBUyxFQUFFLElBQUlDLElBQUksQ0FBQztRQUNyQixDQUFDO1FBQ0QsTUFBTXBDLFFBQWdCLEdBQ3JCLENBQUMsSUFBQWYscUJBQWEsRUFBQ2tDLE1BQU0sQ0FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBM0IsZUFBTyxFQUFDbUMsTUFBTSxDQUFDUixJQUFJLENBQUMsR0FBRztVQUFFMEIsUUFBUSxFQUFFbEIsTUFBTSxDQUFDUjtRQUFLLENBQUMsR0FBR1EsTUFBTSxDQUFDUixJQUFJO1FBQy9GRCxpQ0FBaUMsQ0FBQ1YsUUFBUSxFQUFFdUIsY0FBYyxDQUFDO1FBQzNEO1FBQ0E7UUFDQSxJQUFJLENBQUNKLE1BQU0sQ0FBQ21CLFlBQVksRUFBRTtVQUN6QmhCLFdBQVcsR0FBR3hCLEtBQUssQ0FBQ3dCLFdBQVcsRUFBRXRCLFFBQVEsQ0FBVTtRQUNwRCxDQUFDLE1BQU07VUFDTnNCLFdBQVcsR0FBRyxJQUFBM0MsYUFBVyxFQUFDLENBQUMsQ0FBQyxFQUFFcUIsUUFBUSxDQUFVO1FBQ2pEO1FBQ0FzQixXQUFXLENBQUNQLFNBQVMsR0FBRyxJQUFBcEMsYUFBVyxFQUFDLENBQUMsQ0FBQyxFQUFFaUMsUUFBUSxFQUFFVyxjQUFjLENBQUM7UUFDakUsTUFBTXJCLE1BQU0sR0FBRzZCLFlBQUcsQ0FBQ0MsT0FBTyxDQUFDOUMsTUFBTSxFQUFFUixJQUFJLEVBQUU0QyxXQUFXLEVBQUU3QyxLQUFLLENBQUM7UUFDNUQsT0FBT3lCLE1BQU07TUFDZDtJQUNBLEtBQUtxQyxzQ0FBNkIsQ0FBQ0MsWUFBWTtNQUM5QztNQUNBakIsY0FBYyxHQUFHO1FBQ2hCSSxVQUFVLEVBQUUsS0FBSztRQUNqQkMsUUFBUSxFQUFFLElBQUk7UUFDZEMsa0JBQWtCLEVBQUVWLE1BQU0sQ0FBQ3NCO01BQzVCLENBQUM7TUFDRG5CLFdBQVcsQ0FBQ1AsU0FBUyxHQUFHLElBQUFwQyxhQUFXLEVBQUNpQyxRQUFRLEVBQUVXLGNBQWMsQ0FBQztNQUM3RCxJQUFJSixNQUFNLENBQUNXLElBQUksRUFBRTtRQUNoQlIsV0FBVyxDQUFDUSxJQUFJLEdBQUdYLE1BQU0sQ0FBQ1csSUFBSTtNQUMvQjtNQUNBLE9BQU9DLFlBQUcsQ0FBQ0MsT0FBTyxDQUFDOUMsTUFBTSxFQUFFUixJQUFJLEVBQUU0QyxXQUFXLEVBQUU3QyxLQUFLLENBQUM7SUFFckQsS0FBS2lFLHFDQUE0QjtNQUNoQztNQUNBLE9BQU9YLFlBQUcsQ0FBQ1ksS0FBSyxDQUFDakUsSUFBSSxFQUFFRCxLQUFLLENBQUM7SUFFOUI7TUFDQyxPQUFPQSxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,23 +1,29 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = notificationsReducer;
4
- const lodash_1 = require("lodash");
5
- const NotificationAction_1 = require("../actions/NotificationAction");
7
+ var _lodash = require("lodash");
8
+ var _NotificationAction = require("../actions/NotificationAction");
6
9
  const initialState = {
7
- queue: []
10
+ queue: []
8
11
  };
9
- function notificationsReducer(state = initialState, action) {
10
- let updatedState;
11
- switch (action.type) {
12
- case NotificationAction_1.NOTIFICATION_ACTION_TYPE.ADD_NOTIFICATION:
13
- updatedState = (0, lodash_1.merge)({}, state);
14
- updatedState.queue.push(action.notification);
15
- return updatedState;
16
- case NotificationAction_1.NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION:
17
- updatedState = (0, lodash_1.merge)({}, state);
18
- updatedState.queue = updatedState.queue.filter(n => n.id !== action.notification.id);
19
- return updatedState;
20
- default:
21
- return state;
22
- }
12
+ function notificationsReducer() {
13
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
14
+ let action = arguments.length > 1 ? arguments[1] : undefined;
15
+ let updatedState;
16
+ switch (action.type) {
17
+ case _NotificationAction.NOTIFICATION_ACTION_TYPE.ADD_NOTIFICATION:
18
+ updatedState = (0, _lodash.merge)({}, state);
19
+ updatedState.queue.push(action.notification);
20
+ return updatedState;
21
+ case _NotificationAction.NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION:
22
+ updatedState = (0, _lodash.merge)({}, state);
23
+ updatedState.queue = updatedState.queue.filter(n => n.id !== action.notification.id);
24
+ return updatedState;
25
+ default:
26
+ return state;
27
+ }
23
28
  }
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9Ob3RpZmljYXRpb25BY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJxdWV1ZSIsIm5vdGlmaWNhdGlvbnNSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ1cGRhdGVkU3RhdGUiLCJ0eXBlIiwiTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFIiwiQUREX05PVElGSUNBVElPTiIsIm1lcmdlIiwicHVzaCIsIm5vdGlmaWNhdGlvbiIsIlJFTU9WRV9OT1RJRklDQVRJT04iLCJmaWx0ZXIiLCJuIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvcmVkdWNlcnMvbm90aWZpY2F0aW9uc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL05vdGlmaWNhdGlvbidcclxuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLCBOb3RpZmljYXRpb25BY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL05vdGlmaWNhdGlvbkFjdGlvbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uU3RhdGUge1xyXG5cdHF1ZXVlOiBOb3RpZmljYXRpb25bXVxyXG59XHJcblxyXG5jb25zdCBpbml0aWFsU3RhdGU6IE5vdGlmaWNhdGlvblN0YXRlID0ge1xyXG5cdHF1ZXVlOiBbXVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3RpZmljYXRpb25zUmVkdWNlcihzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBOb3RpZmljYXRpb25BY3Rpb24pIHtcclxuXHRsZXQgdXBkYXRlZFN0YXRlOiBOb3RpZmljYXRpb25TdGF0ZVxyXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcclxuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLkFERF9OT1RJRklDQVRJT046XHJcblx0XHRcdHVwZGF0ZWRTdGF0ZSA9IG1lcmdlKHt9LCBzdGF0ZSlcclxuXHRcdFx0dXBkYXRlZFN0YXRlLnF1ZXVlLnB1c2goYWN0aW9uLm5vdGlmaWNhdGlvbilcclxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxyXG5cdFx0Y2FzZSBOT1RJRklDQVRJT05fQUNUSU9OX1RZUEUuUkVNT1ZFX05PVElGSUNBVElPTjpcclxuXHRcdFx0dXBkYXRlZFN0YXRlID0gbWVyZ2Uoe30sIHN0YXRlKVxyXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUgPSB1cGRhdGVkU3RhdGUucXVldWUuZmlsdGVyKG4gPT4gbi5pZCAhPT0gYWN0aW9uLm5vdGlmaWNhdGlvbi5pZClcclxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQU1BLE1BQU1FLFlBQStCLEdBQUc7RUFDdkNDLEtBQUssRUFBRTtBQUNSLENBQUM7QUFFYyxTQUFTQyxvQkFBb0JBLENBQUEsRUFBbUQ7RUFBQSxJQUFsREMsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBR0osWUFBWTtFQUFBLElBQUVPLE1BQTBCLEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFDNUYsSUFBSUUsWUFBK0I7RUFDbkMsUUFBUUQsTUFBTSxDQUFDRSxJQUFJO0lBQ2xCLEtBQUtDLDRDQUF3QixDQUFDQyxnQkFBZ0I7TUFDN0NILFlBQVksR0FBRyxJQUFBSSxhQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQUVULEtBQUssQ0FBQztNQUMvQkssWUFBWSxDQUFDUCxLQUFLLENBQUNZLElBQUksQ0FBQ04sTUFBTSxDQUFDTyxZQUFZLENBQUM7TUFDNUMsT0FBT04sWUFBWTtJQUNwQixLQUFLRSw0Q0FBd0IsQ0FBQ0ssbUJBQW1CO01BQ2hEUCxZQUFZLEdBQUcsSUFBQUksYUFBSyxFQUFDLENBQUMsQ0FBQyxFQUFFVCxLQUFLLENBQUM7TUFDL0JLLFlBQVksQ0FBQ1AsS0FBSyxHQUFHTyxZQUFZLENBQUNQLEtBQUssQ0FBQ2UsTUFBTSxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsRUFBRSxLQUFLWCxNQUFNLENBQUNPLFlBQVksQ0FBQ0ksRUFBRSxDQUFDO01BQ3BGLE9BQU9WLFlBQVk7SUFDcEI7TUFDQyxPQUFPTCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,23 +1,29 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = searchReducer;
4
- const lodash_1 = require("lodash");
5
- const SearchAction_1 = require("../actions/SearchAction");
6
- /**
7
- * Store the state of a manage component's search parameters so the params can be
8
- * re-applied later when revisiting the same component
9
- *
10
- * @export
11
- * @param {*} [state={}]
12
- * @param {*} action
13
- * @returns
7
+ var _lodash = require("lodash");
8
+ var _SearchAction = require("../actions/SearchAction");
9
+ /**
10
+ * Store the state of a manage component's search parameters so the params can be
11
+ * re-applied later when revisiting the same component
12
+ *
13
+ * @export
14
+ * @param {*} [state={}]
15
+ * @param {*} action
16
+ * @returns
14
17
  */
15
- function searchReducer(state = {}, action) {
16
- switch (action.type) {
17
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
18
- case SearchAction_1.SEARCH_ACTION_TYPE.PERSIST_SEARCH:
19
- return (0, lodash_1.mergeWith)({}, state, action.data, (target, source) => ((0, lodash_1.isArray)(source) ? source : undefined));
20
- default:
21
- return state;
22
- }
18
+ function searchReducer() {
19
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
+ let action = arguments.length > 1 ? arguments[1] : undefined;
21
+ switch (action.type) {
22
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
23
+ case _SearchAction.SEARCH_ACTION_TYPE.PERSIST_SEARCH:
24
+ return (0, _lodash.mergeWith)({}, state, action.data, (target, source) => (0, _lodash.isArray)(source) ? source : undefined);
25
+ default:
26
+ return state;
27
+ }
23
28
  }
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9TZWFyY2hBY3Rpb24iLCJzZWFyY2hSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ0eXBlIiwiU0VBUkNIX0FDVElPTl9UWVBFIiwiUEVSU0lTVF9TRUFSQ0giLCJtZXJnZVdpdGgiLCJkYXRhIiwidGFyZ2V0Iiwic291cmNlIiwiaXNBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9yZWR1Y2Vycy9zZWFyY2hSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnksIGlzQXJyYXksIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgU0VBUkNIX0FDVElPTl9UWVBFLCBTZWFyY2hBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL1NlYXJjaEFjdGlvbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoU3RhdGUgZXh0ZW5kcyBEaWN0aW9uYXJ5PGFueT4ge31cclxuXHJcbi8qKlxyXG4gKiBTdG9yZSB0aGUgc3RhdGUgb2YgYSBtYW5hZ2UgY29tcG9uZW50J3Mgc2VhcmNoIHBhcmFtZXRlcnMgc28gdGhlIHBhcmFtcyBjYW4gYmVcclxuICogcmUtYXBwbGllZCBsYXRlciB3aGVuIHJldmlzaXRpbmcgdGhlIHNhbWUgY29tcG9uZW50XHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHBhcmFtIHsqfSBbc3RhdGU9e31dXHJcbiAqIEBwYXJhbSB7Kn0gYWN0aW9uXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWFyY2hSZWR1Y2VyKHN0YXRlOiBTZWFyY2hTdGF0ZSA9IHt9LCBhY3Rpb246IFNlYXJjaEFjdGlvbikge1xyXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcclxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXHJcblx0XHRjYXNlIFNFQVJDSF9BQ1RJT05fVFlQRS5QRVJTSVNUX1NFQVJDSDpcclxuXHRcdFx0cmV0dXJuIG1lcmdlV2l0aCh7fSwgc3RhdGUsIGFjdGlvbi5kYXRhLCAodGFyZ2V0LCBzb3VyY2UpID0+IChpc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UgOiB1bmRlZmluZWQpKVxyXG5cclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdHJldHVybiBzdGF0ZVxyXG5cdH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFNBQVNFLGFBQWFBLENBQUEsRUFBZ0Q7RUFBQSxJQUEvQ0MsS0FBa0IsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsSUFBRUcsTUFBb0IsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLE9BQUFELFNBQUEsTUFBQUUsU0FBQTtFQUNsRixRQUFRQyxNQUFNLENBQUNDLElBQUk7SUFDbEI7SUFDQSxLQUFLQyxnQ0FBa0IsQ0FBQ0MsY0FBYztNQUNyQyxPQUFPLElBQUFDLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQUVSLEtBQUssRUFBRUksTUFBTSxDQUFDSyxJQUFJLEVBQUUsQ0FBQ0MsTUFBTSxFQUFFQyxNQUFNLEtBQU0sSUFBQUMsZUFBTyxFQUFDRCxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHUixTQUFVLENBQUM7SUFFckc7TUFDQyxPQUFPSCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,22 +1,26 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = appInsightsSaga;
4
- const effects_1 = require("redux-saga/effects");
5
- const constants_1 = require("../../constants");
6
- const actions_1 = require("../actions");
7
+ var _effects = require("redux-saga/effects");
8
+ var _constants = require("../../constants");
9
+ var _actions = require("../actions");
7
10
  function* appInsightsSaga() {
8
- const appConfig = (0, constants_1.getAppConfig)();
9
- const appInsightsKey = appConfig.APP_INSIGHTS_CONNECTION_STRING;
10
- if (!appInsightsKey) {
11
- return;
12
- }
13
- const appInsights = (0, constants_1.getAppInsights)();
14
- while (true) {
15
- const userInfoResponse = yield (0, effects_1.take)((action) => (0, actions_1.isModelFetchResultAction)(action) && action.modelPath === 'user.userInfo');
16
- const userId = userInfoResponse.data.id;
17
- appInsights.setAuthenticatedUserContext(userId, undefined, true);
18
- yield (0, effects_1.take)(actions_1.AUTH_ACTION_TYPE.LOG_OUT_REQUESTED);
19
- appInsights.clearAuthenticatedUserContext();
20
- yield (0, effects_1.take)(actions_1.AUTH_TOKEN_SUCCESS_ACTION_TYPE.GET_TOKEN_SUCCEEDED);
21
- }
11
+ const appConfig = (0, _constants.getAppConfig)();
12
+ const appInsightsKey = appConfig.APP_INSIGHTS_CONNECTION_STRING;
13
+ if (!appInsightsKey) {
14
+ return;
15
+ }
16
+ const appInsights = (0, _constants.getAppInsights)();
17
+ while (true) {
18
+ const userInfoResponse = yield (0, _effects.take)(action => (0, _actions.isModelFetchResultAction)(action) && action.modelPath === 'user.userInfo');
19
+ const userId = userInfoResponse.data.id;
20
+ appInsights.setAuthenticatedUserContext(userId, undefined, true);
21
+ yield (0, _effects.take)(_actions.AUTH_ACTION_TYPE.LOG_OUT_REQUESTED);
22
+ appInsights.clearAuthenticatedUserContext();
23
+ yield (0, _effects.take)(_actions.AUTH_TOKEN_SUCCESS_ACTION_TYPE.GET_TOKEN_SUCCEEDED);
24
+ }
22
25
  }
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2FjdGlvbnMiLCJhcHBJbnNpZ2h0c1NhZ2EiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJhcHBJbnNpZ2h0c0tleSIsIkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklORyIsImFwcEluc2lnaHRzIiwiZ2V0QXBwSW5zaWdodHMiLCJ1c2VySW5mb1Jlc3BvbnNlIiwidGFrZSIsImFjdGlvbiIsImlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiIsIm1vZGVsUGF0aCIsInVzZXJJZCIsImRhdGEiLCJpZCIsInNldEF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCIsInVuZGVmaW5lZCIsIkFVVEhfQUNUSU9OX1RZUEUiLCJMT0dfT1VUX1JFUVVFU1RFRCIsImNsZWFyQXV0aGVudGljYXRlZFVzZXJDb250ZXh0IiwiQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFIiwiR0VUX1RPS0VOX1NVQ0NFRURFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9zYWdhcy9hcHBJbnNpZ2h0c1NhZ2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55QWN0aW9uIH0gZnJvbSAncmVkdXgnXHJcbmltcG9ydCB7IFNhZ2FJdGVyYXRvciB9IGZyb20gJ3JlZHV4LXNhZ2EnXHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnXHJcbmltcG9ydCB7IGdldEFwcENvbmZpZywgZ2V0QXBwSW5zaWdodHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnXHJcbmltcG9ydCB7IEFVVEhfQUNUSU9OX1RZUEUsIEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSwgaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucydcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBhcHBJbnNpZ2h0c1NhZ2EoKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGNvbnN0IGFwcEluc2lnaHRzS2V5ID0gYXBwQ29uZmlnLkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklOR1xyXG5cdGlmICghYXBwSW5zaWdodHNLZXkpIHtcclxuXHRcdHJldHVyblxyXG5cdH1cclxuXHRjb25zdCBhcHBJbnNpZ2h0cyA9IGdldEFwcEluc2lnaHRzKClcclxuXHR3aGlsZSAodHJ1ZSkge1xyXG5cdFx0Y29uc3QgdXNlckluZm9SZXNwb25zZSA9IHlpZWxkIHRha2UoXHJcblx0XHRcdChhY3Rpb246IEFueUFjdGlvbikgPT4gaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gJ3VzZXIudXNlckluZm8nXHJcblx0XHQpXHJcblx0XHRjb25zdCB1c2VySWQ6IHN0cmluZyA9IHVzZXJJbmZvUmVzcG9uc2UuZGF0YS5pZFxyXG5cdFx0YXBwSW5zaWdodHMuc2V0QXV0aGVudGljYXRlZFVzZXJDb250ZXh0KHVzZXJJZCwgdW5kZWZpbmVkLCB0cnVlKVxyXG5cdFx0eWllbGQgdGFrZShBVVRIX0FDVElPTl9UWVBFLkxPR19PVVRfUkVRVUVTVEVEKVxyXG5cdFx0YXBwSW5zaWdodHMuY2xlYXJBdXRoZW50aWNhdGVkVXNlckNvbnRleHQoKVxyXG5cdFx0eWllbGQgdGFrZShBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuR0VUX1RPS0VOX1NVQ0NFRURFRClcclxuXHR9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFZSxVQUFVRyxlQUFlQSxDQUFBLEVBQWlCO0VBQ3hELE1BQU1DLFNBQVMsR0FBRyxJQUFBQyx1QkFBWSxFQUFDLENBQUM7RUFDaEMsTUFBTUMsY0FBYyxHQUFHRixTQUFTLENBQUNHLDhCQUE4QjtFQUMvRCxJQUFJLENBQUNELGNBQWMsRUFBRTtJQUNwQjtFQUNEO0VBQ0EsTUFBTUUsV0FBVyxHQUFHLElBQUFDLHlCQUFjLEVBQUMsQ0FBQztFQUNwQyxPQUFPLElBQUksRUFBRTtJQUNaLE1BQU1DLGdCQUFnQixHQUFHLE1BQU0sSUFBQUMsYUFBSSxFQUNqQ0MsTUFBaUIsSUFBSyxJQUFBQyxpQ0FBd0IsRUFBQ0QsTUFBTSxDQUFDLElBQUlBLE1BQU0sQ0FBQ0UsU0FBUyxLQUFLLGVBQ2pGLENBQUM7SUFDRCxNQUFNQyxNQUFjLEdBQUdMLGdCQUFnQixDQUFDTSxJQUFJLENBQUNDLEVBQUU7SUFDL0NULFdBQVcsQ0FBQ1UsMkJBQTJCLENBQUNILE1BQU0sRUFBRUksU0FBUyxFQUFFLElBQUksQ0FBQztJQUNoRSxNQUFNLElBQUFSLGFBQUksRUFBQ1MseUJBQWdCLENBQUNDLGlCQUFpQixDQUFDO0lBQzlDYixXQUFXLENBQUNjLDZCQUE2QixDQUFDLENBQUM7SUFDM0MsTUFBTSxJQUFBWCxhQUFJLEVBQUNZLHVDQUE4QixDQUFDQyxtQkFBbUIsQ0FBQztFQUMvRDtBQUNEIiwiaWdub3JlTGlzdCI6W119