occam-verify-cli 0.0.1092 → 0.0.1094

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 (66) hide show
  1. package/lib/assertion/contained.js +18 -16
  2. package/lib/combinator/bracketed.js +12 -5
  3. package/lib/constructor/bracketed.js +12 -5
  4. package/lib/index.js +2 -2
  5. package/lib/metavariable.js +9 -9
  6. package/lib/mixins/statement/qualified/unify.js +4 -4
  7. package/lib/mixins/statement/resolve.js +3 -3
  8. package/lib/nodeAndTokens/metavariable.js +193 -0
  9. package/lib/nodeAndTokens/statement.js +193 -0
  10. package/lib/nodeAndTokens/substitution/frame.js +159 -0
  11. package/lib/nodeAndTokens/substitution/statement.js +159 -0
  12. package/lib/nodeAndTokens/substitution/term.js +159 -0
  13. package/lib/nodeAndTokens/term.js +193 -0
  14. package/lib/nodeAndTokens/variable.js +193 -0
  15. package/lib/nodeAndTokens.js +93 -0
  16. package/lib/statement/unqualified.js +4 -4
  17. package/lib/statement.js +3 -4
  18. package/lib/substitution/frame.js +208 -0
  19. package/lib/substitution/statement.js +318 -0
  20. package/lib/substitution/term.js +202 -0
  21. package/lib/substitution.js +1 -8
  22. package/lib/substitutions.js +1 -13
  23. package/lib/term.js +3 -3
  24. package/lib/unifier/metaLevel.js +4 -4
  25. package/lib/unifier/termWithConstructor.js +6 -6
  26. package/lib/utilities/json.js +2 -2
  27. package/lib/utilities/substitutions.js +6 -21
  28. package/lib/variable.js +5 -5
  29. package/package.json +3 -1
  30. package/src/assertion/contained.js +17 -15
  31. package/src/combinator/bracketed.js +18 -13
  32. package/src/constructor/bracketed.js +19 -14
  33. package/src/index.js +1 -1
  34. package/src/metavariable.js +10 -11
  35. package/src/mixins/statement/qualified/unify.js +5 -5
  36. package/src/mixins/statement/resolve.js +4 -4
  37. package/src/nodeAndTokens/metavariable.js +49 -0
  38. package/src/nodeAndTokens/statement.js +49 -0
  39. package/src/nodeAndTokens/substitution/frame.js +23 -0
  40. package/src/nodeAndTokens/substitution/statement.js +23 -0
  41. package/src/nodeAndTokens/substitution/term.js +23 -0
  42. package/src/nodeAndTokens/term.js +49 -0
  43. package/src/nodeAndTokens/variable.js +49 -0
  44. package/src/nodeAndTokens.js +78 -0
  45. package/src/statement/unqualified.js +6 -3
  46. package/src/statement.js +5 -13
  47. package/src/substitution/{frameForMetavariable.js → frame.js} +21 -31
  48. package/src/substitution/{statementForMetavariable.js → statement.js} +59 -65
  49. package/src/substitution/{termForVariable.js → term.js} +21 -31
  50. package/src/substitution.js +0 -6
  51. package/src/substitutions.js +0 -12
  52. package/src/term.js +3 -4
  53. package/src/unifier/metaLevel.js +5 -5
  54. package/src/unifier/termWithConstructor.js +5 -5
  55. package/src/utilities/json.js +3 -2
  56. package/src/utilities/substitutions.js +7 -23
  57. package/src/variable.js +7 -8
  58. package/lib/ruleNames.js +0 -30
  59. package/lib/substitution/frameForMetavariable.js +0 -209
  60. package/lib/substitution/statementForMetavariable.js +0 -314
  61. package/lib/substitution/termForVariable.js +0 -203
  62. package/lib/utilities/node.js +0 -113
  63. package/lib/utilities/tokens.js +0 -69
  64. package/src/ruleNames.js +0 -6
  65. package/src/utilities/node.js +0 -114
  66. package/src/utilities/tokens.js +0 -63
