occam-languages 2.1.3 → 2.1.5

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.
@@ -15,6 +15,9 @@ _export(exports, {
15
15
  get breakPointToBreakPointJSON () {
16
16
  return breakPointToBreakPointJSON;
17
17
  },
18
+ get breakable () {
19
+ return breakable;
20
+ },
18
21
  get default () {
19
22
  return _default;
20
23
  },
@@ -28,6 +31,14 @@ function _interop_require_default(obj) {
28
31
  default: obj
29
32
  };
30
33
  }
34
+ function breakable(innerFunction) {
35
+ return function(...remainingArguments) {
36
+ const continuation = remainingArguments.pop(), context = remainingArguments.pop();
37
+ this.break(context, ()=>{
38
+ innerFunction.call(this, ...remainingArguments, context, continuation);
39
+ });
40
+ };
41
+ }
31
42
  function breakPointFromJSON(json) {
32
43
  let breakPoint;
33
44
  ({ breakPoint } = json);
@@ -60,9 +71,10 @@ function lineIndexFromNodeAndTokens(node, tokens) {
60
71
  return lineIndex;
61
72
  }
62
73
  const _default = {
74
+ breakable,
63
75
  breakPointFromJSON,
64
76
  breakPointToBreakPointJSON,
65
77
  lineIndexFromNodeAndTokens
66
78
  };
67
79
 
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJlYWtQb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJyZWFrUG9pbnQgZnJvbSBcIi4uL2JyZWFrUG9pbnRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSB7XG4gIGxldCBicmVha1BvaW50O1xuXG4gICh7IGJyZWFrUG9pbnQgfSA9IGpzb24pO1xuXG4gIGlmIChicmVha1BvaW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50OyAgLy8vXG5cbiAgICBqc29uID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGJyZWFrUG9pbnQgPSBCcmVha1BvaW50LmZyb21KU09OKGpzb24pOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJlYWtQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpIHtcbiAgbGV0IGJyZWFrUG9pbnRKU09OID0gbnVsbDtcblxuICBpZiAoYnJlYWtQb2ludCAhPT0gbnVsbCkge1xuICAgIGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludC50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBicmVha1BvaW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4ID0gMDtcblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICB0b2tlbnMuc29tZSgodG9rZW4sIHRva2VuSW5kZXgpID0+IHtcbiAgICBjb25zdCB0b2tlbkVuZE9mTGluZVRva2VuID0gdG9rZW4uaXNFbmRPZkxpbmVUb2tlbigpO1xuXG4gICAgaWYgKHRva2VuRW5kT2ZMaW5lVG9rZW4pIHtcbiAgICAgIGxpbmVJbmRleCArPSAxO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkluZGV4ID09PSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGluZUluZGV4O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGJyZWFrUG9pbnRGcm9tSlNPTixcbiAgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04sXG4gIGxpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zXG59O1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwibGluZUluZGV4RnJvbU5vZGVBbmRUb2tlbnMiLCJqc29uIiwiYnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwiQnJlYWtQb2ludCIsImZyb21KU09OIiwidG9KU09OIiwibm9kZSIsInRva2VucyIsImxpbmVJbmRleCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJzb21lIiwidG9rZW4iLCJ0b2tlbkluZGV4IiwidG9rZW5FbmRPZkxpbmVUb2tlbiIsImlzRW5kT2ZMaW5lVG9rZW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUE4QmhCO2VBQUE7O1FBcEJnQkM7ZUFBQUE7OzttRUE1Qk87Ozs7OztBQUVoQixTQUFTRixtQkFBbUJHLElBQUk7SUFDckMsSUFBSUM7SUFFSCxDQUFBLEVBQUVBLFVBQVUsRUFBRSxHQUFHRCxJQUFHO0lBRXJCLElBQUlDLGVBQWUsTUFBTTtRQUN2QixNQUFNQyxpQkFBaUJELFlBQWEsR0FBRztRQUV2Q0QsT0FBT0UsZ0JBQWlCLEdBQUc7UUFFM0JELGFBQWFFLG1CQUFVLENBQUNDLFFBQVEsQ0FBQ0osT0FBUSxHQUFHO0lBQzlDO0lBRUEsT0FBT0M7QUFDVDtBQUVPLFNBQVNILDJCQUEyQkcsVUFBVTtJQUNuRCxJQUFJQyxpQkFBaUI7SUFFckIsSUFBSUQsZUFBZSxNQUFNO1FBQ3ZCQyxpQkFBaUJELFdBQVdJLE1BQU07SUFDcEM7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU0gsMkJBQTJCTyxJQUFJLEVBQUVDLE1BQU07SUFDckQsSUFBSUMsWUFBWTtJQUVoQixNQUFNQyw2QkFBNkJILEtBQUtJLDZCQUE2QixDQUFDSDtJQUV0RUEsT0FBT0ksSUFBSSxDQUFDLENBQUNDLE9BQU9DO1FBQ2xCLE1BQU1DLHNCQUFzQkYsTUFBTUcsZ0JBQWdCO1FBRWxELElBQUlELHFCQUFxQjtZQUN2Qk4sYUFBYTtRQUNmO1FBRUEsSUFBSUssZUFBZUosNEJBQTRCO1lBQzdDLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0Q7QUFDVDtNQUVBLFdBQWU7SUFDYlg7SUFDQUM7SUFDQUM7QUFDRiJ9
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJlYWtQb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJyZWFrUG9pbnQgZnJvbSBcIi4uL2JyZWFrUG9pbnRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrYWJsZShpbm5lckZ1bmN0aW9uKSB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgY29udGV4dCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICAgIHRoaXMuYnJlYWsoY29udGV4dCwgKCkgPT4ge1xuICAgICAgaW5uZXJGdW5jdGlvbi5jYWxsKHRoaXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSB7XG4gIGxldCBicmVha1BvaW50O1xuXG4gICh7IGJyZWFrUG9pbnQgfSA9IGpzb24pO1xuXG4gIGlmIChicmVha1BvaW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50OyAgLy8vXG5cbiAgICBqc29uID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGJyZWFrUG9pbnQgPSBCcmVha1BvaW50LmZyb21KU09OKGpzb24pOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJlYWtQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpIHtcbiAgbGV0IGJyZWFrUG9pbnRKU09OID0gbnVsbDtcblxuICBpZiAoYnJlYWtQb2ludCAhPT0gbnVsbCkge1xuICAgIGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludC50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBicmVha1BvaW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4ID0gMDtcblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICB0b2tlbnMuc29tZSgodG9rZW4sIHRva2VuSW5kZXgpID0+IHtcbiAgICBjb25zdCB0b2tlbkVuZE9mTGluZVRva2VuID0gdG9rZW4uaXNFbmRPZkxpbmVUb2tlbigpO1xuXG4gICAgaWYgKHRva2VuRW5kT2ZMaW5lVG9rZW4pIHtcbiAgICAgIGxpbmVJbmRleCArPSAxO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkluZGV4ID09PSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGluZUluZGV4O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGJyZWFrYWJsZSxcbiAgYnJlYWtQb2ludEZyb21KU09OLFxuICBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTixcbiAgbGluZUluZGV4RnJvbU5vZGVBbmRUb2tlbnNcbn07XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha2FibGUiLCJsaW5lSW5kZXhGcm9tTm9kZUFuZFRva2VucyIsImlubmVyRnVuY3Rpb24iLCJyZW1haW5pbmdBcmd1bWVudHMiLCJjb250aW51YXRpb24iLCJwb3AiLCJjb250ZXh0IiwiYnJlYWsiLCJjYWxsIiwianNvbiIsImJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsIkJyZWFrUG9pbnQiLCJmcm9tSlNPTiIsInRvSlNPTiIsIm5vZGUiLCJ0b2tlbnMiLCJsaW5lSW5kZXgiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic29tZSIsInRva2VuIiwidG9rZW5JbmRleCIsInRva2VuRW5kT2ZMaW5lVG9rZW4iLCJpc0VuZE9mTGluZVRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFlZ0JBO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBM0JBQztlQUFBQTs7UUF5RGhCO2VBQUE7O1FBcEJnQkM7ZUFBQUE7OzttRUF2Q087Ozs7OztBQUVoQixTQUFTRCxVQUFVRSxhQUFhO0lBQ3JDLE9BQU8sU0FBUyxHQUFHQyxrQkFBa0I7UUFDbkMsTUFBTUMsZUFBZUQsbUJBQW1CRSxHQUFHLElBQ3JDQyxVQUFVSCxtQkFBbUJFLEdBQUc7UUFFdEMsSUFBSSxDQUFDRSxLQUFLLENBQUNELFNBQVM7WUFDbEJKLGNBQWNNLElBQUksQ0FBQyxJQUFJLEtBQUtMLG9CQUFvQkcsU0FBU0Y7UUFDM0Q7SUFDRjtBQUNGO0FBRU8sU0FBU04sbUJBQW1CVyxJQUFJO0lBQ3JDLElBQUlDO0lBRUgsQ0FBQSxFQUFFQSxVQUFVLEVBQUUsR0FBR0QsSUFBRztJQUVyQixJQUFJQyxlQUFlLE1BQU07UUFDdkIsTUFBTUMsaUJBQWlCRCxZQUFhLEdBQUc7UUFFdkNELE9BQU9FLGdCQUFpQixHQUFHO1FBRTNCRCxhQUFhRSxtQkFBVSxDQUFDQyxRQUFRLENBQUNKLE9BQVEsR0FBRztJQUM5QztJQUVBLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTWCwyQkFBMkJXLFVBQVU7SUFDbkQsSUFBSUMsaUJBQWlCO0lBRXJCLElBQUlELGVBQWUsTUFBTTtRQUN2QkMsaUJBQWlCRCxXQUFXSSxNQUFNO0lBQ3BDO0lBRUEsT0FBT0g7QUFDVDtBQUVPLFNBQVNWLDJCQUEyQmMsSUFBSSxFQUFFQyxNQUFNO0lBQ3JELElBQUlDLFlBQVk7SUFFaEIsTUFBTUMsNkJBQTZCSCxLQUFLSSw2QkFBNkIsQ0FBQ0g7SUFFdEVBLE9BQU9JLElBQUksQ0FBQyxDQUFDQyxPQUFPQztRQUNsQixNQUFNQyxzQkFBc0JGLE1BQU1HLGdCQUFnQjtRQUVsRCxJQUFJRCxxQkFBcUI7WUFDdkJOLGFBQWE7UUFDZjtRQUVBLElBQUlLLGVBQWVKLDRCQUE0QjtZQUM3QyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9EO0FBQ1Q7TUFFQSxXQUFlO0lBQ2JqQjtJQUNBRjtJQUNBQztJQUNBRTtBQUNGIn0=
@@ -15,9 +15,6 @@ _export(exports, {
15
15
  get backwardsEvery () {
16
16
  return backwardsEvery;
17
17
  },
18
- get breakable () {
19
- return breakable;
20
- },
21
18
  get default () {
22
19
  return _default;
23
20
  },
@@ -47,13 +44,22 @@ _export(exports, {
47
44
  },
48
45
  get some () {
49
46
  return some;
50
- },
51
- get unbreakable () {
52
- return unbreakable;
53
47
  }
54
48
  });
55
49
  const _necessary = require("necessary");
56
50
  const { first: arrayFirst, filter: arrayFilter } = _necessary.arrayUtilities, { forEach: asynchronousForEach, forwardsForEach: asynchronousForwardsForEach, backwardsForEach: asynchronousBackwardsForEach } = _necessary.asynchronousUtilities;
51
+ function all(callbacks, ...remainingArguments) {
52
+ const continuation = remainingArguments.pop();
53
+ every(callbacks, (callback, continuation)=>{
54
+ callback(...remainingArguments, continuation);
55
+ }, continuation);
56
+ }
57
+ function exists(callbacks, ...remainingArguments) {
58
+ const continuation = remainingArguments.pop();
59
+ some(callbacks, (callback, continuation)=>{
60
+ callback(...remainingArguments, continuation);
61
+ }, continuation);
62
+ }
57
63
  function some(array, callback, ...remainingArguments) {
58
64
  let success = false;
59
65
  const continuation = remainingArguments.pop();
@@ -218,43 +224,9 @@ function backwardsEvery(array, callback, ...remainingArguments) {
218
224
  continuation(success);
219
225
  });
220
226
  }
221
- function all(callbacks, ...remainingArguments) {
222
- const continuation = remainingArguments.pop();
223
- every(callbacks, (callback, continuation)=>{
224
- callback(...remainingArguments, continuation);
225
- }, continuation);
226
- }
227
- function exists(callbacks, ...remainingArguments) {
228
- const continuation = remainingArguments.pop();
229
- some(callbacks, (callback, continuation)=>{
230
- callback(...remainingArguments, continuation);
231
- }, continuation);
232
- }
233
- function breakable(innerFunction) {
234
- return function(...remainingArguments) {
235
- const remainingArgumentsLength = remainingArguments.length, innerFunctionLength = innerFunction.length, continuation = remainingArguments.pop(), context = remainingArguments.pop();
236
- this.break(context, ()=>{
237
- if (innerFunctionLength === remainingArgumentsLength) {
238
- innerFunction.call(this, ...remainingArguments, context, continuation);
239
- return;
240
- }
241
- const result = innerFunction.call(this, ...remainingArguments, context);
242
- continuation(result);
243
- });
244
- };
245
- }
246
- function unbreakable(innerFunction) {
247
- return function(...remainingArguments) {
248
- const remainingArgumentsLength = remainingArguments.length, innerFunctionLength = innerFunction.length, continuation = remainingArguments.pop(), context = remainingArguments.pop();
249
- if (innerFunctionLength === remainingArgumentsLength) {
250
- innerFunction.call(this, ...remainingArguments, context, continuation);
251
- return;
252
- }
253
- const result = innerFunction.call(this, ...remainingArguments, context);
254
- continuation(result);
255
- };
256
- }
257
227
  const _default = {
228
+ all,
229
+ exists,
258
230
  some,
259
231
  every,
260
232
  match,
@@ -263,11 +235,7 @@ const _default = {
263
235
  extract,
264
236
  resolve,
265
237
  forwardsEvery,
266
- backwardsEvery,
267
- all,
268
- exists,
269
- breakable,
270
- unbreakable
238
+ backwardsEvery
271
239
  };
272
240
 
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0OiBhcnJheUZpcnN0LCBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnRpbnVhdGlvbihtYXRjaGVzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGV2ZXJ5KGFycmF5QSwgKGVsZW1lbnRBLCBjb250aW51YXRpb24pID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY29uc3QgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudEEsIGVsZW1lbnRCLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH0sIChzdWNjZXNzKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN1Y2Nlc3M7ICAvLy9cblxuICAgIGNvbnRpbnVhdGlvbihtYXRjaGVzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgIHZhbHVlID0gY3VycmVudFZhbHVlOyAgLy8vXG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbih2YWx1ZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgc29tZShhcnJheSwgKGVsZW1lbnQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gYXJyYXlGaXJzdChkZWxldGVkRWxlbWVudHMpO1xuXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihkZWxldGVkRWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZShhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZnVuY3Rpb24gbmV4dFBhc3MoKSB7XG4gICAgY29uc3QgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChhcnJheUFMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlOyAgLy8vXG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBsZXQgY291bnQgPSAtMTtcblxuICAgIGZ1bmN0aW9uIG5leHRFbGVtZW50KCkge1xuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBhcnJheUFMZW5ndGgpO1xuXG4gICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTsgLy8vXG5cbiAgICAgICAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcnJheUZpbHRlcihhcnJheUEsIChlbGVtZW50QSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFycmF5QkluY2x1ZGVzRWxlbWVudEEgPSBhcnJheUIuaW5jbHVkZXMoZWxlbWVudEEpO1xuXG4gICAgICAgICAgaWYgKCFhcnJheUJJbmNsdWRlc0VsZW1lbnRBKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5leHRQYXNzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmRleCA9IGNvdW50LCAgLy8vXG4gICAgICAgICAgICAgIGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XTtcblxuICAgICAgICBjYWxsYmFjayhlbGVtZW50QSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudEIgPSBlbGVtZW50QTsgIC8vL1xuXG4gICAgICAgICAgICBhcnJheUIucHVzaChlbGVtZW50Qik7XG5cbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHRFbGVtZW50KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5leHRFbGVtZW50KCk7XG4gIH1cblxuICBuZXh0UGFzcygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGV2ZXJ5KGNhbGxiYWNrcywgKGNhbGxiYWNrLCBjb250aW51YXRpb24pID0+IHtcbiAgICBjYWxsYmFjayguLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH0sIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGNhbGxiYWNrKC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrYWJsZShpbm5lckZ1bmN0aW9uKSB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCByZW1haW5pbmdBcmd1bWVudHNMZW5ndGggPSByZW1haW5pbmdBcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgIGlubmVyRnVuY3Rpb25MZW5ndGggPSBpbm5lckZ1bmN0aW9uLmxlbmd0aCxcbiAgICAgICAgICBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgY29udGV4dCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICAgIHRoaXMuYnJlYWsoY29udGV4dCwgKCkgPT4ge1xuICAgICAgaWYgKGlubmVyRnVuY3Rpb25MZW5ndGggPT09IHJlbWFpbmluZ0FyZ3VtZW50c0xlbmd0aCkge1xuICAgICAgICBpbm5lckZ1bmN0aW9uLmNhbGwodGhpcywgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5uZXJGdW5jdGlvbi5jYWxsKHRoaXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGV4dCk7XG5cbiAgICAgIGNvbnRpbnVhdGlvbihyZXN1bHQpO1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5icmVha2FibGUoaW5uZXJGdW5jdGlvbikge1xuICByZXR1cm4gZnVuY3Rpb24oLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgcmVtYWluaW5nQXJndW1lbnRzTGVuZ3RoID0gcmVtYWluaW5nQXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICBpbm5lckZ1bmN0aW9uTGVuZ3RoID0gaW5uZXJGdW5jdGlvbi5sZW5ndGgsXG4gICAgICAgICAgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgIGNvbnRleHQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5uZXJGdW5jdGlvbkxlbmd0aCA9PT0gcmVtYWluaW5nQXJndW1lbnRzTGVuZ3RoKSB7XG4gICAgICBpbm5lckZ1bmN0aW9uLmNhbGwodGhpcywgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gaW5uZXJGdW5jdGlvbi5jYWxsKHRoaXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGV4dCk7XG5cbiAgICBjb250aW51YXRpb24ocmVzdWx0KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBzb21lLFxuICBldmVyeSxcbiAgbWF0Y2gsXG4gIHJlZHVjZSxcbiAgZm9yRWFjaCxcbiAgZXh0cmFjdCxcbiAgcmVzb2x2ZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGFsbCxcbiAgZXhpc3RzLFxuICBicmVha2FibGUsXG4gIHVuYnJlYWthYmxlXG59XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJicmVha2FibGUiLCJldmVyeSIsImV4aXN0cyIsImV4dHJhY3QiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsIm1hdGNoIiwicmVkdWNlIiwicmVzb2x2ZSIsInNvbWUiLCJ1bmJyZWFrYWJsZSIsImZpcnN0IiwiYXJyYXlGaXJzdCIsImZpbHRlciIsImFycmF5RmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNGb3JFYWNoIiwiZm9yd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoIiwiYmFja3dhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJhcnJheSIsImNhbGxiYWNrIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsImNvbnRpbnVhdGlvbiIsInBvcCIsImVsZW1lbnQiLCJuZXh0IiwiZG9uZSIsInBhc3NlZCIsImFycmF5QSIsImFycmF5QiIsImFycmF5QUxlbmd0aCIsImxlbmd0aCIsImFycmF5Qkxlbmd0aCIsIm1hdGNoZXMiLCJpbmRleCIsImVsZW1lbnRBIiwiZWxlbWVudEIiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsImRlbGV0ZWRFbGVtZW50IiwidW5kZWZpbmVkIiwic3RhcnQiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50cyIsInNwbGljZSIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJuZXh0UGFzcyIsImNvdW50IiwibmV4dEVsZW1lbnQiLCJ0ZXJtaW5hdGUiLCJhcnJheUJJbmNsdWRlc0VsZW1lbnRBIiwiaW5jbHVkZXMiLCJwdXNoIiwiY2FsbGJhY2tzIiwiaW5uZXJGdW5jdGlvbiIsInJlbWFpbmluZ0FyZ3VtZW50c0xlbmd0aCIsImlubmVyRnVuY3Rpb25MZW5ndGgiLCJjb250ZXh0IiwiYnJlYWsiLCJjYWxsIiwicmVzdWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF1UGdCQTtlQUFBQTs7UUF0QkFDO2VBQUFBOztRQXNDQUM7ZUFBQUE7O1FBd0NoQjtlQUFBOztRQWhSZ0JDO2VBQUFBOztRQWdPQUM7ZUFBQUE7O1FBcEpBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBMEdBQztlQUFBQTs7UUF0SkFDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7UUE3SEFDO2VBQUFBOztRQW1SQUM7ZUFBQUE7OzsyQkExUnNDO0FBRXRELE1BQU0sRUFBRUMsT0FBT0MsVUFBVSxFQUFFQyxRQUFRQyxXQUFXLEVBQUUsR0FBR0MseUJBQWMsRUFDM0QsRUFBRVgsU0FBU1ksbUJBQW1CLEVBQzVCQyxpQkFBaUJDLDJCQUEyQixFQUM1Q0Msa0JBQWtCQyw0QkFBNEIsRUFBRSxHQUFHQyxnQ0FBcUI7QUFFekUsU0FBU1osS0FBS2EsS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0Msa0JBQWtCO0lBQ3pELElBQUlDLFVBQVU7SUFFZCxNQUFNQyxlQUFlRixtQkFBbUJHLEdBQUc7SUFFM0NYLG9CQUFvQk0sT0FBTyxDQUFDTSxTQUFTQyxNQUFNQztRQUN6Q1AsU0FBU0ssWUFBWUosb0JBQW9CLENBQUNPO1lBQ3hDLElBQUlBLFFBQVE7Z0JBQ1ZOLFVBQVU7Z0JBRVZLO2dCQUVBO1lBQ0Y7WUFFQUQ7UUFDRjtJQUNGLEdBQUc7UUFDREgsYUFBYUQ7SUFDZjtBQUNGO0FBRU8sU0FBU3hCLE1BQU1xQixLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxrQkFBa0I7SUFDMUQsSUFBSUMsVUFB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
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0OiBhcnJheUZpcnN0LCBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGFsbChjYWxsYmFja3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGNhbGxiYWNrKC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgc29tZShjYWxsYmFja3MsIChjYWxsYmFjaywgY29udGludWF0aW9uKSA9PiB7XG4gICAgY2FsbGJhY2soLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgICAgIGFycmF5Qkxlbmd0aCA9IGFycmF5Qi5sZW5ndGg7XG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29udGludWF0aW9uKG1hdGNoZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZXZlcnkoYXJyYXlBLCAoZWxlbWVudEEsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgfSwgKHN1Y2Nlc3MpID0+IHtcbiAgICBjb25zdCBtYXRjaGVzID0gc3VjY2VzczsgIC8vL1xuXG4gICAgY29udGludWF0aW9uKG1hdGNoZXMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZShhcnJheSwgaW5pdGlhbFZhbHVlLCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgdmFsdWUgPSBjdXJyZW50VmFsdWU7ICAvLy9cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHZhbHVlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7IC8vL1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBzb21lKGFycmF5LCAoZWxlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgrKztcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBhcnJheUZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG5cbiAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihwYXNzZWQpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKGRlbGV0ZWRFbGVtZW50KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGFycmF5QSA9IFsgIC8vL1xuICAgIC4uLmFycmF5QVxuICBdO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBmdW5jdGlvbiBuZXh0UGFzcygpIHtcbiAgICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoO1xuXG4gICAgaWYgKGFycmF5QUxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IHRydWU7ICAvLy9cblxuICAgICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIGxldCBjb3VudCA9IC0xO1xuXG4gICAgZnVuY3Rpb24gbmV4dEVsZW1lbnQoKSB7XG4gICAgICBjb3VudCsrO1xuXG4gICAgICBjb25zdCB0ZXJtaW5hdGUgPSAoY291bnQgPT09IGFycmF5QUxlbmd0aCk7XG5cbiAgICAgIGlmICh0ZXJtaW5hdGUpIHtcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlOyAvLy9cblxuICAgICAgICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5RmlsdGVyKGFycmF5QSwgKGVsZW1lbnRBKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJyYXlCSW5jbHVkZXNFbGVtZW50QSA9IGFycmF5Qi5pbmNsdWRlcyhlbGVtZW50QSk7XG5cbiAgICAgICAgICBpZiAoIWFycmF5QkluY2x1ZGVzRWxlbWVudEEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV4dFBhc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY291bnQsICAvLy9cbiAgICAgICAgICAgICAgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgICAgIGNhbGxiYWNrKGVsZW1lbnRBLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50QiA9IGVsZW1lbnRBOyAgLy8vXG5cbiAgICAgICAgICAgIGFycmF5Qi5wdXNoKGVsZW1lbnRCKTtcblxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dEVsZW1lbnQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV4dEVsZW1lbnQoKTtcbiAgfVxuXG4gIG5leHRQYXNzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhbGwsXG4gIGV4aXN0cyxcbiAgc29tZSxcbiAgZXZlcnksXG4gIG1hdGNoLFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGV4dHJhY3QsXG4gIHJlc29sdmUsXG4gIGZvcndhcmRzRXZlcnksXG4gIGJhY2t3YXJkc0V2ZXJ5XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJldmVyeSIsImV4aXN0cyIsImV4dHJhY3QiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsIm1hdGNoIiwicmVkdWNlIiwicmVzb2x2ZSIsInNvbWUiLCJmaXJzdCIsImFycmF5Rmlyc3QiLCJmaWx0ZXIiLCJhcnJheUZpbHRlciIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsImZvcndhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaCIsImJhY2t3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiY2FsbGJhY2tzIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwiY2FsbGJhY2siLCJhcnJheSIsInN1Y2Nlc3MiLCJlbGVtZW50IiwibmV4dCIsImRvbmUiLCJwYXNzZWQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJsZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJtYXRjaGVzIiwiaW5kZXgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJkZWxldGVkRWxlbWVudHMiLCJzcGxpY2UiLCJmaXJzdERlbGV0ZWRFbGVtZW50IiwibmV4dFBhc3MiLCJjb3VudCIsIm5leHRFbGVtZW50IiwidGVybWluYXRlIiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU2dCQTtlQUFBQTs7UUF3T0FDO2VBQUFBOztRQXNCaEI7ZUFBQTs7UUF4TmdCQztlQUFBQTs7UUE5QkFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBdEpBQztlQUFBQTs7UUE0QkFDO2VBQUFBOztRQXFEQUM7ZUFBQUE7O1FBN0hBQztlQUFBQTs7OzJCQXZCc0M7QUFFdEQsTUFBTSxFQUFFQyxPQUFPQyxVQUFVLEVBQUVDLFFBQVFDLFdBQVcsRUFBRSxHQUFHQyx5QkFBYyxFQUMzRCxFQUFFVixTQUFTVyxtQkFBbUIsRUFDNUJDLGlCQUFpQkMs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "2.1.3",
4
+ "version": "2.1.5",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -2,6 +2,17 @@
2
2
 
3
3
  import BreakPoint from "../breakPoint";
4
4
 
5
+ export function breakable(innerFunction) {
6
+ return function(...remainingArguments) {
7
+ const continuation = remainingArguments.pop(),
8
+ context = remainingArguments.pop();
9
+
10
+ this.break(context, () => {
11
+ innerFunction.call(this, ...remainingArguments, context, continuation);
12
+ });
13
+ };
14
+ }
15
+
5
16
  export function breakPointFromJSON(json) {
6
17
  let breakPoint;
7
18
 
@@ -49,6 +60,7 @@ export function lineIndexFromNodeAndTokens(node, tokens) {
49
60
  }
50
61
 
51
62
  export default {
63
+ breakable,
52
64
  breakPointFromJSON,
53
65
  breakPointToBreakPointJSON,
54
66
  lineIndexFromNodeAndTokens
@@ -7,6 +7,22 @@ const { first: arrayFirst, filter: arrayFilter } = arrayUtilities,
7
7
  forwardsForEach: asynchronousForwardsForEach,
8
8
  backwardsForEach: asynchronousBackwardsForEach } = asynchronousUtilities;
9
9
 
10
+ export function all(callbacks, ...remainingArguments) {
11
+ const continuation = remainingArguments.pop();
12
+
13
+ every(callbacks, (callback, continuation) => {
14
+ callback(...remainingArguments, continuation);
15
+ }, continuation);
16
+ }
17
+
18
+ export function exists(callbacks, ...remainingArguments) {
19
+ const continuation = remainingArguments.pop();
20
+
21
+ some(callbacks, (callback, continuation) => {
22
+ callback(...remainingArguments, continuation);
23
+ }, continuation);
24
+ }
25
+
10
26
  export function some(array, callback, ...remainingArguments) {
11
27
  let success = false;
12
28
 
@@ -245,63 +261,9 @@ export function backwardsEvery(array, callback, ...remainingArguments) {
245
261
  });
246
262
  }
247
263
 
248
- export function all(callbacks, ...remainingArguments) {
249
- const continuation = remainingArguments.pop();
250
-
251
- every(callbacks, (callback, continuation) => {
252
- callback(...remainingArguments, continuation);
253
- }, continuation);
254
- }
255
-
256
- export function exists(callbacks, ...remainingArguments) {
257
- const continuation = remainingArguments.pop();
258
-
259
- some(callbacks, (callback, continuation) => {
260
- callback(...remainingArguments, continuation);
261
- }, continuation);
262
- }
263
-
264
- export function breakable(innerFunction) {
265
- return function(...remainingArguments) {
266
- const remainingArgumentsLength = remainingArguments.length,
267
- innerFunctionLength = innerFunction.length,
268
- continuation = remainingArguments.pop(),
269
- context = remainingArguments.pop();
270
-
271
- this.break(context, () => {
272
- if (innerFunctionLength === remainingArgumentsLength) {
273
- innerFunction.call(this, ...remainingArguments, context, continuation);
274
-
275
- return;
276
- }
277
-
278
- const result = innerFunction.call(this, ...remainingArguments, context);
279
-
280
- continuation(result);
281
- });
282
- };
283
- }
284
-
285
- export function unbreakable(innerFunction) {
286
- return function(...remainingArguments) {
287
- const remainingArgumentsLength = remainingArguments.length,
288
- innerFunctionLength = innerFunction.length,
289
- continuation = remainingArguments.pop(),
290
- context = remainingArguments.pop();
291
-
292
- if (innerFunctionLength === remainingArgumentsLength) {
293
- innerFunction.call(this, ...remainingArguments, context, continuation);
294
-
295
- return;
296
- }
297
-
298
- const result = innerFunction.call(this, ...remainingArguments, context);
299
-
300
- continuation(result);
301
- };
302
- }
303
-
304
264
  export default {
265
+ all,
266
+ exists,
305
267
  some,
306
268
  every,
307
269
  match,
@@ -310,9 +272,5 @@ export default {
310
272
  extract,
311
273
  resolve,
312
274
  forwardsEvery,
313
- backwardsEvery,
314
- all,
315
- exists,
316
- breakable,
317
- unbreakable
275
+ backwardsEvery
318
276
  }