occam-verify-cli 0.0.502 → 0.0.503

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 (43) hide show
  1. package/lib/axiom.js +4 -4
  2. package/lib/axiomLemmaTheorem.js +58 -58
  3. package/lib/consequence.js +157 -0
  4. package/lib/lemma.js +4 -4
  5. package/lib/metaSupposition.js +214 -0
  6. package/lib/supposition.js +214 -0
  7. package/lib/theorem.js +4 -4
  8. package/lib/verify/axiom.js +11 -11
  9. package/lib/verify/consequence.js +35 -0
  10. package/lib/verify/derivation.js +7 -7
  11. package/lib/verify/lemma.js +12 -12
  12. package/lib/verify/metaDerivation.js +7 -7
  13. package/lib/verify/metaSupposition.js +41 -0
  14. package/lib/verify/supposition.js +41 -0
  15. package/lib/verify/theorem.js +12 -12
  16. package/package.json +1 -1
  17. package/src/axiom.js +1 -1
  18. package/src/axiomLemmaTheorem.js +57 -57
  19. package/src/consequence.js +187 -0
  20. package/src/lemma.js +1 -1
  21. package/src/metaSupposition.js +235 -0
  22. package/src/supposition.js +235 -0
  23. package/src/theorem.js +1 -1
  24. package/src/verify/axiom.js +17 -17
  25. package/src/verify/consequence.js +34 -0
  26. package/src/verify/derivation.js +8 -8
  27. package/src/verify/lemma.js +18 -18
  28. package/src/verify/metaDerivation.js +8 -8
  29. package/src/verify/metaSupposition.js +44 -0
  30. package/src/verify/supposition.js +44 -0
  31. package/src/verify/theorem.js +18 -18
  32. package/lib/antecedent.js +0 -214
  33. package/lib/consequent.js +0 -157
  34. package/lib/metaAntecedent.js +0 -214
  35. package/lib/verify/antecedent.js +0 -41
  36. package/lib/verify/consequent.js +0 -35
  37. package/lib/verify/metaAntecedent.js +0 -41
  38. package/src/antecedent.js +0 -235
  39. package/src/consequent.js +0 -187
  40. package/src/metaAntecedent.js +0 -235
  41. package/src/verify/antecedent.js +0 -44
  42. package/src/verify/consequent.js +0 -34
  43. package/src/verify/metaAntecedent.js +0 -44