@@ -1,209 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return FrameForMetavariableSubstitution;
9
- }
10
- });
11
- var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
- var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
13
- var _query = require("../utilities/query");
14
- var _node = require("../utilities/node");
15
- var _tokens = require("../utilities/tokens");
16
- function _assert_this_initialized(self) {
17
- if (self === void 0) {
18
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
19
- }
20
- return self;
21
- }
22
- function _call_super(_this, derived, args) {
23
- derived = _get_prototype_of(derived);
24
- return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
25
- }
26
- function _class_call_check(instance, Constructor) {
27
- if (!(instance instanceof Constructor)) {
28
- throw new TypeError("Cannot call a class as a function");
29
- }
30
- }
31
- function _defineProperties(target, props) {
32
- for(var i = 0; i < props.length; i++){
33
- var descriptor = props[i];
34
- descriptor.enumerable = descriptor.enumerable || false;
35
- descriptor.configurable = true;
36
- if ("value" in descriptor) descriptor.writable = true;
37
- Object.defineProperty(target, descriptor.key, descriptor);
38
- }
39
- }
40
- function _create_class(Constructor, protoProps, staticProps) {
41
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
42
- if (staticProps) _defineProperties(Constructor, staticProps);
43
- return Constructor;
44
- }
45
- function _get_prototype_of(o) {
46
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
47
- return o.__proto__ || Object.getPrototypeOf(o);
48
- };
49
- return _get_prototype_of(o);
50
- }
51
- function _inherits(subClass, superClass) {
52
- if (typeof superClass !== "function" && superClass !== null) {
53
- throw new TypeError("Super expression must either be null or a function");
54
- }
55
- subClass.prototype = Object.create(superClass && superClass.prototype, {
56
- constructor: {
57
- value: subClass,
58
- writable: true,
59
- configurable: true
60
- }
61
- });
62
- if (superClass) _set_prototype_of(subClass, superClass);
63
- }
64
- function _interop_require_default(obj) {
65
- return obj && obj.__esModule ? obj : {
66
- default: obj
67
- };
68
- }
69
- function _possible_constructor_return(self, call) {
70
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
71
- return call;
72
- }
73
- return _assert_this_initialized(self);
74
- }
75
- function _set_prototype_of(o, p) {
76
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
77
- o.__proto__ = p;
78
- return o;
79
- };
80
- return _set_prototype_of(o, p);
81
- }
82
- function _type_of(obj) {
83
- "@swc/helpers - typeof";
84
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
85
- }
86
- function _is_native_reflect_construct() {
87
- try {
88
- var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
89
- } catch (_) {}
90
- return (_is_native_reflect_construct = function() {
91
- return !!result;
92
- })();
93
- }
94
- var frameNodeQuery = (0, _query.nodeQuery)("/substitution/frame[0]"), metavariableNodeQuery = (0, _query.nodeQuery)("/substitution/frame[1]/metavariable!"), substitutionNodeQuery = (0, _query.nodeQuery)("/statement/substitution");
95
- var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
96
- _inherits(FrameForMetavariableSubstitution, Substitution);
97
- function FrameForMetavariableSubstitution(string, node, tokens, frame, metavariable) {
98
- _class_call_check(this, FrameForMetavariableSubstitution);
99
- var _this;
100
- _this = _call_super(this, FrameForMetavariableSubstitution, [
101
- string,
102
- node,
103
- tokens
104
- ]);
105
- _this.frame = frame;
106
- _this.metavariable = metavariable;
107
- return _this;
108
- }
109
- _create_class(FrameForMetavariableSubstitution, [
110
- {
111
- key: "getFrame",
112
- value: function getFrame() {
113
- return this.frame;
114
- }
115
- },
116
- {
117
- key: "getMetavariable",
118
- value: function getMetavariable() {
119
- return this.metavariable;
120
- }
121
- },
122
- {
123
- key: "getMetavariableName",
124
- value: function getMetavariableName() {
125
- var metavariableName = this.metavariable.getName();
126
- return metavariableName;
127
- }
128
- },
129
- {
130
- key: "getSubstitutionString",
131
- value: function getSubstitutionString() {
132
- var frameString = this.frame.getString(), metavariableString = this.metavariable.getString(), substitutionString = "[".concat(frameString, " for [").concat(metavariableString, "]]");
133
- return substitutionString;
134
- }
135
- },
136
- {
137
- key: "isEqualTo",
138
- value: function isEqualTo(substitution) {
139
- var equalTo = false;
140
- var frameNode = substitution.getFrameNode(), metavariableName = substitution.getMetavariableName();
141
- if (frameNode !== null && metavariableName !== null) {
142
- var frameNodeMatches = this.matchFrameNode(frameNode), metavariableNameMatches = this.matchMetavariableName(metavariableName);
143
- equalTo = frameNodeMatches && metavariableNameMatches;
144
- }
145
- return equalTo;
146
- }
147
- },
148
- {
149
- key: "matchFrameNode",
150
- value: function matchFrameNode(frameNode) {
151
- return this.frame.matchFrameNode(frameNode);
152
- }
153
- },
154
- {
155
- key: "matchMetavariableNode",
156
- value: function matchMetavariableNode(metavariableNode) {
157
- return this.metavariable.matchMetavariableNode(metavariableNode);
158
- }
159
- },
160
- {
161
- key: "matchMetavariableName",
162
- value: function matchMetavariableName(metavariableName) {
163
- var metavariableNameMatches;
164
- var generalMetavariableName = metavariableName; ///
165
- metavariableName = this.metavariable.getName();
166
- var specificMetavariableName = metavariableName; ///
167
- metavariableNameMatches = generalMetavariableName === specificMetavariableName;
168
- return metavariableNameMatches;
169
- }
170
- },
171
- {
172
- key: "matchMetavariableNameAndSubstitutionNode",
173
- value: function matchMetavariableNameAndSubstitutionNode(metavariableName, substitutionNode) {
174
- var metavariableNameMatches = this.matchMetavariableName(metavariableName), substitutionNodeMatches = this.matchSubstitutionNode(substitutionNode), metavariableNameAndSubstitutionNodeMatches = metavariableNameMatches && substitutionNodeMatches;
175
- return metavariableNameAndSubstitutionNodeMatches;
176
- }
177
- }
178
- ], [
179
- {
180
- key: "fromStatementNode",
181
- value: function fromStatementNode(statementNode, context) {
182
- var frameForMetavariableSubstitution = null;
183
- var substitutionNode = substitutionNodeQuery(statementNode);
184
- if (substitutionNode !== null) {
185
- var frameNode = frameNodeQuery(substitutionNode), metavariableNode = metavariableNodeQuery(substitutionNode);
186
- if (frameNode !== null && metavariableNode !== null) {
187
- var Frame = _shim.default.Frame, Metavariable = _shim.default.Metavariable, frame = Frame.fromFrameNode(frameNode, context), metavariable = Metavariable.fromMetavariableNode(metavariableNode, context), node = substitutionNode, tokens = context.nodeAsTokens(node), string = stringFromFrameAndMetavariable(frame, metavariable);
188
- frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, node, tokens, frame, metavariable);
189
- }
190
- }
191
- return frameForMetavariableSubstitution;
192
- }
193
- },
194
- {
195
- key: "fromFrameAndMetavariable",
196
- value: function fromFrameAndMetavariable(frame, metavariable, context) {
197
- var lexer = context.getLexer(), parser = context.getParser(), string = stringFromFrameAndMetavariable(frame, metavariable), substitutionString = string, unqualifiedStatementString = (0, _node.unqualifiedStatementStringFromSubstitutionString)(substitutionString), unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromUnqualifiedStatementString)(unqualifiedStatementString, lexer), unqualifiedStatementNode = (0, _node.unqualifiedStatementNodeFromUnqualifiedStatementTokens)(unqualifiedStatementTokens, parser), substitutionNode = (0, _node.substitutionNodeFromUnqualifiedStatementNode)(unqualifiedStatementNode), substitutionTokens = (0, _tokens.substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode)(unqualifiedStatementTokens, substitutionNode), node = substitutionNode, tokens = substitutionTokens, statementForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, node, tokens, frame, metavariable);
198
- return statementForMetavariableSubstitution;
199
- }
200
- }
201
- ]);
202
- return FrameForMetavariableSubstitution;
203
- }(_substitution.default);
204
- function stringFromFrameAndMetavariable(frame, metavariable) {
205
- var frameString = frame.getString(), metavariableString = metavariable.getString(), string = "[".concat(frameString, " for [").concat(metavariableString, "]]");
206
- return string;
207
- }
208
-
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vZnJhbWVGb3JNZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuLi9zaGltXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgc3Vic3RpdHV0aW9uTm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudE5vZGUsXG4gICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ0Zyb21TdWJzdGl0dXRpb25TdHJpbmcsXG4gICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25vZGVcIjtcbmltcG9ydCB7IHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nLFxuICAgICAgICAgc3Vic3RpdHV0aW9uVG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zQW5kU3Vic3RpdHV0aW9uTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvdG9rZW5zXCI7XG5cbmNvbnN0IGZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnN0aXR1dGlvbi9mcmFtZVswXVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdWJzdGl0dXRpb24vZnJhbWVbMV0vbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHN1YnN0aXR1dGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvc3Vic3RpdHV0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgdG9rZW5zLCBmcmFtZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTmFtZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0TmFtZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5hbWU7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25TdHJpbmcoKSB7XG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmZyYW1lLmdldFN0cmluZygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMubWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtmcmFtZVN0cmluZ30gZm9yIFske21ldGF2YXJpYWJsZVN0cmluZ31dXWA7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uU3RyaW5nO1xuICB9XG5cbiAgaXNFcXVhbFRvKHN1YnN0aXR1dGlvbikge1xuICAgIGxldCBlcXVhbFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IHN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICBpZiAoKGZyYW1lTm9kZSAhPT0gbnVsbCkgJiYgKG1ldGF2YXJpYWJsZU5hbWUgIT09IG51bGwpKSB7XG4gICAgICBjb25zdCBmcmFtZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgZXF1YWxUbyA9IChmcmFtZU5vZGVNYXRjaGVzICYmIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSkgeyByZXR1cm4gdGhpcy5mcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpOyB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzO1xuXG4gICAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lOyAvLy9cblxuICAgIG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm1ldGF2YXJpYWJsZS5nZXROYW1lKCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY01ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lOyAvLy9cblxuICAgIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzID0gKGdlbmVyYWxNZXRhdmFyaWFibGVOYW1lID09PSBzcGVjaWZpY01ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOYW1lQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOYW1lLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IChtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyAmJiBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTmFtZUFuZFN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZSA9IHN1YnN0aXR1dGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZU5vZGUgPSBmcmFtZU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgIGlmICgoZnJhbWVOb2RlICE9PSBudWxsKSAmJiAobWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgY29uc3QgeyBGcmFtZSwgTWV0YXZhcmlhYmxlIH0gPSBzaGltLFxuICAgICAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gc3Vic3RpdHV0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpO1xuXG4gICAgICAgIGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCBmcmFtZSwgbWV0YXZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBjb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nRnJvbVN1YnN0aXR1dGlvblN0cmluZyhzdWJzdGl0dXRpb25TdHJpbmcpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlciksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZSA9IHN1YnN0aXR1dGlvbk5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uVG9rZW5zID0gc3Vic3RpdHV0aW9uVG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zQW5kU3Vic3RpdHV0aW9uTm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vucywgc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgbm9kZSA9IHN1YnN0aXR1dGlvbk5vZGUsICAvL1xuICAgICAgICAgIHRva2VucyA9IHN1YnN0aXR1dGlvblRva2VucywgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgZnJhbWUsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYFske2ZyYW1lU3RyaW5nfSBmb3IgWyR7bWV0YXZhcmlhYmxlU3RyaW5nfV1dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIkZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJhbWVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdWJzdGl0dXRpb25Ob2RlUXVlcnkiLCJzdHJpbmciLCJub2RlIiwidG9rZW5zIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJnZXRGcmFtZSIsImdldE1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TmFtZSIsImdldFN1YnN0aXR1dGlvblN0cmluZyIsImZyYW1lU3RyaW5nIiwiZ2V0U3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwic3Vic3RpdHV0aW9uU3RyaW5nIiwiaXNFcXVhbFRvIiwic3Vic3RpdHV0aW9uIiwiZXF1YWxUbyIsImZyYW1lTm9kZSIsImdldEZyYW1lTm9kZSIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaEZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzIiwibWF0Y2hNZXRhdmFyaWFibGVOYW1lIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdlbmVyYWxNZXRhdmFyaWFibGVOYW1lIiwic3BlY2lmaWNNZXRhdmFyaWFibGVOYW1lIiwibWF0Y2hNZXRhdmFyaWFibGVOYW1lQW5kU3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoU3Vic3RpdHV0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsImZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImNvbnRleHQiLCJmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsIkZyYW1lIiwic2hpbSIsIk1ldGF2YXJpYWJsZSIsImZyb21GcmFtZU5vZGUiLCJmcm9tTWV0YXZhcmlhYmxlTm9kZSIsIm5vZGVBc1Rva2VucyIsInN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nRnJvbVN1YnN0aXR1dGlvblN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMiLCJzdWJzdGl0dXRpb25Ob2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvblRva2VucyIsInN1YnN0aXR1dGlvblRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0FuZFN1YnN0aXR1dGlvbk5vZGUiLCJzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJTdWJzdGl0dXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBZ0JxQkE7OzsyREFkSjttRUFDUTtxQkFFQztvQkFHNkM7c0JBRWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFcEYsSUFBTUMsaUJBQWlCQyxJQUFBQSxnQkFBUyxFQUFDLDJCQUMzQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDLHlDQUNsQ0Usd0JBQXdCRixJQUFBQSxnQkFBUyxFQUFDO0FBRXpCLElBQUEsQUFBTUYsaURBQU47Y0FBTUE7YUFBQUEsaUNBQ1BLLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsWUFBWTtnQ0FEbENUOztnQkFFakIsa0JBRmlCQTtZQUVYSztZQUFRQztZQUFNQzs7UUFFcEIsTUFBS0MsS0FBSyxHQUFHQTtRQUNiLE1BQUtDLFlBQVksR0FBR0E7OztrQkFMSFQ7O1lBUW5CVSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLEtBQUs7WUFDbkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFlBQVk7WUFDMUI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsbUJBQW1CLElBQUksQ0FBQ0osWUFBWSxDQUFDSyxPQUFPO2dCQUVsRCxPQUFPRDtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGNBQWMsSUFBSSxDQUFDUixLQUFLLENBQUNTLFNBQVMsSUFDbENDLHFCQUFxQixJQUFJLENBQUNULFlBQVksQ0FBQ1EsU0FBUyxJQUNoREUscUJBQXFCLEFBQUMsSUFBdUJELE9BQXBCRixhQUFZLFVBQTJCLE9BQW5CRSxvQkFBbUI7Z0JBRXRFLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsWUFBWTtnQkFDcEIsSUFBSUMsVUFBVTtnQkFFZCxJQUFNQyxZQUFZRixhQUFhRyxZQUFZLElBQ3JDWCxtQkFBbUJRLGFBQWFULG1CQUFtQjtnQkFFekQsSUFBSSxBQUFDVyxjQUFjLFFBQVVWLHFCQUFxQixNQUFPO29CQUN2RCxJQUFNWSxtQkFBbUIsSUFBSSxDQUFDQyxjQUFjLENBQUNILFlBQ3ZDSSwwQkFBMEIsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQ2Y7b0JBRTNEUyxVQUFXRyxvQkFBb0JFO2dCQUNqQztnQkFFQSxPQUFPTDtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVILFNBQVM7Z0JBQUksT0FBTyxJQUFJLENBQUNmLEtBQUssQ0FBQ2tCLGNBQWMsQ0FBQ0g7WUFBWTs7O1lBRXpFTSxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxnQkFBZ0I7Z0JBQUksT0FBTyxJQUFJLENBQUNyQixZQUFZLENBQUNvQixxQkFBcUIsQ0FBQ0M7WUFBbUI7OztZQUU1R0YsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQmYsZ0JBQWdCO2dCQUNwQyxJQUFJYztnQkFFSixJQUFNSSwwQkFBMEJsQixrQkFBa0IsR0FBRztnQkFFckRBLG1CQUFtQixJQUFJLENBQUNKLFlBQVksQ0FBQ0ssT0FBTztnQkFFNUMsSUFBTWtCLDJCQUEyQm5CLGtCQUFrQixHQUFHO2dCQUV0RGMsMEJBQTJCSSw0QkFBNEJDO2dCQUV2RCxPQUFPTDtZQUNUOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBLHlDQUF5Q3BCLGdCQUFnQixFQUFFcUIsZ0JBQWdCO2dCQUN6RSxJQUFNUCwwQkFBMEIsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQ2YsbUJBQ3JEc0IsMEJBQTBCLElBQUksQ0FBQ0MscUJBQXFCLENBQUNGLG1CQUNyREcsNkNBQThDViwyQkFBMkJRO2dCQUUvRSxPQUFPRTtZQUNUOzs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLGtCQUFrQkMsYUFBYSxFQUFFQyxPQUFPO2dCQUM3QyxJQUFJQyxtQ0FBbUM7Z0JBRXZDLElBQU1QLG1CQUFtQjlCLHNCQUFzQm1DO2dCQUUvQyxJQUFJTCxxQkFBcUIsTUFBTTtvQkFDN0IsSUFBTVgsWUFBWXRCLGVBQWVpQyxtQkFDM0JKLG1CQUFtQjNCLHNCQUFzQitCO29CQUUvQyxJQUFJLEFBQUNYLGNBQWMsUUFBVU8scUJBQXFCLE1BQU87d0JBQ3ZELElBQVFZLFFBQXdCQyxhQUFJLENBQTVCRCxPQUFPRSxlQUFpQkQsYUFBSSxDQUFyQkMsY0FDVHBDLFFBQVFrQyxNQUFNRyxhQUFhLENBQUN0QixXQUFXaUIsVUFDdkMvQixlQUFlbUMsYUFBYUUsb0JBQW9CLENBQUNoQixrQkFBa0JVLFVBQ25FbEMsT0FBTzRCLGtCQUNQM0IsU0FBU2lDLFFBQVFPLFlBQVksQ0FBQ3pDLE9BQzlCRCxTQUFTMkMsK0JBQStCeEMsT0FBT0M7d0JBRXJEZ0MsbUNBQW1DLElBekZ0QnpDLGlDQXlGMkRLLFFBQVFDLE1BQU1DLFFBQVFDLE9BQU9DO29CQUN2RztnQkFDRjtnQkFFQSxPQUFPZ0M7WUFDVDs7O1lBRU9RLEtBQUFBO21CQUFQLFNBQU9BLHlCQUF5QnpDLEtBQUssRUFBRUMsWUFBWSxFQUFFK0IsT0FBTztnQkFDMUQsSUFBTVUsUUFBUVYsUUFBUVcsUUFBUSxJQUN4QkMsU0FBU1osUUFBUWEsU0FBUyxJQUMxQmhELFNBQVMyQywrQkFBK0J4QyxPQUFPQyxlQUMvQ1UscUJBQXFCZCxRQUNyQmlELDZCQUE2QkMsSUFBQUEsc0RBQWdELEVBQUNwQyxxQkFDOUVxQyw2QkFBNkJDLElBQUFBLGdFQUF3RCxFQUFDSCw0QkFBNEJKLFFBQ2xIUSwyQkFBMkJDLElBQUFBLDREQUFzRCxFQUFDSCw0QkFBNEJKLFNBQzlHbEIsbUJBQW1CMEIsSUFBQUEsa0RBQTRDLEVBQUNGLDJCQUNoRUcscUJBQXFCQyxJQUFBQSwyRUFBbUUsRUFBQ04sNEJBQTRCdEIsbUJBQ3JINUIsT0FBTzRCLGtCQUNQM0IsU0FBU3NELG9CQUNURSx1Q0FBdUMsSUE1RzVCL0QsaUNBNEdpRUssUUFBUUMsTUFBTUMsUUFBUUMsT0FBT0M7Z0JBRS9HLE9BQU9zRDtZQUNUOzs7V0EvR21CL0Q7RUFBeUNnRSxxQkFBWTtBQWtIMUUsU0FBU2hCLCtCQUErQnhDLEtBQUssRUFBRUMsWUFBWTtJQUN6RCxJQUFNTyxjQUFjUixNQUFNUyxTQUFTLElBQzdCQyxxQkFBcUJULGFBQWFRLFNBQVMsSUFDM0NaLFNBQVMsQUFBQyxJQUF1QmEsT0FBcEJGLGFBQVksVUFBMkIsT0FBbkJFLG9CQUFtQjtJQUUxRCxPQUFPYjtBQUNUIn0=
@@ -1,314 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
- var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
13
- var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
14
- var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../unifier/metaLevel"));
15
- var _brackets = require("../utilities/brackets");
16
- var _json = require("../utilities/json");
17
- var _tokens = require("../utilities/tokens");
18
- var _node = require("../utilities/node");
19
- function _assert_this_initialized(self) {
20
- if (self === void 0) {
21
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
22
- }
23
- return self;
24
- }
25
- function _call_super(_this, derived, args) {
26
- derived = _get_prototype_of(derived);
27
- return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
28
- }
29
- function _class_call_check(instance, Constructor) {
30
- if (!(instance instanceof Constructor)) {
31
- throw new TypeError("Cannot call a class as a function");
32
- }
33
- }
34
- function _defineProperties(target, props) {
35
- for(var i = 0; i < props.length; i++){
36
- var descriptor = props[i];
37
- descriptor.enumerable = descriptor.enumerable || false;
38
- descriptor.configurable = true;
39
- if ("value" in descriptor) descriptor.writable = true;
40
- Object.defineProperty(target, descriptor.key, descriptor);
41
- }
42
- }
43
- function _create_class(Constructor, protoProps, staticProps) {
44
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
45
- if (staticProps) _defineProperties(Constructor, staticProps);
46
- return Constructor;
47
- }
48
- function _get_prototype_of(o) {
49
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
50
- return o.__proto__ || Object.getPrototypeOf(o);
51
- };
52
- return _get_prototype_of(o);
53
- }
54
- function _inherits(subClass, superClass) {
55
- if (typeof superClass !== "function" && superClass !== null) {
56
- throw new TypeError("Super expression must either be null or a function");
57
- }
58
- subClass.prototype = Object.create(superClass && superClass.prototype, {
59
- constructor: {
60
- value: subClass,
61
- writable: true,
62
- configurable: true
63
- }
64
- });
65
- if (superClass) _set_prototype_of(subClass, superClass);
66
- }
67
- function _interop_require_default(obj) {
68
- return obj && obj.__esModule ? obj : {
69
- default: obj
70
- };
71
- }
72
- function _possible_constructor_return(self, call) {
73
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
74
- return call;
75
- }
76
- return _assert_this_initialized(self);
77
- }
78
- function _set_prototype_of(o, p) {
79
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
80
- o.__proto__ = p;
81
- return o;
82
- };
83
- return _set_prototype_of(o, p);
84
- }
85
- function _type_of(obj) {
86
- "@swc/helpers - typeof";
87
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
88
- }
89
- function _is_native_reflect_construct() {
90
- try {
91
- var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
92
- } catch (_) {}
93
- return (_is_native_reflect_construct = function() {
94
- return !!result;
95
- })();
96
- }
97
- var StatementForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
98
- _inherits(StatementForMetavariableSubstitution, Substitution);
99
- function StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution) {
100
- _class_call_check(this, StatementForMetavariableSubstitution);
101
- var _this;
102
- _this = _call_super(this, StatementForMetavariableSubstitution, [
103
- string,
104
- node,
105
- tokens
106
- ]);
107
- _this.resolved = resolved;
108
- _this.statement = statement;
109
- _this.metavariable = metavariable;
110
- _this.substitution = substitution;
111
- return _this;
112
- }
113
- _create_class(StatementForMetavariableSubstitution, [
114
- {
115
- key: "isResolved",
116
- value: function isResolved() {
117
- return this.resolved;
118
- }
119
- },
120
- {
121
- key: "getStatement",
122
- value: function getStatement() {
123
- return this.statement;
124
- }
125
- },
126
- {
127
- key: "getMetavariable",
128
- value: function getMetavariable() {
129
- return this.metavariable;
130
- }
131
- },
132
- {
133
- key: "getSubstitution",
134
- value: function getSubstitution() {
135
- return this.substitution;
136
- }
137
- },
138
- {
139
- key: "getMetavariableNode",
140
- value: function getMetavariableNode() {
141
- var metavariableNode = this.metavariable.getNode();
142
- return metavariableNode;
143
- }
144
- },
145
- {
146
- key: "isSimple",
147
- value: function isSimple() {
148
- var simple = this.substitution === null;
149
- return simple;
150
- }
151
- },
152
- {
153
- key: "matchStatementNode",
154
- value: function matchStatementNode(statementNode) {
155
- statementNode = (0, _brackets.stripBracketsFromStatementNode)(statementNode); ///
156
- var statementNodeMatches = this.statement.matchStatementNode(statementNode);
157
- return statementNodeMatches;
158
- }
159
- },
160
- {
161
- key: "matchMetavariableNode",
162
- value: function matchMetavariableNode(metavariableNode) {
163
- return this.metavariable.matchMetavariableNode(metavariableNode);
164
- }
165
- },
166
- {
167
- key: "matchSubstitutionNode",
168
- value: function matchSubstitutionNode(substitutionNode) {
169
- var substitutionNodeMatches;
170
- if (substitutionNode === null && this.substitution === null) {
171
- substitutionNodeMatches = true;
172
- } else if (substitutionNode === null && this.substitution !== null) {
173
- substitutionNodeMatches = false;
174
- } else if (substitutionNode !== null && this.substitution === null) {
175
- substitutionNodeMatches = false;
176
- } else {
177
- substitutionNodeMatches = this.substitution.matchSubstitutionNode(substitutionNode);
178
- }
179
- return substitutionNodeMatches;
180
- }
181
- },
182
- {
183
- key: "matchMetavariableNodeAndSubstitutionNode",
184
- value: function matchMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode) {
185
- var metavariableNodeMatches = this.matchMetavariableNode(metavariableNode), substitutionNodeMatches = this.matchSubstitutionNode(substitutionNode), metavariableNodeAndSubstitutionNodeMatches = metavariableNodeMatches && substitutionNodeMatches;
186
- return metavariableNodeAndSubstitutionNodeMatches;
187
- }
188
- },
189
- {
190
- key: "resolve",
191
- value: function resolve(substitutions, generalContext, specificContext) {
192
- var substitutionString = this.string;
193
- var metavariableNode = this.getMetavariableNode(), simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariableNode(metavariableNode);
194
- if (simpleSubstitution !== null) {
195
- specificContext.trace("Resolving the ".concat(substitutionString, " substitution..."));
196
- var substitution = simpleSubstitution, substitutionResolved = substitution.resolveSubstitution(this.substitution, this.statement, substitutions, generalContext, specificContext);
197
- this.resolved = substitutionResolved; ///
198
- if (this.resolved) {
199
- specificContext.debug("...resolved the ".concat(substitutionString, " substitution."));
200
- }
201
- }
202
- }
203
- },
204
- {
205
- key: "resolveSubstitution",
206
- value: function resolveSubstitution(substitution, statement, substitutions, generalContext, specificContext) {
207
- var substitutionResolved = false;
208
- var substitutionString = substitution.getString();
209
- specificContext.trace("Resolving the ".concat(substitutionString, " substitution..."));
210
- var generalSubstitution = substitution, specificSubstitution = this.unifyStatement(statement, specificContext, specificContext); ///
211
- if (specificSubstitution !== null) {
212
- generalContext = contextFromLocalContextAndSubstitution(generalContext, generalSubstitution); ///
213
- specificContext = contextFromLocalContextAndSubstitution(specificContext, specificSubstitution); ///
214
- substitutions.snapshot();
215
- var generalSubstitutionNode = generalSubstitution.getSubstitutionNode(), specificSubstitutionNode = specificSubstitution.getSubstitutionNode(), generalSubstitutionString = generalContext.nodeAsString(generalSubstitutionNode), specificSubstitutionString = specificContext.nodeAsString(specificSubstitutionNode);
216
- specificContext.trace("Unifying the '".concat(specificSubstitutionString, "' substitution with the '").concat(generalSubstitutionString, "' substitution..."));
217
- var generalNode = generalSubstitutionNode, specificNode = specificSubstitutionNode, unifiedAtMetaLevel = _metaLevel.default.unify(generalNode, specificNode, substitutions, generalContext, specificContext);
218
- if (unifiedAtMetaLevel) {
219
- specificContext.trace("...unified the '".concat(specificSubstitutionString, "' substitution with the '").concat(generalSubstitutionString, "' substitution."));
220
- }
221
- unifiedAtMetaLevel ? substitutions.continue() : substitutions.rollback(specificContext);
222
- substitutionResolved = unifiedAtMetaLevel; ///
223
- }
224
- if (substitutionResolved) {
225
- specificContext.debug("...resolved the ".concat(substitutionString, " substitution."));
226
- }
227
- return substitutionResolved;
228
- }
229
- },
230
- {
231
- key: "unifyStatement",
232
- value: function unifyStatement(statement, generalContext, specificContext) {
233
- var specificSubstitution = null;
234
- var Substitutions = _shim.default.Substitutions, substitutions = Substitutions.fromNothing(), statementUnified = this.statement.unifyStatement(statement, substitutions, generalContext, specificContext);
235
- if (statementUnified) {
236
- var substitutionsLength = substitutions.getLength();
237
- if (substitutionsLength === 1) {
238
- var firstSubstitution = substitutions.getFirstSubstitution();
239
- specificSubstitution = firstSubstitution; ///
240
- }
241
- }
242
- return specificSubstitution;
243
- }
244
- },
245
- {
246
- key: "toJSON",
247
- value: function toJSON() {
248
- var metavariableJSON = (0, _json.metavariableToMetavariableJSON)(this.metavariable), statementJSON = (0, _json.statementToStatementJSON)(this.statement), metavariable = metavariableJSON, statement = statementJSON, string = this.string, json = {
249
- string: string,
250
- statement: statement,
251
- metavariable: metavariable
252
- };
253
- return json;
254
- }
255
- }
256
- ], [
257
- {
258
- key: "fromJSON",
259
- value: function fromJSON(json, fileContext) {
260
- var string = json.string, lexer = fileContext.getLexer(), parser = fileContext.getParser(), substitutionString = string, unqualifiedStatementString = (0, _node.unqualifiedStatementStringFromSubstitutionString)(substitutionString), unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromUnqualifiedStatementString)(unqualifiedStatementString, lexer), unqualifiedStatementNode = (0, _node.unqualifiedStatementNodeFromUnqualifiedStatementTokens)(unqualifiedStatementTokens, parser), substitutionNode = (0, _node.substitutionNodeFromUnqualifiedStatementNode)(unqualifiedStatementNode), substitutionTokens = (0, _tokens.substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode)(unqualifiedStatementTokens, substitutionNode), node = substitutionNode, tokens = substitutionTokens, resolved = true, statement = (0, _json.statementFromJSON)(json, fileContext), metavariable = (0, _json.metavariableFromJSON)(json, fileContext), substitution = null, statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
261
- return statementForMetavariableSubstitution;
262
- }
263
- },
264
- {
265
- key: "fromStatementAndMetavariable",
266
- value: function fromStatementAndMetavariable(statement, metavariable, context) {
267
- var statementNode = statement.getNode();
268
- statementNode = (0, _brackets.stripBracketsFromStatementNode)(statementNode); ///
269
- var Statement = _shim.default.Statement;
270
- statement = Statement.fromStatementNode(statementNode, context);
271
- var lexer = context.getLexer(), parser = context.getParser(), string = stringFromStatementAndMetavariable(statement, metavariable), substitutionString = string, unqualifiedStatementString = (0, _node.unqualifiedStatementStringFromSubstitutionString)(substitutionString), unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromUnqualifiedStatementString)(unqualifiedStatementString, lexer), unqualifiedStatementNode = (0, _node.unqualifiedStatementNodeFromUnqualifiedStatementTokens)(unqualifiedStatementTokens, parser), substitutionNode = (0, _node.substitutionNodeFromUnqualifiedStatementNode)(unqualifiedStatementNode), substitutionTokens = (0, _tokens.substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode)(unqualifiedStatementTokens, substitutionNode), node = substitutionNode, tokens = substitutionTokens, resolved = true, substitution = null, statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
272
- return statementForMetavariableSubstitution;
273
- }
274
- },
275
- {
276
- key: "fromStatementMetavariableAndSubstitution",
277
- value: function fromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context) {
278
- var statementNode = statement.getNode();
279
- statementNode = (0, _brackets.stripBracketsFromStatementNode)(statementNode); ///
280
- var Statement = _shim.default.Statement;
281
- statement = Statement.fromStatementNode(statementNode, context);
282
- var lexer = context.getLexer(), parser = context.getParser(), string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context), substitutionString = string, unqualifiedStatementString = (0, _node.unqualifiedStatementStringFromSubstitutionString)(substitutionString), unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromUnqualifiedStatementString)(unqualifiedStatementString, lexer), unqualifiedStatementNode = (0, _node.unqualifiedStatementNodeFromUnqualifiedStatementTokens)(unqualifiedStatementTokens, parser), substitutionNode = (0, _node.substitutionNodeFromUnqualifiedStatementNode)(unqualifiedStatementNode), substitutionTokens = (0, _tokens.substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode)(unqualifiedStatementTokens, substitutionNode), node = substitutionNode, tokens = substitutionTokens, resolved = false, statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
283
- return statementForMetavariableSubstitution;
284
- }
285
- }
286
- ]);
287
- return StatementForMetavariableSubstitution;
288
- }(_substitution.default);
289
- Object.assign(_shim.default, {
290
- StatementForMetavariableSubstitution: StatementForMetavariableSubstitution
291
- });
292
- var _default = StatementForMetavariableSubstitution;
293
- function contextFromLocalContextAndSubstitution(context, substitution) {
294
- var substitutionTokens = substitution.getTokens(), tokens = substitutionTokens, localContext = _local.default.fromContextAndTokens(context, tokens); ///
295
- context = localContext; ///
296
- return context;
297
- }
298
- function stringFromStatementAndMetavariable(statement, metavariable) {
299
- var statementString = statement.getString(), metavariableString = metavariable.getString(), string = "[".concat(statementString, " for ").concat(metavariableString, "]");
300
- return string;
301
- }
302
- function stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution) {
303
- var string;
304
- var statementString = statement.getString(), metavariableString = metavariable.getString();
305
- if (substitution === null) {
306
- string = "[".concat(statementString, " for ").concat(metavariableString, "]");
307
- } else {
308
- var substitutionString = substitution.getString();
309
- string = "[".concat(statementString, " for ").concat(metavariableString).concat(substitutionString, "]");
310
- }
311
- return string;
312
- }
313
-
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgc2hpbSBmcm9tIFwiLi4vc2hpbVwiO1xuaW1wb3J0IFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgbWV0YUxldmVsVW5pZmllciBmcm9tIFwiLi4vdW5pZmllci9tZXRhTGV2ZWxcIjtcblxuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiwgbWV0YXZhcmlhYmxlRnJvbUpTT04sIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcsIHN1YnN0aXR1dGlvblRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0FuZFN1YnN0aXR1dGlvbk5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Rva2Vuc1wiO1xuaW1wb3J0IHsgc3Vic3RpdHV0aW9uTm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudE5vZGUsXG4gICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ0Zyb21TdWJzdGl0dXRpb25TdHJpbmcsXG4gICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25vZGVcIjtcblxuY2xhc3MgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gICAgc3VwZXIoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgdGhpcy5yZXNvbHZlZCA9IHJlc29sdmVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICAgIHRoaXMuc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNSZXNvbHZlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZU5vZGUoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubWV0YXZhcmlhYmxlLmdldE5vZGUoKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgaXNTaW1wbGUoKSB7XG4gICAgY29uc3Qgc2ltcGxlID0gKHRoaXMuc3Vic3RpdHV0aW9uID09PSBudWxsKTtcblxuICAgIHJldHVybiBzaW1wbGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIHN0YXRlbWVudE5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7IC8vL1xuXG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSB0aGlzLnN0YXRlbWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgbWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBsZXQgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXM7XG5cbiAgICBpZiAoKHN1YnN0aXR1dGlvbk5vZGUgPT09IG51bGwpICYmICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCkpIHtcbiAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKChzdWJzdGl0dXRpb25Ob2RlID09PSBudWxsKSAmJiAodGhpcy5zdWJzdGl0dXRpb24gIT09IG51bGwpKSB7XG4gICAgICBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbk5vZGUgIT09IG51bGwpICYmICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCkpIHtcbiAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gdGhpcy5zdWJzdGl0dXRpb24ubWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgJiYgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHJlc29sdmUoc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuc3RyaW5nO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChzaW1wbGVTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgUmVzb2x2aW5nIHRoZSAke3N1YnN0aXR1dGlvblN0cmluZ30gc3Vic3RpdHV0aW9uLi4uYCk7XG5cbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHNpbXBsZVN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IHN1YnN0aXR1dGlvbi5yZXNvbHZlU3Vic3RpdHV0aW9uKHRoaXMuc3Vic3RpdHV0aW9uLCB0aGlzLnN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIHRoaXMucmVzb2x2ZWQgPSBzdWJzdGl0dXRpb25SZXNvbHZlZDsgLy8vXG5cbiAgICAgIGlmICh0aGlzLnJlc29sdmVkKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHNwZWNpZmljQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHNwZWNpZmljU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHRGcm9tTG9jYWxDb250ZXh0QW5kU3Vic3RpdHV0aW9uKGdlbmVyYWxDb250ZXh0LCBnZW5lcmFsU3Vic3RpdHV0aW9uKTsgIC8vL1xuXG4gICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0RnJvbUxvY2FsQ29udGV4dEFuZFN1YnN0aXR1dGlvbihzcGVjaWZpY0NvbnRleHQsIHNwZWNpZmljU3Vic3RpdHV0aW9uKTsgIC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLnNuYXBzaG90KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb25Ob2RlID0gZ2VuZXJhbFN1YnN0aXR1dGlvbi5nZXRTdWJzdGl0dXRpb25Ob2RlKCksICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uTm9kZSA9IHNwZWNpZmljU3Vic3RpdHV0aW9uLmdldFN1YnN0aXR1dGlvbk5vZGUoKSwgIC8vL1xuICAgICAgICAgICAgZ2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZyA9IGdlbmVyYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhnZW5lcmFsU3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgICBzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZyA9IHNwZWNpZmljQ29udGV4dC5ub2RlQXNTdHJpbmcoc3BlY2lmaWNTdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBnZW5lcmFsTm9kZSA9IGdlbmVyYWxTdWJzdGl0dXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIHVuaWZpZWRBdE1ldGFMZXZlbCA9IG1ldGFMZXZlbFVuaWZpZXIudW5pZnkoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmICh1bmlmaWVkQXRNZXRhTGV2ZWwpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICB1bmlmaWVkQXRNZXRhTGV2ZWwgP1xuICAgICAgICBzdWJzdGl0dXRpb25zLmNvbnRpbnVlKCkgOlxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMucm9sbGJhY2soc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgc3Vic3RpdHV0aW9uUmVzb2x2ZWQgPSB1bmlmaWVkQXRNZXRhTGV2ZWw7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblJlc29sdmVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHNwZWNpZmljU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgU3Vic3RpdHV0aW9ucyB9ID0gc2hpbSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tTm90aGluZygpLFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNMZW5ndGggPSBzdWJzdGl0dXRpb25zLmdldExlbmd0aCgpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBmaXJzdFN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZ2V0Rmlyc3RTdWJzdGl0dXRpb24oKTtcblxuICAgICAgICBzcGVjaWZpY1N1YnN0aXR1dGlvbiA9IGZpcnN0U3Vic3RpdHV0aW9uOyAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3BlY2lmaWNTdWJzdGl0dXRpb247XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTih0aGlzLm1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTih0aGlzLnN0YXRlbWVudCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLnN0cmluZyxcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbGV4ZXIgPSBmaWxlQ29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGZpbGVDb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN0cmluZywgIC8vL1xuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmdGcm9tU3Vic3RpdHV0aW9uU3RyaW5nKHN1YnN0aXR1dGlvblN0cmluZyksXG4gICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMgPSB1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZywgbGV4ZXIpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vucyh1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucywgcGFyc2VyKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlID0gc3Vic3RpdHV0aW9uTm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudE5vZGUodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ub2tlbnMgPSBzdWJzdGl0dXRpb25Ub2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNBbmRTdWJzdGl0dXRpb25Ob2RlKHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zLCBzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICBub2RlID0gc3Vic3RpdHV0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgIHRva2VucyA9IHN1YnN0aXR1dGlvblRva2VucywgIC8vL1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG51bGwsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICBzdGF0ZW1lbnROb2RlID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpOyAvLy9cblxuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBzaGltO1xuXG4gICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nRnJvbVN1YnN0aXR1dGlvblN0cmluZyhzdWJzdGl0dXRpb25TdHJpbmcpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlciksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZSA9IHN1YnN0aXR1dGlvbk5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uVG9rZW5zID0gc3Vic3RpdHV0aW9uVG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zQW5kU3Vic3RpdHV0aW9uTm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vucywgc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgbm9kZSA9IHN1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICAgICAgICB0b2tlbnMgPSBzdWJzdGl0dXRpb25Ub2tlbnMsICAvLy9cbiAgICAgICAgICByZXNvbHZlZCA9IHRydWUsXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgY29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKTtcblxuICAgIHN0YXRlbWVudE5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7IC8vL1xuXG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IHNoaW07XG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBjb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgY29udGV4dCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3RyaW5nLCAgLy8vXG4gICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ0Zyb21TdWJzdGl0dXRpb25TdHJpbmcoc3Vic3RpdHV0aW9uU3RyaW5nKSxcbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucyA9IHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nKHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nLCBsZXhlciksXG4gICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zKHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zLCBwYXJzZXIpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGUgPSBzdWJzdGl0dXRpb25Ob2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblRva2VucyA9IHN1YnN0aXR1dGlvblRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0FuZFN1YnN0aXR1dGlvbk5vZGUodW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBzdWJzdGl0dXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgdG9rZW5zID0gc3Vic3RpdHV0aW9uVG9rZW5zLCAgLy8vXG4gICAgICAgICAgcmVzb2x2ZWQgPSBmYWxzZSxcbiAgICAgICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb25cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG5cbmZ1bmN0aW9uIGNvbnRleHRGcm9tTG9jYWxDb250ZXh0QW5kU3Vic3RpdHV0aW9uKGNvbnRleHQsIHN1YnN0aXR1dGlvbikge1xuICBjb25zdCBzdWJzdGl0dXRpb25Ub2tlbnMgPSBzdWJzdGl0dXRpb24uZ2V0VG9rZW5zKCksXG4gICAgICAgIHRva2VucyA9IHN1YnN0aXR1dGlvblRva2VucywgLy8vXG4gICAgICAgIGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tQ29udGV4dEFuZFRva2Vucyhjb250ZXh0LCB0b2tlbnMpOyAvLy9cblxuICBjb250ZXh0ID0gbG9jYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICBsZXQgc3RyaW5nO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gIGlmIChzdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICBzdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJzdHJpbmciLCJub2RlIiwidG9rZW5zIiwicmVzb2x2ZWQiLCJzdGF0ZW1lbnQiLCJtZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb24iLCJpc1Jlc29sdmVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0U3Vic3RpdHV0aW9uIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXROb2RlIiwiaXNTaW1wbGUiLCJzaW1wbGUiLCJtYXRjaFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJyZXNvbHZlIiwic3Vic3RpdHV0aW9ucyIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3Vic3RpdHV0aW9uU3RyaW5nIiwic2ltcGxlU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsInRyYWNlIiwic3Vic3RpdHV0aW9uUmVzb2x2ZWQiLCJyZXNvbHZlU3Vic3RpdHV0aW9uIiwiZGVidWciLCJnZXRTdHJpbmciLCJnZW5lcmFsU3Vic3RpdHV0aW9uIiwic3BlY2lmaWNTdWJzdGl0dXRpb24iLCJ1bmlmeVN0YXRlbWVudCIsImNvbnRleHRGcm9tTG9jYWxDb250ZXh0QW5kU3Vic3RpdHV0aW9uIiwic25hcHNob3QiLCJnZW5lcmFsU3Vic3RpdHV0aW9uTm9kZSIsImdldFN1YnN0aXR1dGlvbk5vZGUiLCJzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUiLCJnZW5lcmFsU3Vic3RpdHV0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwic3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmciLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsInVuaWZpZWRBdE1ldGFMZXZlbCIsIm1ldGFMZXZlbFVuaWZpZXIiLCJ1bmlmeSIsImNvbnRpbnVlIiwicm9sbGJhY2siLCJTdWJzdGl0dXRpb25zIiwic2hpbSIsImZyb21Ob3RoaW5nIiwic3RhdGVtZW50VW5pZmllZCIsInN1YnN0aXR1dGlvbnNMZW5ndGgiLCJnZXRMZW5ndGgiLCJmaXJzdFN1YnN0aXR1dGlvbiIsImdldEZpcnN0U3Vic3RpdHV0aW9uIiwidG9KU09OIiwibWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsInN0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmaWxlQ29udGV4dCIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nRnJvbVN1YnN0aXR1dGlvblN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMiLCJzdWJzdGl0dXRpb25Ob2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvblRva2VucyIsInN1YnN0aXR1dGlvblRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0FuZFN1YnN0aXR1dGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZUZyb21KU09OIiwic3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsImNvbnRleHQiLCJTdGF0ZW1lbnQiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJmcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsIlN1YnN0aXR1dGlvbiIsIk9iamVjdCIsImFzc2lnbiIsImdldFRva2VucyIsImxvY2FsQ29udGV4dCIsIkxvY2FsQ29udGV4dCIsImZyb21Db250ZXh0QW5kVG9rZW5zIiwic3RhdGVtZW50U3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEwUUE7OztlQUFBOzs7MkRBeFFpQjttRUFDUTs0REFDQTtnRUFDSTt3QkFFa0I7b0JBQ21FO3NCQUM0QjtvQkFHdkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkUsSUFBQSxBQUFNQSxxREFBTjtjQUFNQTthQUFBQSxxQ0FDUUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLFlBQVksRUFBRUMsWUFBWTtnQ0FEN0VQOztnQkFFRixrQkFGRUE7WUFFSUM7WUFBUUM7WUFBTUM7O1FBRXBCLE1BQUtDLFFBQVEsR0FBR0E7UUFDaEIsTUFBS0MsU0FBUyxHQUFHQTtRQUNqQixNQUFLQyxZQUFZLEdBQUdBO1FBQ3BCLE1BQUtDLFlBQVksR0FBR0E7OztrQkFQbEJQOztZQVVKUSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLFFBQVE7WUFDdEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FB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