occam-furtle 3.0.368 → 3.0.371

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 (65) hide show
  1. package/lib/context/literal.js +42 -0
  2. package/lib/element/anonymousProcedure.js +51 -0
  3. package/lib/element/label.js +4 -1
  4. package/lib/element/parameters.js +4 -1
  5. package/lib/element/procedure.js +15 -7
  6. package/lib/element/returnBlock.js +7 -7
  7. package/lib/element/returnStatement.js +33 -0
  8. package/lib/element/statement.js +43 -0
  9. package/lib/element/type.js +11 -1
  10. package/lib/example/furtle/bnf.js +11 -5
  11. package/lib/example/furtle/entries.js +2 -2
  12. package/lib/node/anoymousProcedure.js +31 -0
  13. package/lib/node/procedure.js +20 -3
  14. package/lib/node/returnBlock.js +4 -4
  15. package/lib/node/returnStatement.js +23 -0
  16. package/lib/node/statement.js +16 -3
  17. package/lib/nonTerminalNodeMap.js +10 -10
  18. package/lib/preamble.js +4 -5
  19. package/lib/process/instantiate.js +32 -0
  20. package/lib/process/verify.js +6 -6
  21. package/lib/ruleNames.js +7 -7
  22. package/lib/utilities/context.js +15 -1
  23. package/lib/utilities/element.js +82 -100
  24. package/lib/utilities/json.js +38 -8
  25. package/lib/utilities/string.js +1 -8
  26. package/package.json +2 -2
  27. package/src/context/literal.js +46 -0
  28. package/src/element/{procedure/anonymous.js → anonymousProcedure.js} +3 -3
  29. package/src/element/label.js +4 -0
  30. package/src/element/parameters.js +4 -0
  31. package/src/element/procedure.js +31 -15
  32. package/src/element/returnBlock.js +6 -6
  33. package/src/element/{statement/return.js → returnStatement.js} +1 -1
  34. package/src/element/{step.js → statement.js} +2 -2
  35. package/src/element/type.js +19 -0
  36. package/src/example/furtle/bnf.js +10 -4
  37. package/src/example/furtle/entries.js +2 -2
  38. package/src/node/{procedure/anoymous.js → anoymousProcedure.js} +4 -4
  39. package/src/node/procedure.js +31 -1
  40. package/src/node/returnBlock.js +5 -5
  41. package/src/node/returnStatement.js +16 -0
  42. package/src/node/statement.js +24 -1
  43. package/src/nonTerminalNodeMap.js +11 -11
  44. package/src/preamble.js +3 -4
  45. package/src/process/instantiate.js +35 -0
  46. package/src/process/verify.js +7 -7
  47. package/src/ruleNames.js +2 -2
  48. package/src/utilities/context.js +9 -0
  49. package/src/utilities/element.js +113 -145
  50. package/src/utilities/json.js +48 -9
  51. package/src/utilities/string.js +0 -14
  52. package/lib/element/declaration/procedure.js +0 -36
  53. package/lib/element/procedure/anonymous.js +0 -51
  54. package/lib/element/statement/return.js +0 -33
  55. package/lib/element/step.js +0 -43
  56. package/lib/node/declaration/procedure.js +0 -40
  57. package/lib/node/declaration.js +0 -18
  58. package/lib/node/procedure/anoymous.js +0 -36
  59. package/lib/node/statement/return.js +0 -28
  60. package/lib/node/step.js +0 -31
  61. package/src/element/declaration/procedure.js +0 -38
  62. package/src/node/declaration/procedure.js +0 -37
  63. package/src/node/declaration.js +0 -7
  64. package/src/node/statement/return.js +0 -16
  65. package/src/node/step.js +0 -30
@@ -9,9 +9,15 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get labelFromJSON () {
13
+ return labelFromJSON;
14
+ },
12
15
  get labelToLabelJSON () {
13
16
  return labelToLabelJSON;
14
17
  },
18
+ get parametersFromJSON () {
19
+ return parametersFromJSON;
20
+ },
15
21
  get parametersToParametersJSON () {
16
22
  return parametersToParametersJSON;
17
23
  },