@@ -0,0 +1,214 @@
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 MetaSupposition;
9
+ }
10
+ });
11
+ var _metaSubstitution = /*#__PURE__*/ _interopRequireDefault(require("./metaSubstitution"));
12
+ var _array = require("./utilities/array");
13
+ var _string = require("./utilities/string");
14
+ var _query = require("./utilities/query");
15
+ var _ruleNames = require("./ruleNames");
16
+ function _arrayLikeToArray(arr, len) {
17
+ if (len == null || len > arr.length) len = arr.length;
18
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
19
+ return arr2;
20
+ }
21
+ function _arrayWithoutHoles(arr) {
22
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
23
+ }
24
+ function _classCallCheck(instance, Constructor) {
25
+ if (!(instance instanceof Constructor)) {
26
+ throw new TypeError("Cannot call a class as a function");
27
+ }
28
+ }
29
+ function _defineProperties(target, props) {
30
+ for(var i = 0; i < props.length; i++){
31
+ var descriptor = props[i];
32
+ descriptor.enumerable = descriptor.enumerable || false;
33
+ descriptor.configurable = true;
34
+ if ("value" in descriptor) descriptor.writable = true;
35
+ Object.defineProperty(target, descriptor.key, descriptor);
36
+ }
37
+ }
38
+ function _createClass(Constructor, protoProps, staticProps) {
39
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
40
+ if (staticProps) _defineProperties(Constructor, staticProps);
41
+ return Constructor;
42
+ }
43
+ function _interopRequireDefault(obj) {
44
+ return obj && obj.__esModule ? obj : {
45
+ default: obj
46
+ };
47
+ }
48
+ function _iterableToArray(iter) {
49
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
50
+ }
51
+ function _nonIterableSpread() {
52
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53
+ }
54
+ function _toConsumableArray(arr) {
55
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
56
+ }
57
+ function _unsupportedIterableToArray(o, minLen) {
58
+ if (!o) return;
59
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
60
+ var n = Object.prototype.toString.call(o).slice(8, -1);
61
+ if (n === "Object" && o.constructor) n = o.constructor.name;
62
+ if (n === "Map" || n === "Set") return Array.from(n);
63
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
64
+ }
65
+ var metastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproofAssertion/metastatement"), metaSubproofAssertionNodeQuery = (0, _query.nodeQuery)("/metastatement/metaSubproofAssertion!"), unqualifiedMetastatementMetastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproof/unqualifiedMetastatement/metastatement!"), qualifiedOrUnqualifiedMetastatementMetastatementNodeQuery = (0, _query.nodeQuery)("/metaSubproof/subDerivation/qualifiedMetastatement|unqualifiedMetastatement[-1]/metastatement!");
66
+ var MetaSupposition = /*#__PURE__*/ function() {
67
+ function MetaSupposition(metastatementNode) {
68
+ _classCallCheck(this, MetaSupposition);
69
+ this.metastatementNode = metastatementNode;
70
+ }
71
+ _createClass(MetaSupposition, [
72
+ {
73
+ key: "getMetastatementNode",
74
+ value: function getMetastatementNode() {
75
+ return this.metastatementNode;
76
+ }
77
+ },
78
+ {
79
+ key: "matchSubproofNode",
80
+ value: function matchSubproofNode(metaSubproofNode, metaSubstitutions) {
81
+ var metaSubproofNodeMatches = false;
82
+ var metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(this.metastatementNode);
83
+ if (metaSubproofAssertionNode !== null) {
84
+ var metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode), unqualifiedMetastatementMetastatementNodes = unqualifiedMetastatementMetastatementNodesQuery(metaSubproofNode), qualifiedOrUnqualifiedMetastatementMetastatementNode = qualifiedOrUnqualifiedMetastatementMetastatementNodeQuery(metaSubproofNode), metastatementNodes = _toConsumableArray(unqualifiedMetastatementMetastatementNodes).concat([
85
+ qualifiedOrUnqualifiedMetastatementMetastatementNode
86
+ ]), metastatementNodesLength = metastatementNodes.length, metaSubproofAssertionMetastatementNodesLength = metaSubproofAssertionMetastatementNodes.length;
87
+ if (metastatementNodesLength === metaSubproofAssertionMetastatementNodesLength) {
88
+ metaSubproofNodeMatches = metaSubproofAssertionMetastatementNodes.every(function(metaSubproofAssertionMetastatementNode, index) {
89
+ var metastatementNode = metastatementNodes[index], nonTerminalNode = metastatementNode, metaSuppositionNonTerminalNode = metaSubproofAssertionMetastatementNode, metaSuppositionNonTerminalNodeMatches = matchMetaSuppositionNonTerminalNode(metaSuppositionNonTerminalNode, nonTerminalNode, metaSubstitutions);
90
+ if (metaSuppositionNonTerminalNodeMatches) {
91
+ return true;
92
+ }
93
+ });
94
+ }
95
+ }
96
+ return metaSubproofNodeMatches;
97
+ }
98
+ },
99
+ {
100
+ key: "matchMetastatementNode",
101
+ value: function matchMetastatementNode(metastatementNode, metaSubstitutions) {
102
+ var nonTerminalNode = metastatementNode, metaSuppositionNonTerminalNode = this.metastatementNode, metaSuppositionNonTerminalNodeMatches = matchMetaSuppositionNonTerminalNode(metaSuppositionNonTerminalNode, nonTerminalNode, metaSubstitutions), metastatementNodeMatches = metaSuppositionNonTerminalNodeMatches; ///
103
+ return metastatementNodeMatches;
104
+ }
105
+ },
106
+ {
107
+ key: "toJSON",
108
+ value: function toJSON() {
109
+ var metastatementString = (0, _string.nodeAsString)(this.metastatementNode), metastatement = metastatementString, json = {
110
+ metastatement: metastatement
111
+ };
112
+ return json;
113
+ }
114
+ }
115
+ ], [
116
+ {
117
+ key: "fromJSON",
118
+ value: function fromJSON(json, releaseContext) {
119
+ var metastatement = json.metastatement, metastatementString = metastatement, metastatementNode = (0, _string.metastatementNodeFromMetastatementString)(metastatementString, releaseContext), metaSupposition = new MetaSupposition(metastatementNode);
120
+ return metaSupposition;
121
+ }
122
+ },
123
+ {
124
+ key: "fromMetastatementNode",
125
+ value: function fromMetastatementNode(metastatementNode) {
126
+ var metaSupposition = new MetaSupposition(metastatementNode);
127
+ return metaSupposition;
128
+ }
129
+ }
130
+ ]);
131
+ return MetaSupposition;
132
+ }();
133
+ function matchMetaSuppositionNode(metaSuppositionNode, node, metaSubstitutions) {
134
+ var metaSuppositionNodeMatches = false;
135
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = metaSuppositionNode.isTerminalNode();
136
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
137
+ if (nodeTerminalNode) {
138
+ var terminalNode = node, metaSuppositionTerminalNode = metaSuppositionNode, metaSuppositionTerminalNodeMatches = matchMetaSuppositionTerminalNode(metaSuppositionTerminalNode, terminalNode, metaSubstitutions);
139
+ metaSuppositionNodeMatches = metaSuppositionTerminalNodeMatches; ///
140
+ } else {
141
+ var nonTerminalNode = node, metaSuppositionNonTerminalNode = metaSuppositionNode, metaSuppositionNonTerminalNodeMatches = matchMetaSuppositionNonTerminalNode(metaSuppositionNonTerminalNode, nonTerminalNode, metaSubstitutions);
142
+ metaSuppositionNodeMatches = metaSuppositionNonTerminalNodeMatches; ///
143
+ }
144
+ }
145
+ return metaSuppositionNodeMatches;
146
+ }
147
+ function matchMetaSuppositionNodes(metaSuppositionNodes, nodes, metaSubstitutions) {
148
+ var metaSuppositionNodesMatches = false;
149
+ var nodesLength = nodes.length, metaSuppositionNodesLength = metaSuppositionNodes.length;
150
+ if (nodesLength === metaSuppositionNodesLength) {
151
+ metaSuppositionNodesMatches = nodes.every(function(node, index) {
152
+ var metaSuppositionNode = metaSuppositionNodes[index], metaSuppositionNodeMatches = matchMetaSuppositionNode(metaSuppositionNode, node, metaSubstitutions);
153
+ if (metaSuppositionNodeMatches) {
154
+ return true;
155
+ }
156
+ });
157
+ }
158
+ return metaSuppositionNodesMatches;
159
+ }
160
+ function matchMetaSuppositionMetavariable(metaSuppositionMetavariableNode, nodes, metaSubstitutions) {
161
+ var metaSuppositionMetavariableMatches;
162
+ var metaSuppositionMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(metaSuppositionMetavariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
163
+ var metavariableName = metaSubstitution.getMetavariableName();
164
+ if (metavariableName === metaSuppositionMetavariableName) {
165
+ return true;
166
+ }
167
+ }) || null;
168
+ if (metaSubstitution !== null) {
169
+ var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
170
+ metaSuppositionMetavariableMatches = metaSubstitutionNodesMatch; ///
171
+ } else {
172
+ var metavariableName = metaSuppositionMetavariableName, metaSubstitution1 = _metaSubstitution.default.fromMetavariableNameAndNodes(metavariableName, nodes);
173
+ metaSubstitutions.push(metaSubstitution1);
174
+ metaSuppositionMetavariableMatches = true;
175
+ }
176
+ return metaSuppositionMetavariableMatches;
177
+ }
178
+ function matchMetaSuppositionTerminalNode(metaSuppositionTerminalNode, terminalNode, metaSubstitutions) {
179
+ var matches = metaSuppositionTerminalNode.match(terminalNode), metaSuppositionTerminalNodeMatches = matches;
180
+ return metaSuppositionTerminalNodeMatches;
181
+ }
182
+ function matchMetaSuppositionNonTerminalNode(metaSuppositionNonTerminalNode, nonTerminalNode, metaSubstitutions) {
183
+ var metaSuppositionNonTerminalNodeMatches = false;
184
+ var ruleName = nonTerminalNode.getRuleName(), metaSuppositionRuleName = metaSuppositionNonTerminalNode.getRuleName(); ///
185
+ if (ruleName === metaSuppositionRuleName) {
186
+ var childNodes = nonTerminalNode.getChildNodes(), metaSuppositionChildNodes = metaSuppositionNonTerminalNode.getChildNodes(), nodes = childNodes, metaSuppositionNodes = metaSuppositionChildNodes, metaSuppositionChildNodesMatches = matchMetaSuppositionNodes(metaSuppositionNodes, nodes, metaSubstitutions);
187
+ metaSuppositionNonTerminalNodeMatches = metaSuppositionChildNodesMatches; ///
188
+ if (!metaSuppositionNonTerminalNodeMatches) {
189
+ var ruleNameMetastatementRuleName = ruleName === _ruleNames.METASTATEMENT_RULE_NAME;
190
+ if (ruleNameMetastatementRuleName) {
191
+ var metastatementNode = nonTerminalNode, metaSuppositionMetastatementNode = metaSuppositionNonTerminalNode, metaSuppositionMetastatementNodeMatches = matchMetaSuppositionMetastatementNode(metaSuppositionMetastatementNode, metastatementNode, metaSubstitutions);
192
+ metaSuppositionNonTerminalNodeMatches = metaSuppositionMetastatementNodeMatches; ///
193
+ }
194
+ }
195
+ }
196
+ return metaSuppositionNonTerminalNodeMatches;
197
+ }
198
+ function matchMetaSuppositionMetastatementNode(metaSuppositionMetastatementNode, metastatementNode, metaSubstitutions) {
199
+ var metaSuppositionMetastatementNodeMatches = false;
200
+ var metaSuppositionNonTerminalNode = metaSuppositionMetastatementNode, metaSuppositionChildNodes = metaSuppositionNonTerminalNode.getChildNodes(), metaSuppositionChildNodesLength = metaSuppositionChildNodes.length;
201
+ if (metaSuppositionChildNodesLength === 1) {
202
+ var firstMetaSuppositionChildNode = (0, _array.first)(metaSuppositionChildNodes), metaSuppositionChildNode = firstMetaSuppositionChildNode, metaSuppositionChildNodeNonTerminalNode = metaSuppositionChildNode.isNonTerminalNode();
203
+ if (metaSuppositionChildNodeNonTerminalNode) {
204
+ var metaSuppositionNonTerminalChildNode = metaSuppositionChildNode, metaSuppositionNonTerminalChildNodeRuleName = metaSuppositionNonTerminalChildNode.getRuleName(), metaSuppositionNonTerminalChildNodeRuleNameMetavariableRuleName = metaSuppositionNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
205
+ if (metaSuppositionNonTerminalChildNodeRuleNameMetavariableRuleName) {
206
+ var metaSuppositionMetavariableNode = metaSuppositionNonTerminalChildNode, nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, metaSuppositionMetavariableMatches = matchMetaSuppositionMetavariable(metaSuppositionMetavariableNode, nodes, metaSubstitutions);
207
+ metaSuppositionMetastatementNodeMatches = metaSuppositionMetavariableMatches; ///
208
+ }
209
+ }
210
+ }
211
+ return metaSuppositionMetastatementNodeMatches;
212
+ }
213
+
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhU3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhU3Vic3RpdHV0aW9uIGZyb20gXCIuL21ldGFTdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSwgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgbWV0YXN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL21ldGFTdWJwcm9vZkFzc2VydGlvbi9tZXRhc3RhdGVtZW50XCIpLFxuICAgICAgbWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFzdGF0ZW1lbnQvbWV0YVN1YnByb29mQXNzZXJ0aW9uIVwiKSxcbiAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhU3VicHJvb2YvdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFTdWJwcm9vZi9zdWJEZXJpdmF0aW9uL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Wy0xXS9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YVN1cHBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhc3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIG1hdGNoU3VicHJvb2ZOb2RlKG1ldGFTdWJwcm9vZk5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IG1ldGFTdWJwcm9vZk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gbWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMubWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyA9IG1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzID0gdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzUXVlcnkobWV0YVN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlID0gcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KG1ldGFTdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVzID0gW1xuICAgICAgICAgICAgICAuLi51bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMsXG4gICAgICAgICAgICAgIHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGggPSBtZXRhc3RhdGVtZW50Tm9kZXMubGVuZ3RoLFxuICAgICAgICAgICAgbWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoID0gbWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKG1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9PT0gbWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIG1ldGFTdWJwcm9vZk5vZGVNYXRjaGVzID0gbWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzLmV2ZXJ5KChtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUobWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFTdWJwcm9vZk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUobWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh0aGlzLm1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50ID0gbWV0YXN0YXRlbWVudFN0cmluZywgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG1ldGFzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YXN0YXRlbWVudFN0cmluZyA9IG1ldGFzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbiA9IG5ldyBNZXRhU3VwcG9zaXRpb24obWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBtZXRhU3VwcG9zaXRpb24gPSBuZXcgTWV0YVN1cHBvc2l0aW9uKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBtZXRhU3VwcG9zaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhU3VwcG9zaXRpb25Ob2RlKG1ldGFTdXBwb3NpdGlvbk5vZGUsIG5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBtZXRhU3VwcG9zaXRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gbWV0YVN1cHBvc2l0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25UZXJtaW5hbE5vZGUgPSBtZXRhU3VwcG9zaXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhU3VwcG9zaXRpb25UZXJtaW5hbE5vZGUobWV0YVN1cHBvc2l0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgbWV0YVN1cHBvc2l0aW9uTm9kZU1hdGNoZXMgPSBtZXRhU3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlID0gbWV0YVN1cHBvc2l0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlKG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIG1ldGFTdXBwb3NpdGlvbk5vZGVNYXRjaGVzID0gbWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbk5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFTdXBwb3NpdGlvbk5vZGVzKG1ldGFTdXBwb3NpdGlvbk5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtZXRhU3VwcG9zaXRpb25Ob2Rlc0xlbmd0aCA9IG1ldGFTdXBwb3NpdGlvbk5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IG1ldGFTdXBwb3NpdGlvbk5vZGVzTGVuZ3RoKSB7XG4gICAgbWV0YVN1cHBvc2l0aW9uTm9kZXNNYXRjaGVzID0gbm9kZXMuZXZlcnkoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25Ob2RlID0gbWV0YVN1cHBvc2l0aW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFTdXBwb3NpdGlvbk5vZGUobWV0YVN1cHBvc2l0aW9uTm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAobWV0YVN1cHBvc2l0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uTm9kZXNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZShtZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZU1hdGNoZXM7XG5cbiAgY29uc3QgbWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YVN1YnN0aXR1dGlvbiA9IG1ldGFTdWJzdGl0dXRpb25zLmZpbmQoKG1ldGFTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTmFtZSA9PT0gbWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChtZXRhU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBtZXRhU3Vic3RpdHV0aW9uLm1hdGNoTm9kZXMobm9kZXMpO1xuXG4gICAgbWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTWF0Y2hlcyA9IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZU5hbWUsIC8vL1xuICAgICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBNZXRhU3Vic3RpdHV0aW9uLmZyb21NZXRhdmFyaWFibGVOYW1lQW5kTm9kZXMobWV0YXZhcmlhYmxlTmFtZSwgbm9kZXMpO1xuXG4gICAgbWV0YVN1YnN0aXR1dGlvbnMucHVzaChtZXRhU3Vic3RpdHV0aW9uKTtcblxuICAgIG1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZU1hdGNoZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTWV0YVN1cHBvc2l0aW9uVGVybWluYWxOb2RlKG1ldGFTdXBwb3NpdGlvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gbWV0YVN1cHBvc2l0aW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIG1ldGFTdXBwb3NpdGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaGVzO1xuXG4gIHJldHVybiBtZXRhU3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZShtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBtZXRhU3VwcG9zaXRpb25SdWxlTmFtZSA9IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IG1ldGFTdXBwb3NpdGlvblJ1bGVOYW1lKSB7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlcyA9IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb25Ob2RlcyA9IG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hNZXRhU3VwcG9zaXRpb25Ob2RlcyhtZXRhU3VwcG9zaXRpb25Ob2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgIG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhU3VwcG9zaXRpb25DaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG5cbiAgICBpZiAoIW1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhU3VwcG9zaXRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXMgPSBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBtZXRhU3VwcG9zaXRpb25DaGlsZE5vZGVzTGVuZ3RoID0gbWV0YVN1cHBvc2l0aW9uQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBmaXJzdE1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZSA9IGZpcnN0KG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXMpLFxuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZSA9IGZpcnN0TWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gbWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZSA9IG1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUgPSAobWV0YVN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gTUVUQVZBUklBQkxFX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTm9kZSA9IG1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGVNYXRjaGVzID0gbWF0Y2hNZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGUobWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTm9kZSwgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBtZXRhU3VwcG9zaXRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIk1ldGFTdXBwb3NpdGlvbiIsIm1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5IiwicXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VicHJvb2ZOb2RlIiwibWV0YVN1YnByb29mTm9kZSIsIm1ldGFTdWJzdGl0dXRpb25zIiwibWV0YVN1YnByb29mTm9kZU1hdGNoZXMiLCJtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwibWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzIiwicXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlcyIsIm1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCIsImV2ZXJ5IiwibWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJpbmRleCIsIm5vblRlcm1pbmFsTm9kZSIsIm1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSIsIm1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXN0YXRlbWVudCIsImpzb24iLCJmcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0IiwibWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyIsIm1ldGFTdXBwb3NpdGlvbiIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YVN1cHBvc2l0aW9uTm9kZSIsIm1ldGFTdXBwb3NpdGlvbk5vZGUiLCJub2RlIiwibWV0YVN1cHBvc2l0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsIm1ldGFTdXBwb3NpdGlvblRlcm1pbmFsTm9kZSIsIm1ldGFTdXBwb3NpdGlvblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGFTdXBwb3NpdGlvblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YVN1cHBvc2l0aW9uTm9kZXMiLCJtZXRhU3VwcG9zaXRpb25Ob2RlcyIsIm5vZGVzIiwibWV0YVN1cHBvc2l0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJtZXRhU3VwcG9zaXRpb25Ob2Rlc0xlbmd0aCIsIm1hdGNoTWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlIiwibWV0YVN1cHBvc2l0aW9uTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFTdXBwb3NpdGlvbk1ldGF2YXJpYWJsZU1hdGNoZXMiLCJtZXRhU3VwcG9zaXRpb25NZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwibWV0YVN1YnN0aXR1dGlvbiIsImZpbmQiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIk1ldGFTdWJzdGl0dXRpb24iLCJmcm9tTWV0YXZhcmlhYmxlTmFtZUFuZE5vZGVzIiwicHVzaCIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJtZXRhU3VwcG9zaXRpb25SdWxlTmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwibWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlcyIsIm1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXNNYXRjaGVzIiwicnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsIm1ldGFTdXBwb3NpdGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YVN1cHBvc2l0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhU3VwcG9zaXRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZXNMZW5ndGgiLCJmaXJzdE1ldGFTdXBwb3NpdGlvbkNoaWxkTm9kZSIsImZpcnN0IiwibWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlIiwibWV0YVN1cHBvc2l0aW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZSIsIm1ldGFTdXBwb3NpdGlvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUiLCJtZXRhU3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQWdCcUJBOzs7cUVBZFE7cUJBRVA7c0JBQ087cUJBQ1M7eUJBRzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVoRSxJQUFNQywwQkFBMEJDLElBQUFBLGlCQUFVLEVBQUMseUNBQ3JDQyxpQ0FBaUNDLElBQUFBLGdCQUFTLEVBQUMsMENBQzNDQyxrREFBa0RILElBQUFBLGlCQUFVLEVBQUMsMERBQzdESSw0REFBNERGLElBQUFBLGdCQUFTLEVBQUM7QUFFN0QsSUFB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
@@ -0,0 +1,214 @@
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 Supposition;
9
+ }
10
+ });
11
+ var _substitution = /*#__PURE__*/ _interopRequireDefault(require("./substitution"));
12
+ var _array = require("./utilities/array");
13
+ var _string = require("./utilities/string");
14
+ var _query = require("./utilities/query");
15
+ var _ruleNames = require("./ruleNames");
16
+ function _arrayLikeToArray(arr, len) {
17
+ if (len == null || len > arr.length) len = arr.length;
18
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
19
+ return arr2;
20
+ }
21
+ function _arrayWithoutHoles(arr) {
22
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
23
+ }
24
+ function _classCallCheck(instance, Constructor) {
25
+ if (!(instance instanceof Constructor)) {
26
+ throw new TypeError("Cannot call a class as a function");
27
+ }
28
+ }
29
+ function _defineProperties(target, props) {
30
+ for(var i = 0; i < props.length; i++){
31
+ var descriptor = props[i];
32
+ descriptor.enumerable = descriptor.enumerable || false;
33
+ descriptor.configurable = true;
34
+ if ("value" in descriptor) descriptor.writable = true;
35
+ Object.defineProperty(target, descriptor.key, descriptor);
36
+ }
37
+ }
38
+ function _createClass(Constructor, protoProps, staticProps) {
39
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
40
+ if (staticProps) _defineProperties(Constructor, staticProps);
41
+ return Constructor;
42
+ }
43
+ function _interopRequireDefault(obj) {
44
+ return obj && obj.__esModule ? obj : {
45
+ default: obj
46
+ };
47
+ }
48
+ function _iterableToArray(iter) {
49
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
50
+ }
51
+ function _nonIterableSpread() {
52
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53
+ }
54
+ function _toConsumableArray(arr) {
55
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
56
+ }
57
+ function _unsupportedIterableToArray(o, minLen) {
58
+ if (!o) return;
59
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
60
+ var n = Object.prototype.toString.call(o).slice(8, -1);
61
+ if (n === "Object" && o.constructor) n = o.constructor.name;
62
+ if (n === "Map" || n === "Set") return Array.from(n);
63
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
64
+ }
65
+ var statementNodesQuery = (0, _query.nodesQuery)("/subproofAssertion/statement"), subproofAssertionNodeQuery = (0, _query.nodeQuery)("/statement/subproofAssertion!"), unqualifiedStatementStatementNodesQuery = (0, _query.nodesQuery)("/subproof/unqualifiedStatement/statement!"), qualifiedOrUnqualifiedStatementStatementNodeQuery = (0, _query.nodeQuery)("/subproof/subDerivation/qualifiedStatement|unqualifiedStatement[-1]/statement!");
66
+ var Supposition = /*#__PURE__*/ function() {
67
+ function Supposition(statementNode) {
68
+ _classCallCheck(this, Supposition);
69
+ this.statementNode = statementNode;
70
+ }
71
+ _createClass(Supposition, [
72
+ {
73
+ key: "getStatementNode",
74
+ value: function getStatementNode() {
75
+ return this.statementNode;
76
+ }
77
+ },
78
+ {
79
+ key: "matchSubproofNode",
80
+ value: function matchSubproofNode(subproofNode, substitutions) {
81
+ var subproofNodeMatches = false;
82
+ var subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
83
+ if (subproofAssertionNode !== null) {
84
+ var subproofAssertionStatementNodes = statementNodesQuery(subproofAssertionNode), unqualifiedStatementStatementNodes = unqualifiedStatementStatementNodesQuery(subproofNode), qualifiedOrUnqualifiedStatementStatementNode = qualifiedOrUnqualifiedStatementStatementNodeQuery(subproofNode), statementNodes = _toConsumableArray(unqualifiedStatementStatementNodes).concat([
85
+ qualifiedOrUnqualifiedStatementStatementNode
86
+ ]), statementNodesLength = statementNodes.length, subproofAssertionStatementNodesLength = subproofAssertionStatementNodes.length;
87
+ if (statementNodesLength === subproofAssertionStatementNodesLength) {
88
+ subproofNodeMatches = subproofAssertionStatementNodes.every(function(subproofAssertionStatementNode, index) {
89
+ var statementNode = statementNodes[index], nonTerminalNode = statementNode, suppositionNonTerminalNode = subproofAssertionStatementNode, suppositionNonTerminalNodeMatches = matchSuppositionNonTerminalNode(suppositionNonTerminalNode, nonTerminalNode, substitutions);
90
+ if (suppositionNonTerminalNodeMatches) {
91
+ return true;
92
+ }
93
+ });
94
+ }
95
+ }
96
+ return subproofNodeMatches;
97
+ }
98
+ },
99
+ {
100
+ key: "matchStatementNode",
101
+ value: function matchStatementNode(statementNode, substitutions) {
102
+ var nonTerminalNode = statementNode, suppositionNonTerminalNode = this.statementNode, suppositionNonTerminalNodeMatches = matchSuppositionNonTerminalNode(suppositionNonTerminalNode, nonTerminalNode, substitutions), statementNodeMatches = suppositionNonTerminalNodeMatches; ///
103
+ return statementNodeMatches;
104
+ }
105
+ },
106
+ {
107
+ key: "toJSON",
108
+ value: function toJSON() {
109
+ var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
110
+ statement: statement
111
+ };
112
+ return json;
113
+ }
114
+ }
115
+ ], [
116
+ {
117
+ key: "fromJSON",
118
+ value: function fromJSON(json, releaseContext) {
119
+ var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), supposition = new Supposition(statementNode);
120
+ return supposition;
121
+ }
122
+ },
123
+ {
124
+ key: "fromStatementNode",
125
+ value: function fromStatementNode(statementNode) {
126
+ var supposition = new Supposition(statementNode);
127
+ return supposition;
128
+ }
129
+ }
130
+ ]);
131
+ return Supposition;
132
+ }();
133
+ function matchSuppositionNode(suppositionNode, node, substitutions) {
134
+ var suppositionNodeMatches = false;
135
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = suppositionNode.isTerminalNode();
136
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
137
+ if (nodeTerminalNode) {
138
+ var terminalNode = node, suppositionTerminalNode = suppositionNode, suppositionTerminalNodeMatches = matchSuppositionTerminalNode(suppositionTerminalNode, terminalNode, substitutions);
139
+ suppositionNodeMatches = suppositionTerminalNodeMatches; ///
140
+ } else {
141
+ var nonTerminalNode = node, suppositionNonTerminalNode = suppositionNode, suppositionNonTerminalNodeMatches = matchSuppositionNonTerminalNode(suppositionNonTerminalNode, nonTerminalNode, substitutions);
142
+ suppositionNodeMatches = suppositionNonTerminalNodeMatches; ///
143
+ }
144
+ }
145
+ return suppositionNodeMatches;
146
+ }
147
+ function matchSuppositionNodes(suppositionNodes, nodes, substitutions) {
148
+ var suppositionNodesMatches = false;
149
+ var nodesLength = nodes.length, suppositionNodesLength = suppositionNodes.length;
150
+ if (nodesLength === suppositionNodesLength) {
151
+ suppositionNodesMatches = nodes.every(function(node, index) {
152
+ var suppositionNode = suppositionNodes[index], suppositionNodeMatches = matchSuppositionNode(suppositionNode, node, substitutions);
153
+ if (suppositionNodeMatches) {
154
+ return true;
155
+ }
156
+ });
157
+ }
158
+ return suppositionNodesMatches;
159
+ }
160
+ function matchSuppositionVariable(suppositionVariableNode, nodes, substitutions) {
161
+ var suppositionVariableMatches;
162
+ var suppositionVariableName = (0, _query.variableNameFromVariableNode)(suppositionVariableNode), substitution = substitutions.find(function(substitution) {
163
+ var variableName = substitution.getVariableName();
164
+ if (variableName === suppositionVariableName) {
165
+ return true;
166
+ }
167
+ }) || null;
168
+ if (substitution !== null) {
169
+ var substitutionNodesMatch = substitution.matchNodes(nodes);
170
+ suppositionVariableMatches = substitutionNodesMatch; ///
171
+ } else {
172
+ var variableName = suppositionVariableName, substitution1 = _substitution.default.fromVariableNameAndNodes(variableName, nodes);
173
+ substitutions.push(substitution1);
174
+ suppositionVariableMatches = true;
175
+ }
176
+ return suppositionVariableMatches;
177
+ }
178
+ function matchSuppositionTerminalNode(suppositionTerminalNode, terminalNode, substitutions) {
179
+ var matches = suppositionTerminalNode.match(terminalNode), suppositionTerminalNodeMatches = matches;
180
+ return suppositionTerminalNodeMatches;
181
+ }
182
+ function matchSuppositionNonTerminalNode(suppositionNonTerminalNode, nonTerminalNode, substitutions) {
183
+ var suppositionNonTerminalNodeMatches = false;
184
+ var ruleName = nonTerminalNode.getRuleName(), suppositionRuleName = suppositionNonTerminalNode.getRuleName(); ///
185
+ if (ruleName === suppositionRuleName) {
186
+ var childNodes = nonTerminalNode.getChildNodes(), suppositionChildNodes = suppositionNonTerminalNode.getChildNodes(), nodes = childNodes, suppositionNodes = suppositionChildNodes, suppositionChildNodesMatches = matchSuppositionNodes(suppositionNodes, nodes, substitutions);
187
+ suppositionNonTerminalNodeMatches = suppositionChildNodesMatches; ///
188
+ if (!suppositionNonTerminalNodeMatches) {
189
+ var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
190
+ if (ruleNameStatementRuleName) {
191
+ var statementNode = nonTerminalNode, suppositionStatementNode = suppositionNonTerminalNode, suppositionStatementNodeMatches = matchSuppositionStatementNode(suppositionStatementNode, statementNode, substitutions);
192
+ suppositionNonTerminalNodeMatches = suppositionStatementNodeMatches; ///
193
+ }
194
+ }
195
+ }
196
+ return suppositionNonTerminalNodeMatches;
197
+ }
198
+ function matchSuppositionStatementNode(suppositionStatementNode, statementNode, substitutions) {
199
+ var suppositionStatementNodeMatches = false;
200
+ var suppositionNonTerminalNode = suppositionStatementNode, suppositionChildNodes = suppositionNonTerminalNode.getChildNodes(), suppositionChildNodesLength = suppositionChildNodes.length;
201
+ if (suppositionChildNodesLength === 1) {
202
+ var firstSuppositionChildNode = (0, _array.first)(suppositionChildNodes), suppositionChildNode = firstSuppositionChildNode, suppositionChildNodeNonTerminalNode = suppositionChildNode.isNonTerminalNode();
203
+ if (suppositionChildNodeNonTerminalNode) {
204
+ var suppositionNonTerminalChildNode = suppositionChildNode, suppositionNonTerminalChildNodeRuleName = suppositionNonTerminalChildNode.getRuleName(), suppositionNonTerminalChildNodeRuleNameVariableRuleName = suppositionNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
205
+ if (suppositionNonTerminalChildNodeRuleNameVariableRuleName) {
206
+ var suppositionVariableNode = suppositionNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, suppositionVariableMatches = matchSuppositionVariable(suppositionVariableNode, nodes, substitutions);
207
+ suppositionStatementNodeMatches = suppositionVariableMatches; ///
208
+ }
209
+ }
210
+ }
211
+ return suppositionStatementNodeMatches;
212
+ }
213
+
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3NpdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBWQVJJQUJMRV9SVUxFX05BTUUsIFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2ZBc3NlcnRpb24vc3RhdGVtZW50XCIpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3N1YnByb29mQXNzZXJ0aW9uIVwiKSxcbiAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2YvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3VicHJvb2Yvc3ViRGVyaXZhdGlvbi9xdWFsaWZpZWRTdGF0ZW1lbnR8dW5xdWFsaWZpZWRTdGF0ZW1lbnRbLTFdL3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cHBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50Tm9kZSkge1xuICAgIHRoaXMuc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgICBsZXQgc3VicHJvb2ZOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkodGhpcy5zdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXMgPSBzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVzID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBxdWFsaWZpZWRPclVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZSA9IHF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlUXVlcnkoc3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHN0YXRlbWVudE5vZGVzID0gW1xuICAgICAgICAgICAgICAuLi51bnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVzLFxuICAgICAgICAgICAgICBxdWFsaWZpZWRPclVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXRlbWVudE5vZGVzTGVuZ3RoID0gc3RhdGVtZW50Tm9kZXMubGVuZ3RoLFxuICAgICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnROb2Rlc0xlbmd0aCA9IHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhdGVtZW50Tm9kZXNMZW5ndGggPT09IHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgpIHtcbiAgICAgICAgc3VicHJvb2ZOb2RlTWF0Y2hlcyA9IHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXMuZXZlcnkoKHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlID0gc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaFN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlKHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUgPSB0aGlzLnN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaFN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlKHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaGVzID0gc3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5zdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0YXRlbWVudCB9ID0ganNvbixcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcoc3RhdGVtZW50U3RyaW5nLCByZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBuZXcgU3VwcG9zaXRpb24oc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uID0gbmV3IFN1cHBvc2l0aW9uKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgbm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgc3VwcG9zaXRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gc3VwcG9zaXRpb25Ob2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uVGVybWluYWxOb2RlID0gc3VwcG9zaXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBzdXBwb3NpdGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaFN1cHBvc2l0aW9uVGVybWluYWxOb2RlKHN1cHBvc2l0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBzdXBwb3NpdGlvbk5vZGVNYXRjaGVzID0gc3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgc3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUgPSBzdXBwb3NpdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoU3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUoc3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIHN1cHBvc2l0aW9uTm9kZU1hdGNoZXMgPSBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdXBwb3NpdGlvbk5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFN1cHBvc2l0aW9uTm9kZXMoc3VwcG9zaXRpb25Ob2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHN1cHBvc2l0aW9uTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIHN1cHBvc2l0aW9uTm9kZXNMZW5ndGggPSBzdXBwb3NpdGlvbk5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IHN1cHBvc2l0aW9uTm9kZXNMZW5ndGgpIHtcbiAgICBzdXBwb3NpdGlvbk5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25Ob2RlID0gc3VwcG9zaXRpb25Ob2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hTdXBwb3NpdGlvbk5vZGUoc3VwcG9zaXRpb25Ob2RlLCBub2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgaWYgKHN1cHBvc2l0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc3VwcG9zaXRpb25Ob2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3VwcG9zaXRpb25WYXJpYWJsZShzdXBwb3NpdGlvblZhcmlhYmxlTm9kZSwgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHN1cHBvc2l0aW9uVmFyaWFibGVNYXRjaGVzO1xuXG4gIGNvbnN0IHN1cHBvc2l0aW9uVmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZShzdXBwb3NpdGlvblZhcmlhYmxlTm9kZSksXG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gc3Vic3RpdHV0aW9uLmdldFZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgICAgaWYgKHZhcmlhYmxlTmFtZSA9PT0gc3VwcG9zaXRpb25WYXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZXNNYXRjaCA9IHN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIHN1cHBvc2l0aW9uVmFyaWFibGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uTm9kZXNNYXRjaDsgIC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHN1cHBvc2l0aW9uVmFyaWFibGVOYW1lLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBTdWJzdGl0dXRpb24uZnJvbVZhcmlhYmxlTmFtZUFuZE5vZGVzKHZhcmlhYmxlTmFtZSwgbm9kZXMpO1xuXG4gICAgc3Vic3RpdHV0aW9ucy5wdXNoKHN1YnN0aXR1dGlvbik7XG5cbiAgICBzdXBwb3NpdGlvblZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3VwcG9zaXRpb25WYXJpYWJsZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3VwcG9zaXRpb25UZXJtaW5hbE5vZGUoc3VwcG9zaXRpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gc3VwcG9zaXRpb25UZXJtaW5hbE5vZGUubWF0Y2godGVybWluYWxOb2RlKSxcbiAgICAgICAgc3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlcztcblxuICByZXR1cm4gc3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlKHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIHN1cHBvc2l0aW9uUnVsZU5hbWUgPSBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IHN1cHBvc2l0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbkNoaWxkTm9kZXMgPSBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGVzID0gc3VwcG9zaXRpb25DaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbkNoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hTdXBwb3NpdGlvbk5vZGVzKHN1cHBvc2l0aW9uTm9kZXMsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IHN1cHBvc2l0aW9uQ2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAocnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZSA9IHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtYXRjaFN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZShzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlKHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlID0gc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIHN1cHBvc2l0aW9uQ2hpbGROb2RlcyA9IHN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgc3VwcG9zaXRpb25DaGlsZE5vZGVzTGVuZ3RoID0gc3VwcG9zaXRpb25DaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoc3VwcG9zaXRpb25DaGlsZE5vZGVzTGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgZmlyc3RTdXBwb3NpdGlvbkNoaWxkTm9kZSA9IGZpcnN0KHN1cHBvc2l0aW9uQ2hpbGROb2RlcyksXG4gICAgICAgICAgc3VwcG9zaXRpb25DaGlsZE5vZGUgPSBmaXJzdFN1cHBvc2l0aW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBzdXBwb3NpdGlvbkNoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbk5vblRlcm1pbmFsQ2hpbGROb2RlID0gc3VwcG9zaXRpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IHN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZVZhcmlhYmxlUnVsZU5hbWUgPSAoc3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBWQVJJQUJMRV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvblZhcmlhYmxlTm9kZSA9IHN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgc3VwcG9zaXRpb25WYXJpYWJsZU1hdGNoZXMgPSBtYXRjaFN1cHBvc2l0aW9uVmFyaWFibGUoc3VwcG9zaXRpb25WYXJpYWJsZU5vZGUsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVNYXRjaGVzID0gc3VwcG9zaXRpb25WYXJpYWJsZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIlN1cHBvc2l0aW9uIiwic3RhdGVtZW50Tm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VicHJvb2ZOb2RlIiwic3VicHJvb2ZOb2RlIiwic3Vic3RpdHV0aW9ucyIsInN1YnByb29mTm9kZU1hdGNoZXMiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZXMiLCJzdGF0ZW1lbnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJldmVyeSIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZSIsImluZGV4Iiwibm9uVGVybWluYWxOb2RlIiwic3VwcG9zaXRpb25Ob25UZXJtaW5hbE5vZGUiLCJzdXBwb3NpdGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaFN1cHBvc2l0aW9uTm9uVGVybWluYWxOb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb24iLCJmcm9tU3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VwcG9zaXRpb25Ob2RlIiwic3VwcG9zaXRpb25Ob2RlIiwibm9kZSIsInN1cHBvc2l0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInN1cHBvc2l0aW9uVGVybWluYWxOb2RlIiwic3VwcG9zaXRpb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hTdXBwb3NpdGlvblRlcm1pbmFsTm9kZSIsIm1hdGNoU3VwcG9zaXRpb25Ob2RlcyIsInN1cHBvc2l0aW9uTm9kZXMiLCJub2RlcyIsInN1cHBvc2l0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJzdXBwb3NpdGlvbk5vZGVzTGVuZ3RoIiwibWF0Y2hTdXBwb3NpdGlvblZhcmlhYmxlIiwic3VwcG9zaXRpb25WYXJpYWJsZU5vZGUiLCJzdXBwb3NpdGlvblZhcmlhYmxlTWF0Y2hlcyIsInN1cHBvc2l0aW9uVmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmQiLCJ2YXJpYWJsZU5hbWUiLCJnZXRWYXJpYWJsZU5hbWUiLCJzdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIlN1YnN0aXR1dGlvbiIsImZyb21WYXJpYWJsZU5hbWVBbmROb2RlcyIsInB1c2giLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3VwcG9zaXRpb25SdWxlTmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3VwcG9zaXRpb25DaGlsZE5vZGVzIiwic3VwcG9zaXRpb25DaGlsZE5vZGVzTWF0Y2hlcyIsInJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwic3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlIiwic3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlIiwic3VwcG9zaXRpb25DaGlsZE5vZGVzTGVuZ3RoIiwiZmlyc3RTdXBwb3NpdGlvbkNoaWxkTm9kZSIsImZpcnN0Iiwic3VwcG9zaXRpb25DaGlsZE5vZGUiLCJzdXBwb3NpdGlvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3VwcG9zaXRpb25Ob25UZXJtaW5hbENoaWxkTm9kZSIsInN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsInN1cHBvc2l0aW9uTm9uVGVybWluYWxDaGlsZE5v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
package/lib/theorem.js CHANGED
@@ -128,9 +128,9 @@ var Theorem = /*#__PURE__*/ function(AxiomLemmaTheorem) {
128
128
  }
