react-elmish 7.0.1 → 7.1.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 (39) hide show
  1. package/README.md +28 -0
  2. package/dist/Common.d.ts +1 -1
  3. package/dist/Common.js +21 -9
  4. package/dist/ElmComponent.d.ts +2 -2
  5. package/dist/ElmComponent.js +30 -30
  6. package/dist/ErrorHandling.d.ts +1 -1
  7. package/dist/ErrorHandling.js +2 -2
  8. package/dist/Init.d.ts +2 -2
  9. package/dist/Init.js +1 -1
  10. package/dist/Testing/createModelAndProps.d.ts +3 -0
  11. package/dist/Testing/createModelAndProps.js +26 -0
  12. package/dist/Testing/createUpdateArgsFactory.d.ts +3 -2
  13. package/dist/Testing/createUpdateArgsFactory.js +5 -5
  14. package/dist/Testing/execCmd.d.ts +3 -1
  15. package/dist/Testing/execCmd.js +38 -3
  16. package/dist/Testing/getCreateUpdateArgs.d.ts +14 -2
  17. package/dist/Testing/getCreateUpdateArgs.js +26 -17
  18. package/dist/Testing/getUpdateFn.d.ts +2 -2
  19. package/dist/Testing/getUpdateFn.js +10 -9
  20. package/dist/Testing/index.d.ts +6 -5
  21. package/dist/Testing/index.js +14 -1
  22. package/dist/Testing/initAndExecCmd.d.ts +1 -1
  23. package/dist/Testing/initAndExecCmd.js +3 -3
  24. package/dist/Testing/renderWithModel.d.ts +2 -2
  25. package/dist/Testing/renderWithModel.js +5 -5
  26. package/dist/Testing/runSubscription.d.ts +5 -0
  27. package/dist/Testing/runSubscription.js +22 -0
  28. package/dist/Types.d.ts +3 -3
  29. package/dist/Types.js +1 -1
  30. package/dist/cmd.d.ts +49 -49
  31. package/dist/cmd.js +49 -49
  32. package/dist/{Testing/fakeOptions.d.ts → fakeOptions.d.ts} +3 -3
  33. package/dist/fakeOptions.js +31 -0
  34. package/dist/index.d.ts +6 -6
  35. package/dist/index.js +2 -2
  36. package/dist/useElmish.d.ts +3 -3
  37. package/dist/useElmish.js +46 -39
  38. package/package.json +17 -16
  39. package/dist/Testing/fakeOptions.js +0 -31
package/dist/cmd.js CHANGED
@@ -32,12 +32,12 @@ var cmd = {
32
32
  return [sub];
33
33
  },