@@ -21,6 +27,9 @@ _export(exports, {
21
27
  get proceduresToProceduresJSON () {
22
28
  return proceduresToProceduresJSON;
23
29
  },
30
+ get typeFromJSON () {
31
+ return typeFromJSON;
32
+ },
24
33
  get typeToTypeJSON () {
25
34
  return typeToTypeJSON;
26
35
  }
@@ -39,17 +48,31 @@ function labelToLabelJSON(label) {
39
48
  const labelJSON = label.toJSON();
40
49
  return labelJSON;
41
50
  }
42
- function proceduresToProceduresJSON(procedures) {
43
- const proceduresJSON = procedures.map((procedure)=>{
44
- const procedureJSON = procedure.toJSON();
45
- return procedureJSON;
46
- });
47
- return proceduresJSON;
48
- }
49
51
  function parametersToParametersJSON(parameters) {
50
52
  const parameterJSON = parameters.toJSON();
51
53
  return parameterJSON;
52
54
  }
55
+ function typeFromJSON(json, context) {
56
+ let { type } = json;
57
+ const { Type } = _elements.default, typeJSON = type; ///
58
+ json = typeJSON; ///
59
+ type = Type.fromJSON(json, context);
60
+ return type;
61
+ }
62
+ function labelFromJSON(json, context) {
63
+ let { label } = json;
64
+ const { Label } = _elements.default, labelJSON = label; ///
65
+ json = labelJSON; ///
66
+ label = Label.fromJSON(json, context);
67
+ return label;
68
+ }
69
+ function parametersFromJSON(json, context) {
70
+ let { parameters } = json;
71
+ const { Parameters } = _elements.default, parametersJSON = parameters; ///
72
+ json = parametersJSON; ///
73
+ parameters = Parameters.fromJSON(json, context);
74
+ return parameters;
75
+ }
53
76
  function proceduresFromJSON(json, context) {
54
77
  let { procedures } = json;
55
78
  const { Procedure } = _elements.default, proceduresJSON = procedures; ///
@@ -59,5 +82,12 @@ function proceduresFromJSON(json, context) {
59
82
  });
60
83
  return procedures;
61
84
  }
85
+ function proceduresToProceduresJSON(procedures) {
86
+ const proceduresJSON = procedures.map((procedure)=>{
87
+ const procedureJSON = procedure.toJSON();
88
+ return procedureJSON;
89
+ });
90
+ return proceduresJSON;
91
+ }
62
92
 
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlc1RvUHJvY2VkdXJlc0pTT04ocHJvY2VkdXJlcykge1xuICBjb25zdCBwcm9jZWR1cmVzSlNPTiA9IHByb2NlZHVyZXMubWFwKChwcm9jZWR1cmUpID0+IHtcbiAgICBjb25zdCBwcm9jZWR1cmVKU09OID0gcHJvY2VkdXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9jZWR1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlcnMudG9KU09OKCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlckpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlc0pTT04gPSBwcm9jZWR1cmVzOyAvLy9cblxuICBwcm9jZWR1cmVzID0gcHJvY2VkdXJlc0pTT04ubWFwKChwcm9jZWR1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb2NlZHVyZUpTT04sICAvLy9cbiAgICAgICAgICBwcm9jZWR1cmUgPSBQcm9jZWR1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9KTtcblxuICByZXR1cm4gcHJvY2VkdXJlcztcbn1cbiJdLCJuYW1lcyI6WyJsYWJlbFRvTGFiZWxKU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJwcm9jZWR1cmVzRnJvbUpTT04iLCJwcm9jZWR1cmVzVG9Qcm9jZWR1cmVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZSIsInR5cGVKU09OIiwidG9KU09OIiwibGFiZWwiLCJsYWJlbEpTT04iLCJwcm9jZWR1cmVzIiwicHJvY2VkdXJlc0pTT04iLCJtYXAiLCJwcm9jZWR1cmUiLCJwcm9jZWR1cmVKU09OIiwicGFyYW1ldGVycyIsInBhcmFtZXRlckpTT04iLCJqc29uIiwiY29udGV4dCIsIlByb2NlZHVyZSIsImVsZW1lbnRzIiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVnQkE7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBaEJBQztlQUFBQTs7UUFaQUM7ZUFBQUE7OztpRUFGSzs7Ozs7O0FBRWQsU0FBU0EsZUFBZUMsSUFBSTtJQUNqQyxNQUFNQyxXQUFXRCxLQUFLRSxNQUFNO0lBRTVCLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTTixpQkFBaUJRLEtBQUs7SUFDcEMsTUFBTUMsWUFBWUQsTUFBTUQsTUFBTTtJQUU5QixPQUFPRTtBQUNUO0FBRU8sU0FBU04sMkJBQTJCTyxVQUFVO0lBQ25ELE1BQU1DLGlCQUFpQkQsV0FBV0UsR0FBRyxDQUFDLENBQUNDO1FBQ3JDLE1BQU1DLGdCQUFnQkQsVUFBVU4sTUFBTTtRQUV0QyxPQUFPTztJQUNUO0lBRUEsT0FBT0g7QUFDVDtBQUVPLFNBQVNWLDJCQUEyQmMsVUFBVTtJQUNuRCxNQUFNQyxnQkFBZ0JELFdBQVdSLE1BQU07SUFFdkMsT0FBT1M7QUFDVDtBQUVPLFNBQVNkLG1CQUFtQmUsSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRVIsVUFBVSxFQUFFLEdBQUdPO0lBRXJCLE1BQU0sRUFBRUUsU0FBUyxFQUFFLEdBQUdDLGlCQUFRLEVBQ3hCVCxpQkFBaUJELFlBQVksR0FBRztJQUV0Q0EsYUFBYUMsZUFBZUMsR0FBRyxDQUFDLENBQUNFO1FBQy9CLE1BQU1HLE9BQU9ILGVBQ1BELFlBQVlNLFVBQVVFLFFBQVEsQ0FBQ0osTUFBTUM7UUFFM0MsT0FBT0w7SUFDVDtJQUVBLE9BQU9IO0FBQ1QifQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04ocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJKU09OID0gcGFyYW1ldGVycy50b0pTT04oKTtcblxuICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZUpTT04gPSB0eXBlOyAgLy8vXG5cbiAganNvbiA9IHR5cGVKU09OOyAvLy9cblxuICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbCB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXJzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzOyAgLy8vXG5cbiAganNvbiA9IHBhcmFtZXRlcnNKU09OOyAvLy9cblxuICBwYXJhbWV0ZXJzID0gUGFyYW1ldGVycy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9jZWR1cmVzSlNPTiA9IHByb2NlZHVyZXM7IC8vL1xuXG4gIHByb2NlZHVyZXMgPSBwcm9jZWR1cmVzSlNPTi5tYXAoKHByb2NlZHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvY2VkdXJlSlNPTiwgIC8vL1xuICAgICAgICAgIHByb2NlZHVyZSA9IFByb2NlZHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9jZWR1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlc1RvUHJvY2VkdXJlc0pTT04ocHJvY2VkdXJlcykge1xuICBjb25zdCBwcm9jZWR1cmVzSlNPTiA9IHByb2NlZHVyZXMubWFwKChwcm9jZWR1cmUpID0+IHtcbiAgICBjb25zdCBwcm9jZWR1cmVKU09OID0gcHJvY2VkdXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9jZWR1cmVzSlNPTjtcbn1cbiJdLCJuYW1lcyI6WyJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJvY2VkdXJlc0Zyb21KU09OIiwicHJvY2VkdXJlc1RvUHJvY2VkdXJlc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGUiLCJ0eXBlSlNPTiIsInRvSlNPTiIsImxhYmVsIiwibGFiZWxKU09OIiwicGFyYW1ldGVycyIsInBhcmFtZXRlckpTT04iLCJqc29uIiwiY29udGV4dCIsIlR5cGUiLCJlbGVtZW50cyIsImZyb21KU09OIiwiTGFiZWwiLCJQYXJhbWV0ZXJzIiwicGFyYW1ldGVyc0pTT04iLCJwcm9jZWR1cmVzIiwiUHJvY2VkdXJlIiwicHJvY2VkdXJlc0pTT04iLCJtYXAiLCJwcm9jZWR1cmVKU09OIiwicHJvY2VkdXJlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtQ2dCQTtlQUFBQTs7UUF6QkFDO2VBQUFBOztRQXNDQUM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUE2Q0FDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBdkRBQztlQUFBQTs7UUFsQkFDO2VBQUFBOzs7aUVBRks7Ozs7OztBQUVkLFNBQVNBLGVBQWVDLElBQUk7SUFDakMsTUFBTUMsV0FBV0QsS0FBS0UsTUFBTTtJQUU1QixPQUFPRDtBQUNUO0FBRU8sU0FBU1IsaUJBQWlCVSxLQUFLO0lBQ3BDLE1BQU1DLFlBQVlELE1BQU1ELE1BQU07SUFFOUIsT0FBT0U7QUFDVDtBQUVPLFNBQVNULDJCQUEyQlUsVUFBVTtJQUNuRCxNQUFNQyxnQkFBZ0JELFdBQVdILE1BQU07SUFFdkMsT0FBT0k7QUFDVDtBQUVPLFNBQVNSLGFBQWFTLElBQUksRUFBRUMsT0FBTztJQUN4QyxJQUFJLEVBQUVSLElBQUksRUFBRSxHQUFHTztJQUVmLE1BQU0sRUFBRUUsSUFBSSxFQUFFLEdBQUdDLGlCQUFRLEVBQ25CVCxXQUFXRCxNQUFPLEdBQUc7SUFFM0JPLE9BQU9OLFVBQVUsR0FBRztJQUVwQkQsT0FBT1MsS0FBS0UsUUFBUSxDQUFDSixNQUFNQztJQUUzQixPQUFPUjtBQUNUO0FBRU8sU0FBU1IsY0FBY2UsSUFBSSxFQUFFQyxPQUFPO0lBQ3pDLElBQUksRUFBRUwsS0FBSyxFQUFFLEdBQUdJO0lBRWhCLE1BQU0sRUFBRUssS0FBSyxFQUFFLEdBQUdGLGlCQUFRLEVBQ3BCTixZQUFZRCxPQUFRLEdBQUc7SUFFN0JJLE9BQU9ILFdBQVcsR0FBRztJQUVyQkQsUUFBUVMsTUFBTUQsUUFBUSxDQUFDSixNQUFNQztJQUU3QixPQUFPTDtBQUNUO0FBRU8sU0FBU1QsbUJBQW1CYSxJQUFJLEVBQUVDLE9BQU87SUFDOUMsSUFBSSxFQUFFSCxVQUFVLEVBQUUsR0FBR0U7SUFFckIsTUFBTSxFQUFFTSxVQUFVLEVBQUUsR0FBR0gsaUJBQVEsRUFDekJJLGlCQUFpQlQsWUFBYSxHQUFHO0lBRXZDRSxPQUFPTyxnQkFBZ0IsR0FBRztJQUUxQlQsYUFBYVEsV0FBV0YsUUFBUSxDQUFDSixNQUFNQztJQUV2QyxPQUFPSDtBQUNUO0FBRU8sU0FBU1QsbUJBQW1CVyxJQUFJLEVBQUVDLE9BQU87SUFDOUMsSUFBSSxFQUFFTyxVQUFVLEVBQUUsR0FBR1I7SUFFckIsTUFBTSxFQUFFUyxTQUFTLEVBQUUsR0FBR04saUJBQVEsRUFDeEJPLGlCQUFpQkYsWUFBWSxHQUFHO0lBRXRDQSxhQUFhRSxlQUFlQyxHQUFHLENBQUMsQ0FBQ0M7UUFDL0IsTUFBTVosT0FBT1ksZUFDUEMsWUFBWUosVUFBVUwsUUFBUSxDQUFDSixNQUFNQztRQUUzQyxPQUFPWTtJQUNUO0lBRUEsT0FBT0w7QUFDVDtBQUVPLFNBQVNsQiwyQkFBMkJrQixVQUFVO0lBQ25ELE1BQU1FLGlCQUFpQkYsV0FBV0csR0FBRyxDQUFDLENBQUNFO1FBQ3JDLE1BQU1ELGdCQUFnQkMsVUFBVWxCLE1BQU07UUFFdEMsT0FBT2lCO0lBQ1Q7SUFFQSxPQUFPRjtBQUNUIn0=
@@ -39,9 +39,6 @@ _export(exports, {
39
39
  get primtiveStringFromStringLiteral () {
40
40
  return primtiveStringFromStringLiteral;
41
41
  },
42
- get procedureDeclarationStringFromProcedure () {
43
- return procedureDeclarationStringFromProcedure;
44
- },
45
42
  get procedureStringFromTypeLabelParametersAndReturnBlock () {
46
43
  return procedureStringFromTypeLabelParametersAndReturnBlock;
47
44
  },
@@ -166,10 +163,6 @@ function primtiveStringFromNominalValues(nominalValues) {
166
163
  primtiveString = `[${primtiveString}]`;
167
164
  return primtiveString;
168
165
  }
169
- function procedureDeclarationStringFromProcedure(procedure) {
170
- const type = procedure.getType(), label = procedure.getLabel(), parameters = procedure.getParameters(), returnStatement = procedure.getReturnStatement(), typeString = type.getString(), labelString = label.getString(), parametersString = parameters.getString(), returnStatementString = returnStatement.getString(), procedureDelcarationString = `${typeString} ${labelString}(${parametersString}) { ... ${returnStatementString} }`;
171
- return procedureDelcarationString;
172
- }
173
166
  function returnBlockStringFromReturnStatementNode(returnStatement) {
174
167
  const returnStatementString = returnStatement.getString(), returnBlockString = `{ ... ${returnStatementString} }`;
175
168
  return returnBlockString;
@@ -234,4 +227,4 @@ function reduceStringFromVariableInitialExpressionAndAnonymousProcedure(variable
234
227
  return reduceString;
235
228
  }
236
229
 
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuL3N0cmluZ0xpdGVyYWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm5hcnlTdHJpbmdGcm9tVGVybSh0ZXJtKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gYGlmICgke3Rlcm1TdHJpbmd9KSB7IC4uLiB9IGVsc2UgeyAuLi4gfWA7XG5cbiAgcmV0dXJuIHRlcm5hcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZVN0cmluZ0Zyb21OYW1lKG5hbWUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgbGV0IHRlcm1TdHJpbmc7XG5cbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgICAgdGVybVN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGVybVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgdmFsdWVTdHJpbmc7XG5cbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgICAgdmFsdWVTdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbihib29sZWFuKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7Ym9vbGVhbn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbUludGVnZXIoaW50ZWdlcikge1xuICBjb25zdCBleHByZXNzc2lvblN0cmluZyA9IGAke2ludGVnZXJ9YDtcblxuICByZXR1cm4gZXhwcmVzc3Npb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtc0FycmF5KHRlcm1zQXJyYXkpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc0FycmF5LnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICB0ZXJtU3RyaW5nIDpcbiAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpOyAvLy9cblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNTdHJpbmdGcm9tVmFsdWVzQXJyYXkodmFsdWVzQXJyYXkpIHtcbiAgY29uc3QgdmFsdWVzU3RyaW5nID0gdmFsdWVzQXJyYXkucmVkdWNlKCh2YWx1ZXNTdHJpbmcsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgIHZhbHVlc1N0cmluZyA9ICh2YWx1ZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgYCR7dmFsdWVzU3RyaW5nfSwgJHt2YWx1ZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHZhbHVlc1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHJldHVybiB2YWx1ZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJpbXRpdmVTdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgZXhwcmVzc2lvblN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICBleHByZXNzaW9uU3RyaW5nID0gcHJvcGVydHlTdHJpbmc7ICAvLy9cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBleHByZXNzaW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsKSB7XG4gIGNvbnN0IHN0cmluZyA9IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwpLFxuICAgICAgICBwcmltdGl2ZVN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBwcmltdGl2ZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZXMobm9taW5hbFZhbHVlcykge1xuICBsZXQgcHJpbXRpdmVTdHJpbmc7XG5cbiAgcHJpbXRpdmVTdHJpbmcgPSBub21pbmFsVmFsdWVzLnJlZHVjZSgocHJpbWl0aXZlU3RyaW5nLCBub21pbmFsVmFsdWUpID0+IHtcbiAgICBjb25zdCBub21pbmFsVmFsdWVTdHJpbmcgPSBub21pbmFsVmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBwcmltaXRpdmVTdHJpbmcgPSAocHJpbWl0aXZlU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByaW1pdGl2ZVN0cmluZ30sICR7bm9taW5hbFZhbHVlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBub21pbmFsVmFsdWVTdHJpbmc7IC8vL1xuXG4gICAgcmV0dXJuIHByaW1pdGl2ZVN0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcHJpbXRpdmVTdHJpbmcgPSBgWyR7cHJpbXRpdmVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmdGcm9tUHJvY2VkdXJlKHByb2NlZHVyZSkge1xuICBjb25zdCB0eXBlID0gcHJvY2VkdXJlLmdldFR5cGUoKSxcbiAgICAgICAgbGFiZWwgPSBwcm9jZWR1cmUuZ2V0TGFiZWwoKSxcbiAgICAgICAgcGFyYW1ldGVycyA9IHByb2NlZHVyZS5nZXRQYXJhbWV0ZXJzKCksXG4gICAgICAgIHJldHVyblN0YXRlbWVudCA9IHByb2NlZHVyZS5nZXRSZXR1cm5TdGF0ZW1lbnQoKSxcbiAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnRTdHJpbmcgPSByZXR1cm5TdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHByb2NlZHVyZURlbGNhcmF0aW9uU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHtsYWJlbFN0cmluZyB9KCR7cGFyYW1ldGVyc1N0cmluZ30pIHsgLi4uICR7cmV0dXJuU3RhdGVtZW50U3RyaW5nfSB9YDtcblxuICByZXR1cm4gcHJvY2VkdXJlRGVsY2FyYXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudCkge1xuICBjb25zdCByZXR1cm5TdGF0ZW1lbnRTdHJpbmcgPSByZXR1cm5TdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gYHsgLi4uICR7cmV0dXJuU3RhdGVtZW50U3RyaW5nfSB9YDtcblxuICByZXR1cm4gcmV0dXJuQmxvY2tTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZ0Zyb21OYW1lQW5kVHlwZShuYW1lLCB0eXBlKSB7XG4gIGNvbnN0IG5hbWVTdHJpbmcgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZyA9IGAke3R5cGVTdHJpbmd9ICR7bmFtZVN0cmluZ31gO1xuXG4gIHJldHVybiBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tVHlwZU5hbWVBbmRBcmd1bWVudFR5cGVOYW1lKHR5cGVOYW1lLCBhcmd1bWVudFR5cGVOYW1lKSB7XG4gIGxldCB0eXBlU3RyaW5nO1xuXG4gIHR5cGVTdHJpbmcgPSBgJHt0eXBlTmFtZX1gO1xuXG4gIGlmIChhcmd1bWVudFR5cGVOYW1lICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9PCR7YXJndW1lbnRUeXBlTmFtZX0+YDtcbiAgfVxuXG4gIHJldHVybiB0eXBlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSh0eXBlLCB2YXJpYWJsZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHt2YXJpYWJsZVN0cmluZ30gPSAuLi4gO2A7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWVTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHNvbWVTdHJpbmcgPSBgU29tZSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9KSBgO1xuXG4gIHJldHVybiBzb21lU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV2ZXJ5U3RyaW5nID0gYEV2ZXJ5KCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30pIGA7XG5cbiAgcmV0dXJuIGV2ZXJ5U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbm1lbnQpIHtcbiAgY29uc3QgdmFyaWFibGUgPSB2YXJpYWJsZUFzc2lnbm1lbnQuZ2V0VmFyaWFibGUoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gYCR7dmFyaWFibGVTdHJpbmd9ID0gLi4uYDtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrLmdldFN0cmluZygpLFxuICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAke2xhYmVsU3RyaW5nfSgke3BhcmFtZXRlcnNTdHJpbmd9KSAke3JldHVybkJsb2NrU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrKHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSByZXR1cm5CbG9jay5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gKCR7cGFyYW1ldGVyc1N0cmluZ30pICR7cmV0dXJuQmxvY2tTdHJpbmd9YDtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZ0Zyb21Ob21pbmFsVmFsdWVQcm9wZXJ0aWVzQXJyYXkobm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5KSB7XG4gIGNvbnN0IG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmcgPSBub21pbmFsVmFsdWVQcm9wZXJ0aWVzQXJyYXkucmVkdWNlKChub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nLCBub21pbmFsVmFsdWVQcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IG5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nID0gbm9taW5hbFZhbHVlUHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nID0gKG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke25vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmd9LCAke25vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkpIHtcbiAgbGV0IHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmc7XG5cbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudHNBcnJheS5yZWR1Y2UoKHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcsIHZhcmlhYmxlQXNzaWdubWVudCkgPT4ge1xuICAgIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQodmFyaWFibGVBc3NpZ25tZW50KTtcblxuICAgIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSAodmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nIDpcbiAgICAgIGAke3ZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmd9LCAke3ZhcmlhYmxlQXNzaWdubWVudFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmc7XG4gIH0sIG51bGwpOyAvLy9cblxuICB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHt2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nfSA7YDsgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgaW5pdGlhbEV4cHJlc3Npb24sIGFub255bW91c1Byb2NlZHVyZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBpbml0aWFsRXhwcmVzc2lvblN0cmluZyA9IGluaXRpYWxFeHByZXNzaW9uLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZHVjZVN0cmluZyA9IGBSZWR1Y2UoJHt2YXJpYWJsZVN0cmluZ30sICR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfSwgJHtpbml0aWFsRXhwcmVzc2lvblN0cmluZ30pYDtcblxuICByZXR1cm4gcmVkdWNlU3RyaW5nO1xufVxuXG4iXSwibmFtZXMiOlsiYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2siLCJldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSIsImV4cHJlc3Npb25TdHJpbmdGcm9tUHJvcGVydGllcyIsIm5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmdGcm9tTm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5Iiwibm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmdGcm9tTmFtZUFuZFR5cGUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuIiwicHJpbXRpdmVTdHJpbmdGcm9tSW50ZWdlciIsInByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZSIsInByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZXMiLCJwcmltdGl2ZVN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwicHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmdGcm9tUHJvY2VkdXJlIiwicHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwicmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInNvbWVTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJ0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtc0FycmF5IiwidGVybmFyeVN0cmluZ0Zyb21UZXJtIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZUFuZEFyZ3VtZW50VHlwZU5hbWUiLCJ2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidmFsdWVzU3RyaW5nRnJvbVZhbHVlc0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCIsInZhcmlhYmxlU3RyaW5nRnJvbU5hbWUiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRlcm5hcnlTdHJpbmciLCJuYW1lIiwidmFyaWFibGVTdHJpbmciLCJwcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInByb3BlcnR5IiwicHJvcGVydHlTdHJpbmciLCJ2YWx1ZVN0cmluZyIsImJvb2xlYW4iLCJleHByZXNzc2lvblN0cmluZyIsImludGVnZXIiLCJ0ZXJtc0FycmF5IiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ2YWx1ZXNBcnJheSIsInZhbHVlc1N0cmluZyIsInZhbHVlIiwibm9taW5hbFZhbHVlIiwic3RyaW5nIiwicHJpbXRpdmVTdHJpbmciLCJleHByZXNzaW9uU3RyaW5nIiwic3RyaW5nTGl0ZXJhbCIsInN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwibm9taW5hbFZhbHVlcyIsInByaW1pdGl2ZVN0cmluZyIsIm5vbWluYWxWYWx1ZVN0cmluZyIsInByb2NlZHVyZSIsInR5cGUiLCJnZXRUeXBlIiwibGFiZWwiLCJnZXRMYWJlbCIsInBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwicmV0dXJuU3RhdGVtZW50IiwiZ2V0UmV0dXJuU3RhdGVtZW50IiwidHlwZVN0cmluZyIsImxhYmVsU3RyaW5nIiwicGFyYW1ldGVyc1N0cmluZyIsInJldHVyblN0YXRlbWVudFN0cmluZyIsInByb2NlZHVyZURlbGNhcmF0aW9uU3RyaW5nIiwicmV0dXJuQmxvY2tTdHJpbmciLCJuYW1lU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmciLCJ0eXBlTmFtZSIsImFyZ3VtZW50VHlwZU5hbWUiLCJ2YXJpYWJsZSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZyIsImFub255bW91c1Byb2NlZHVyZSIsImFub255bW91c1Byb2NlZHVyZVN0cmluZyIsInNvbWVTdHJpbmciLCJldmVyeVN0cmluZyIsInZhcmlhYmxlQXNzaWdubWVudCIsImdldFZhcmlhYmxlIiwicmV0dXJuQmxvY2siLCJwcm9jZWR1cmVTdHJpbmciLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzQXJyYXkiLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydHkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nIiwiaW5pdGlhbEV4cHJlc3Npb24iLCJpbml0aWFsRXhwcmVzc2lvblN0cmluZyIsInJlZHVjZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc05nQkE7ZUFBQUE7O1FBMUJBQztlQUFBQTs7UUFoR0FDO2VBQUFBOztRQW1JQUM7ZUFBQUE7O1FBdkVBQztlQUFBQTs7UUEzR0FDO2VBQUFBOztRQU1BQztlQUFBQTs7UUFrQ0FDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBUEFDO2VBQUFBOztRQXlCQUM7ZUFBQUE7O1FBeUVBQztlQUFBQTs7UUFxREFDO2VBQUFBOztRQWhIQUM7ZUFBQUE7O1FBbUNBQztlQUFBQTs7UUFuS0FDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBckRBQztlQUFBQTs7UUE0SkFDO2VBQUFBOztRQWpJQUM7ZUFBQUE7O1FBd0NBQztlQUFBQTs7UUFxR0FDO2VBQUFBOztRQWlFQUM7ZUFBQUE7O1FBekNBQztlQUFBQTs7UUF6TEFDO2VBQUFBOzs7K0JBVHdCO0FBRWpDLFNBQVNQLHNCQUFzQlEsSUFBSTtJQUN4QyxNQUFNQyxhQUFhRCxLQUFLRSxTQUFTLElBQzNCQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUVGLFdBQVcsc0JBQXNCLENBQUM7SUFFL0QsT0FBT0U7QUFDVDtBQUVPLFNBQVNKLHVCQUF1QkssSUFBSTtJQUN6QyxNQUFNQyxpQkFBaUJELE1BQU8sR0FBRztJQUVqQyxPQUFPQztBQUNUO0FBRU8sU0FBU2YseUJBQXlCZ0IsVUFBVTtJQUNqRCxJQUFJTDtJQUVKSyxXQUFXQyxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUEsYUFBYSxNQUFNO1lBQ3JCLE1BQU1DLGlCQUFpQkQsU0FBU04sU0FBUztZQUV6Q0QsYUFBYVEsZ0JBQWlCLEdBQUc7UUFDbkM7SUFDRjtJQUVBLE9BQU9SO0FBQ1Q7QUFFTyxTQUFTUCwwQkFBMEJZLFVBQVU7SUFDbEQsSUFBSUk7SUFFSkosV0FBV0MsT0FBTyxDQUFDLENBQUNDO1FBQ2xCLElBQUlBLGFBQWEsTUFBTTtZQUNyQixNQUFNQyxpQkFBaUJELFNBQVNOLFNBQVM7WUFFekNRLGNBQWNELGdCQUFpQixHQUFHO1FBQ3BDO0lBQ0Y7SUFFQSxPQUFPQztBQUNUO0FBRU8sU0FBUzlCLDBCQUEwQitCLE9BQU87SUFDL0MsTUFBTUMsb0JBQW9CLEdBQUdELFNBQVM7SUFFdEMsT0FBT0M7QUFDVDtBQUVPLFNBQVMvQiwwQkFBMEJnQyxPQUFPO0lBQy9DLE1BQU1ELG9CQUFvQixHQUFHQyxTQUFTO0lBRXRDLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTckIsMEJBQTBCdUIsVUFBVTtJQUNsRCxNQUFNQyxjQUFjRCxXQUFXRSxNQUFNLENBQUMsQ0FBQ0QsYUFBYWY7UUFDbEQsTUFBTUMsYUFBYUQsS0FBS0UsU0FBUztRQUVqQ2EsY0FBYyxBQUFDQSxnQkFBZ0IsT0FDN0JkLGFBQ0EsR0FBR2MsWUFBWSxFQUFFLEVBQUVkLFlBQVk7UUFFakMsT0FBT2M7SUFDVCxHQUFHLE9BQU8sR0FBRztJQUViLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTcEIsNEJBQTRCc0IsV0FBVztJQUNyRCxNQUFNQyxlQUFlRCxZQUFZRCxNQUFNLENBQUMsQ0FBQ0UsY0FBY0M7UUFDckQsTUFBTVQsY0FBY1MsTUFBTWpCLFNBQVM7UUFFbkNnQixlQUFlLEFBQUNBLGlCQUFpQixPQUNoQlIsY0FDRSxHQUFHUSxhQUFhLEVBQUUsRUFBRVIsYUFBYTtRQUVwRCxPQUFPUTtJQUNULEdBQUcsT0FBTyxHQUFHO0lBRWIsT0FBT0E7QUFDVDtBQUVPLFNBQVNwQywrQkFBK0JzQyxZQUFZO0lBQ3pELE1BQU1DLFNBQVNELGFBQWFsQixTQUFTLElBQy9Cb0IsaUJBQWlCRCxRQUFTLEdBQUc7SUFFbkMsT0FBT0M7QUFDVDtBQUVPLFNBQVM3QywrQkFBK0I2QixVQUFVO0lBQ3ZELElBQUlpQjtJQUVKakIsV0FBV0MsT0FBTyxDQUFDLENBQUNDO1FBQ2xCLElBQUlBLGFBQWEsTUFBTTtZQUNyQixNQUFNQyxpQkFBaUJELFNBQVNOLFNBQVM7WUFFekNxQixtQkFBbUJkLGdCQUFpQixHQUFHO1FBQ3pDO0lBQ0Y7SUFFQSxPQUFPYztBQUNUO0FBRU8sU0FBU3ZDLGdDQUFnQ3dDLGFBQWE7SUFDM0QsTUFBTUgsU0FBU0ksSUFBQUEsc0NBQXVCLEVBQUNELGdCQUNqQ0YsaUJBQWlCRCxRQUFTLEdBQUc7SUFFbkMsT0FBT0M7QUFDVDtBQUVPLFNBQVN2QyxnQ0FBZ0MyQyxhQUFhO0lBQzNELElBQUlKO0lBRUpBLGlCQUFpQkksY0FBY1YsTUFBTSxDQUFDLENBQUNXLGlCQUFpQlA7UUFDdEQsTUFBTVEscUJBQXFCUixhQUFhbEIsU0FBUztRQUVqRHlCLGtCQUFrQixBQUFDQSxvQkFBb0IsT0FDcEIsR0FBR0EsZ0JBQWdCLEVBQUUsRUFBRUMsb0JBQW9CLEdBQ3hDQSxvQkFBb0IsR0FBRztRQUU3QyxPQUFPRDtJQUNULEdBQUc7SUFFSEwsaUJBQWlCLENBQUMsQ0FBQyxFQUFFQSxlQUFlLENBQUMsQ0FBQztJQUV0QyxPQUFPQTtBQUNUO0FBRU8sU0FBU3JDLHdDQUF3QzRDLFNBQVM7SUFDL0QsTUFBTUMsT0FBT0QsVUFBVUUsT0FBTyxJQUN4QkMsUUFBUUgsVUFBVUksUUFBUSxJQUMxQkMsYUFBYUwsVUFBVU0sYUFBYSxJQUNwQ0Msa0JBQWtCUCxVQUFVUSxrQkFBa0IsSUFDOUNDLGFBQWFSLEtBQUs1QixTQUFTLElBQzNCcUMsY0FBY1AsTUFBTTlCLFNBQVMsSUFDN0JzQyxtQkFBbUJOLFdBQVdoQyxTQUFTLElBQ3ZDdUMsd0JBQXdCTCxnQkFBZ0JsQyxTQUFTLElBQ2pEd0MsNkJBQTZCLEdBQUdKLFdBQVcsQ0FBQyxFQUFFQyxZQUFhLENBQUMsRUFBRUMsaUJBQWlCLFFBQVEsRUFBRUMsc0JBQXNCLEVBQUUsQ0FBQztJQUV4SCxPQUFPQztBQUNUO0FBRU8sU0FBU3RELHlDQUF5Q2dELGVBQWU7SUFDdEUsTUFBTUssd0JBQXdCTCxnQkFBZ0JsQyxTQUFTLElBQ2pEeUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFRixzQkFBc0IsRUFBRSxDQUFDO0lBRTVELE9BQU9FO0FBQ1Q7QUFFTyxTQUFTaEUsMENBQTBDeUIsSUFBSSxFQUFFMEIsSUFBSTtJQUNsRSxNQUFNYyxhQUFheEMsTUFDYmtDLGFBQWFSLEtBQUs1QixTQUFTLElBQzNCMkMsNkJBQTZCLEdBQUdQLFdBQVcsQ0FBQyxFQUFFTSxZQUFZO0lBRWhFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTcEQsMENBQTBDcUQsUUFBUSxFQUFFQyxnQkFBZ0I7SUFDbEYsSUFBSVQ7SUFFSkEsYUFBYSxHQUFHUSxVQUFVO0lBRTFCLElBQUlDLHFCQUFxQixNQUFNO1FBQzdCVCxhQUFhLEdBQUdBLFdBQVcsQ0FBQyxFQUFFUyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25EO0lBRUEsT0FBT1Q7QUFDVDtBQUVPLFNBQVMxQyw0Q0FBNENrQyxJQUFJLEVBQUVrQixRQUFRO0lBQ3hFLE1BQU1WLGFBQWFSLEtBQUs1QixTQUFTLElBQzNCRyxpQkFBaUIyQyxTQUFTOUMsU0FBUyxJQUNuQytDLDJCQUEyQixHQUFHWCxXQUFXLENBQUMsRUFBRWpDLGVBQWUsUUFBUSxDQUFDO0lBRTFFLE9BQU80QztBQUNUO0FBRU8sU0FBUzVELDRDQUE0QzJELFFBQVEsRUFBRUUsa0JBQWtCO0lBQ3RGLE1BQU03QyxpQkFBaUIyQyxTQUFTOUMsU0FBUyxJQUNuQ2lELDJCQUEyQkQsbUJBQW1CaEQsU0FBUyxJQUN2RGtELGFBQWEsQ0FBQyxLQUFLLEVBQUUvQyxlQUFlLEVBQUUsRUFBRThDLHlCQUF5QixFQUFFLENBQUM7SUFFMUUsT0FBT0M7QUFDVDtBQUVPLFNBQVM1RSw2Q0FBNkN3RSxRQUFRLEVBQUVFLGtCQUFrQjtJQUN2RixNQUFNN0MsaUJBQWlCMkMsU0FBUzlDLFNBQVMsSUFDbkNpRCwyQkFBMkJELG1CQUFtQmhELFNBQVMsSUFDdkRtRCxjQUFjLENBQUMsTUFBTSxFQUFFaEQsZUFBZSxFQUFFLEVBQUU4Qyx5QkFBeUIsRUFBRSxDQUFDO0lBRTVFLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTdkQsK0NBQStDd0Qsa0JBQWtCO0lBQy9FLE1BQU1OLFdBQVdNLG1CQUFtQkMsV0FBVyxJQUN6Q2xELGlCQUFpQjJDLFNBQVM5QyxTQUFTLElBQ25DK0MsMkJBQTJCLEdBQUc1QyxlQUFlLE1BQU0sQ0FBQztJQUUxRCxPQUFPNEM7QUFDVDtBQUVPLFNBQVMvRCxxREFBcUQ0QyxJQUFJLEVBQUVFLEtBQUssRUFBRUUsVUFBVSxFQUFFc0IsV0FBVztJQUN2RyxNQUFNbEIsYUFBYVIsS0FBSzVCLFNBQVMsSUFDM0JxQyxjQUFjUCxNQUFNOUIsU0FBUyxJQUM3QnNDLG1CQUFtQk4sV0FBV2hDLFNBQVMsSUFDdkN5QyxvQkFBb0JhLFlBQVl0RCxTQUFTLElBQ3pDdUQsa0JBQWtCLEdBQUduQixXQUFXLENBQUMsRUFBRUMsWUFBWSxDQUFDLEVBQUVDLGlCQUFpQixFQUFFLEVBQUVHLG1CQUFtQjtJQUVoRyxPQUFPYztBQUNUO0FBRU8sU0FBU2xGLHlEQUF5RHVELElBQUksRUFBRUksVUFBVSxFQUFFc0IsV0FBVztJQUNwRyxNQUFNbEIsYUFBYVIsS0FBSzVCLFNBQVMsSUFDM0JzQyxtQkFBbUJOLFdBQVdoQyxTQUFTLElBQ3ZDeUMsb0JBQW9CYSxZQUFZdEQsU0FBUyxJQUN6Q2lELDJCQUEyQixHQUFHYixXQUFXLEVBQUUsRUFBRUUsaUJBQWlCLEVBQUUsRUFBRUcsbUJBQW1CO0lBRTNGLE9BQU9RO0FBQ1Q7QUFFTyxTQUFTekUsNERBQTREZ0YsMkJBQTJCO0lBQ3JHLE1BQU1DLCtCQUErQkQsNEJBQTRCMUMsTUFBTSxDQUFDLENBQUMyQyw4QkFBOEJDO1FBQ3JHLE1BQU1mLDZCQUE2QmUscUJBQXFCMUQsU0FBUztRQUVqRXlELCtCQUErQixBQUFDQSxpQ0FBaUMsT0FDaENkLDZCQUNDLEdBQUdjLDZCQUE2QixFQUFFLEVBQUVkLDRCQUE0QjtRQUVsRyxPQUFPYztJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRU8sU0FBUzlELDREQUE0RGlDLElBQUksRUFBRStCLHdCQUF3QjtJQUN4RyxJQUFJQztJQUVKLE1BQU14QixhQUFhUixLQUFLNUIsU0FBUztJQUVqQzRELDRCQUE0QkQseUJBQXlCN0MsTUFBTSxDQUFDLENBQUM4QywyQkFBMkJSO1FBQ3RGLE1BQU1MLDJCQUEyQm5ELCtDQUErQ3dEO1FBRWhGUSw0QkFBNEIsQUFBQ0EsOEJBQThCLE9BQ3pEYiwyQkFDQSxHQUFHYSwwQkFBMEIsRUFBRSxFQUFFYiwwQkFBMEI7UUFFN0QsT0FBT2E7SUFDVCxHQUFHLE9BQU8sR0FBRztJQUViQSw0QkFBNEIsR0FBR3hCLFdBQVcsQ0FBQyxFQUFFd0IsMEJBQTBCLEVBQUUsQ0FBQyxFQUFFLEdBQUc7SUFFL0UsT0FBT0E7QUFDVDtBQUVPLFNBQVMzRSwrREFBK0Q2RCxRQUFRLEVBQUVlLGlCQUFpQixFQUFFYixrQkFBa0I7SUFDNUgsTUFBTTdDLGlCQUFpQjJDLFNBQVM5QyxTQUFTLElBQ25DOEQsMEJBQTBCRCxrQkFBa0I3RCxTQUFTLElBQ3JEaUQsMkJBQTJCRCxtQkFBbUJoRCxTQUFTLElBQ3ZEK0QsZUFBZSxDQUFDLE9BQU8sRUFBRTVELGVBQWUsRUFBRSxFQUFFOEMseUJBQXlCLEVBQUUsRUFBRWEsd0JBQXdCLENBQUMsQ0FBQztJQUV6RyxPQUFPQztBQUNUIn0=
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuL3N0cmluZ0xpdGVyYWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm5hcnlTdHJpbmdGcm9tVGVybSh0ZXJtKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gYGlmICgke3Rlcm1TdHJpbmd9KSB7IC4uLiB9IGVsc2UgeyAuLi4gfWA7XG5cbiAgcmV0dXJuIHRlcm5hcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZVN0cmluZ0Zyb21OYW1lKG5hbWUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgbGV0IHRlcm1TdHJpbmc7XG5cbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgICAgdGVybVN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGVybVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgdmFsdWVTdHJpbmc7XG5cbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgICAgdmFsdWVTdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbihib29sZWFuKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7Ym9vbGVhbn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbUludGVnZXIoaW50ZWdlcikge1xuICBjb25zdCBleHByZXNzc2lvblN0cmluZyA9IGAke2ludGVnZXJ9YDtcblxuICByZXR1cm4gZXhwcmVzc3Npb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtc0FycmF5KHRlcm1zQXJyYXkpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc0FycmF5LnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICB0ZXJtU3RyaW5nIDpcbiAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpOyAvLy9cblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNTdHJpbmdGcm9tVmFsdWVzQXJyYXkodmFsdWVzQXJyYXkpIHtcbiAgY29uc3QgdmFsdWVzU3RyaW5nID0gdmFsdWVzQXJyYXkucmVkdWNlKCh2YWx1ZXNTdHJpbmcsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgIHZhbHVlc1N0cmluZyA9ICh2YWx1ZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgYCR7dmFsdWVzU3RyaW5nfSwgJHt2YWx1ZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHZhbHVlc1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHJldHVybiB2YWx1ZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJpbXRpdmVTdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgZXhwcmVzc2lvblN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICBleHByZXNzaW9uU3RyaW5nID0gcHJvcGVydHlTdHJpbmc7ICAvLy9cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBleHByZXNzaW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsKSB7XG4gIGNvbnN0IHN0cmluZyA9IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwpLFxuICAgICAgICBwcmltdGl2ZVN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBwcmltdGl2ZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZXMobm9taW5hbFZhbHVlcykge1xuICBsZXQgcHJpbXRpdmVTdHJpbmc7XG5cbiAgcHJpbXRpdmVTdHJpbmcgPSBub21pbmFsVmFsdWVzLnJlZHVjZSgocHJpbWl0aXZlU3RyaW5nLCBub21pbmFsVmFsdWUpID0+IHtcbiAgICBjb25zdCBub21pbmFsVmFsdWVTdHJpbmcgPSBub21pbmFsVmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBwcmltaXRpdmVTdHJpbmcgPSAocHJpbWl0aXZlU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByaW1pdGl2ZVN0cmluZ30sICR7bm9taW5hbFZhbHVlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBub21pbmFsVmFsdWVTdHJpbmc7IC8vL1xuXG4gICAgcmV0dXJuIHByaW1pdGl2ZVN0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcHJpbXRpdmVTdHJpbmcgPSBgWyR7cHJpbXRpdmVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnQpIHtcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50U3RyaW5nID0gcmV0dXJuU3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IGB7IC4uLiAke3JldHVyblN0YXRlbWVudFN0cmluZ30gfWA7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmdGcm9tTmFtZUFuZFR5cGUobmFtZSwgdHlwZSkge1xuICBjb25zdCBuYW1lU3RyaW5nID0gbmFtZSwgIC8vL1xuICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAke25hbWVTdHJpbmd9YDtcblxuICByZXR1cm4gbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbVR5cGVOYW1lQW5kQXJndW1lbnRUeXBlTmFtZSh0eXBlTmFtZSwgYXJndW1lbnRUeXBlTmFtZSkge1xuICBsZXQgdHlwZVN0cmluZztcblxuICB0eXBlU3RyaW5nID0gYCR7dHlwZU5hbWV9YDtcblxuICBpZiAoYXJndW1lbnRUeXBlTmFtZSAhPT0gbnVsbCkge1xuICAgIHR5cGVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfTwke2FyZ3VtZW50VHlwZU5hbWV9PmA7XG4gIH1cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUodHlwZSwgdmFyaWFibGUpIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA9IGAke3R5cGVTdHJpbmd9ICR7dmFyaWFibGVTdHJpbmd9ID0gLi4uIDtgO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICBzb21lU3RyaW5nID0gYFNvbWUoJHt2YXJpYWJsZVN0cmluZ30sICR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfSkgYDtcblxuICByZXR1cm4gc29tZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICBldmVyeVN0cmluZyA9IGBFdmVyeSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9KSBgO1xuXG4gIHJldHVybiBldmVyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQodmFyaWFibGVBc3NpZ25tZW50KSB7XG4gIGNvbnN0IHZhcmlhYmxlID0gdmFyaWFibGVBc3NpZ25tZW50LmdldFZhcmlhYmxlKCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA9IGAke3ZhcmlhYmxlU3RyaW5nfSA9IC4uLmA7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2sodHlwZSwgbGFiZWwsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSByZXR1cm5CbG9jay5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJvY2VkdXJlU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHtsYWJlbFN0cmluZ30oJHtwYXJhbWV0ZXJzU3RyaW5nfSkgJHtyZXR1cm5CbG9ja1N0cmluZ31gO1xuXG4gIHJldHVybiBwcm9jZWR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jaykge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gcmV0dXJuQmxvY2suZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9ICgke3BhcmFtZXRlcnNTdHJpbmd9KSAke3JldHVybkJsb2NrU3RyaW5nfWA7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmdGcm9tTm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5KG5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheSkge1xuICBjb25zdCBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nID0gbm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5LnJlZHVjZSgobm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZywgbm9taW5hbFZhbHVlUHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZyA9IG5vbWluYWxWYWx1ZVByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyA9IChub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nfSwgJHtub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5KSB7XG4gIGxldCB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xuXG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpO1xuXG4gIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkucmVkdWNlKCh2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nLCB2YXJpYWJsZUFzc2lnbm1lbnQpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gKHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA6XG4gICAgICBgJHt2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nfSwgJHt2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmd9YDtcblxuICAgIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9IGAke3R5cGVTdHJpbmd9ICR7dmFyaWFibGVBc3NpZ25tZW50c1N0cmluZ30gO2A7IC8vL1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGluaXRpYWxFeHByZXNzaW9uLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgaW5pdGlhbEV4cHJlc3Npb25TdHJpbmcgPSBpbml0aWFsRXhwcmVzc2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICByZWR1Y2VTdHJpbmcgPSBgUmVkdWNlKCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30sICR7aW5pdGlhbEV4cHJlc3Npb25TdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHJlZHVjZVN0cmluZztcbn1cblxuIl0sIm5hbWVzIjpbImFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwiZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nRnJvbU5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheSIsIm5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nRnJvbU5hbWVBbmRUeXBlIiwicHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbiIsInByaW10aXZlU3RyaW5nRnJvbUludGVnZXIiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWVzIiwicHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsInByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2siLCJyZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSIsInJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwidGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidGVybXNTdHJpbmdGcm9tVGVybXNBcnJheSIsInRlcm5hcnlTdHJpbmdGcm9tVGVybSIsInR5cGVTdHJpbmdGcm9tVHlwZU5hbWVBbmRBcmd1bWVudFR5cGVOYW1lIiwidmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyIsInZhbHVlc1N0cmluZ0Zyb21WYWx1ZXNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQiLCJ2YXJpYWJsZVN0cmluZ0Zyb21OYW1lIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0ZXJuYXJ5U3RyaW5nIiwibmFtZSIsInZhcmlhYmxlU3RyaW5nIiwicHJvcGVydGllcyIsImZvckVhY2giLCJwcm9wZXJ0eSIsInByb3BlcnR5U3RyaW5nIiwidmFsdWVTdHJpbmciLCJib29sZWFuIiwiZXhwcmVzc3Npb25TdHJpbmciLCJpbnRlZ2VyIiwidGVybXNBcnJheSIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidmFsdWVzQXJyYXkiLCJ2YWx1ZXNTdHJpbmciLCJ2YWx1ZSIsIm5vbWluYWxWYWx1ZSIsInN0cmluZyIsInByaW10aXZlU3RyaW5nIiwiZXhwcmVzc2lvblN0cmluZyIsInN0cmluZ0xpdGVyYWwiLCJzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsIm5vbWluYWxWYWx1ZXMiLCJwcmltaXRpdmVTdHJpbmciLCJub21pbmFsVmFsdWVTdHJpbmciLCJyZXR1cm5TdGF0ZW1lbnQiLCJyZXR1cm5TdGF0ZW1lbnRTdHJpbmciLCJyZXR1cm5CbG9ja1N0cmluZyIsInR5cGUiLCJuYW1lU3RyaW5nIiwidHlwZVN0cmluZyIsIm5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nIiwidHlwZU5hbWUiLCJhcmd1bWVudFR5cGVOYW1lIiwidmFyaWFibGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmciLCJhbm9ueW1vdXNQcm9jZWR1cmUiLCJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmciLCJzb21lU3RyaW5nIiwiZXZlcnlTdHJpbmciLCJ2YXJpYWJsZUFzc2lnbm1lbnQiLCJnZXRWYXJpYWJsZSIsImxhYmVsIiwicGFyYW1ldGVycyIsInJldHVybkJsb2NrIiwibGFiZWxTdHJpbmciLCJwYXJhbWV0ZXJzU3RyaW5nIiwicHJvY2VkdXJlU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5Iiwibm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyIsIm5vbWluYWxWYWx1ZVByb3BlcnR5IiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyIsImluaXRpYWxFeHByZXNzaW9uIiwiaW5pdGlhbEV4cHJlc3Npb25TdHJpbmciLCJyZWR1Y2VTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXdNZ0JBO2VBQUFBOztRQTFCQUM7ZUFBQUE7O1FBbEZBQztlQUFBQTs7UUFxSEFDO2VBQUFBOztRQXZFQUM7ZUFBQUE7O1FBN0ZBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7UUE0QkFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFvRkFDO2VBQUFBOztRQXFEQUM7ZUFBQUE7O1FBaEhBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQXJKQUM7ZUFBQUE7O1FBd0NBQztlQUFBQTs7UUFyREFDO2VBQUFBOztRQThJQUM7ZUFBQUE7O1FBbkhBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQXVGQUM7ZUFBQUE7O1FBaUVBQztlQUFBQTs7UUF6Q0FDO2VBQUFBOztRQTNLQUM7ZUFBQUE7OzsrQkFUd0I7QUFFakMsU0FBU1Asc0JBQXNCUSxJQUFJO0lBQ3hDLE1BQU1DLGFBQWFELEtBQUtFLFNBQVMsSUFDM0JDLGdCQUFnQixDQUFDLElBQUksRUFBRUYsV0FBVyxzQkFBc0IsQ0FBQztJQUUvRCxPQUFPRTtBQUNUO0FBRU8sU0FBU0osdUJBQXVCSyxJQUFJO0lBQ3pDLE1BQU1DLGlCQUFpQkQsTUFBTyxHQUFHO0lBRWpDLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTZix5QkFBeUJnQixVQUFVO0lBQ2pELElBQUlMO0lBRUpLLFdBQVdDLE9BQU8sQ0FBQyxDQUFDQztRQUNsQixJQUFJQSxhQUFhLE1BQU07WUFDckIsTUFBTUMsaUJBQWlCRCxTQUFTTixTQUFTO1lBRXpDRCxhQUFhUSxnQkFBaUIsR0FBRztRQUNuQztJQUNGO0lBRUEsT0FBT1I7QUFDVDtBQUVPLFNBQVNQLDBCQUEwQlksVUFBVTtJQUNsRCxJQUFJSTtJQUVKSixXQUFXQyxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUEsYUFBYSxNQUFNO1lBQ3JCLE1BQU1DLGlCQUFpQkQsU0FBU04sU0FBUztZQUV6Q1EsY0FBY0QsZ0JBQWlCLEdBQUc7UUFDcEM7SUFDRjtJQUVBLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTN0IsMEJBQTBCOEIsT0FBTztJQUMvQyxNQUFNQyxvQkFBb0IsR0FBR0QsU0FBUztJQUV0QyxPQUFPQztBQUNUO0FBRU8sU0FBUzlCLDBCQUEwQitCLE9BQU87SUFDL0MsTUFBTUQsb0JBQW9CLEdBQUdDLFNBQVM7SUFFdEMsT0FBT0Q7QUFDVDtBQUVPLFNBQVNyQiwwQkFBMEJ1QixVQUFVO0lBQ2xELE1BQU1DLGNBQWNELFdBQVdFLE1BQU0sQ0FBQyxDQUFDRCxhQUFhZjtRQUNsRCxNQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDYSxjQUFjLEFBQUNBLGdCQUFnQixPQUM3QmQsYUFDQSxHQUFHYyxZQUFZLEVBQUUsRUFBRWQsWUFBWTtRQUVqQyxPQUFPYztJQUNULEdBQUcsT0FBTyxHQUFHO0lBRWIsT0FBT0E7QUFDVDtBQUVPLFNBQVNwQiw0QkFBNEJzQixXQUFXO0lBQ3JELE1BQU1DLGVBQWVELFlBQVlELE1BQU0sQ0FBQyxDQUFDRSxjQUFjQztRQUNyRCxNQUFNVCxjQUFjUyxNQUFNakIsU0FBUztRQUVuQ2dCLGVBQWUsQUFBQ0EsaUJBQWlCLE9BQ2hCUixjQUNFLEdBQUdRLGFBQWEsRUFBRSxFQUFFUixhQUFhO1FBRXBELE9BQU9RO0lBQ1QsR0FBRyxPQUFPLEdBQUc7SUFFYixPQUFPQTtBQUNUO0FBRU8sU0FBU25DLCtCQUErQnFDLFlBQVk7SUFDekQsTUFBTUMsU0FBU0QsYUFBYWxCLFNBQVMsSUFDL0JvQixpQkFBaUJELFFBQVMsR0FBRztJQUVuQyxPQUFPQztBQUNUO0FBRU8sU0FBUzVDLCtCQUErQjRCLFVBQVU7SUFDdkQsSUFBSWlCO0lBRUpqQixXQUFXQyxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUEsYUFBYSxNQUFNO1lBQ3JCLE1BQU1DLGlCQUFpQkQsU0FBU04sU0FBUztZQUV6Q3FCLG1CQUFtQmQsZ0JBQWlCLEdBQUc7UUFDekM7SUFDRjtJQUVBLE9BQU9jO0FBQ1Q7QUFFTyxTQUFTdEMsZ0NBQWdDdUMsYUFBYTtJQUMzRCxNQUFNSCxTQUFTSSxJQUFBQSxzQ0FBdUIsRUFBQ0QsZ0JBQ2pDRixpQkFBaUJELFFBQVMsR0FBRztJQUVuQyxPQUFPQztBQUNUO0FBRU8sU0FBU3RDLGdDQUFnQzBDLGFBQWE7SUFDM0QsSUFBSUo7SUFFSkEsaUJBQWlCSSxjQUFjVixNQUFNLENBQUMsQ0FBQ1csaUJBQWlCUDtRQUN0RCxNQUFNUSxxQkFBcUJSLGFBQWFsQixTQUFTO1FBRWpEeUIsa0JBQWtCLEFBQUNBLG9CQUFvQixPQUNwQixHQUFHQSxnQkFBZ0IsRUFBRSxFQUFFQyxvQkFBb0IsR0FDeENBLG9CQUFvQixHQUFHO1FBRTdDLE9BQU9EO0lBQ1QsR0FBRztJQUVITCxpQkFBaUIsQ0FBQyxDQUFDLEVBQUVBLGVBQWUsQ0FBQyxDQUFDO0lBRXRDLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTbEMseUNBQXlDeUMsZUFBZTtJQUN0RSxNQUFNQyx3QkFBd0JELGdCQUFnQjNCLFNBQVMsSUFDakQ2QixvQkFBb0IsQ0FBQyxNQUFNLEVBQUVELHNCQUFzQixFQUFFLENBQUM7SUFFNUQsT0FBT0M7QUFDVDtBQUVPLFNBQVNuRCwwQ0FBMEN3QixJQUFJLEVBQUU0QixJQUFJO0lBQ2xFLE1BQU1DLGFBQWE3QixNQUNiOEIsYUFBYUYsS0FBSzlCLFNBQVMsSUFDM0JpQyw2QkFBNkIsR0FBR0QsV0FBVyxDQUFDLEVBQUVELFlBQVk7SUFFaEUsT0FBT0U7QUFDVDtBQUVPLFNBQVMxQywwQ0FBMEMyQyxRQUFRLEVBQUVDLGdCQUFnQjtJQUNsRixJQUFJSDtJQUVKQSxhQUFhLEdBQUdFLFVBQVU7SUFFMUIsSUFBSUMscUJBQXFCLE1BQU07UUFDN0JILGFBQWEsR0FBR0EsV0FBVyxDQUFDLEVBQUVHLGlCQUFpQixDQUFDLENBQUM7SUFDbkQ7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU3RDLDRDQUE0Q29DLElBQUksRUFBRU0sUUFBUTtJQUN4RSxNQUFNSixhQUFhRixLQUFLOUIsU0FBUyxJQUMzQkcsaUJBQWlCaUMsU0FBU3BDLFNBQVMsSUFDbkNxQywyQkFBMkIsR0FBR0wsV0FBVyxDQUFDLEVBQUU3QixlQUFlLFFBQVEsQ0FBQztJQUUxRSxPQUFPa0M7QUFDVDtBQUVPLFNBQVNsRCw0Q0FBNENpRCxRQUFRLEVBQUVFLGtCQUFrQjtJQUN0RixNQUFNbkMsaUJBQWlCaUMsU0FBU3BDLFNBQVMsSUFDbkN1QywyQkFBMkJELG1CQUFtQnRDLFNBQVMsSUFDdkR3QyxhQUFhLENBQUMsS0FBSyxFQUFFckMsZUFBZSxFQUFFLEVBQUVvQyx5QkFBeUIsRUFBRSxDQUFDO0lBRTFFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTakUsNkNBQTZDNkQsUUFBUSxFQUFFRSxrQkFBa0I7SUFDdkYsTUFBTW5DLGlCQUFpQmlDLFNBQVNwQyxTQUFTLElBQ25DdUMsMkJBQTJCRCxtQkFBbUJ0QyxTQUFTLElBQ3ZEeUMsY0FBYyxDQUFDLE1BQU0sRUFBRXRDLGVBQWUsRUFBRSxFQUFFb0MseUJBQXlCLEVBQUUsQ0FBQztJQUU1RSxPQUFPRTtBQUNUO0FBRU8sU0FBUzdDLCtDQUErQzhDLGtCQUFrQjtJQUMvRSxNQUFNTixXQUFXTSxtQkFBbUJDLFdBQVcsSUFDekN4QyxpQkFBaUJpQyxTQUFTcEMsU0FBUyxJQUNuQ3FDLDJCQUEyQixHQUFHbEMsZUFBZSxNQUFNLENBQUM7SUFFMUQsT0FBT2tDO0FBQ1Q7QUFFTyxTQUFTckQscURBQXFEOEMsSUFBSSxFQUFFYyxLQUFLLEVBQUVDLFVBQVUsRUFBRUMsV0FBVztJQUN2RyxNQUFNZCxhQUFhRixLQUFLOUIsU0FBUyxJQUMzQitDLGNBQWNILE1BQU01QyxTQUFTLElBQzdCZ0QsbUJBQW1CSCxXQUFXN0MsU0FBUyxJQUN2QzZCLG9CQUFvQmlCLFlBQVk5QyxTQUFTLElBQ3pDaUQsa0JBQWtCLEdBQUdqQixXQUFXLENBQUMsRUFBRWUsWUFBWSxDQUFDLEVBQUVDLGlCQUFpQixFQUFFLEVBQUVuQixtQkFBbUI7SUFFaEcsT0FBT29CO0FBQ1Q7QUFFTyxTQUFTM0UseURBQXlEd0QsSUFBSSxFQUFFZSxVQUFVLEVBQUVDLFdBQVc7SUFDcEcsTUFBTWQsYUFBYUYsS0FBSzlCLFNBQVMsSUFDM0JnRCxtQkFBbUJILFdBQVc3QyxTQUFTLElBQ3ZDNkIsb0JBQW9CaUIsWUFBWTlDLFNBQVMsSUFDekN1QywyQkFBMkIsR0FBR1AsV0FBVyxFQUFFLEVBQUVnQixpQkFBaUIsRUFBRSxFQUFFbkIsbUJBQW1CO0lBRTNGLE9BQU9VO0FBQ1Q7QUFFTyxTQUFTOUQsNERBQTREeUUsMkJBQTJCO0lBQ3JHLE1BQU1DLCtCQUErQkQsNEJBQTRCcEMsTUFBTSxDQUFDLENBQUNxQyw4QkFBOEJDO1FBQ3JHLE1BQU1uQiw2QkFBNkJtQixxQkFBcUJwRCxTQUFTO1FBRWpFbUQsK0JBQStCLEFBQUNBLGlDQUFpQyxPQUNoQ2xCLDZCQUNDLEdBQUdrQiw2QkFBNkIsRUFBRSxFQUFFbEIsNEJBQTRCO1FBRWxHLE9BQU9rQjtJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRU8sU0FBU3hELDREQUE0RG1DLElBQUksRUFBRXVCLHdCQUF3QjtJQUN4RyxJQUFJQztJQUVKLE1BQU10QixhQUFhRixLQUFLOUIsU0FBUztJQUVqQ3NELDRCQUE0QkQseUJBQXlCdkMsTUFBTSxDQUFDLENBQUN3QywyQkFBMkJaO1FBQ3RGLE1BQU1MLDJCQUEyQnpDLCtDQUErQzhDO1FBRWhGWSw0QkFBNEIsQUFBQ0EsOEJBQThCLE9BQ3pEakIsMkJBQ0EsR0FBR2lCLDBCQUEwQixFQUFFLEVBQUVqQiwwQkFBMEI7UUFFN0QsT0FBT2lCO0lBQ1QsR0FBRyxPQUFPLEdBQUc7SUFFYkEsNEJBQTRCLEdBQUd0QixXQUFXLENBQUMsRUFBRXNCLDBCQUEwQixFQUFFLENBQUMsRUFBRSxHQUFHO0lBRS9FLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTckUsK0RBQStEbUQsUUFBUSxFQUFFbUIsaUJBQWlCLEVBQUVqQixrQkFBa0I7SUFDNUgsTUFBTW5DLGlCQUFpQmlDLFNBQVNwQyxTQUFTLElBQ25Dd0QsMEJBQTBCRCxrQkFBa0J2RCxTQUFTLElBQ3JEdUMsMkJBQTJCRCxtQkFBbUJ0QyxTQUFTLElBQ3ZEeUQsZUFBZSxDQUFDLE9BQU8sRUFBRXRELGVBQWUsRUFBRSxFQUFFb0MseUJBQXlCLEVBQUUsRUFBRWlCLHdCQUF3QixDQUFDLENBQUM7SUFFekcsT0FBT0M7QUFDVCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-furtle",
3
3
  "author": "James Smith",
4
- "version": "3.0.368",
4
+ "version": "3.0.371",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-furtle",
7
7
  "description": "Occam's Furtle language.",
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "necessary": "^17.5.2",
14
14
  "occam-grammars": "^1.3.628",
15
- "occam-languages": "^1.0.26",
15
+ "occam-languages": "^1.0.30",
16
16
  "occam-lexers": "^23.2.2",
17
17
  "occam-parsers": "^23.2.4",
18
18
  "occam-query": "^4.1.198"
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ import { Context, nodeUtilities } from "occam-languages";
4
+
5
+ const { nodeAsString, nodesAsString } = nodeUtilities;
6
+
7
+ export default class LiteralContext extends Context {
8
+ constructor(context, tokens) {
9
+ super(context);
10
+
11
+ this.tokens = tokens;
12
+ }
13
+
14
+ getTokens() {
15
+ return this.tokens;
16
+ }
17
+
18
+ setTokens(tokens) {
19
+ this.tokens = tokens;
20
+ }
21
+
22
+ nodeAsString(node) {
23
+ const string = nodeAsString(node, this.tokens);
24
+
25
+ return string;
26
+ }
27
+
28
+ nodesAsString(nodes) {
29
+ const string = nodesAsString(nodes, this.tokens);
30
+
31
+ return string;
32
+ }
33
+
34
+ static fromTokens(tokens, context) {
35
+ const literalContext = new LiteralContext(context, tokens);
36
+
37
+ return literalContext;
38
+ }
39
+
40
+ static fromNothing(context) {
41
+ const tokens = null,
42
+ literalContext = new LiteralContext(context, tokens);
43
+
44
+ return literalContext;
45
+ }
46
+ }
@@ -2,10 +2,10 @@
2
2
 
3
3
  import { Element } from "occam-languages";
4
4
 
5
- import Exception from "../../exception";
5
+ import Exception from "../exception";
6
6
 
7
- import { define } from "../../elements";
8
- import { variablesFromValuesAndParameters } from "../../utilities/parameters";
7
+ import { define } from "../elements";
8
+ import { variablesFromValuesAndParameters } from "../utilities/parameters";
9
9
 
10
10
  export default define(class AnonymousProcedure extends Element {
11
11
  constructor(context, string, node, breakPoint, type, parameters, returnBlock) {
@@ -43,4 +43,8 @@ export default define(class Label extends Element {
43
43
  }
44
44
 
45
45
  static name = "Label";
46
+
47
+ static fromJSON(json, context) {
48
+ debugger
49
+ }
46
50
  });
@@ -80,4 +80,8 @@ export default define(class Parameters extends Element {
80
80
  }
81
81
 
82
82
  static name = "Parameters";
83
+
84
+ static fromJSON(json, context) {
85
+ debugger
86
+ }
83
87
  });
@@ -7,7 +7,7 @@ import Exception from "../exception";
7
7
  import { define } from "../elements";
8
8
  import { valuesFromNominalValues } from "../utilities/values";
9
9
  import { variablesFromValuesAndParameters } from "../utilities/parameters";
10
- import { typeToTypeJSON, labelToLabelJSON, parametersToParametersJSON } from "../utilities/json";
10
+ import { typeFromJSON, labelFromJSON, parametersFromJSON, typeToTypeJSON, labelToLabelJSON, parametersToParametersJSON } from "../utilities/json";
11
11
 
12
12
  const { breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
13
13
 
@@ -51,6 +51,24 @@ export default define(class Procedure extends Element {
51
51
 
52
52
  compareProcedureName(procedureName) { return this.label.compareProcedureName(procedureName); }
53
53
 
54
+ verify(context) {
55
+ const verifies = true;
56
+
57
+ const procedureString = this.getString();
58
+
59
+ context.trace(`Verifying the '${procedureString}' function...`)
60
+
61
+ const procedure = this; ///
62
+
63
+ context.addProcedure(procedure);
64
+
65
+ if (verifies) {
66
+ context.debug(`...verified the '${procedureString}' function.`)
67
+ }
68
+
69
+ return verifies;
70
+ }
71
+
54
72
  async call(values, context) {
55
73
  await this.break(context);
56
74
 
@@ -127,19 +145,17 @@ export default define(class Procedure extends Element {
127
145
  static name = "Procedure";
128
146
 
129
147
  static fromJSON(json, context) {
130
- return instantiate((context) => {
131
- const { string } = json,
132
- procedureNode = instantiatePrpcedure(string, context),
133
- node = procedureNode, ///
134
- breakPoint = breakPointFromJSON(json),
135
- frame = frameFromPrpcedureNode(procedureNode, context),
136
- goal = goalFromPrpcedureNode(procedureNode, context);
137
-
138
- context = null;
139
-
140
- const procedure = new Prpcedure(context, string, node, breakPoint, frame, goal);
141
-
142
- return procedure;
143
- }, context);
148
+ const { string } = json,
149
+ breakPoint = breakPointFromJSON(json),
150
+ type = typeFromJSON(json),
151
+ label = labelFromJSON(json),
152
+ parameters = parametersFromJSON(json),
153
+ procedureNode = context.findProcedureNode(label),
154
+ returnBlock = null, ///
155
+ node = procedureNode; ///
156
+
157
+ const procedure = new Prpcedure(context, string, node, breakPoint, type, label, parameters, returnBlock);
158
+
159
+ return procedure;
144
160
  }
145
161
  });
@@ -10,16 +10,16 @@ import { confine } from "../utilities/context";
10
10
  const { asyncForEach } = asynchronousUtilities;
11
11
 
12
12
  export default define(class ReturnBlock extends Element {
13
- constructor(context, string, node, breakPoint, steps, nonsensical, returnStatement) {
13
+ constructor(context, string, node, breakPoint, statements, nonsensical, returnStatement) {
14
14
  super(context, string, node, breakPoint);
15
15
 
16
- this.steps = steps;
16
+ this.statements = statements;
17
17
  this.nonsensical = nonsensical;
18
18
  this.returnStatement = returnStatement;
19
19
  }
20
20
 
21
- getSteps() {
22
- return this.steps;
21
+ getStatements() {
22
+ return this.statements;
23
23
  }
24
24
 
25
25
  isNonsensical() {
@@ -51,8 +51,8 @@ export default define(class ReturnBlock extends Element {
51
51
  let value;
52
52
 
53
53
  await confine(async (context) => {
54
- await asyncForEach(this.steps, async (step) => {
55
- await step.evaluate(context);
54
+ await asyncForEach(this.statements, async (statement) => {
55
+ await statement.evaluate(context);
56
56
  });
57
57
 
58
58
  value = this.returnStatement.evaluate(context);
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { Element } from "occam-languages";
4
4
 
5
- import { define } from "../../elements";
5
+ import { define } from "../elements";
6
6
 
7
7
  export default define(class ReturnStatement extends Element {
8
8
  constructor(context, string, node, breakPoint, value) {
@@ -4,7 +4,7 @@ import { Element } from "occam-languages";
4
4
 
5
5
  import { define } from "../elements";
6
6
 
7
- export default define(class Step extends Element {
7
+ export default define(class Statement extends Element {
8
8
  constructor(context, string, node, breakPoint, arrayAssignment, objectAssigment, variableAssignments) {
9
9
  super(context, string, node, breakPoint);
10
10
 
@@ -37,5 +37,5 @@ export default define(class Step extends Element {
37
37
  }
38
38
  }
39
39
 
40
- static name = "Step";
40
+ static name = "Statement";
41
41
  });
@@ -4,7 +4,9 @@ import { Element, breakPointUtilities } from "occam-languages";
4
4
 
5
5
  import { define } from "../elements";
6
6
 
7
+ import { instantiate } from "../utilities/context";
7
8
  import { typeStringFromTypeNameAndArgumentTypeName } from "../utilities/string";
9
+ import { nameFromTypeNode, argumentTypeFromTypeNode } from "../utilities/element";
8
10
  import { LIST_TYPE_NAME, STRING_TYPE_NAME, BOOLEAN_TYPE_NAME, INTEGER_TYPE_NAME, NOMINAL_VALUE_TYPE_NAME } from "../typeNames";
9
11
 
10
12
  const { breakPointToBreakPointJSON } = breakPointUtilities;
@@ -115,6 +117,23 @@ export default define(class Type extends Element {
115
117
 
116
118
  static name = "Type";
117
119
 
120
+ static fromJSON(json, context) {
121
+ return instantiate((context) => {
122
+ const { string } = json,
123
+ typeNode = instantiateType(string, context),
124
+ node = typeNode, ///
125
+ breakPoint = null,
126
+ name = nameFromTypeNode(typeNode, context),
127
+ argumentType = argumentTypeFromTypeNode(typeNode, context);
128
+
129
+ context = null;
130
+
131
+ const type = new Type(context, string, node, breakPoint, name, argumentType);
132
+
133
+ return type;
134
+ }, context);
135
+ }
136
+
118
137
  static fromTypeName(typeName, context) {
119
138
  let type = null;
120
139
 
@@ -2,15 +2,17 @@
2
2
 
3
3
  const bnf = `
4
4
 
5
- document ::= ( procedureDeclaration | error )+ ;
5
+ document ::= ( importStatement | procedure | error )+ ;
6
6
 
7
7
 
8
8
 
9
- procedureDeclaration ::= type label<NO_WHITESPACE>"(" parameters? ")" returnBlock ;
9
+ procedure ::= "export"? type label<NO_WHITESPACE>"(" parameters? ")" returnBlock ;
10
+
11
+ importStatement ::= "import" importBindings "from" [string-literal] ";" ;
10
12
 
11
13
  anonymousProcedure ::= type "(" parameters? ")" returnBlock ;
12
14
 
13
- step ::= variableAssignments
15
+ statement ::= variableAssignments
14
16
 
15
17
  | objectAssignment
16
18
 
@@ -30,6 +32,8 @@ const bnf = `
30
32
 
31
33
 
32
34
 
35
+ importBindings ::= importBinding ( "," importBinding )* ;
36
+
33
37
  namedBindings ::= namedBinding ( "," namedBinding )* ;
34
38
 
35
39
  parameters ::= parameter ( "," parameter )* ;
@@ -42,6 +46,8 @@ const bnf = `
42
46
 
43
47
 
44
48
 
49
+ importBinding ::= reference ( "as" label )? ;
50
+
45
51
  namedBinding ::= type [name] ( "as" [name] )? ;
46
52
 
47
53
  parameter ::= type [name] ;
@@ -56,7 +62,7 @@ const bnf = `
56
62
 
57
63
  procedureCall ::= reference<NO_WHITESPACE>"(" values? ")" ;
58
64
 
59
- returnBlock.. ::= "{" ( step | nonsense )* returnStatement "}" ;
65
+ returnBlock.. ::= "{" ( statement | nonsense )* returnStatement "}" ;
60
66
 
61
67
  nodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," [string-literal] ")" ;
62
68
 
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  const LATIN = "[\\p{Script=Latin}]",
4
- DECIMAL = "[0-9]";
4
+ DECIMAL = "[0-9]";
5
5
 
6
6
  const entries = [
7
7
  {
8
8
  "bracket": "^(?:\\{|\\})"
9
9
  },
10
10
  {
11
- "primary-keyword": "^return"
11
+ "primary-keyword": "^(?:export|import|from|return)"
12
12
  },
13
13
  {
14
14
  "secondary-keyword": "^(?:as|if|else)"
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import ProcedureNode from "../../node/procedure";
3
+ import { NonTerminalNode } from "occam-languages";
4
4
 
5
- import { TYPE_RULE_NAME, PARAMETERS_RULE_NAME, RETURN_BLOCK_RULE_NAME } from "../../ruleNames";
5
+ import { TYPE_RULE_NAME, PARAMETERS_RULE_NAME, RETURN_BLOCK_RULE_NAME } from "../ruleNames";
6
6
 
7
- export default class AnonymousProcedureNode extends ProcedureNode {
7
+ export default class AnonymousProcedureNode extends NonTerminalNode {
8
8
  getTypeNode() {
9
9
  const ruleName = TYPE_RULE_NAME,
10
10
  typeNode = this.getNodeByRuleName(ruleName);
@@ -26,5 +26,5 @@ export default class AnonymousProcedureNode extends ProcedureNode {
26
26
  return returnBlockNode;
27
27
  }
28
28
 
29
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return ProcedureNode.fromRuleNameChildNodesOpacityAndPrecedence(AnonymousProcedureNode, ruleName, childNodes, opacity, precedence); }
29
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(AnonymousProcedureNode, ruleName, childNodes, opacity, precedence); }
30
30
  }
@@ -2,6 +2,36 @@
2
2
 
3
3
  import { NonTerminalNode } from "occam-languages";
4
4
 
5
+ import { TYPE_RULE_NAME, LABEL_RULE_NAME, PARAMETERS_RULE_NAME, RETURN_BLOCK_RULE_NAME } from "../ruleNames";
6
+
5
7
  export default class ProcedureNode extends NonTerminalNode {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
8
+ getTypeNode() {
9
+ const ruleName = TYPE_RULE_NAME,
10
+ labelNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return labelNode;
13
+ }
14
+
15
+ getLabelNode() {
16
+ const ruleName = LABEL_RULE_NAME,
17
+ labelNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return labelNode;
20
+ }
21
+
22
+ getParametersNode() {
23
+ const ruleName = PARAMETERS_RULE_NAME,
24
+ parametersNode = this.getNodeByRuleName(ruleName);
25
+
26
+ return parametersNode;
27
+ }
28
+
29
+ getReturnBlockNode() {
30
+ const ruleName = RETURN_BLOCK_RULE_NAME,
31
+ returnBlockNode = this.getNodeByRuleName(ruleName);
32
+
33
+ return returnBlockNode;
34
+ }
35
+
36
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureNode, ruleName, childNodes, opacity, precedence); }
7
37
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { NonTerminalNode } from "occam-languages";
4
4
 
5
- import { STEP_RULE_NAME, NONSENSE_RULE_NAME, RETURN_STATEMENT_RULE_NAME } from "../ruleNames";
5
+ import { STATEMENT_RULE_NAME, NONSENSE_RULE_NAME, RETURN_STATEMENT_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class ReturnBlockNode extends NonTerminalNode {
8
8
  isNonsensical() {
@@ -13,11 +13,11 @@ export default class ReturnBlockNode extends NonTerminalNode {
13
13
  return nonsensical;
14
14
  }
15
15
 
16
- getStepNodes() {
17
- const ruleName = STEP_RULE_NAME,
18
- stepNodes = this.getNodesByRuleName(ruleName);
16
+ getStatementNodes() {
17
+ const ruleName = STATEMENT_RULE_NAME,
18
+ statementNodes = this.getNodesByRuleName(ruleName);
19
19
 
20
- return stepNodes;
20
+ return statementNodes;
21
21
  }
22
22
 
23
23
  getNonsenseNodes() {
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import { NonTerminalNode } from "occam-languages";
4
+
5
+ import { VALUE_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class ReturnStatementNode extends NonTerminalNode {
8
+ getValueNode() {
9
+ const ruleName = VALUE_RULE_NAME,
10
+ valueNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return valueNode;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ReturnStatementNode, ruleName, childNodes, opacity, precedence); }
16
+ }