129
129
  },
130
130
  {
131
- key: "fromLabelsAntecedentsAndConsequent",
132
- value: function fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent) {
133
- return _axiomLemmaTheorem.default.fromLabelsAntecedentsAndConsequent(Theorem, labels, antecedents, consequent);
131
+ key: "fromLabelsSuppositionsAndConsequence",
132
+ value: function fromLabelsSuppositionsAndConsequence(labels, antecedents, consequence) {
133
+ return _axiomLemmaTheorem.default.fromLabelsSuppositionsAndConsequence(Theorem, labels, antecedents, consequence);
134
134
  }
135
135
  }
136
136
  ]);
@@ -138,4 +138,4 @@ var Theorem = /*#__PURE__*/ function(AxiomLemmaTheorem) {
138
138
  }(_axiomLemmaTheorem.default);
139
139
  _defineProperty(Theorem, "kind", _kinds.THEOREM_KIND);
140
140
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVvcmVtLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQXhpb21MZW1tYVRoZW9yZW0gZnJvbSBcIi4vYXhpb21MZW1tYVRoZW9yZW1cIjtcblxuaW1wb3J0IHsgVEhFT1JFTV9LSU5EIH0gZnJvbSBcIi4va2luZHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGhlb3JlbSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBUSEVPUkVNX0tJTkQ7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tSlNPTihUaGVvcmVtLCBqc29uLCByZWxlYXNlQ29udGV4dCk7IH1cblxuICBzdGF0aWMgZnJvbUxhYmVsc0FudGVjZWRlbnRzQW5kQ29uc2VxdWVudChsYWJlbHMsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50KSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KFRoZW9yZW0sIGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpOyB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlRoZW9yZW0iLCJmcm9tSlNPTiIsImpzb24iLCJyZWxlYXNlQ29udGV4dCIsIkF4aW9tTGVtbWFUaGVvcmVtIiwiZnJvbUxhYmVsc0FudGVjZWRlbnRzQW5kQ29uc2VxdWVudCIsImxhYmVscyIsImFudGVjZWRlbnRzIiwiY29uc2VxdWVudCIsImtpbmQiLCJUSEVPUkVNX0tJTkQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3NFQUpTO3FCQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVkLElBQUEsQUFBTUEsd0JBQU47Y0FBTUE7OEJBQUFBO2FBQUFBOzhCQUFBQTs7O2lCQUFBQTs7WUFHWkMsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0MsSUFBSSxFQUFFQyxjQUFjLEVBQUU7Z0JBQUUsT0FBT0MsMEJBQWlCLENBQUNILFFBQVEsQ0FIdERELFNBR2dFRSxNQUFNQztZQUFpQjs7O1lBRW5HRSxLQUFBQTttQkFBUCxTQUFPQSxtQ0FBbUNDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxVQUFVLEVBQUU7Z0JBQUUsT0FBT0osMEJBQWlCLENBQUNDLGtDQUFrQyxDQUxySEwsU0FLK0hNLFFBQVFDLGFBQWFDO1lBQWE7OztXQUxqS1I7RUFBZ0JJLDBCQUFpQjtBQUNwRCxnQkFEbUJKLFNBQ1pTLFFBQU9DLG1CQUFZIn0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVvcmVtLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQXhpb21MZW1tYVRoZW9yZW0gZnJvbSBcIi4vYXhpb21MZW1tYVRoZW9yZW1cIjtcblxuaW1wb3J0IHsgVEhFT1JFTV9LSU5EIH0gZnJvbSBcIi4va2luZHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGhlb3JlbSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBUSEVPUkVNX0tJTkQ7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tSlNPTihUaGVvcmVtLCBqc29uLCByZWxlYXNlQ29udGV4dCk7IH1cblxuICBzdGF0aWMgZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlKGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbmNlKSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2UoVGhlb3JlbSwgbGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVuY2UpOyB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlRoZW9yZW0iLCJmcm9tSlNPTiIsImpzb24iLCJyZWxlYXNlQ29udGV4dCIsIkF4aW9tTGVtbWFUaGVvcmVtIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlIiwibGFiZWxzIiwiYW50ZWNlZGVudHMiLCJjb25zZXF1ZW5jZSIsImtpbmQiLCJUSEVPUkVNX0tJTkQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3NFQUpTO3FCQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVkLElBQUEsQUFBTUEsd0JBQU47Y0FBTUE7OEJBQUFBO2FBQUFBOzhCQUFBQTs7O2lCQUFBQTs7WUFHWkMsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0MsSUFBSSxFQUFFQyxjQUFjLEVBQUU7Z0JBQUUsT0FBT0MsMEJBQWlCLENBQUNILFFBQVEsQ0FIdERELFNBR2dFRSxNQUFNQztZQUFpQjs7O1lBRW5HRSxLQUFBQTttQkFBUCxTQUFPQSxxQ0FBcUNDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUU7Z0JBQUUsT0FBT0osMEJBQWlCLENBQUNDLG9DQUFvQyxDQUwxSEwsU0FLb0lNLFFBQVFDLGFBQWFDO1lBQWM7OztXQUx2S1I7RUFBZ0JJLDBCQUFpQjtBQUNwRCxnQkFEbUJKLFNBQ1pTLFFBQU9DLG1CQUFZIn0=
@@ -11,8 +11,8 @@ Object.defineProperty(exports, "default", {
11
11
  var _axiom = /*#__PURE__*/ _interopRequireDefault(require("../axiom"));
12
12
  var _proof = /*#__PURE__*/ _interopRequireDefault(require("../context/proof"));
13
13
  var _labels = /*#__PURE__*/ _interopRequireDefault(require("../verify/labels"));
14
- var _antecedent = /*#__PURE__*/ _interopRequireDefault(require("../verify/antecedent"));
15
- var _consequent = /*#__PURE__*/ _interopRequireDefault(require("../verify/consequent"));
14
+ var _supposition = /*#__PURE__*/ _interopRequireDefault(require("../verify/supposition"));
15
+ var _consequence = /*#__PURE__*/ _interopRequireDefault(require("../verify/consequence"));
16
16
  var _array = require("../utilities/array");
17
17
  var _string = require("../utilities/string");
18
18
  var _query = require("../utilities/query");
@@ -21,7 +21,7 @@ function _interopRequireDefault(obj) {
21
21
  default: obj
22
22
  };
23
23
  }
24
- var labelNodesQuery = (0, _query.nodesQuery)("/axiom/label"), consequentNodeQuery = (0, _query.nodeQuery)("/axiom/consequent!"), antecedentsNodeQuery = (0, _query.nodesQuery)("/axiom/antecedent");
24
+ var labelNodesQuery = (0, _query.nodesQuery)("/axiom/label"), consequenceNodeQuery = (0, _query.nodeQuery)("/axiom/consequence!"), suppositionsNodeQuery = (0, _query.nodesQuery)("/axiom/supposition");
25
25
  function verifyAxiom(axiomNode, fileContext) {
26
26
  var axiomVerified = false;
27
27
  fileContext.begin(axiomNode);
@@ -29,16 +29,16 @@ function verifyAxiom(axiomNode, fileContext) {
29
29
  fileContext.debug("Verifying the '".concat(labelsString, "' axiom..."));
30
30
  var labels = [], labelsVerified = (0, _labels.default)(labelNodes, labels, fileContext);
31
31
  if (labelsVerified) {
32
- var antecedents = [], antecedentNodes = antecedentsNodeQuery(axiomNode), antecedentsVerified = antecedentNodes.every(function(antecedentNode) {
33
- var antecedentVerified = (0, _antecedent.default)(antecedentNode, antecedents, proofContext);
34
- if (antecedentVerified) {
32
+ var suppositions = [], suppositionNodes = suppositionsNodeQuery(axiomNode), suppositionsVerified = suppositionNodes.every(function(suppositionNode) {
33
+ var suppositionVerified = (0, _supposition.default)(suppositionNode, suppositions, proofContext);
34
+ if (suppositionVerified) {
35
35
  return true;
36
36
  }
37
37
  });
38
- if (antecedentsVerified) {
39
- var consequents = [], consequentNode = consequentNodeQuery(axiomNode), consequentVerified = (0, _consequent.default)(consequentNode, consequents, proofContext);
40
- if (consequentVerified) {
41
- var firstConsequent = (0, _array.first)(consequents), consequent = firstConsequent, axiom = _axiom.default.fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent);
38
+ if (suppositionsVerified) {
39
+ var consequences = [], consequenceNode = consequenceNodeQuery(axiomNode), consequenceVerified = (0, _consequence.default)(consequenceNode, consequences, proofContext);
40
+ if (consequenceVerified) {
41
+ var firstConsequence = (0, _array.first)(consequences), consequence = firstConsequence, axiom = _axiom.default.fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence);
42
42
  fileContext.addAxiom(axiom);
43
43
  axiomVerified = true;
44
44
  }
@@ -51,4 +51,4 @@ function verifyAxiom(axiomNode, fileContext) {
51
51
  return axiomVerified;
52
52
  }
53
53
 
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBeGlvbSBmcm9tIFwiLi4vYXhpb21cIjtcbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCB2ZXJpZnlBbnRlY2VkZW50IGZyb20gXCIuLi92ZXJpZnkvYW50ZWNlZGVudFwiO1xuaW1wb3J0IHZlcmlmeUNvbnNlcXVlbnQgZnJvbSBcIi4uL3ZlcmlmeS9jb25zZXF1ZW50XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvYXhpb20vbGFiZWxcIiksXG4gICAgICBjb25zZXF1ZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2F4aW9tL2NvbnNlcXVlbnQhXCIpLFxuICAgICAgYW50ZWNlZGVudHNOb2RlUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2F4aW9tL2FudGVjZWRlbnRcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUF4aW9tKGF4aW9tTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IGF4aW9tVmVyaWZpZWQgPSBmYWxzZTtcblxuICBmaWxlQ29udGV4dC5iZWdpbihheGlvbU5vZGUpO1xuXG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKSxcbiAgICAgICAgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCk7XG5cbiAgZmlsZUNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7bGFiZWxzU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICBjb25zdCBsYWJlbHMgPSBbXSxcbiAgICAgICAgbGFiZWxzVmVyaWZpZWQgPSB2ZXJpZnlMYWJlbHMobGFiZWxOb2RlcywgbGFiZWxzLCBmaWxlQ29udGV4dCk7XG5cbiAgaWYgKGxhYmVsc1ZlcmlmaWVkKSB7XG4gICAgY29uc3QgYW50ZWNlZGVudHMgPSBbXSxcbiAgICAgICAgICBhbnRlY2VkZW50Tm9kZXMgPSBhbnRlY2VkZW50c05vZGVRdWVyeShheGlvbU5vZGUpLFxuICAgICAgICAgIGFudGVjZWRlbnRzVmVyaWZpZWQgPSBhbnRlY2VkZW50Tm9kZXMuZXZlcnkoKGFudGVjZWRlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbnRlY2VkZW50VmVyaWZpZWQgPSB2ZXJpZnlBbnRlY2VkZW50KGFudGVjZWRlbnROb2RlLCBhbnRlY2VkZW50cywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGFudGVjZWRlbnRWZXJpZmllZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmIChhbnRlY2VkZW50c1ZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBjb25zZXF1ZW50cyA9IFtdLFxuICAgICAgICAgICAgY29uc2VxdWVudE5vZGUgPSBjb25zZXF1ZW50Tm9kZVF1ZXJ5KGF4aW9tTm9kZSksXG4gICAgICAgICAgICBjb25zZXF1ZW50VmVyaWZpZWQgPSB2ZXJpZnlDb25zZXF1ZW50KGNvbnNlcXVlbnROb2RlLCBjb25zZXF1ZW50cywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKGNvbnNlcXVlbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBmaXJzdENvbnNlcXVlbnQgPSBmaXJzdChjb25zZXF1ZW50cyksXG4gICAgICAgICAgICAgIGNvbnNlcXVlbnQgPSBmaXJzdENvbnNlcXVlbnQsIC8vL1xuICAgICAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQobGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVudCk7XG5cbiAgICAgICAgZmlsZUNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChheGlvbVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLmApO1xuICB9XG5cbiAgYXhpb21WZXJpZmllZCA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUoYXhpb21Ob2RlKSA6XG4gICAgICBmaWxlQ29udGV4dC5jb21wbGV0ZShheGlvbU5vZGUpO1xuXG4gIHJldHVybiBheGlvbVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeUF4aW9tIiwibGFiZWxOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsImNvbnNlcXVlbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJhbnRlY2VkZW50c05vZGVRdWVyeSIsImF4aW9tTm9kZSIsImZpbGVDb250ZXh0IiwiYXhpb21WZXJpZmllZCIsImJlZ2luIiwibGFiZWxOb2RlcyIsImxhYmVsc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJwcm9vZkNvbnRleHQiLCJQcm9vZkNvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJkZWJ1ZyIsImxhYmVscyIsImxhYmVsc1ZlcmlmaWVkIiwidmVyaWZ5TGFiZWxzIiwiYW50ZWNlZGVudHMiLCJhbnRlY2VkZW50Tm9kZXMiLCJhbnRlY2VkZW50c1ZlcmlmaWVkIiwiZXZlcnkiLCJhbnRlY2VkZW50Tm9kZSIsImFudGVjZWRlbnRWZXJpZmllZCIsInZlcmlmeUFudGVjZWRlbnQiLCJjb25zZXF1ZW50cyIsImNvbnNlcXVlbnROb2RlIiwiY29uc2VxdWVudFZlcmlmaWVkIiwidmVyaWZ5Q29uc2VxdWVudCIsImZpcnN0Q29uc2VxdWVudCIsImZpcnN0IiwiY29uc2VxdWVudCIsImF4aW9tIiwiQXhpb20iLCJmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwiYWRkQXhpb20iLCJpbmZvIiwiY29tcGxldGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQXdCQTs7OzBEQWROOzBEQUNPOzJEQUNBOytEQUNJOytEQUNBO3FCQUVQO3NCQUNRO3FCQUNROzs7Ozs7QUFFdEMsSUFBTUMsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLGlCQUM3QkMsc0JBQXNCQyxJQUFBQSxnQkFBUyxFQUFDLHVCQUNoQ0MsdUJBQXVCSCxJQUFBQSxpQkFBVSxFQUFDO0FBRXpCLFNBQVNGLFlBQVlNLFNBQVMsRUFBRUMsV0FBVyxFQUFFO0lBQzFELElBQUlDLGdCQUFnQixLQUFLO0lBRXpCRCxZQUFZRSxLQUFLLENBQUNIO0lBRWxCLElBQU1JLGFBQWFULGdCQUFnQkssWUFDN0JLLGVBQWVDLElBQUFBLHFCQUFhLEVBQUNGLGFBQzdCRyxlQUFlQyxjQUFZLENBQUNDLGVBQWUsQ0FBQ1I7SUFFbERBLFlBQVlTLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiTCxjQUFhO0lBRWpELElBQU1NLFNBQVMsRUFBRSxFQUNYQyxpQkFBaUJDLElBQUFBLGVBQVksRUFBQ1QsWUFBWU8sUUFBUVY7SUFFeEQsSUFBSVcsZ0JBQWdCO1FBQ2xCLElBQU1FLGNBQWMsRUFBRSxFQUNoQkMsa0JBQWtCaEIscUJBQXFCQyxZQUN2Q2dCLHNCQUFzQkQsZ0JBQWdCRSxLQUFLLENBQUMsU0FBQ0MsZ0JBQW1CO1lBQzlELElBQU1DLHFCQUFxQkMsSUFBQUEsbUJBQWdCLEVBQUNGLGdCQUFnQkosYUFBYVA7WUFFekUsSUFBSVksb0JBQW9CO2dCQUN0QixPQUFPLElBQUk7WUFDYixDQUFDO1FBQ0g7UUFFTixJQUFJSCxxQkFBcUI7WUFDdkIsSUFBTUssY0FBYyxFQUFFLEVBQ2hCQyxpQkFBaUJ6QixvQkFBb0JHLFlBQ3JDdUIscUJBQXFCQyxJQUFBQSxtQkFBZ0IsRUFBQ0YsZ0JBQWdCRCxhQUFhZDtZQUV6RSxJQUFJZ0Isb0JBQW9CO2dCQUN0QixJQUFNRSxrQkFBa0JDLElBQUFBLFlBQUssRUFBQ0wsY0FDeEJNLGFBQWFGLGlCQUNiRyxRQUFRQyxjQUFLLENBQUNDLGtDQUFrQyxDQUFDbkIsUUFBUUcsYUFBYWE7Z0JBRTVFMUIsWUFBWThCLFFBQVEsQ0FBQ0g7Z0JBRXJCMUIsZ0JBQWdCLElBQUk7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUEsZUFBZTtRQUNqQkQsWUFBWStCLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiM0IsY0FBYTtJQUNqRCxDQUFDO0lBRURILGdCQUNFRCxZQUFZZ0MsUUFBUSxDQUFDakMsYUFDbkJDLFlBQVlnQyxRQUFRLENBQUNqQyxVQUFVO0lBRW5DLE9BQU9FO0FBQ1QifQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBeGlvbSBmcm9tIFwiLi4vYXhpb21cIjtcbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCB2ZXJpZnlTdXBwb3NpdGlvbiBmcm9tIFwiLi4vdmVyaWZ5L3N1cHBvc2l0aW9uXCI7XG5pbXBvcnQgdmVyaWZ5Q29uc2VxdWVuY2UgZnJvbSBcIi4uL3ZlcmlmeS9jb25zZXF1ZW5jZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVzQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBsYWJlbE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2F4aW9tL2xhYmVsXCIpLFxuICAgICAgY29uc2VxdWVuY2VOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb20vY29uc2VxdWVuY2UhXCIpLFxuICAgICAgc3VwcG9zaXRpb25zTm9kZVF1ZXJ5ID0gbm9kZXNRdWVyeShcIi9heGlvbS9zdXBwb3NpdGlvblwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5QXhpb20oYXhpb21Ob2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgYXhpb21WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGZpbGVDb250ZXh0LmJlZ2luKGF4aW9tTm9kZSk7XG5cbiAgY29uc3QgbGFiZWxOb2RlcyA9IGxhYmVsTm9kZXNRdWVyeShheGlvbU5vZGUpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBub2Rlc0FzU3RyaW5nKGxhYmVsTm9kZXMpLFxuICAgICAgICBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KTtcblxuICBmaWxlQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gIGNvbnN0IGxhYmVscyA9IFtdLFxuICAgICAgICBsYWJlbHNWZXJpZmllZCA9IHZlcmlmeUxhYmVscyhsYWJlbE5vZGVzLCBsYWJlbHMsIGZpbGVDb250ZXh0KTtcblxuICBpZiAobGFiZWxzVmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBbXSxcbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGVzID0gc3VwcG9zaXRpb25zTm9kZVF1ZXJ5KGF4aW9tTm9kZSksXG4gICAgICAgICAgc3VwcG9zaXRpb25zVmVyaWZpZWQgPSBzdXBwb3NpdGlvbk5vZGVzLmV2ZXJ5KChzdXBwb3NpdGlvbk5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uVmVyaWZpZWQgPSB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbk5vZGUsIHN1cHBvc2l0aW9ucywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbnNlcXVlbmNlcyA9IFtdLFxuICAgICAgICAgICAgY29uc2VxdWVuY2VOb2RlID0gY29uc2VxdWVuY2VOb2RlUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgICAgIGNvbnNlcXVlbmNlVmVyaWZpZWQgPSB2ZXJpZnlDb25zZXF1ZW5jZShjb25zZXF1ZW5jZU5vZGUsIGNvbnNlcXVlbmNlcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKGNvbnNlcXVlbmNlVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RDb25zZXF1ZW5jZSA9IGZpcnN0KGNvbnNlcXVlbmNlcyksXG4gICAgICAgICAgICAgIGNvbnNlcXVlbmNlID0gZmlyc3RDb25zZXF1ZW5jZSwgLy8vXG4gICAgICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlKGxhYmVscywgc3VwcG9zaXRpb25zLCBjb25zZXF1ZW5jZSk7XG5cbiAgICAgICAgZmlsZUNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChheGlvbVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLmApO1xuICB9XG5cbiAgYXhpb21WZXJpZmllZCA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUoYXhpb21Ob2RlKSA6XG4gICAgICBmaWxlQ29udGV4dC5jb21wbGV0ZShheGlvbU5vZGUpO1xuXG4gIHJldHVybiBheGlvbVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeUF4aW9tIiwibGFiZWxOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsImNvbnNlcXVlbmNlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3VwcG9zaXRpb25zTm9kZVF1ZXJ5IiwiYXhpb21Ob2RlIiwiZmlsZUNvbnRleHQiLCJheGlvbVZlcmlmaWVkIiwiYmVnaW4iLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsImRlYnVnIiwibGFiZWxzIiwibGFiZWxzVmVyaWZpZWQiLCJ2ZXJpZnlMYWJlbHMiLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbk5vZGVzIiwic3VwcG9zaXRpb25zVmVyaWZpZWQiLCJldmVyeSIsInN1cHBvc2l0aW9uTm9kZSIsInN1cHBvc2l0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsImNvbnNlcXVlbmNlcyIsImNvbnNlcXVlbmNlTm9kZSIsImNvbnNlcXVlbmNlVmVyaWZpZWQiLCJ2ZXJpZnlDb25zZXF1ZW5jZSIsImZpcnN0Q29uc2VxdWVuY2UiLCJmaXJzdCIsImNvbnNlcXVlbmNlIiwiYXhpb20iLCJBeGlvbSIsImZyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmRDb25zZXF1ZW5jZSIsImFkZEF4aW9tIiwiaW5mbyIsImNvbXBsZXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUF3QkE7OzswREFkTjswREFDTzsyREFDQTtnRUFDSztnRUFDQTtxQkFFUjtzQkFDUTtxQkFDUTs7Ozs7O0FBRXRDLElBQU1DLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQyxpQkFDN0JDLHVCQUF1QkMsSUFBQUEsZ0JBQVMsRUFBQyx3QkFDakNDLHdCQUF3QkgsSUFBQUEsaUJBQVUsRUFBQztBQUUxQixTQUFTRixZQUFZTSxTQUFTLEVBQUVDLFdBQVcsRUFBRTtJQUMxRCxJQUFJQyxnQkFBZ0IsS0FBSztJQUV6QkQsWUFBWUUsS0FBSyxDQUFDSDtJQUVsQixJQUFNSSxhQUFhVCxnQkFBZ0JLLFlBQzdCSyxlQUFlQyxJQUFBQSxxQkFBYSxFQUFDRixhQUM3QkcsZUFBZUMsY0FBWSxDQUFDQyxlQUFlLENBQUNSO0lBRWxEQSxZQUFZUyxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkwsY0FBYTtJQUVqRCxJQUFNTSxTQUFTLEVBQUUsRUFDWEMsaUJBQWlCQyxJQUFBQSxlQUFZLEVBQUNULFlBQVlPLFFBQVFWO0lBRXhELElBQUlXLGdCQUFnQjtRQUNsQixJQUFNRSxlQUFlLEVBQUUsRUFDakJDLG1CQUFtQmhCLHNCQUFzQkMsWUFDekNnQix1QkFBdUJELGlCQUFpQkUsS0FBSyxDQUFDLFNBQUNDLGlCQUFvQjtZQUNqRSxJQUFNQyxzQkFBc0JDLElBQUFBLG9CQUFpQixFQUFDRixpQkFBaUJKLGNBQWNQO1lBRTdFLElBQUlZLHFCQUFxQjtnQkFDdkIsT0FBTyxJQUFJO1lBQ2IsQ0FBQztRQUNIO1FBRU4sSUFBSUgsc0JBQXNCO1lBQ3hCLElBQU1LLGVBQWUsRUFBRSxFQUNqQkMsa0JBQWtCekIscUJBQXFCRyxZQUN2Q3VCLHNCQUFzQkMsSUFBQUEsb0JBQWlCLEVBQUNGLGlCQUFpQkQsY0FBY2Q7WUFFN0UsSUFBSWdCLHFCQUFxQjtnQkFDdkIsSUFBTUUsbUJBQW1CQyxJQUFBQSxZQUFLLEVBQUNMLGVBQ3pCTSxjQUFjRixrQkFDZEcsUUFBUUMsY0FBSyxDQUFDQyxvQ0FBb0MsQ0FBQ25CLFFBQVFHLGNBQWNhO2dCQUUvRTFCLFlBQVk4QixRQUFRLENBQUNIO2dCQUVyQjFCLGdCQUFnQixJQUFJO1lBQ3RCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLGVBQWU7UUFDakJELFlBQVkrQixJQUFJLENBQUMsQUFBQyxpQkFBNkIsT0FBYjNCLGNBQWE7SUFDakQsQ0FBQztJQUVESCxnQkFDRUQsWUFBWWdDLFFBQVEsQ0FBQ2pDLGFBQ25CQyxZQUFZZ0MsUUFBUSxDQUFDakMsVUFBVTtJQUVuQyxPQUFPRTtBQUNUIn0=