34
34
  /**
35
- * Creates a command out of a function and maps the result. This can also be an async function.
36
- * @param task The function to call.
37
- * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
38
- * @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
39
- * @param args The parameters of the task.
40
- */
35
+ * Creates a command out of a function and maps the result. This can also be an async function.
36
+ * @param task The function to call.
37
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
38
+ * @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
39
+ * @param args The parameters of the task.
40
+ */
41
41
  ofEither: function ofEither(task, ofSuccess, ofError) {
42
42
  for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
43
43
  args[_key2 - 3] = arguments[_key2];
@@ -57,11 +57,11 @@ var cmd = {
57
57
  return [bind];
58
58
  },
59
59
  /**
60
- * Creates a command out of a function and ignores the error case. This can also be an async function.
61
- * @param task The async function to call.
62
- * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
63
- * @param args The parameters of the task.
64
- */
60
+ * Creates a command out of a function and ignores the error case. This can also be an async function.
61
+ * @param task The async function to call.
62
+ * @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
63
+ * @param args The parameters of the task.
64
+ */
65
65
  ofSuccess: function ofSuccess(task, _ofSuccess) {
66
66
  for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
67
67
  args[_key3 - 2] = arguments[_key3];
@@ -80,11 +80,11 @@ var cmd = {
80
80
  return [bind];
81
81
  },
82
82
  /**
83
- * Creates a command out of a function and ignores the success case. This can also be an async function.
84
- * @param task The function to call.
85
- * @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
86
- * @param args The parameters of the task.
87
- */
83
+ * Creates a command out of a function and ignores the success case. This can also be an async function.
84
+ * @param task The function to call.
85
+ * @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
86
+ * @param args The parameters of the task.
87
+ */
88
88
  ofError: function ofError(task, _ofError) {
89
89
  for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
90
90
  args[_key4 - 2] = arguments[_key4];
@@ -108,12 +108,12 @@ var cmd = {
108
108
  */
109
109
  ofFunc: {
110
110
  /**
111
- * Creates a command out of a simple function and maps the result.
112
- * @param task The function to call.
113
- * @param ofSuccess Creates the message to dispatch after a successful call of the task.
114
- * @param ofError Creates the message to dispatch when an error occurred.
115
- * @param args The parameters of the task.
116
- */
111
+ * Creates a command out of a simple function and maps the result.
112
+ * @param task The function to call.
113
+ * @param ofSuccess Creates the message to dispatch after a successful call of the task.
114
+ * @param ofError Creates the message to dispatch when an error occurred.
115
+ * @param args The parameters of the task.
116
+ */
117
117
  either: function either(task, ofSuccess, ofError) {
118
118
  for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
119
119
  args[_key5 - 3] = arguments[_key5];
@@ -129,11 +129,11 @@ var cmd = {
129
129
  return [bind];
130
130
  },
131
131
  /**
132
- * Creates a command out of a simple function and ignores the error case.
133
- * @param task The function to call.
134
- * @param ofSuccess Creates the message to dispatch after a successful call of the task.
135
- * @param args The parameters of the task.
136
- */
132
+ * Creates a command out of a simple function and ignores the error case.
133
+ * @param task The function to call.
134
+ * @param ofSuccess Creates the message to dispatch after a successful call of the task.
135
+ * @param args The parameters of the task.
136
+ */
137
137
  perform: function perform(task, ofSuccess) {
138
138
  for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
139
139
  args[_key6 - 2] = arguments[_key6];
@@ -151,11 +151,11 @@ var cmd = {
151
151
  return [bind];
152
152
  },
153
153
  /**
154
- * Creates a command out of a simple function and ignores the success case.
155
- * @param task The function to call.
156
- * @param ofError Creates the message to dispatch when an error occurred.
157
- * @param args The parameters of the task.
158
- */
154
+ * Creates a command out of a simple function and ignores the success case.
155
+ * @param task The function to call.
156
+ * @param ofError Creates the message to dispatch when an error occurred.
157
+ * @param args The parameters of the task.
158
+ */
159
159
  attempt: function attempt(task, ofError) {
160
160
  for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
161
161
  args[_key7 - 2] = arguments[_key7];
@@ -178,12 +178,12 @@ var cmd = {
178
178
  */
179
179
  ofPromise: {
180
180
  /**
181
- * Creates a command out of an async function and maps the result.
182
- * @param task The async function to call.
183
- * @param ofSuccess Creates the message to dispatch when the promise is resolved.
184
- * @param ofError Creates the message to dispatch when the promise is rejected.
185
- * @param args The parameters of the task.
186
- */
181
+ * Creates a command out of an async function and maps the result.
182
+ * @param task The async function to call.
183
+ * @param ofSuccess Creates the message to dispatch when the promise is resolved.
184
+ * @param ofError Creates the message to dispatch when the promise is rejected.
185
+ * @param args The parameters of the task.
186
+ */
187
187
  either: function either(task, ofSuccess, ofError) {
188
188
  for (var _len8 = arguments.length, args = new Array(_len8 > 3 ? _len8 - 3 : 0), _key8 = 3; _key8 < _len8; _key8++) {
189
189
  args[_key8 - 3] = arguments[_key8];
@@ -198,11 +198,11 @@ var cmd = {
198
198
  return [bind];
199
199
  },
200
200
  /**
201
- * Creates a command out of an async function and ignores the error case.
202
- * @param task The async function to call.
203
- * @param ofSuccess Creates the message to dispatch when the promise is resolved.
204
- * @param args The parameters of the task.
205
- */
201
+ * Creates a command out of an async function and ignores the error case.
202
+ * @param task The async function to call.
203
+ * @param ofSuccess Creates the message to dispatch when the promise is resolved.
204
+ * @param args The parameters of the task.
205
+ */
206
206
  perform: function perform(task, ofSuccess) {
207
207
  for (var _len9 = arguments.length, args = new Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
208
208
  args[_key9 - 2] = arguments[_key9];
@@ -216,11 +216,11 @@ var cmd = {
216
216
  return [bind];
217
217
  },
218
218
  /**
219
- * Creates a command out of an async function and ignores the success case.
220
- * @param task The async function to call.
221
- * @param ofError Creates the message to dispatch when the promise is rejected.
222
- * @param args The parameters of the task.
223
- */
219
+ * Creates a command out of an async function and ignores the success case.
220
+ * @param task The async function to call.
221
+ * @param ofError Creates the message to dispatch when the promise is rejected.
222
+ * @param args The parameters of the task.
223
+ */
224
224
  attempt: function attempt(task, ofError) {
225
225
  for (var _len10 = arguments.length, args = new Array(_len10 > 2 ? _len10 - 2 : 0), _key10 = 2; _key10 < _len10; _key10++) {
226
226
  args[_key10 - 2] = arguments[_key10];
@@ -242,4 +242,4 @@ exports.cmd = cmd;
242
242
  function defaultFallbackHandler() {
243
243
  // blank
244
244
  }
245
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZFaXRoZXIiLCJ0YXNrIiwib2ZTdWNjZXNzIiwib2ZFcnJvciIsIl9sZW4yIiwiYXJncyIsIl9rZXkyIiwiYmluZCIsInRhc2tSZXN1bHQiLCJhcHBseSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInJlc3VsdCIsImV4IiwiX2xlbjMiLCJfa2V5MyIsImZhbGxiYWNrIiwidW5kZWZpbmVkIiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsIl9sZW40IiwiX2tleTQiLCJvZkZ1bmMiLCJlaXRoZXIiLCJfbGVuNSIsIl9rZXk1IiwicGVyZm9ybSIsIl9sZW42IiwiX2tleTYiLCJhdHRlbXB0IiwiX2xlbjciLCJfa2V5NyIsIm9mUHJvbWlzZSIsIl9sZW44IiwiX2tleTgiLCJfbGVuOSIsIl9rZXk5IiwiX2xlbjEwIiwiX2tleTEwIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jbWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCwgRmFsbGJhY2tIYW5kbGVyLCBNZXNzYWdlLCBTdWIgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5jb25zdCBjbWQgPSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc3BlY2lmaWMgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICovXG4gICAgb2ZNc2c8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAobXNnOiBUTWVzc2FnZSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gW2Rpc3BhdGNoID0+IGRpc3BhdGNoKG1zZyldO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoLi4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCkgW10pOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbc3ViXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LiBUaGlzIGNhbiBhbHNvIGJlIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZFaXRoZXI8VFN1Y2Nlc3NNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IEF3YWl0ZWQ8VFJldHVybj4pID0+IFRTdWNjZXNzTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVEVycm9yTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VFN1Y2Nlc3NNZXNzYWdlIHwgVEVycm9yTWVzc2FnZT4ge1xuICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUU3VjY2Vzc01lc3NhZ2UgfCBURXJyb3JNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG4gICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBmdW5jdGlvbiBydW5zIHN1Y2Nlc3NmdWxseSBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZTdWNjZXNzPFRTdWNjZXNzTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IEF3YWl0ZWQ8VFJldHVybj4pID0+IFRTdWNjZXNzTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VFN1Y2Nlc3NNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZT4sIGZhbGxiYWNrOiBGYWxsYmFja0hhbmRsZXIgPSBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tSZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRhc2tSZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSkpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmYWxsYmFjayk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG4gICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAqL1xuICAgIG9mRXJyb3I8VEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBURXJyb3JNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxURXJyb3JNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRFcnJvck1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBmYWxsYmFjaz8uKCkpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjxUU3VjY2Vzc01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBURXJyb3JNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVFN1Y2Nlc3NNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBURXJyb3JNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUU3VjY2Vzc01lc3NhZ2UgfCBURXJyb3JNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUU3VjY2Vzc01lc3NhZ2UgfCBURXJyb3JNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VFN1Y2Nlc3NNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVFN1Y2Nlc3NNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUU3VjY2Vzc01lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZT4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayhleCBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDxURXJyb3JNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRFcnJvck1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRFcnJvck1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRFcnJvck1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBhc3luYyBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZQcm9taXNlOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgZWl0aGVyPFRTdWNjZXNzTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRFcnJvck1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUU3VjY2Vzc01lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRFcnJvck1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBlcnJvciBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBwZXJmb3JtPFRTdWNjZXNzTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRTdWNjZXNzTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VFN1Y2Nlc3NNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUU3VjY2Vzc01lc3NhZ2U+LCBmYWxsYmFjazogRmFsbGJhY2tIYW5kbGVyID0gZGVmYXVsdEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0PFRFcnJvck1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVEVycm9yTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VEVycm9yTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VEVycm9yTWVzc2FnZT4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyICgpOiB2b2lkIHtcbiAgICAvLyBibGFua1xufVxuXG5leHBv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
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZFaXRoZXIiLCJ0YXNrIiwib2ZTdWNjZXNzIiwib2ZFcnJvciIsIl9sZW4yIiwiYXJncyIsIl9rZXkyIiwiYmluZCIsInRhc2tSZXN1bHQiLCJhcHBseSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInJlc3VsdCIsImV4IiwiX2xlbjMiLCJfa2V5MyIsImZhbGxiYWNrIiwidW5kZWZpbmVkIiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsIl9sZW40IiwiX2tleTQiLCJvZkZ1bmMiLCJlaXRoZXIiLCJfbGVuNSIsIl9rZXk1IiwicGVyZm9ybSIsIl9sZW42IiwiX2tleTYiLCJhdHRlbXB0IiwiX2xlbjciLCJfa2V5NyIsIm9mUHJvbWlzZSIsIl9sZW44IiwiX2tleTgiLCJfbGVuOSIsIl9rZXk5IiwiX2xlbjEwIiwiX2tleTEwIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jbWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCwgRmFsbGJhY2tIYW5kbGVyLCBNZXNzYWdlLCBTdWIgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5jb25zdCBjbWQgPSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzcGVjaWZpYyBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIHNwZWNpZmljIG1lc3NhZ2UuXG5cdCAqL1xuXHRvZk1zZzxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KG1zZzogVE1lc3NhZ2UpOiBDbWQ8VE1lc3NhZ2U+IHtcblx0XHRyZXR1cm4gWyhkaXNwYXRjaCkgPT4gZGlzcGF0Y2gobXNnKV07XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZXMgbXVsdGlwbGUgY29tbWFuZHMuXG5cdCAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG5cdCAqL1xuXHRiYXRjaDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KC4uLmNvbW1hbmRzOiAoQ21kPFRNZXNzYWdlPiB8IHVuZGVmaW5lZCB8IG51bGwpW10pOiBDbWQ8VE1lc3NhZ2U+IHtcblx0XHRyZXR1cm4gKGNvbW1hbmRzLmZpbHRlcihCb29sZWFuKSBhcyBDbWQ8VE1lc3NhZ2U+W10pLmZsYXQoKTtcblx0fSxcblxuXHQvKipcblx0ICogQ29tbWFuZCB0byBjYWxsIHRoZSBzdWJzY3JpYmVyLlxuXHQgKiBAcGFyYW0ge1N1YjxUTWVzc2FnZT59IHN1YiBUaGUgc3Vic2NyaWJlciBmdW5jdGlvbi5cblx0ICovXG5cdG9mU3ViPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG5cdFx0cmV0dXJuIFtzdWJdO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LiBUaGlzIGNhbiBhbHNvIGJlIGFuIGFzeW5jIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cblx0ICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHJ1bnMgc3VjY2Vzc2Z1bGx5IG9yLCBmb3IgYW4gYXN5bmMgZnVuY3Rpb24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuXHQgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cblx0ICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG5cdCAqL1xuXHRvZkVpdGhlcjxUU3VjY2Vzc01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBURXJyb3JNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFRSZXR1cm4+KFxuXHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybixcblx0XHRvZlN1Y2Nlc3M6IChyZXN1bHQ6IEF3YWl0ZWQ8VFJldHVybj4pID0+IFRTdWNjZXNzTWVzc2FnZSxcblx0XHRvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBURXJyb3JNZXNzYWdlLFxuXHRcdC4uLmFyZ3M6IFRBcmdzXG5cdCk6IENtZDxUU3VjY2Vzc01lc3NhZ2UgfCBURXJyb3JNZXNzYWdlPiB7XG5cdFx0Y29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VFN1Y2Nlc3NNZXNzYWdlIHwgVEVycm9yTWVzc2FnZT4pOiB2b2lkID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHRhc2tSZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG5cdFx0XHRcdFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuXHRcdFx0XHRcdC50aGVuKChyZXN1bHQpID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcblx0XHRcdFx0XHQuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcblx0XHRcdH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG5cdFx0XHRcdGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIFtiaW5kXTtcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuXHQgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG5cdCAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuXHQgKi9cblx0b2ZTdWNjZXNzPFRTdWNjZXNzTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmV0dXJuPihcblx0XHR0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sXG5cdFx0b2ZTdWNjZXNzOiAocmVzdWx0OiBBd2FpdGVkPFRSZXR1cm4+KSA9PiBUU3VjY2Vzc01lc3NhZ2UsXG5cdFx0Li4uYXJnczogVEFyZ3Ncblx0KTogQ21kPFRTdWNjZXNzTWVzc2FnZT4ge1xuXHRcdGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZT4sIGZhbGxiYWNrOiBGYWxsYmFja0hhbmRsZXIgPSBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuXHRcdFx0XHRQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcblx0XHRcdFx0XHQudGhlbigocmVzdWx0KSA9PiBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSkpXG5cdFx0XHRcdFx0LmNhdGNoKGZhbGxiYWNrKTtcblx0XHRcdH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG5cdFx0XHRcdGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIFtiaW5kXTtcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIHN1Y2Nlc3MgY2FzZS4gVGhpcyBjYW4gYWxzbyBiZSBhbiBhc3luYyBmdW5jdGlvbi5cblx0ICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG5cdCAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG5cdCAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuXHQgKi9cblx0b2ZFcnJvcjxURXJyb3JNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFRSZXR1cm4+KFxuXHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybixcblx0XHRvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBURXJyb3JNZXNzYWdlLFxuXHRcdC4uLmFyZ3M6IFRBcmdzXG5cdCk6IENtZDxURXJyb3JNZXNzYWdlPiB7XG5cdFx0Y29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VEVycm9yTWVzc2FnZT4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuXHRcdFx0XHRQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcblx0XHRcdFx0XHQudGhlbigoKSA9PiBmYWxsYmFjaz8uKCkpXG5cdFx0XHRcdFx0LmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG5cdFx0XHR9IGNhdGNoIChleDogdW5rbm93bikge1xuXHRcdFx0XHRkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHJldHVybiBbYmluZF07XG5cdH0sXG5cblx0LyoqXG5cdCAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBzaW1wbGUgZnVuY3Rpb25zLlxuXHQgKi9cblx0b2ZGdW5jOiB7XG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBtYXBzIHRoZSByZXN1bHQuXG5cdFx0ICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG5cdFx0ICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSB0YXNrLlxuXHRcdCAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cblx0XHQgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cblx0XHQgKi9cblx0XHRlaXRoZXI8VFN1Y2Nlc3NNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmV0dXJuPihcblx0XHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybixcblx0XHRcdG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVFN1Y2Nlc3NNZXNzYWdlLFxuXHRcdFx0b2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVEVycm9yTWVzc2FnZSxcblx0XHRcdC4uLmFyZ3M6IFRBcmdzXG5cdFx0KTogQ21kPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+IHtcblx0XHRcdGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+KTogdm9pZCA9PiB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuXHRcdFx0XHRcdGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcblx0XHRcdFx0fSBjYXRjaCAoZXg6IHVua25vd24pIHtcblx0XHRcdFx0XHRkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdHJldHVybiBbYmluZF07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cblx0XHQgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cblx0XHQgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG5cdFx0ICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG5cdFx0ICovXG5cdFx0cGVyZm9ybTxUU3VjY2Vzc01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJldHVybj4oXG5cdFx0XHR0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sXG5cdFx0XHRvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRTdWNjZXNzTWVzc2FnZSxcblx0XHRcdC4uLmFyZ3M6IFRBcmdzXG5cdFx0KTogQ21kPFRTdWNjZXNzTWVzc2FnZT4ge1xuXHRcdFx0Y29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VFN1Y2Nlc3NNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG5cdFx0XHRcdFx0ZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuXHRcdFx0XHR9IGNhdGNoIChleDogdW5rbm93bikge1xuXHRcdFx0XHRcdGlmIChmYWxsYmFjaykge1xuXHRcdFx0XHRcdFx0ZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIFtiaW5kXTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG5cdFx0ICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG5cdFx0ICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuXHRcdCAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuXHRcdCAqL1xuXHRcdGF0dGVtcHQ8VEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmV0dXJuPihcblx0XHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybixcblx0XHRcdG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRFcnJvck1lc3NhZ2UsXG5cdFx0XHQuLi5hcmdzOiBUQXJnc1xuXHRcdCk6IENtZDxURXJyb3JNZXNzYWdlPiB7XG5cdFx0XHRjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxURXJyb3JNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR0YXNrKC4uLmFyZ3MpO1xuXG5cdFx0XHRcdFx0aWYgKGZhbGxiYWNrKSB7XG5cdFx0XHRcdFx0XHRmYWxsYmFjaygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZXg6IHVua25vd24pIHtcblx0XHRcdFx0XHRkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdHJldHVybiBbYmluZF07XG5cdFx0fSxcblx0fSxcblxuXHQvKipcblx0ICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIGFzeW5jIGZ1bmN0aW9ucy5cblx0ICovXG5cdG9mUHJvbWlzZToge1xuXHRcdC8qKlxuXHRcdCAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuXHRcdCAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuXHRcdCAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuXHRcdCAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cblx0XHQgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cblx0XHQgKi9cblx0XHRlaXRoZXI8VFN1Y2Nlc3NNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmV0dXJuPihcblx0XHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPixcblx0XHRcdG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVFN1Y2Nlc3NNZXNzYWdlLFxuXHRcdFx0b2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVEVycm9yTWVzc2FnZSxcblx0XHRcdC4uLmFyZ3M6IFRBcmdzXG5cdFx0KTogQ21kPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+IHtcblx0XHRcdGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRTdWNjZXNzTWVzc2FnZSB8IFRFcnJvck1lc3NhZ2U+KTogdm9pZCA9PiB7XG5cdFx0XHRcdHRhc2soLi4uYXJncylcblx0XHRcdFx0XHQudGhlbigocmVzdWx0KSA9PiBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSkpXG5cdFx0XHRcdFx0LmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gW2JpbmRdO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuXG5cdFx0ICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG5cdFx0ICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG5cdFx0ICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG5cdFx0ICovXG5cdFx0cGVyZm9ybTxUU3VjY2Vzc01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJldHVybj4oXG5cdFx0XHR0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sXG5cdFx0XHRvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRTdWNjZXNzTWVzc2FnZSxcblx0XHRcdC4uLmFyZ3M6IFRBcmdzXG5cdFx0KTogQ21kPFRTdWNjZXNzTWVzc2FnZT4ge1xuXHRcdFx0Y29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VFN1Y2Nlc3NNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcblx0XHRcdFx0dGFzayguLi5hcmdzKVxuXHRcdFx0XHRcdC50aGVuKChyZXN1bHQpID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcblx0XHRcdFx0XHQuY2F0Y2goZmFsbGJhY2spO1xuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIFtiaW5kXTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG5cdFx0ICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG5cdFx0ICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuXHRcdCAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuXHRcdCAqL1xuXHRcdGF0dGVtcHQ8VEVycm9yTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmV0dXJuPihcblx0XHRcdHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPixcblx0XHRcdG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRFcnJvck1lc3NhZ2UsXG5cdFx0XHQuLi5hcmdzOiBUQXJnc1xuXHRcdCk6IENtZDxURXJyb3JNZXNzYWdlPiB7XG5cdFx0XHRjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxURXJyb3JNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcblx0XHRcdFx0dGFzayguLi5hcmdzKVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdGlmIChmYWxsYmFjaykge1xuXHRcdFx0XHRcdFx0XHRmYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gW2JpbmRdO1xuXHRcdH0sXG5cdH0sXG59O1xuXG5mdW5jdGlvbiBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyKCk6IHZvaWQge1xuXHQvLyBibGFua1xufVxuXG5leHBvcnQgeyBjbWQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHO0VBQ1g7QUFDRDtBQUNBO0FBQ0E7RUFDQ0MsS0FBSyxXQUFBQSxNQUEyQkMsR0FBYSxFQUFpQjtJQUM3RCxPQUFPLENBQUMsVUFBQ0MsUUFBUTtNQUFBLE9BQUtBLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDO0lBQUEsRUFBQztFQUNyQyxDQUFDO0VBRUQ7QUFDRDtBQUNBO0FBQ0E7RUFDQ0UsS0FBSyxXQUFBQSxNQUFBLEVBQTZGO0lBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBL0RDLFFBQVEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7TUFBUkYsUUFBUSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtJQUFBO0lBQzFDLE9BQVFGLFFBQVEsQ0FBQ0csTUFBTSxDQUFDQyxPQUFPLENBQUMsQ0FBcUJDLElBQUksQ0FBQyxDQUFDO0VBQzVELENBQUM7RUFFRDtBQUNEO0FBQ0E7QUFDQTtFQUNDQyxLQUFLLFdBQUFBLE1BQTJCQyxHQUFrQixFQUFpQjtJQUNsRSxPQUFPLENBQUNBLEdBQUcsQ0FBQztFQUNiLENBQUM7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDQyxRQUFRLFdBQUFBLFNBQ1BDLElBQWlDLEVBQ2pDQyxTQUF3RCxFQUN4REMsT0FB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
@@ -1,4 +1,4 @@
1
- import { Dispatch, Message, Nullable } from "../Types";
1
+ import { Dispatch, Message, Nullable } from "./Types";
2
2
  /**
3
3
  * Options for the `renderWithModel` function.
4
4
  * @interface RenderWithModelOptions
@@ -27,5 +27,5 @@ interface RenderWithModelConfig<TModel, TMessage extends Message> extends Render
27
27
  }
28
28
  declare function setFakeOptions<TModel extends object, TMessage extends Message>(options: Nullable<RenderWithModelConfig<TModel, TMessage>>): void;
29
29
  declare function getFakeOptionsOnce<TModel, TMessage extends Message>(): Nullable<RenderWithModelConfig<TModel, TMessage>>;
30
- export type { RenderWithModelOptions, };
31
- export { setFakeOptions, getFakeOptionsOnce, };
30
+ export type { RenderWithModelOptions };
31
+ export { getFakeOptionsOnce, setFakeOptions };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFakeOptionsOnce = getFakeOptionsOnce;
7
+ exports.setFakeOptions = setFakeOptions;
8
+ /**
9
+ * Options for the `renderWithModel` function.
10
+ * @interface RenderWithModelOptions
11
+ * @template TModel The type of the model.
12
+ * @template TMessage The type of the messages discriminated union.
13
+ */
14
+
15
+ /**
16
+ * Options for the `renderWithModel` function.
17
+ * @interface RenderWithModelOptions
18
+ * @template TModel The type of the model.
19
+ * @template TMessage The type of the messages discriminated union.
20
+ */
21
+
22
+ var currentFakeOptions;
23
+ function setFakeOptions(options) {
24
+ currentFakeOptions = options;
25
+ }
26
+ function getFakeOptionsOnce() {
27
+ var temp = currentFakeOptions;
28
+ currentFakeOptions = null;
29
+ return temp;
30
+ }
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50RmFrZU9wdGlvbnMiLCJzZXRGYWtlT3B0aW9ucyIsIm9wdGlvbnMiLCJnZXRGYWtlT3B0aW9uc09uY2UiLCJ0ZW1wIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Zha2VPcHRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc3BhdGNoLCBNZXNzYWdlLCBOdWxsYWJsZSB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGByZW5kZXJXaXRoTW9kZWxgIGZ1bmN0aW9uLlxuICogQGludGVyZmFjZSBSZW5kZXJXaXRoTW9kZWxPcHRpb25zXG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIFJlbmRlcldpdGhNb2RlbE9wdGlvbnM8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiB7XG5cdC8qKlxuXHQgKiBBIGZha2UgZGlzcGF0Y2ggZnVuY3Rpb24gdG8gdXNlIHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcy5cblx0ICogQHR5cGUge0Rpc3BhdGNoPFRNZXNzYWdlPn1cblx0ICovXG5cdGRpc3BhdGNoPzogRGlzcGF0Y2g8VE1lc3NhZ2U+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgcmVuZGVyV2l0aE1vZGVsYCBmdW5jdGlvbi5cbiAqIEBpbnRlcmZhY2UgUmVuZGVyV2l0aE1vZGVsT3B0aW9uc1xuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmludGVyZmFjZSBSZW5kZXJXaXRoTW9kZWxDb25maWc8VE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+IGV4dGVuZHMgUmVuZGVyV2l0aE1vZGVsT3B0aW9uczxUTWVzc2FnZT4ge1xuXHQvKipcblx0ICogVGhlIG1vZGVsIHRvIHVzZSB3aGVuIHJlbmRlcmluZyB0aGUgY29tcG9uZW50LlxuXHQgKiBAdHlwZSB7VE1vZGVsfVxuXHQgKi9cblx0bW9kZWw6IFRNb2RlbDtcbn1cblxubGV0IGN1cnJlbnRGYWtlT3B0aW9uczogTnVsbGFibGU8UmVuZGVyV2l0aE1vZGVsQ29uZmlnPHVua25vd24sIE1lc3NhZ2U+PjtcblxuZnVuY3Rpb24gc2V0RmFrZU9wdGlvbnM8VE1vZGVsIGV4dGVuZHMgb2JqZWN0LCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KFxuXHRvcHRpb25zOiBOdWxsYWJsZTxSZW5kZXJXaXRoTW9kZWxDb25maWc8VE1vZGVsLCBUTWVzc2FnZT4+LFxuKTogdm9pZCB7XG5cdGN1cnJlbnRGYWtlT3B0aW9ucyA9IG9wdGlvbnMgYXMgUmVuZGVyV2l0aE1vZGVsQ29uZmlnPHVua25vd24sIE1lc3NhZ2U+O1xufVxuXG5mdW5jdGlvbiBnZXRGYWtlT3B0aW9uc09uY2U8VE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KCk6IE51bGxhYmxlPFJlbmRlcldpdGhNb2RlbENvbmZpZzxUTW9kZWwsIFRNZXNzYWdlPj4ge1xuXHRjb25zdCB0ZW1wID0gY3VycmVudEZha2VPcHRpb25zO1xuXG5cdGN1cnJlbnRGYWtlT3B0aW9ucyA9IG51bGw7XG5cblx0cmV0dXJuIHRlbXAgYXMgUmVuZGVyV2l0aE1vZGVsQ29uZmlnPFRNb2RlbCwgVE1lc3NhZ2U+O1xufVxuXG5leHBvcnQgdHlwZSB7IFJlbmRlcldpdGhNb2RlbE9wdGlvbnMgfTtcblxuZXhwb3J0IHsgZ2V0RmFrZU9wdGlvbnNPbmNlLCBzZXRGYWtlT3B0aW9ucyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFTQSxJQUFJQSxrQkFBcUU7QUFFekUsU0FBU0MsY0FBY0EsQ0FDdEJDLE9BQTBELEVBQ25EO0VBQ1BGLGtCQUFrQixHQUFHRSxPQUFrRDtBQUN4RTtBQUVBLFNBQVNDLGtCQUFrQkEsQ0FBQSxFQUF3RjtFQUNsSCxJQUFNQyxJQUFJLEdBQUdKLGtCQUFrQjtFQUUvQkEsa0JBQWtCLEdBQUcsSUFBSTtFQUV6QixPQUFPSSxJQUFJO0FBQ1oifQ==
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { cmd } from "./cmd";
2
1
  import { ElmComponent } from "./ElmComponent";
3
- import { errorHandler, ErrorMessage, errorMsg, handleError } from "./ErrorHandling";
4
- import { init, Logger } from "./Init";
2
+ import { ErrorMessage, errorHandler, errorMsg, handleError } from "./ErrorHandling";
3
+ import { ElmOptions, Logger, init } from "./Init";
5
4
  import { Cmd, Dispatch, InitResult, Message, MsgSource, UpdateMap, UpdateReturnType } from "./Types";
6
- import { SubscriptionResult, useElmish } from "./useElmish";
7
- export type { Logger, Message, Cmd, Dispatch, InitResult, UpdateReturnType, SubscriptionResult, MsgSource, UpdateMap, ErrorMessage, };
8
- export { init, cmd, ElmComponent, errorMsg, errorHandler, handleError, useElmish, };
5
+ import { cmd } from "./cmd";
6
+ import { SubscriptionResult, UseElmishOptions, useElmish } from "./useElmish";
7
+ export type { Cmd, Dispatch, ElmOptions, ErrorMessage, InitResult, Logger, Message, MsgSource, SubscriptionResult, UpdateMap, UpdateReturnType, UseElmishOptions, };
8
+ export { ElmComponent, cmd, errorHandler, errorMsg, handleError, init, useElmish };
package/dist/index.js CHANGED
@@ -45,9 +45,9 @@ Object.defineProperty(exports, "useElmish", {
45
45
  return _useElmish.useElmish;
46
46
  }
47
47
  });
48
- var _cmd = require("./cmd");
49
48
  var _ElmComponent = require("./ElmComponent");
50
49
  var _ErrorHandling = require("./ErrorHandling");
51
50
  var _Init = require("./Init");
51
+ var _cmd = require("./cmd");
52
52
  var _useElmish = require("./useElmish");
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY21kIiwicmVxdWlyZSIsIl9FbG1Db21wb25lbnQiLCJfRXJyb3JIYW5kbGluZyIsIl9Jbml0IiwiX3VzZUVsbWlzaCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbWQgfSBmcm9tIFwiLi9jbWRcIjtcbmltcG9ydCB7IEVsbUNvbXBvbmVudCB9IGZyb20gXCIuL0VsbUNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZXJyb3JIYW5kbGVyLCBFcnJvck1lc3NhZ2UsIGVycm9yTXNnLCBoYW5kbGVFcnJvciB9IGZyb20gXCIuL0Vycm9ySGFuZGxpbmdcIjtcbmltcG9ydCB7IGluaXQsIExvZ2dlciB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IENtZCwgRGlzcGF0Y2gsIEluaXRSZXN1bHQsIE1lc3NhZ2UsIE1zZ1NvdXJjZSwgVXBkYXRlTWFwLCBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vVHlwZXNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvblJlc3VsdCwgdXNlRWxtaXNoIH0gZnJvbSBcIi4vdXNlRWxtaXNoXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgICBMb2dnZXIsXG4gICAgTWVzc2FnZSxcbiAgICBDbWQsXG4gICAgRGlzcGF0Y2gsXG4gICAgSW5pdFJlc3VsdCxcbiAgICBVcGRhdGVSZXR1cm5UeXBlLFxuICAgIFN1YnNjcmlwdGlvblJlc3VsdCxcbiAgICBNc2dTb3VyY2UsXG4gICAgVXBkYXRlTWFwLFxuICAgIEVycm9yTWVzc2FnZSxcbn07XG5cbmV4cG9ydCB7XG4gICAgaW5pdCxcbiAgICBjbWQsXG4gICAgRWxtQ29tcG9uZW50LFxuICAgIGVycm9yTXNnLFxuICAgIGVycm9ySGFuZGxlcixcbiAgICBoYW5kbGVFcnJvcixcbiAgICB1c2VFbG1pc2gsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUEifQ==
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRWxtQ29tcG9uZW50IiwicmVxdWlyZSIsIl9FcnJvckhhbmRsaW5nIiwiX0luaXQiLCJfY21kIiwiX3VzZUVsbWlzaCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbG1Db21wb25lbnQgfSBmcm9tIFwiLi9FbG1Db21wb25lbnRcIjtcbmltcG9ydCB7IEVycm9yTWVzc2FnZSwgZXJyb3JIYW5kbGVyLCBlcnJvck1zZywgaGFuZGxlRXJyb3IgfSBmcm9tIFwiLi9FcnJvckhhbmRsaW5nXCI7XG5pbXBvcnQgeyBFbG1PcHRpb25zLCBMb2dnZXIsIGluaXQgfSBmcm9tIFwiLi9Jbml0XCI7XG5pbXBvcnQgeyBDbWQsIERpc3BhdGNoLCBJbml0UmVzdWx0LCBNZXNzYWdlLCBNc2dTb3VyY2UsIFVwZGF0ZU1hcCwgVXBkYXRlUmV0dXJuVHlwZSB9IGZyb20gXCIuL1R5cGVzXCI7XG5pbXBvcnQgeyBjbWQgfSBmcm9tIFwiLi9jbWRcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvblJlc3VsdCwgVXNlRWxtaXNoT3B0aW9ucywgdXNlRWxtaXNoIH0gZnJvbSBcIi4vdXNlRWxtaXNoXCI7XG5cbmV4cG9ydCB0eXBlIHtcblx0Q21kLFxuXHREaXNwYXRjaCxcblx0RWxtT3B0aW9ucyxcblx0RXJyb3JNZXNzYWdlLFxuXHRJbml0UmVzdWx0LFxuXHRMb2dnZXIsXG5cdE1lc3NhZ2UsXG5cdE1zZ1NvdXJjZSxcblx0U3Vic2NyaXB0aW9uUmVzdWx0LFxuXHRVcGRhdGVNYXAsXG5cdFVwZGF0ZVJldHVyblR5cGUsXG5cdFVzZUVsbWlzaE9wdGlvbnMsXG59O1xuXG5leHBvcnQgeyBFbG1Db21wb25lbnQsIGNtZCwgZXJyb3JIYW5kbGVyLCBlcnJvck1zZywgaGFuZGxlRXJyb3IsIGluaXQsIHVzZUVsbWlzaCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLElBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQSJ9
@@ -46,8 +46,8 @@ interface UseElmishOptions<TProps, TModel, TMessage extends Message> {
46
46
  * @example
47
47
  * const [model, dispatch] = useElmish({ props, init, update, name: "MyComponent" });
48
48
  */
49
- declare function useElmish<TProps, TModel, TMessage extends Message>({ name, props, init, update, subscription }: UseElmishOptions<TProps, TModel, TMessage>): [TModel, Dispatch<TMessage>];
49
+ declare function useElmish<TProps, TModel, TMessage extends Message>({ name, props, init, update, subscription, }: UseElmishOptions<TProps, TModel, TMessage>): [TModel, Dispatch<TMessage>];
50
50
  declare function callUpdate<TProps, TModel, TMessage extends Message>(update: UpdateFunction<TProps, TModel, TMessage> | UpdateMap<TProps, TModel, TMessage>, msg: TMessage, model: TModel, props: TProps): UpdateReturnType<TModel, TMessage>;
51
51
  declare function callUpdateMap<TProps, TModel, TMessage extends Message>(updateMap: UpdateMap<TProps, TModel, TMessage>, msg: TMessage, model: TModel, props: TProps): UpdateReturnType<TModel, TMessage>;
52
- export type { SubscriptionResult, };
53
- export { useElmish, callUpdate, callUpdateMap, };
52
+ export type { Subscription, SubscriptionResult, UseElmishOptions };
53
+ export { callUpdate, callUpdateMap, useElmish };
package/dist/useElmish.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -10,22 +10,22 @@ exports.useElmish = useElmish;
10
10
  var _react = require("react");
11
11
  var _Common = require("./Common");
12
12
  var _Init = require("./Init");
13
- var _fakeOptions = require("./Testing/fakeOptions");
13
+ var _fakeOptions = require("./fakeOptions");
14
14
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
15
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
16
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
18
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
21
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
22
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
23
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
22
- function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
23
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
24
24
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
25
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
26
  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); }
27
27
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
28
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
28
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
29
29
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /* eslint-disable react-hooks/exhaustive-deps */
30
30
  /**
31
31
  * The return type of the `subscription` function.
@@ -54,7 +54,7 @@ function useElmish(_ref) {
54
54
  init = _ref.init,
55
55
  update = _ref.update,
56
56
  subscription = _ref.subscription;
57
- var reentered = false;
57
+ var running = false;
58
58
  var buffer = [];
59
59
  var currentModel = {};
60
60
  var _useState = (0, _react.useState)(null),
@@ -75,37 +75,25 @@ function useElmish(_ref) {
75
75
  }
76
76
  var fakeOptions = (0, _fakeOptions.getFakeOptionsOnce)();
77
77
  var dispatch = (0, _react.useCallback)((_fakeOptions$dispatch = fakeOptions === null || fakeOptions === void 0 ? void 0 : fakeOptions.dispatch) !== null && _fakeOptions$dispatch !== void 0 ? _fakeOptions$dispatch : function (msg) {
78
- if (!initializedModel) {
78
+ if (running) {
79
+ buffer.push(msg);
79
80
  return;
80
81
  }
81
- if (reentered) {
82
- buffer.push(msg);
83
- } else {
84
- reentered = true;
85
- var nextMsg = msg;
86
- var modified = false;
87
- while (nextMsg) {
88
- (0, _Common.logMessage)(name, nextMsg);
89
- var _callUpdate = callUpdate(update, nextMsg, _objectSpread(_objectSpread({}, initializedModel), currentModel), propsRef.current),
90
- _callUpdate2 = _toArray(_callUpdate),
91
- newModel = _callUpdate2[0],
92
- commands = _callUpdate2.slice(1);
93
- if ((0, _Common.modelHasChanged)(currentModel, newModel)) {
94
- currentModel = _objectSpread(_objectSpread({}, currentModel), newModel);
95
- modified = true;
96
- }
97
- _Common.execCmd.apply(void 0, [dispatch].concat(_toConsumableArray(commands)));
98
- nextMsg = buffer.shift();
99
- }
100
- reentered = false;
101
- if (isMountedRef.current && modified) {
102
- setModel(function (prevModel) {
103
- var _Services$logger;
104
- var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
105
- (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 ? void 0 : _Services$logger.debug("Update model for", name, updatedModel);
106
- return updatedModel;
107
- });
108
- }
82
+ running = true;
83
+ var nextMsg = msg;
84
+ var modified = false;
85
+ do {
86
+ modified = handleMessage(nextMsg);
87
+ nextMsg = buffer.shift();
88
+ } while (nextMsg);
89
+ running = false;
90
+ if (isMountedRef.current && modified) {
91
+ setModel(function (prevModel) {
92
+ var _Services$logger;
93
+ var updatedModel = _objectSpread(_objectSpread({}, prevModel), currentModel);
94
+ (_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 || _Services$logger.debug("Update model for", name, updatedModel);
95
+ return updatedModel;
96
+ });
109
97
  }
110
98
  }, []);
111
99
  if (!initializedModel) {
@@ -116,9 +104,11 @@ function useElmish(_ref) {
116
104
  initCommands = _ref3.slice(1);
117
105
  initializedModel = initModel;
118
106
  setModel(initializedModel);
119
- (_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 ? void 0 : _Services$logger2.debug("Initial model for", name, initializedModel);
107
+ (_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 || _Services$logger2.debug("Initial model for", name, initializedModel);
120
108
  _Common.execCmd.apply(void 0, [dispatch].concat(_toConsumableArray(initCommands)));
121
109
  }
110
+
111
+ // biome-ignore lint/nursery/useExhaustiveDependencies: We want to run this effect only once
122
112
  (0, _react.useEffect)(function () {
123
113
  if (subscription) {
124
114
  var _subscription = subscription(initializedModel, props),
@@ -130,6 +120,23 @@ function useElmish(_ref) {
130
120
  }
131
121
  }, []);
132
122
  return [initializedModel, dispatch];
123
+ function handleMessage(nextMsg) {
124
+ if (!initializedModel) {
125
+ return false;
126
+ }
127
+ var modified = false;
128
+ (0, _Common.logMessage)(name, nextMsg);
129
+ var _callUpdate = callUpdate(update, nextMsg, _objectSpread(_objectSpread({}, initializedModel), currentModel), propsRef.current),
130
+ _callUpdate2 = _toArray(_callUpdate),
131
+ newModel = _callUpdate2[0],
132
+ commands = _callUpdate2.slice(1);
133
+ if ((0, _Common.modelHasChanged)(currentModel, newModel)) {
134
+ currentModel = _objectSpread(_objectSpread({}, currentModel), newModel);
135
+ modified = true;
136
+ }
137
+ _Common.execCmd.apply(void 0, [dispatch].concat(_toConsumableArray(commands)));
138
+ return modified;
139
+ }
133
140
  }
134
141
  function callUpdate(update, msg, model, props) {
135
142
  if (typeof update === "function") {
@@ -141,4 +148,4 @@ function callUpdateMap(updateMap, msg, model, props) {
141
148
  var msgName = msg.name;
142
149
  return updateMap[msgName](msg, model, props);
143
150
  }
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX0NvbW1vbiIsIl9Jbml0IiwiX2Zha2VPcHRpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiTnVtYmVyIiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIml0ZXJhdG9yIiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsIm1pbkxlbiIsIm4iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsImVyciIsInVzZUVsbWlzaCIsIl9yZWYiLCJfZmFrZU9wdGlvbnMkZGlzcGF0Y2giLCJwcm9wcyIsImluaXQiLCJ1cGRhdGUiLCJzdWJzY3JpcHRpb24iLCJyZWVudGVyZWQiLCJidWZmZXIiLCJjdXJyZW50TW9kZWwiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJtb2RlbCIsInNldE1vZGVsIiwicHJvcHNSZWYiLCJ1c2VSZWYiLCJpc01vdW50ZWRSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiaW5pdGlhbGl6ZWRNb2RlbCIsImZha2VPcHRpb25zIiwiZ2V0RmFrZU9wdGlvbnNPbmNlIiwiZGlzcGF0Y2giLCJ1c2VDYWxsYmFjayIsIm1zZyIsIm5leHRNc2ciLCJtb2RpZmllZCIsImxvZ01lc3NhZ2UiLCJfY2FsbFVwZGF0ZSIsImNhbGxVcGRhdGUiLCJfY2FsbFVwZGF0ZTIiLCJuZXdNb2RlbCIsImNvbW1hbmRzIiwibW9kZWxIYXNDaGFuZ2VkIiwiZXhlY0NtZCIsImNvbmNhdCIsInNoaWZ0IiwicHJldk1vZGVsIiwiX1NlcnZpY2VzJGxvZ2dlciIsInVwZGF0ZWRNb2RlbCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiZGVidWciLCJfU2VydmljZXMkbG9nZ2VyMiIsIl9yZWYyIiwiX3JlZjMiLCJpbml0TW9kZWwiLCJpbml0Q29tbWFuZHMiLCJfc3Vic2NyaXB0aW9uIiwiX3N1YnNjcmlwdGlvbjIiLCJzdWJDbWQiLCJkZXN0cnVjdG9yIiwiY2FsbFVwZGF0ZU1hcCIsInVwZGF0ZU1hcCIsIm1zZ05hbWUiXSwic291cmNlcyI6WyIuLi9zcmMvdXNlRWxtaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZXhlY0NtZCwgbG9nTWVzc2FnZSwgbW9kZWxIYXNDaGFuZ2VkIH0gZnJvbSBcIi4vQ29tbW9uXCI7XG5pbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IGdldEZha2VPcHRpb25zT25jZSB9IGZyb20gXCIuL1Rlc3RpbmcvZmFrZU9wdGlvbnNcIjtcbmltcG9ydCB7IENtZCwgRGlzcGF0Y2gsIEluaXRGdW5jdGlvbiwgTWVzc2FnZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uLCBVcGRhdGVNYXAsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG4vKipcbiAqIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgYHN1YnNjcmlwdGlvbmAgZnVuY3Rpb24uXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbnR5cGUgU3Vic2NyaXB0aW9uUmVzdWx0PFRNZXNzYWdlPiA9IFtDbWQ8VE1lc3NhZ2U+LCAoKCkgPT4gdm9pZCk/XTtcbnR5cGUgU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gPSAobW9kZWw6IFRNb2RlbCwgcHJvcHM6IFRQcm9wcykgPT4gU3Vic2NyaXB0aW9uUmVzdWx0PFRNZXNzYWdlPjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYHVzZUVsbWlzaGAgaG9vay5cbiAqIEBpbnRlcmZhY2UgVXNlRWxtaXNoT3B0aW9uc1xuICogQHRlbXBsYXRlIFRQcm9wcyBUaGUgdHlwZSBvZiB0aGUgcHJvcHMuXG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xuaW50ZXJmYWNlIFVzZUVsbWlzaE9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuIFRoaXMgaXMgdXNlZCBmb3IgbG9nZ2luZyBvbmx5LlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBwcm9wcyBwYXNzZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAdHlwZSB7VFByb3BzfVxuICAgICAqL1xuICAgIHByb3BzOiBUUHJvcHMsXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudHMgbW9kZWwuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgb25jZS5cbiAgICAgKiBAdHlwZSB7SW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT59XG4gICAgICovXG4gICAgaW5pdDogSW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4gICAgLyoqXG4gICAgICogVGhlIGB1cGRhdGVgIGZ1bmN0aW9uIG9yIHVwZGF0ZSBtYXAgb2JqZWN0LlxuICAgICAqIEB0eXBlIHsoVXBkYXRlRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiB8IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+KX1cbiAgICAgKi9cbiAgICB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbiAgICAvKipcbiAgICAgKiBUaGUgb3B0aW9uYWwgYHN1YnNjcmlwdGlvbmAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgb25jZS5cbiAgICAgKiBAdHlwZSB7KFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPil9XG4gICAgICovXG4gICAgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG59XG5cbi8qKlxuICogSG9vayB0byB1c2UgdGhlIEVsbSBhcmNoaXRlY3R1cmUgcGF0dGVybiBpbiBhIGZ1bmN0aW9uIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7VXNlRWxtaXNoT3B0aW9uc30gb3B0aW9ucyBUaGUgb3B0aW9ucyBwYXNzZWQgdGhlIHRoZSBob29rLlxuICogQHJldHVybnMgQSB0dXBsZSBjb250YWluaW5nIHRoZSBjdXJyZW50IG1vZGVsIGFuZCB0aGUgZGlzcGF0Y2hlci5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBbbW9kZWwsIGRpc3BhdGNoXSA9IHVzZUVsbWlzaCh7IHByb3BzLCBpbml0LCB1cGRhdGUsIG5hbWU6IFwiTXlDb21wb25lbnRcIiB9KTtcbiAqL1xuZnVuY3Rpb24gdXNlRWxtaXNoPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+ICh7IG5hbWUsIHByb3BzLCBpbml0LCB1cGRhdGUsIHN1YnNjcmlwdGlvbiB9OiBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pOiBbVE1vZGVsLCBEaXNwYXRjaDxUTWVzc2FnZT5dIHtcbiAgICBsZXQgcmVlbnRlcmVkID0gZmFsc2U7XG4gICAgY29uc3QgYnVmZmVyOiBUTWVzc2FnZSBbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50TW9kZWw6IFBhcnRpYWw8VE1vZGVsPiA9IHt9O1xuXG4gICAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSB1c2VTdGF0ZTxOdWxsYWJsZTxUTW9kZWw+PihudWxsKTtcbiAgICBjb25zdCBwcm9wc1JlZiA9IHVzZVJlZihwcm9wcyk7XG4gICAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGxldCBpbml0aWFsaXplZE1vZGVsID0gbW9kZWw7XG5cbiAgICBpZiAocHJvcHNSZWYuY3VycmVudCAhPT0gcHJvcHMpIHtcbiAgICAgICAgcHJvcHNSZWYuY3VycmVudCA9IHByb3BzO1xuICAgIH1cblxuICAgIGNvbnN0IGZha2VPcHRpb25zID0gZ2V0RmFrZU9wdGlvbnNPbmNlKCk7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VDYWxsYmFjayhmYWtlT3B0aW9ucz8uZGlzcGF0Y2ggPz8gKChtc2c6IFRNZXNzYWdlKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlZW50ZXJlZCkge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gobXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBuZXh0TXNnOiBUTWVzc2FnZSB8IHVuZGVmaW5lZCA9IG1zZztcbiAgICAgICAgICAgIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB3aGlsZSAobmV4dE1zZykge1xuICAgICAgICAgICAgICAgIGxvZ01lc3NhZ2UobmFtZSwgbmV4dE1zZyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBbbmV3TW9kZWwsIC4uLmNvbW1hbmRzXSA9IGNhbGxVcGRhdGUodXBkYXRlLCBuZXh0TXNnLCB7IC4uLmluaXRpYWxpemVkTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9LCBwcm9wc1JlZi5jdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChtb2RlbEhhc0NoYW5nZWQoY3VycmVudE1vZGVsLCBuZXdNb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vZGVsID0geyAuLi5jdXJyZW50TW9kZWwsIC4uLm5ld01vZGVsIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV4ZWNDbWQoZGlzcGF0Y2gsIC4uLmNvbW1hbmRzKTtcblxuICAgICAgICAgICAgICAgIG5leHRNc2cgPSBidWZmZXIuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZW50ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgbW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRNb2RlbChwcmV2TW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLnByZXZNb2RlbCBhcyBUTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9O1xuXG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJVcGRhdGUgbW9kZWwgZm9yXCIsIG5hbWUsIHVwZGF0ZWRNb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRNb2RlbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pLCBbXSk7XG5cbiAgICBpZiAoIWluaXRpYWxpemVkTW9kZWwpIHtcbiAgICAgICAgY29uc3QgW2luaXRNb2RlbCwgLi4uaW5pdENvbW1hbmRzXSA9IGZha2VPcHRpb25zPy5tb2RlbCA/IFtmYWtlT3B0aW9ucy5tb2RlbCBhcyBUTW9kZWxdIDogaW5pdChwcm9wcyk7XG5cbiAgICAgICAgaW5pdGlhbGl6ZWRNb2RlbCA9IGluaXRNb2RlbDtcbiAgICAgICAgc2V0TW9kZWwoaW5pdGlhbGl6ZWRNb2RlbCk7XG5cbiAgICAgICAgU2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkluaXRpYWwgbW9kZWwgZm9yXCIsIG5hbWUsIGluaXRpYWxpemVkTW9kZWwpO1xuXG4gICAgICAgIGV4ZWNDbWQoZGlzcGF0Y2gsIC4uLmluaXRDb21tYW5kcyk7XG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29uc3QgW3N1YkNtZCwgZGVzdHJ1Y3Rvcl0gPSBzdWJzY3JpcHRpb24oaW5pdGlhbGl6ZWRNb2RlbCBhcyBUTW9kZWwsIHByb3BzKTtcblxuICAgICAgICAgICAgZXhlY0NtZChkaXNwYXRjaCwgc3ViQ21kKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gW2luaXRpYWxpemVkTW9kZWwsIGRpc3BhdGNoXTtcbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAodXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+IHwgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG1zZzogVE1lc3NhZ2UsIG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpOiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+IHtcbiAgICBpZiAodHlwZW9mIHVwZGF0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB1cGRhdGUobW9kZWwsIG1zZywgcHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxsVXBkYXRlTWFwKHVwZGF0ZSwgbXNnLCBtb2RlbCwgcHJvcHMpO1xufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+ICh1cGRhdGVNYXA6IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LCBtc2c6IFRNZXNzYWdlLCBtb2RlbDogVE1vZGVsLCBwcm9wczogVFByb3BzKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG4gICAgY29uc3QgbXNnTmFtZTogVE1lc3NhZ2VbXCJuYW1lXCJdID0gbXNnLm5hbWU7XG5cbiAgICByZXR1cm4gdXBkYXRlTWFwW21zZ05hbWVdKG1zZywgbW9kZWwsIHByb3BzKTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICAgIFN1YnNjcmlwdGlvblJlc3VsdCxcbn07XG5cbmV4cG9ydCB7XG4gICAgdXNlRWxtaXNoLFxuICAgIGNhbGxVcGRhdGUsXG4gICAgY2FsbFVwZGF0ZU1hcCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFBMkQsU0FBQUksbUJBQUFDLEdBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsR0FBQSxLQUFBRSxnQkFBQSxDQUFBRixHQUFBLEtBQUFHLDJCQUFBLENBQUFILEdBQUEsS0FBQUksa0JBQUE7QUFBQSxTQUFBQSxtQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUosbUJBQUFELEdBQUEsUUFBQU0sS0FBQSxDQUFBQyxPQUFBLENBQUFQLEdBQUEsVUFBQVEsaUJBQUEsQ0FBQVIsR0FBQTtBQUFBLFNBQUFTLFFBQUFDLE1BQUEsRUFBQUMsY0FBQSxRQUFBQyxJQUFBLEdBQUFDLE1BQUEsQ0FBQUQsSUFBQSxDQUFBRixNQUFBLE9BQUFHLE1BQUEsQ0FBQUMscUJBQUEsUUFBQUMsT0FBQSxHQUFBRixNQUFBLENBQUFDLHFCQUFBLENBQUFKLE1BQUEsR0FBQUMsY0FBQSxLQUFBSSxPQUFBLEdBQUFBLE9BQUEsQ0FBQUMsTUFB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
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX0NvbW1vbiIsIl9Jbml0IiwiX2Zha2VPcHRpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZnJvbSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJfdHlwZW9mIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiaSIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIm1pbkxlbiIsIm4iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJsIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJ1c2VFbG1pc2giLCJfcmVmIiwiX2Zha2VPcHRpb25zJGRpc3BhdGNoIiwicHJvcHMiLCJpbml0IiwidXBkYXRlIiwic3Vic2NyaXB0aW9uIiwicnVubmluZyIsImJ1ZmZlciIsImN1cnJlbnRNb2RlbCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIm1vZGVsIiwic2V0TW9kZWwiLCJwcm9wc1JlZiIsInVzZVJlZiIsImlzTW91bnRlZFJlZiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJpbml0aWFsaXplZE1vZGVsIiwiZmFrZU9wdGlvbnMiLCJnZXRGYWtlT3B0aW9uc09uY2UiLCJkaXNwYXRjaCIsInVzZUNhbGxiYWNrIiwibXNnIiwibmV4dE1zZyIsIm1vZGlmaWVkIiwiaGFuZGxlTWVzc2FnZSIsInNoaWZ0IiwicHJldk1vZGVsIiwiX1NlcnZpY2VzJGxvZ2dlciIsInVwZGF0ZWRNb2RlbCIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiZGVidWciLCJfU2VydmljZXMkbG9nZ2VyMiIsIl9yZWYyIiwiX3JlZjMiLCJpbml0TW9kZWwiLCJpbml0Q29tbWFuZHMiLCJleGVjQ21kIiwiY29uY2F0IiwiX3N1YnNjcmlwdGlvbiIsIl9zdWJzY3JpcHRpb24yIiwic3ViQ21kIiwiZGVzdHJ1Y3RvciIsImxvZ01lc3NhZ2UiLCJfY2FsbFVwZGF0ZSIsImNhbGxVcGRhdGUiLCJfY2FsbFVwZGF0ZTIiLCJuZXdNb2RlbCIsImNvbW1hbmRzIiwibW9kZWxIYXNDaGFuZ2VkIiwiY2FsbFVwZGF0ZU1hcCIsInVwZGF0ZU1hcCIsIm1zZ05hbWUiXSwic291cmNlcyI6WyIuLi9zcmMvdXNlRWxtaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZXhlY0NtZCwgbG9nTWVzc2FnZSwgbW9kZWxIYXNDaGFuZ2VkIH0gZnJvbSBcIi4vQ29tbW9uXCI7XG5pbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB7IENtZCwgRGlzcGF0Y2gsIEluaXRGdW5jdGlvbiwgTWVzc2FnZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uLCBVcGRhdGVNYXAsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuaW1wb3J0IHsgZ2V0RmFrZU9wdGlvbnNPbmNlIH0gZnJvbSBcIi4vZmFrZU9wdGlvbnNcIjtcblxuLyoqXG4gKiBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGBzdWJzY3JpcHRpb25gIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRNZXNzYWdlIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlcyBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICovXG50eXBlIFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT4gPSBbQ21kPFRNZXNzYWdlPiwgKCgpID0+IHZvaWQpP107XG50eXBlIFN1YnNjcmlwdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT47XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGB1c2VFbG1pc2hgIGhvb2suXG4gKiBAaW50ZXJmYWNlIFVzZUVsbWlzaE9wdGlvbnNcbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgVGhlIHR5cGUgb2YgdGhlIHByb3BzLlxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKi9cbmludGVyZmFjZSBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+IHtcblx0LyoqXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuIFRoaXMgaXMgdXNlZCBmb3IgbG9nZ2luZyBvbmx5LlxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHByb3BzIHBhc3NlZCB0byB0aGUgY29tcG9uZW50LlxuXHQgKiBAdHlwZSB7VFByb3BzfVxuXHQgKi9cblx0cHJvcHM6IFRQcm9wcztcblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnRzIG1vZGVsLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIG9uY2UuXG5cdCAqIEB0eXBlIHtJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPn1cblx0ICovXG5cdGluaXQ6IEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+O1xuXHQvKipcblx0ICogVGhlIGB1cGRhdGVgIGZ1bmN0aW9uIG9yIHVwZGF0ZSBtYXAgb2JqZWN0LlxuXHQgKiBAdHlwZSB7KFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPil9XG5cdCAqL1xuXHR1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPjtcblx0LyoqXG5cdCAqIFRoZSBvcHRpb25hbCBgc3Vic2NyaXB0aW9uYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBvbmNlLlxuXHQgKiBAdHlwZSB7KFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gfCBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPil9XG5cdCAqL1xuXHRzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPjtcbn1cblxuLyoqXG4gKiBIb29rIHRvIHVzZSB0aGUgRWxtIGFyY2hpdGVjdHVyZSBwYXR0ZXJuIGluIGEgZnVuY3Rpb24gY29tcG9uZW50LlxuICogQHBhcmFtIHtVc2VFbG1pc2hPcHRpb25zfSBvcHRpb25zIFRoZSBvcHRpb25zIHBhc3NlZCB0aGUgdGhlIGhvb2suXG4gKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbW9kZWwgYW5kIHRoZSBkaXNwYXRjaGVyLlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IFttb2RlbCwgZGlzcGF0Y2hdID0gdXNlRWxtaXNoKHsgcHJvcHMsIGluaXQsIHVwZGF0ZSwgbmFtZTogXCJNeUNvbXBvbmVudFwiIH0pO1xuICovXG5mdW5jdGlvbiB1c2VFbG1pc2g8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oe1xuXHRuYW1lLFxuXHRwcm9wcyxcblx0aW5pdCxcblx0dXBkYXRlLFxuXHRzdWJzY3JpcHRpb24sXG59OiBVc2VFbG1pc2hPcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4pOiBbVE1vZGVsLCBEaXNwYXRjaDxUTWVzc2FnZT5dIHtcblx0bGV0IHJ1bm5pbmcgPSBmYWxzZTtcblx0Y29uc3QgYnVmZmVyOiBUTWVzc2FnZVtdID0gW107XG5cdGxldCBjdXJyZW50TW9kZWw6IFBhcnRpYWw8VE1vZGVsPiA9IHt9O1xuXG5cdGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gdXNlU3RhdGU8TnVsbGFibGU8VE1vZGVsPj4obnVsbCk7XG5cdGNvbnN0IHByb3BzUmVmID0gdXNlUmVmKHByb3BzKTtcblx0Y29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG5cdFx0fTtcblx0fSwgW10pO1xuXG5cdGxldCBpbml0aWFsaXplZE1vZGVsID0gbW9kZWw7XG5cblx0aWYgKHByb3BzUmVmLmN1cnJlbnQgIT09IHByb3BzKSB7XG5cdFx0cHJvcHNSZWYuY3VycmVudCA9IHByb3BzO1xuXHR9XG5cblx0Y29uc3QgZmFrZU9wdGlvbnMgPSBnZXRGYWtlT3B0aW9uc09uY2UoKTtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VDYWxsYmFjayhcblx0XHRmYWtlT3B0aW9ucz8uZGlzcGF0Y2ggPz9cblx0XHRcdCgobXNnOiBUTWVzc2FnZSk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAocnVubmluZykge1xuXHRcdFx0XHRcdGJ1ZmZlci5wdXNoKG1zZyk7XG5cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRydW5uaW5nID0gdHJ1ZTtcblxuXHRcdFx0XHRsZXQgbmV4dE1zZzogVE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBtc2c7XG5cdFx0XHRcdGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGhhbmRsZU1lc3NhZ2UobmV4dE1zZyk7XG5cblx0XHRcdFx0XHRuZXh0TXNnID0gYnVmZmVyLnNoaWZ0KCk7XG5cdFx0XHRcdH0gd2hpbGUgKG5leHRNc2cpO1xuXG5cdFx0XHRcdHJ1bm5pbmcgPSBmYWxzZTtcblxuXHRcdFx0XHRpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgbW9kaWZpZWQpIHtcblx0XHRcdFx0XHRzZXRNb2RlbCgocHJldk1vZGVsKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB1cGRhdGVkTW9kZWwgPSB7IC4uLihwcmV2TW9kZWwgYXMgVE1vZGVsKSwgLi4uY3VycmVudE1vZGVsIH07XG5cblx0XHRcdFx0XHRcdFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJVcGRhdGUgbW9kZWwgZm9yXCIsIG5hbWUsIHVwZGF0ZWRNb2RlbCk7XG5cblx0XHRcdFx0XHRcdHJldHVybiB1cGRhdGVkTW9kZWw7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFtdLFxuXHQpO1xuXG5cdGlmICghaW5pdGlhbGl6ZWRNb2RlbCkge1xuXHRcdGNvbnN0IFtpbml0TW9kZWwsIC4uLmluaXRDb21tYW5kc10gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWwgYXMgVE1vZGVsXSA6IGluaXQocHJvcHMpO1xuXG5cdFx0aW5pdGlhbGl6ZWRNb2RlbCA9IGluaXRNb2RlbDtcblx0XHRzZXRNb2RlbChpbml0aWFsaXplZE1vZGVsKTtcblxuXHRcdFNlcnZpY2VzLmxvZ2dlcj8uZGVidWcoXCJJbml0aWFsIG1vZGVsIGZvclwiLCBuYW1lLCBpbml0aWFsaXplZE1vZGVsKTtcblxuXHRcdGV4ZWNDbWQoZGlzcGF0Y2gsIC4uLmluaXRDb21tYW5kcyk7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9udXJzZXJ5L3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIHdhbnQgdG8gcnVuIHRoaXMgZWZmZWN0IG9ubHkgb25jZVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChzdWJzY3JpcHRpb24pIHtcblx0XHRcdGNvbnN0IFtzdWJDbWQsIGRlc3RydWN0b3JdID0gc3Vic2NyaXB0aW9uKGluaXRpYWxpemVkTW9kZWwgYXMgVE1vZGVsLCBwcm9wcyk7XG5cblx0XHRcdGV4ZWNDbWQoZGlzcGF0Y2gsIHN1YkNtZCk7XG5cblx0XHRcdHJldHVybiBkZXN0cnVjdG9yO1xuXHRcdH1cblx0fSwgW10pO1xuXG5cdHJldHVybiBbaW5pdGlhbGl6ZWRNb2RlbCwgZGlzcGF0Y2hdO1xuXG5cdGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UobmV4dE1zZzogVE1lc3NhZ2UpOiBib29sZWFuIHtcblx0XHRpZiAoIWluaXRpYWxpemVkTW9kZWwpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdGxvZ01lc3NhZ2UobmFtZSwgbmV4dE1zZyk7XG5cblx0XHRjb25zdCBbbmV3TW9kZWwsIC4uLmNvbW1hbmRzXSA9IGNhbGxVcGRhdGUodXBkYXRlLCBuZXh0TXNnLCB7IC4uLmluaXRpYWxpemVkTW9kZWwsIC4uLmN1cnJlbnRNb2RlbCB9LCBwcm9wc1JlZi5jdXJyZW50KTtcblxuXHRcdGlmIChtb2RlbEhhc0NoYW5nZWQoY3VycmVudE1vZGVsLCBuZXdNb2RlbCkpIHtcblx0XHRcdGN1cnJlbnRNb2RlbCA9IHsgLi4uY3VycmVudE1vZGVsLCAuLi5uZXdNb2RlbCB9O1xuXG5cdFx0XHRtb2RpZmllZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0ZXhlY0NtZChkaXNwYXRjaCwgLi4uY29tbWFuZHMpO1xuXG5cdFx0cmV0dXJuIG1vZGlmaWVkO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGU8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oXG5cdHVwZGF0ZTogVXBkYXRlRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiB8IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRtb2RlbDogVE1vZGVsLFxuXHRwcm9wczogVFByb3BzLFxuKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG5cdGlmICh0eXBlb2YgdXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gdXBkYXRlKG1vZGVsLCBtc2csIHByb3BzKTtcblx0fVxuXG5cdHJldHVybiBjYWxsVXBkYXRlTWFwKHVwZGF0ZSwgbXNnLCBtb2RlbCwgcHJvcHMpO1xufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+KFxuXHR1cGRhdGVNYXA6IFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRtb2RlbDogVE1vZGVsLFxuXHRwcm9wczogVFByb3BzLFxuKTogVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiB7XG5cdGNvbnN0IG1zZ05hbWU6IFRNZXNzYWdlW1wibmFtZVwiXSA9IG1zZy5uYW1lO1xuXG5cdHJldHVybiB1cGRhdGVNYXBbbXNnTmFtZV0obXNnLCBtb2RlbCwgcHJvcHMpO1xufVxuXG5leHBvcnQgdHlwZSB7IFN1YnNjcmlwdGlvbiwgU3Vic2NyaXB0aW9uUmVzdWx0LCBVc2VFbG1pc2hPcHRpb25zIH07XG5cbmV4cG9ydCB7IGNhbGxVcGRhdGUsIGNhbGxVcGRhdGVNYXAsIHVzZUVsbWlzaCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFBbUQsU0FBQUksbUJBQUFDLEdBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsR0FBQSxLQUFBRSxnQkFBQSxDQUFBRixHQUFBLEtBQUFHLDJCQUFBLENBQUFILEdBQUEsS0FBQUksa0JBQUE7QUFBQSxTQUFBQSxtQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUosbUJBQUFELEdBQUEsUUFBQU0sS0FBQSxDQUFBQyxPQUFBLENBQUFQLEdBQUEsVUFBQVEsaUJBQUEsQ0FBQVIsR0FBQTtBQUFBLFNBQUFTLFNBQUFULEdBQUEsV0FBQVUsZUFBQSxDQUFBVixHQUFBLEtBQUFFLGdCQUFBLENBQUFGLEdBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsR0FBQSxLQUFBVyxnQkFBQTtBQUFBLFNBQUFULGlCQUFBVSxJQUFBLGVBQUFDLE1BQUEsb0JBQUFELElBQUEsQ0FBQUMsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLElBQUEsK0JBQUFOLEtBQUEsQ0FBQVMsSUFBQSxDQUFBSCxJQUFBO0FBQUEsU0FBQUksUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENB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