occam-furtle 3.0.513 → 3.0.516
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.
- package/lib/constants.js +5 -1
- package/lib/element/procedure.js +21 -6
- package/lib/node/procedure.js +20 -1
- package/lib/tokenTypes.js +5 -1
- package/lib/utilities/element.js +9 -2
- package/lib/utilities/json.js +15 -1
- package/lib/utilities/string.js +8 -7
- package/package.json +1 -1
- package/src/constants.js +1 -0
- package/src/element/procedure.js +33 -6
- package/src/node/procedure.js +27 -0
- package/src/tokenTypes.js +1 -0
- package/src/utilities/element.js +10 -3
- package/src/utilities/json.js +12 -0
- package/src/utilities/string.js +14 -10
package/lib/constants.js
CHANGED
|
@@ -18,6 +18,9 @@ _export(exports, {
|
|
|
18
18
|
get EMPTY_STRING () {
|
|
19
19
|
return EMPTY_STRING;
|
|
20
20
|
},
|
|
21
|
+
get EXPORT () {
|
|
22
|
+
return EXPORT;
|
|
23
|
+
},
|
|
21
24
|
get FALSE () {
|
|
22
25
|
return FALSE;
|
|
23
26
|
},
|
|
@@ -41,10 +44,11 @@ const NULL = "null";
|
|
|
41
44
|
const TRUE = "true";
|
|
42
45
|
const FALSE = "false";
|
|
43
46
|
const PERIOD = ".";
|
|
47
|
+
const EXPORT = "export";
|
|
44
48
|
const EMPTY_STRING = "";
|
|
45
49
|
const NOT_EQUAL_TO = "!=";
|
|
46
50
|
const CONJUNCTION_OPERATOR = "&&";
|
|
47
51
|
const DISJUNCTION_OPERATOR = "||";
|
|
48
52
|
const PERIOD_STRING_LITERAL = `"."`;
|
|
49
53
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBOVUxMID0gXCJudWxsXCI7XG5leHBvcnQgY29uc3QgVFJVRSA9IFwidHJ1ZVwiO1xuZXhwb3J0IGNvbnN0IEZBTFNFID0gXCJmYWxzZVwiO1xuZXhwb3J0IGNvbnN0IFBFUklPRCA9IFwiLlwiO1xuZXhwb3J0IGNvbnN0IEVYUE9SVCA9IFwiZXhwb3J0XCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBOT1RfRVFVQUxfVE8gPSBcIiE9XCI7XG5leHBvcnQgY29uc3QgQ09OSlVOQ1RJT05fT1BFUkFUT1IgPSBcIiYmXCI7XG5leHBvcnQgY29uc3QgRElTSlVOQ1RJT05fT1BFUkFUT1IgPSBcInx8XCI7XG5leHBvcnQgY29uc3QgUEVSSU9EX1NUUklOR19MSVRFUkFMID0gYFwiLlwiYDtcbiJdLCJuYW1lcyI6WyJDT05KVU5DVElPTl9PUEVSQVRPUiIsIkRJU0pVTkNUSU9OX09QRVJBVE9SIiwiRU1QVFlfU1RSSU5HIiwiRVhQT1JUIiwiRkFMU0UiLCJOT1RfRVFVQUxfVE8iLCJOVUxMIiwiUEVSSU9EIiwiUEVSSU9EX1NUUklOR19MSVRFUkFMIiwiVFJVRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU2FBO2VBQUFBOztRQUNBQztlQUFBQTs7UUFIQUM7ZUFBQUE7O1FBREFDO2VBQUFBOztRQUZBQztlQUFBQTs7UUFJQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQUdBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOzs7QUFETixNQUFNSCxPQUFPO0FBQ2IsTUFBTUcsT0FBTztBQUNiLE1BQU1MLFFBQVE7QUFDZCxNQUFNRyxTQUFTO0FBQ2YsTUFBTUosU0FBUztBQUNmLE1BQU1ELGVBQWU7QUFDckIsTUFBTUcsZUFBZTtBQUNyQixNQUFNTCx1QkFBdUI7QUFDN0IsTUFBTUMsdUJBQXVCO0FBQzdCLE1BQU1PLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyJ9
|
package/lib/element/procedure.js
CHANGED
|
@@ -22,10 +22,11 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
}
|
|
23
23
|
const { cut } = _occamlanguages.continuationUtilities, { breakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
24
24
|
const _default = (0, _elements.define)(class Procedure extends _occamlanguages.Element {
|
|
25
|
-
constructor(context, string, node, breakPoint, type, label, parameters, returnBlock){
|
|
25
|
+
constructor(context, string, node, breakPoint, type, label, exported, parameters, returnBlock){
|
|
26
26
|
super(context, string, node, breakPoint);
|
|
27
27
|
this.type = type;
|
|
28
28
|
this.label = label;
|
|
29
|
+
this.exported = exported;
|
|
29
30
|
this.parameters = parameters;
|
|
30
31
|
this.returnBlock = returnBlock;
|
|
31
32
|
}
|
|
@@ -35,6 +36,9 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
|
|
|
35
36
|
getLabel() {
|
|
36
37
|
return this.label;
|
|
37
38
|
}
|
|
39
|
+
isExported() {
|
|
40
|
+
return this.exported;
|
|
41
|
+
}
|
|
38
42
|
getParameters() {
|
|
39
43
|
return this.parameters;
|
|
40
44
|
}
|
|
@@ -48,6 +52,10 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
|
|
|
48
52
|
const type = this.getType(), booleanType = type.isBooleanType(), boolean = booleanType; ///
|
|
49
53
|
return boolean;
|
|
50
54
|
}
|
|
55
|
+
getProcedureName() {
|
|
56
|
+
const name = this.getName(), procedureName = name; ///
|
|
57
|
+
return procedureName;
|
|
58
|
+
}
|
|
51
59
|
getReturnStatement() {
|
|
52
60
|
return this.returnBlock.getReturnStatement();
|
|
53
61
|
}
|
|
@@ -62,9 +70,15 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
|
|
|
62
70
|
this.returnBlock = (0, _element.returnBlockFromProcedureNode)(procedureNode, context);
|
|
63
71
|
}
|
|
64
72
|
verify = breakable(function(context, forward, back) {
|
|
73
|
+
let procedure;
|
|
65
74
|
const procedureString = this.getString();
|
|
66
75
|
context.trace(`Verifying the '${procedureString}' function...`);
|
|
67
|
-
const
|
|
76
|
+
const procedureName = this.getProcedureName(), procedurePresent = context.isProcedurePresentByProcedureName(procedureName);
|
|
77
|
+
if (procedurePresent) {
|
|
78
|
+
context.trace(`The '${procedureString}' function is already present.`);
|
|
79
|
+
return back();
|
|
80
|
+
}
|
|
81
|
+
procedure = this; ///
|
|
68
82
|
context.addProcedure(procedure);
|
|
69
83
|
context.debug(`...verified the '${procedureString}' function.`);
|
|
70
84
|
return forward(context, back);
|
|
@@ -97,25 +111,26 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
|
|
|
97
111
|
}, back);
|
|
98
112
|
}
|
|
99
113
|
toJSON() {
|
|
100
|
-
const typeJSON = (0, _json.typeToTypeJSON)(this.type), labelJSON = (0, _json.labelToLabelJSON)(this.label), parametersJSON = (0, _json.parametersToParametersJSON)(this.parameters), string = this.getString();
|
|
114
|
+
const typeJSON = (0, _json.typeToTypeJSON)(this.type), labelJSON = (0, _json.labelToLabelJSON)(this.label), exportedJJSON = (0, _json.exportedToExportedJSON)(this.label), parametersJSON = (0, _json.parametersToParametersJSON)(this.parameters), string = this.getString();
|
|
101
115
|
let breakPoint;
|
|
102
116
|
breakPoint = this.getBreakPoint();
|
|
103
117
|
const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
|
|
104
118
|
breakPoint = breakPointJSON; ///
|
|
105
|
-
const type = typeJSON, label = labelJSON, parameters = parametersJSON, json = {
|
|
119
|
+
const type = typeJSON, label = labelJSON, exported = exportedJJSON, parameters = parametersJSON, json = {
|
|
106
120
|
string,
|
|
107
121
|
breakPoint,
|
|
108
122
|
type,
|
|
109
123
|
label,
|
|
124
|
+
exported,
|
|
110
125
|
parameters
|
|
111
126
|
};
|
|
112
127
|
return json;
|
|
113
128
|
}
|
|
114
129
|
static name = "Procedure";
|
|
115
130
|
static fromJSON(json, context) {
|
|
116
|
-
const { string } = json, breakPoint = breakPointFromJSON(json), type = (0, _json.typeFromJSON)(json, context), label = (0, _json.labelFromJSON)(json, context), parameters = (0, _json.parametersFromJSON)(json, context), procedureNode = context.findProcedureNode(label), returnBlock = null, node = procedureNode, procedure = new Procedure(context, string, node, breakPoint, type, label, parameters, returnBlock);
|
|
131
|
+
const { string } = json, breakPoint = breakPointFromJSON(json), type = (0, _json.typeFromJSON)(json, context), label = (0, _json.labelFromJSON)(json, context), exported = (0, _json.exportedFromJSON)(json, context), parameters = (0, _json.parametersFromJSON)(json, context), procedureNode = context.findProcedureNode(label), returnBlock = null, node = procedureNode, procedure = new Procedure(context, string, node, breakPoint, type, label, exported, parameters, returnBlock);
|
|
117
132
|
return procedure;
|
|
118
133
|
}
|
|
119
134
|
});
|
|
120
135
|
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tTm9taW5hbFZhbHVlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsdWVzXCI7XG5pbXBvcnQgeyByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCBsYWJlbEZyb21KU09OLCBwYXJhbWV0ZXJzRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OLCBsYWJlbFRvTGFiZWxKU09OLCBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcbiAgICB0aGlzLnJldHVybkJsb2NrID0gcmV0dXJuQmxvY2s7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbDtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMubGFiZWwuZ2V0TmFtZSgpOyB9XG5cbiAgaXNCb29sZWFuKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGUoKSxcbiAgICAgICAgICBib29sZWFuVHlwZSA9IHR5cGUuaXNCb29sZWFuVHlwZSgpLFxuICAgICAgICAgIGJvb2xlYW4gPSBib29sZWFuVHlwZTsgIC8vL1xuXG4gICAgcmV0dXJuIGJvb2xlYW47XG4gIH1cblxuICBnZXRSZXR1cm5TdGF0ZW1lbnQoKSB7IHJldHVybiB0aGlzLnJldHVybkJsb2NrLmdldFJldHVyblN0YXRlbWVudCgpOyB9XG5cbiAgY29tcGFyZVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkgeyByZXR1cm4gdGhpcy5sYWJlbC5jb21wYXJlUHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTsgfVxuXG4gIGd1YXJhbnRlZVJldHVybkJsb2NrKCkge1xuICAgIGlmICh0aGlzLnJldHVybkJsb2NrICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZU5vZGUgPSBub2RlO1xuXG4gICAgdGhpcy5yZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwcm9jZWR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbi4uLmApXG5cbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzOyAvLy9cblxuICAgIGNvbnRleHQuYWRkUHJvY2VkdXJlKHByb2NlZHVyZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24uYClcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9KTtcblxuICBldmFsdWF0ZSA9IGJyZWFrYWJsZShmdW5jdGlvbiAodmFsdWVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTtcblxuICAgIGNvbnN0IHByb2NlZHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYENhbGxpbmcgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmNvbXBhcmVWYWx1ZXModmFsdWVzLCBjb250ZXh0LCAoYmFjaykgPT4ge1xuICAgICAgdGhpcy5ndWFyYW50ZWVSZXR1cm5CbG9jaygpO1xuXG4gICAgICBjb25zdCB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyh2YWx1ZXMsIHRoaXMucGFyYW1ldGVycywgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrLmV2YWx1YXRlKHZhcmlhYmxlcywgY29udGV4dCwgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHZhbHVlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdHlwZUVxdWFsVG9WYWx1ZVR5cGUgPSB0aGlzLnR5cGUuaXNFcXVhbFRvKHZhbHVlVHlwZSk7XG5cbiAgICAgICAgaWYgKCF0eXBlRXF1YWxUb1ZhbHVlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGVTdHJpbmcgPSB2YWx1ZVR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVTdHJpbmd9JyB2YWx1ZSdzICcke3ZhbHVlVHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IGVxdWFsIHRvIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLmAsXG4gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNhbGxlZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQodmFsdWUsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIGNhbGxOb21pbmFsbHkobm9taW5hbFZhbHVlcywgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDYWxsaW5nIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBub21pbmFsbHkuLi5gKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlc0Zyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWYWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGUodmFsdWVzLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNhbGxlZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24gbm9taW5hbGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsVG9MYWJlbEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTih0aGlzLnBhcmFtZXRlcnMpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIGxhYmVsID0gbGFiZWxKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb2NlZHVyZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGxhYmVsID0gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHByb2NlZHVyZU5vZGUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVOb2RlKGxhYmVsKSxcbiAgICAgICAgICByZXR1cm5CbG9jayA9IG51bGwsIC8vL1xuICAgICAgICAgIG5vZGUgPSBwcm9jZWR1cmVOb2RlLCAvLy9cbiAgICAgICAgICBwcm9jZWR1cmUgPSBuZXcgUHJvY2VkdXJlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbGFiZWwsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByb2NlZHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwibGFiZWwiLCJwYXJhbWV0ZXJzIiwicmV0dXJuQmxvY2siLCJnZXRUeXBlIiwiZ2V0TGFiZWwiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UmV0dXJuQmxvY2siLCJnZXROYW1lIiwiaXNCb29sZWFuIiwiYm9vbGVhblR5cGUiLCJpc0Jvb2xlYW5UeXBlIiwiYm9vbGVhbiIsImdldFJldHVyblN0YXRlbWVudCIsImNvbXBhcmVQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsImd1YXJhbnRlZVJldHVybkJsb2NrIiwiZ2V0Tm9kZSIsImdldENvbnRleHQiLCJwcm9jZWR1cmVOb2RlIiwicmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwicHJvY2VkdXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJwcm9jZWR1cmUiLCJhZGRQcm9jZWR1cmUiLCJkZWJ1ZyIsImV2YWx1YXRlIiwidmFsdWVzIiwiY29tcGFyZVZhbHVlcyIsInZhcmlhYmxlcyIsInZhcmlhYmxlc0Zyb21WYWx1ZXNBbmRQYXJhbWV0ZXJzIiwidmFsdWUiLCJ2YWx1ZVR5cGUiLCJ0eXBlRXF1YWxUb1ZhbHVlVHlwZSIsImlzRXF1YWxUbyIsInR5cGVTdHJpbmciLCJ2YWx1ZVN0cmluZyIsInZhbHVlVHlwZVN0cmluZyIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImNhbGxOb21pbmFsbHkiLCJub21pbmFsVmFsdWVzIiwidmFsdWVzRnJvbU5vbWluYWxWYWx1ZXMiLCJ0b0pTT04iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwidHlwZUZyb21KU09OIiwibGFiZWxGcm9tSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsImZpbmRQcm9jZWR1cmVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7a0VBRTlDOzBCQUVDO3dCQUNpQjt5QkFDSzs0QkFDSTtzQkFDNkU7Ozs7OztBQUU5SCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUNuRixLQUFLLENBQUNQLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSixJQUFJO0lBQ2xCO0lBRUFLLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0osS0FBSztJQUNuQjtJQUVBSyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0osVUFBVTtJQUN4QjtJQUVBSyxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQ0osV0FBVztJQUN6QjtJQUVBSyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUNQ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
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tTm9taW5hbFZhbHVlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsdWVzXCI7XG5pbXBvcnQgeyByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCBsYWJlbEZyb21KU09OLCBleHBvcnRlZEZyb21KU09OLCBwYXJhbWV0ZXJzRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OLCBsYWJlbFRvTGFiZWxKU09OLCBleHBvcnRlZFRvRXhwb3J0ZWRKU09OLCBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMuZXhwb3J0ZWQgPSBleHBvcnRlZDtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIHRoaXMucmV0dXJuQmxvY2sgPSByZXR1cm5CbG9jaztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsO1xuICB9XG5cbiAgaXNFeHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBvcnRlZDtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMubGFiZWwuZ2V0TmFtZSgpOyB9XG5cbiAgaXNCb29sZWFuKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGUoKSxcbiAgICAgICAgICBib29sZWFuVHlwZSA9IHR5cGUuaXNCb29sZWFuVHlwZSgpLFxuICAgICAgICAgIGJvb2xlYW4gPSBib29sZWFuVHlwZTsgIC8vL1xuXG4gICAgcmV0dXJuIGJvb2xlYW47XG4gIH1cblxuICBnZXRQcm9jZWR1cmVOYW1lKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVOYW1lID0gbmFtZTsgLy8vXG5cbiAgICByZXR1cm4gcHJvY2VkdXJlTmFtZTtcbiAgfVxuXG4gIGdldFJldHVyblN0YXRlbWVudCgpIHsgcmV0dXJuIHRoaXMucmV0dXJuQmxvY2suZ2V0UmV0dXJuU3RhdGVtZW50KCk7IH1cblxuICBjb21wYXJlUHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7IHJldHVybiB0aGlzLmxhYmVsLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpOyB9XG5cbiAgZ3VhcmFudGVlUmV0dXJuQmxvY2soKSB7XG4gICAgaWYgKHRoaXMucmV0dXJuQmxvY2sgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZSA9IG5vZGU7XG5cbiAgICB0aGlzLnJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBwcm9jZWR1cmU7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbi4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZVByZXNlbnQgPSBjb250ZXh0LmlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIGlmIChwcm9jZWR1cmVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHByb2NlZHVyZSA9IHRoaXM7IC8vL1xuXG4gICAgY29udGV4dC5hZGRQcm9jZWR1cmUocHJvY2VkdXJlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9KTtcblxuICBldmFsdWF0ZSA9IGJyZWFrYWJsZShmdW5jdGlvbiAodmFsdWVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTtcblxuICAgIGNvbnN0IHByb2NlZHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYENhbGxpbmcgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmNvbXBhcmVWYWx1ZXModmFsdWVzLCBjb250ZXh0LCAoYmFjaykgPT4ge1xuICAgICAgdGhpcy5ndWFyYW50ZWVSZXR1cm5CbG9jaygpO1xuXG4gICAgICBjb25zdCB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyh2YWx1ZXMsIHRoaXMucGFyYW1ldGVycywgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrLmV2YWx1YXRlKHZhcmlhYmxlcywgY29udGV4dCwgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHZhbHVlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdHlwZUVxdWFsVG9WYWx1ZVR5cGUgPSB0aGlzLnR5cGUuaXNFcXVhbFRvKHZhbHVlVHlwZSk7XG5cbiAgICAgICAgaWYgKCF0eXBlRXF1YWxUb1ZhbHVlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGVTdHJpbmcgPSB2YWx1ZVR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVTdHJpbmd9JyB2YWx1ZSdzICcke3ZhbHVlVHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IGVxdWFsIHRvIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLmAsXG4gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNhbGxlZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQodmFsdWUsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIGNhbGxOb21pbmFsbHkobm9taW5hbFZhbHVlcywgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDYWxsaW5nIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBub21pbmFsbHkuLi5gKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlc0Zyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWYWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGUodmFsdWVzLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNhbGxlZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24gbm9taW5hbGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsVG9MYWJlbEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgZXhwb3J0ZWRKSlNPTiA9IGV4cG9ydGVkVG9FeHBvcnRlZEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTih0aGlzLnBhcmFtZXRlcnMpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIGxhYmVsID0gbGFiZWxKU09OLCAgLy8vXG4gICAgICAgICAgZXhwb3J0ZWQgPSBleHBvcnRlZEpKU09OLCAvLy9cbiAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIGV4cG9ydGVkLFxuICAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9jZWR1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZXhwb3J0ZWQgPSBleHBvcnRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZU5vZGUobGFiZWwpLFxuICAgICAgICAgIHJldHVybkJsb2NrID0gbnVsbCwgLy8vXG4gICAgICAgICAgbm9kZSA9IHByb2NlZHVyZU5vZGUsIC8vL1xuICAgICAgICAgIHByb2NlZHVyZSA9IG5ldyBQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByb2NlZHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwibGFiZWwiLCJleHBvcnRlZCIsInBhcmFtZXRlcnMiLCJyZXR1cm5CbG9jayIsImdldFR5cGUiLCJnZXRMYWJlbCIsImlzRXhwb3J0ZWQiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UmV0dXJuQmxvY2siLCJnZXROYW1lIiwiaXNCb29sZWFuIiwiYm9vbGVhblR5cGUiLCJpc0Jvb2xlYW5UeXBlIiwiYm9vbGVhbiIsImdldFByb2NlZHVyZU5hbWUiLCJuYW1lIiwicHJvY2VkdXJlTmFtZSIsImdldFJldHVyblN0YXRlbWVudCIsImNvbXBhcmVQcm9jZWR1cmVOYW1lIiwiZ3VhcmFudGVlUmV0dXJuQmxvY2siLCJnZXROb2RlIiwiZ2V0Q29udGV4dCIsInByb2NlZHVyZU5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJwcm9jZWR1cmUiLCJwcm9jZWR1cmVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJhZGRQcm9jZWR1cmUiLCJkZWJ1ZyIsImV2YWx1YXRlIiwidmFsdWVzIiwiY29tcGFyZVZhbHVlcyIsInZhcmlhYmxlcyIsInZhcmlhYmxlc0Zyb21WYWx1ZXNBbmRQYXJhbWV0ZXJzIiwidmFsdWUiLCJ2YWx1ZVR5cGUiLCJ0eXBlRXF1YWxUb1ZhbHVlVHlwZSIsImlzRXF1YWxUbyIsInR5cGVTdHJpbmciLCJ2YWx1ZVN0cmluZyIsInZhbHVlVHlwZVN0cmluZyIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImNhbGxOb21pbmFsbHkiLCJub21pbmFsVmFsdWVzIiwidmFsdWVzRnJvbU5vbWluYWxWYWx1ZXMiLCJ0b0pTT04iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImV4cG9ydGVkSkpTT04iLCJleHBvcnRlZFRvRXhwb3J0ZWRKU09OIiwicGFyYW1ldGVyc0pTT04iLCJwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsInR5cGVGcm9tSlNPTiIsImxhYmVsRnJvbUpTT04iLCJleHBvcnRlZEZyb21KU09OIiwicGFyYW1ldGVyc0Zyb21KU09OIiwiZmluZFByb2NlZHVyZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJvRTtrRUFFOUM7MEJBRUM7d0JBQ2lCO3lCQUNLOzRCQUNJO3NCQUN1SDs7Ozs7O0FBRXhLLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDN0YsS0FBSyxDQUFDUixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNMLElBQUk7SUFDbEI7SUFFQU0sV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDTCxLQUFLO0lBQ25CO0lBRUFNLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQ0wsUUFBUTtJQUN0QjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFP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
|
package/lib/node/procedure.js
CHANGED
|
@@ -9,8 +9,27 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
|
+
const _constants = require("../constants");
|
|
13
|
+
const _tokenTypes = require("../tokenTypes");
|
|
12
14
|
const _ruleNames = require("../ruleNames");
|
|
13
15
|
class ProcedureNode extends _occamlanguages.NonTerminalNode {
|
|
16
|
+
isExported() {
|
|
17
|
+
let exported = false;
|
|
18
|
+
this.someChildNode((childNode)=>{
|
|
19
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
20
|
+
if (childNodeTerminalNode) {
|
|
21
|
+
const terminalNode = childNode, type = terminalNode.getType();
|
|
22
|
+
if (type === _tokenTypes.PRIMARY_KEYWORD_TOKEN_TYPE) {
|
|
23
|
+
const content = terminalNode.getContent();
|
|
24
|
+
if (content === _constants.EXPORT) {
|
|
25
|
+
exported = true;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return exported;
|
|
32
|
+
}
|
|
14
33
|
getTypeNode() {
|
|
15
34
|
const ruleName = _ruleNames.TYPE_RULE_NAME, labelNode = this.getNodeByRuleName(ruleName);
|
|
16
35
|
return labelNode;
|
|
@@ -40,4 +59,4 @@ class ProcedureNode extends _occamlanguages.NonTerminalNode {
|
|
|
40
59
|
}
|
|
41
60
|
}
|
|
42
61
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Byb2NlZHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBFWFBPUlQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBQUklNQVJZX0tFWVdPUkRfVE9LRU5fVFlQRSB9IGZyb20gXCIuLi90b2tlblR5cGVzXCI7XG5pbXBvcnQgeyBUWVBFX1JVTEVfTkFNRSwgTEFCRUxfUlVMRV9OQU1FLCBQQVJBTUVURVJTX1JVTEVfTkFNRSwgUkVUVVJOX0JMT0NLX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJvY2VkdXJlTm9kZSBleHRlbmRzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGlzRXhwb3J0ZWQoKSB7XG4gICAgbGV0IGV4cG9ydGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnNvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlVGVybWluYWxOb2RlID0gY2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICAgIGlmIChjaGlsZE5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgdHlwZSA9IHRlcm1pbmFsTm9kZS5nZXRUeXBlKCk7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFBSSU1BUllfS0VZV09SRF9UT0tFTl9UWVBFKSB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgICAgICBpZiAoY29udGVudCA9PT0gRVhQT1JUKSB7XG4gICAgICAgICAgICBleHBvcnRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV4cG9ydGVkO1xuICB9O1xuXG4gIGdldFR5cGVOb2RlKCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICAgbGFiZWxOb2RlID0gdGhpcy5nZXROb2RlQnlSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gbGFiZWxOb2RlO1xuICB9XG5cbiAgZ2V0TGFiZWxOb2RlKCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgIGxhYmVsTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIGxhYmVsTm9kZTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnNOb2RlKCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gUEFSQU1FVEVSU19SVUxFX05BTUUsXG4gICAgICAgICAgcGFyYW1ldGVyc05vZGUgPSB0aGlzLmdldE5vZGVCeVJ1bGVOYW1lKHJ1bGVOYW1lKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzTm9kZTtcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrTm9kZSgpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IFJFVFVSTl9CTE9DS19SVUxFX05BTUUsXG4gICAgICAgICAgcmV0dXJuQmxvY2tOb2RlID0gdGhpcy5nZXROb2RlQnlSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gcmV0dXJuQmxvY2tOb2RlO1xuICB9XG5cbiAgbWF0Y2hMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgbGV0IGxhYmVsTm9kZU1hdGNoZXM7XG5cbiAgICBjb25zdCBsYWJlbE5vZGVBID0gbGFiZWxOb2RlOyAvLy9cblxuICAgIGxhYmVsTm9kZSA9IHRoaXMuZ2V0TGFiZWxOb2RlKCk7XG5cbiAgICBjb25zdCBsYWJlbE5vZGVCID0gbGFiZWxOb2RlOyAvLy9cblxuICAgIGxhYmVsTm9kZU1hdGNoZXMgPSBsYWJlbE5vZGVBLm1hdGNoKGxhYmVsTm9kZUIpOyAgLy8vXG5cbiAgICByZXR1cm4gbGFiZWxOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UocnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UpIHsgcmV0dXJuIE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UoUHJvY2VkdXJlTm9kZSwgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UpOyB9XG59XG4iXSwibmFtZXMiOlsiUHJvY2VkdXJlTm9kZSIsIk5vblRlcm1pbmFsTm9kZSIsImlzRXhwb3J0ZWQiLCJleHBvcnRlZCIsInNvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJjaGlsZE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInR5cGUiLCJnZXRUeXBlIiwiUFJJTUFSWV9LRVlXT1JEX1RPS0VOX1RZUEUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIkVYUE9SVCIsImdldFR5cGVOb2RlIiwicnVsZU5hbWUiLCJUWVBFX1JVTEVfTkFNRSIsImxhYmVsTm9kZSIsImdldE5vZGVCeVJ1bGVOYW1lIiwiZ2V0TGFiZWxOb2RlIiwiTEFCRUxfUlVMRV9OQU1FIiwiZ2V0UGFyYW1ldGVyc05vZGUiLCJQQVJBTUVURVJTX1JVTEVfTkFNRSIsInBhcmFtZXRlcnNOb2RlIiwiZ2V0UmV0dXJuQmxvY2tOb2RlIiwiUkVUVVJOX0JMT0NLX1JVTEVfTkFNRSIsInJldHVybkJsb2NrTm9kZSIsIm1hdGNoTGFiZWxOb2RlIiwibGFiZWxOb2RlTWF0Y2hlcyIsImxhYmVsTm9kZUEiLCJsYWJlbE5vZGVCIiwibWF0Y2giLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBcUJBOzs7Z0NBTlc7MkJBRVQ7NEJBQ29COzJCQUNtRDtBQUUvRSxNQUFNQSxzQkFBc0JDLCtCQUFlO0lBQ3hEQyxhQUFhO1FBQ1gsSUFBSUMsV0FBVztRQUVmLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUNDO1lBQ2xCLE1BQU1DLHdCQUF3QkQsVUFBVUUsY0FBYztZQUV0RCxJQUFJRCx1QkFBdUI7Z0JBQ3pCLE1BQU1FLGVBQWVILFdBQ2ZJLE9BQU9ELGFBQWFFLE9BQU87Z0JBRWpDLElBQUlELFNBQVNFLHNDQUEwQixFQUFFO29CQUN2QyxNQUFNQyxVQUFVSixhQUFhSyxVQUFVO29CQUV2QyxJQUFJRCxZQUFZRSxpQkFBTSxFQUFFO3dCQUN0QlgsV0FBVzt3QkFFWCxPQUFPO29CQUNUO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQVksY0FBYztRQUNaLE1BQU1DLFdBQVdDLHlCQUFjLEVBQ3pCQyxZQUFZLElBQUksQ0FBQ0MsaUJBQWlCLENBQUNIO1FBRXpDLE9BQU9FO0lBQ1Q7SUFFQUUsZUFBZTtRQUNiLE1BQU1KLFdBQVdLLDBCQUFlLEVBQzFCSCxZQUFZLElBQUksQ0FBQ0MsaUJBQWlCLENBQUNIO1FBRXpDLE9BQU9FO0lBQ1Q7SUFFQUksb0JBQW9CO1FBQ2xCLE1BQU1OLFdBQVdPLCtCQUFvQixFQUMvQkMsaUJBQWlCLElBQUksQ0FBQ0wsaUJBQWlCLENBQUNIO1FBRTlDLE9BQU9RO0lBQ1Q7SUFFQUMscUJBQXFCO1FBQ25CLE1BQU1ULFdBQVdVLGlDQUFzQixFQUNqQ0Msa0JBQWtCLElBQUksQ0FBQ1IsaUJBQWlCLENBQUNIO1FBRS9DLE9BQU9XO0lBQ1Q7SUFFQUMsZUFBZVYsU0FBUyxFQUFFO1FBQ3hCLElBQUlXO1FBRUosTUFBTUMsYUFBYVosV0FBVyxHQUFHO1FBRWpDQSxZQUFZLElBQUksQ0FBQ0UsWUFBWTtRQUU3QixNQUFNVyxhQUFhYixXQUFXLEdBQUc7UUFFakNXLG1CQUFtQkMsV0FBV0UsS0FBSyxDQUFDRCxhQUFjLEdBQUc7UUFFckQsT0FBT0Y7SUFDVDtJQUVBLE9BQU9JLDJDQUEyQ2pCLFFBQVEsRUFBRWtCLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxVQUFVLEVBQUU7UUFBRSxPQUFPbkMsK0JBQWUsQ0FBQ2dDLDBDQUEwQyxDQUFDakMsZUFBZWdCLFVBQVVrQixZQUFZQyxTQUFTQztJQUFhO0FBQzlOIn0=
|
package/lib/tokenTypes.js
CHANGED
|
@@ -21,6 +21,9 @@ _export(exports, {
|
|
|
21
21
|
get NULL_TOKEN_TYPE () {
|
|
22
22
|
return NULL_TOKEN_TYPE;
|
|
23
23
|
},
|
|
24
|
+
get PRIMARY_KEYWORD_TOKEN_TYPE () {
|
|
25
|
+
return PRIMARY_KEYWORD_TOKEN_TYPE;
|
|
26
|
+
},
|
|
24
27
|
get SPECIAL_TOKEN_TYPE () {
|
|
25
28
|
return SPECIAL_TOKEN_TYPE;
|
|
26
29
|
},
|
|
@@ -38,5 +41,6 @@ const SPECIAL_TOKEN_TYPE = "special";
|
|
|
38
41
|
const BOOLEAN_TOKEN_TYPE = "boolean";
|
|
39
42
|
const INTEGER_TOKEN_TYPE = "integer";
|
|
40
43
|
const STRING_LITERAL_TOKEN_TYPE = "string-literal";
|
|
44
|
+
const PRIMARY_KEYWORD_TOKEN_TYPE = "primary-keyword";
|
|
41
45
|
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlblR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgVFlQRV9UT0tFTl9UWVBFID0gXCJ0eXBlXCI7XG5leHBvcnQgY29uc3QgTkFNRV9UT0tFTl9UWVBFID0gXCJuYW1lXCI7XG5leHBvcnQgY29uc3QgTlVMTF9UT0tFTl9UWVBFID0gXCJudWxsXCI7XG5leHBvcnQgY29uc3QgU1BFQ0lBTF9UT0tFTl9UWVBFID0gXCJzcGVjaWFsXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTl9UT0tFTl9UWVBFID0gXCJib29sZWFuXCI7XG5leHBvcnQgY29uc3QgSU5URUdFUl9UT0tFTl9UWVBFID0gXCJpbnRlZ2VyXCI7XG5leHBvcnQgY29uc3QgU1RSSU5HX0xJVEVSQUxfVE9LRU5fVFlQRSA9IFwic3RyaW5nLWxpdGVyYWxcIjtcbmV4cG9ydCBjb25zdCBQUklNQVJZX0tFWVdPUkRfVE9LRU5fVFlQRSA9IFwicHJpbWFyeS1rZXl3b3JkXCI7XG5cbiJdLCJuYW1lcyI6WyJCT09MRUFOX1RPS0VOX1RZUEUiLCJJTlRFR0VSX1RPS0VOX1RZUEUiLCJOQU1FX1RPS0VOX1RZUEUiLCJOVUxMX1RPS0VOX1RZUEUiLCJQUklNQVJZX0tFWVdPUkRfVE9LRU5fVFlQRSIsIlNQRUNJQUxfVE9LRU5fVFlQRSIsIlNUUklOR19MSVRFUkFMX1RPS0VOX1RZUEUiLCJUWVBFX1RPS0VOX1RZUEUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQU1hQTtlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBSkFDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFLQUM7ZUFBQUE7O1FBSkFDO2VBQUFBOztRQUdBQztlQUFBQTs7UUFOQUM7ZUFBQUE7OztBQUFOLE1BQU1BLGtCQUFrQjtBQUN4QixNQUFNTCxrQkFBa0I7QUFDeEIsTUFBTUMsa0JBQWtCO0FBQ3hCLE1BQU1FLHFCQUFxQjtBQUMzQixNQUFNTCxxQkFBcUI7QUFDM0IsTUFBTUMscUJBQXFCO0FBQzNCLE1BQU1LLDRCQUE0QjtBQUNsQyxNQUFNRiw2QkFBNkIifQ==
|