occam-verify-cli 0.0.469 → 0.0.471
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file.js +9 -9
- package/lib/context/metaproof.js +30 -31
- package/lib/context/proof.js +30 -24
- package/lib/metaSubstitution.js +4 -4
- package/lib/rule.js +15 -19
- package/lib/step/metaproof.js +114 -0
- package/lib/step/proof.js +68 -0
- package/lib/utilities/array.js +2 -5
- package/lib/utilities/metaAssertion.js +117 -0
- package/lib/utilities/node.js +52 -0
- package/lib/verify/antecedent.js +4 -4
- package/lib/verify/derivation.js +13 -13
- package/lib/verify/equality.js +18 -5
- package/lib/verify/metaDerivation.js +13 -13
- package/lib/verify/metaproof.js +13 -51
- package/lib/verify/metastatement/unqualified.js +2 -3
- package/lib/verify/premiseOrPremises.js +4 -4
- package/lib/verify/proof.js +14 -62
- package/lib/verify/statement/unqualified.js +2 -3
- package/package.json +1 -1
- package/src/context/file.js +6 -6
- package/src/context/metaproof.js +28 -31
- package/src/context/proof.js +29 -26
- package/src/metaSubstitution.js +1 -1
- package/src/rule.js +19 -26
- package/src/step/metaproof.js +100 -0
- package/src/step/proof.js +30 -0
- package/src/utilities/array.js +1 -1
- package/src/utilities/metaAssertion.js +176 -0
- package/src/utilities/node.js +72 -0
- package/src/verify/antecedent.js +3 -3
- package/src/verify/derivation.js +14 -10
- package/src/verify/equality.js +29 -11
- package/src/verify/metaDerivation.js +14 -10
- package/src/verify/metaproof.js +26 -91
- package/src/verify/metastatement/unqualified.js +1 -3
- package/src/verify/premiseOrPremises.js +3 -3
- package/src/verify/proof.js +23 -97
- package/src/verify/statement/unqualified.js +1 -4
- package/lib/assertion.js +0 -147
- package/lib/metaAssertion.js +0 -200
- package/lib/utilities/metastatement.js +0 -45
- package/src/assertion.js +0 -150
- package/src/metaAssertion.js +0 -245
- package/src/utilities/metastatement.js +0 -50
package/src/verify/proof.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import ProofStep from "../step/proof";
|
|
4
4
|
import verifyDerivation from "../verify/derivation";
|
|
5
|
-
import verifyQualifiedStatement from "
|
|
5
|
+
import verifyQualifiedStatement from "./statement/qualified";
|
|
6
6
|
|
|
7
|
+
import { matchNode } from "../utilities/node";
|
|
7
8
|
import { nodeQuery } from "../utilities/query";
|
|
8
9
|
|
|
9
|
-
const
|
|
10
|
+
const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
|
|
11
|
+
derivationNodeQuery = nodeQuery("/proof/derivation!"),
|
|
10
12
|
qualifiedStatementNodeQuery = nodeQuery("/proof/qualifiedStatement!");
|
|
11
13
|
|
|
12
|
-
export default function verifyProof(proofNode,
|
|
14
|
+
export default function verifyProof(proofNode, conclusion, proofContext) {
|
|
13
15
|
let proofVerified = false;
|
|
14
16
|
|
|
15
|
-
const proofContext = ProofContext.fromFileContext(fileContext);
|
|
16
|
-
|
|
17
17
|
proofContext.begin(proofNode);
|
|
18
18
|
|
|
19
19
|
const derivationNode = derivationNodeQuery(proofNode),
|
|
@@ -38,104 +38,30 @@ export default function verifyProof(proofNode, fileContext) {
|
|
|
38
38
|
derived = false;
|
|
39
39
|
|
|
40
40
|
proofContext.setDerived(derived);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// if (derivationVerified) {
|
|
44
|
-
// const qualifiedStatementNode = qualifiedStatementNodeQuery(proofNode),
|
|
45
|
-
// qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
|
|
46
|
-
//
|
|
47
|
-
// if (qualifiedStatementVerified) {
|
|
48
|
-
// const statementNode = conclusion.getStatementNode(),
|
|
49
|
-
// proofStatementNode = proofStatementNodeQuery(proofNode),
|
|
50
|
-
// proofStatementNodeMatches = matchProofStatementNode(proofStatementNode, statementNode);
|
|
51
|
-
//
|
|
52
|
-
// proofVerified = proofStatementNodeMatches; ///
|
|
53
|
-
// }
|
|
54
|
-
// }
|
|
55
41
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return proofVerified;
|
|
61
|
-
}
|
|
42
|
+
if (qualifiedStatementVerified) {
|
|
43
|
+
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
44
|
+
proofStep = ProofStep.fromStatementNode(statementNode);
|
|
62
45
|
|
|
63
|
-
|
|
64
|
-
const proofNonTerminalNode = proofStatementNode, ///
|
|
65
|
-
nonTerminalNode = statementNode, ///
|
|
66
|
-
proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode),
|
|
67
|
-
proofStatementNodeMatches = proofNonTerminalNodeMatches; ///
|
|
68
|
-
|
|
69
|
-
return proofStatementNodeMatches;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function matchProofNode(proofNode, node) {
|
|
73
|
-
let proofNodeMatches = false;
|
|
74
|
-
|
|
75
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
76
|
-
ruleNodeTerminalNode = proofNode.isTerminalNode();
|
|
77
|
-
|
|
78
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
79
|
-
if (nodeTerminalNode) {
|
|
80
|
-
const terminalNode = node, ///
|
|
81
|
-
proofTerminalNode = proofNode, ///
|
|
82
|
-
proofTerminalNodeMatches = matchProofTerminalNode(proofTerminalNode, terminalNode);
|
|
83
|
-
|
|
84
|
-
proofNodeMatches = proofTerminalNodeMatches; ///
|
|
85
|
-
} else {
|
|
86
|
-
const nonTerminalNode = node, ///
|
|
87
|
-
proofNonTerminalNode = proofNode, ///
|
|
88
|
-
proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode);
|
|
89
|
-
|
|
90
|
-
proofNodeMatches = proofNonTerminalNodeMatches; ///
|
|
46
|
+
proofContext.addProofStep(proofStep);
|
|
91
47
|
}
|
|
92
48
|
}
|
|
93
49
|
|
|
94
|
-
|
|
95
|
-
|
|
50
|
+
if (derivationVerified || qualifiedStatementVerified) {
|
|
51
|
+
const lastProofStep = proofContext.getLastProofStep(),
|
|
52
|
+
proofStep = lastProofStep, ///
|
|
53
|
+
statementNode = proofStep.getStatementNode(),
|
|
54
|
+
conclusionStatementNode = conclusion.getStatementNode(),
|
|
55
|
+
nodeA = statementNode, ///
|
|
56
|
+
nodeB = conclusionStatementNode, ///
|
|
57
|
+
nodeMatches = matchNode(nodeA, nodeB);
|
|
96
58
|
|
|
97
|
-
|
|
98
|
-
let proofNodesMatches = false;
|
|
99
|
-
|
|
100
|
-
const nodesLength = nodes.length,
|
|
101
|
-
proofNodesLength = proofNodes.length;
|
|
102
|
-
|
|
103
|
-
if (nodesLength === proofNodesLength) {
|
|
104
|
-
proofNodesMatches = nodes.every((node, index) => {
|
|
105
|
-
const proofNode = proofNodes[index],
|
|
106
|
-
proofNodeMatches = matchProofNode(proofNode, node);
|
|
107
|
-
|
|
108
|
-
if (proofNodeMatches) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
})
|
|
59
|
+
proofVerified = nodeMatches; ///
|
|
112
60
|
}
|
|
113
61
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
function matchProofTerminalNode(proofTerminalNode, terminalNode) {
|
|
118
|
-
const matches = proofTerminalNode.match(terminalNode),
|
|
119
|
-
proofTerminalNodeMatches = matches; ///
|
|
120
|
-
|
|
121
|
-
return proofTerminalNodeMatches;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode) {
|
|
125
|
-
let proofNonTerminalNodeMatches = false;
|
|
126
|
-
|
|
127
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
128
|
-
proofRuleName = proofNonTerminalNode.getRuleName(); ///
|
|
129
|
-
|
|
130
|
-
if (ruleName === proofRuleName) {
|
|
131
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
132
|
-
proofChildNodes = proofNonTerminalNode.getChildNodes(),
|
|
133
|
-
nodes = childNodes, ///
|
|
134
|
-
proofNodes = proofChildNodes, ///
|
|
135
|
-
proofNodesMatches = matchProofNodes(proofNodes, nodes);
|
|
136
|
-
|
|
137
|
-
proofNonTerminalNodeMatches = proofNodesMatches; ///
|
|
138
|
-
}
|
|
62
|
+
proofVerified ?
|
|
63
|
+
proofContext.complete(proofNode) :
|
|
64
|
+
proofContext.complete(proofNode);
|
|
139
65
|
|
|
140
|
-
return
|
|
66
|
+
return proofVerified;
|
|
141
67
|
}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
4
|
|
|
5
|
-
import Assertion from "../../assertion";
|
|
6
|
-
|
|
7
5
|
import { nodeQuery } from "../../utilities/query";
|
|
8
6
|
import { nodeAsString } from "../../utilities/string";
|
|
9
7
|
|
|
@@ -27,8 +25,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
|
|
|
27
25
|
const derived = proofContext.isDerived();
|
|
28
26
|
|
|
29
27
|
if (derived) {
|
|
30
|
-
const
|
|
31
|
-
assertionMatches = proofContext.matchAssertion(assertion);
|
|
28
|
+
const assertionMatches = proofContext.matchStatement(statementNode);
|
|
32
29
|
|
|
33
30
|
unqualifiedStatementVerified = assertionMatches; ///
|
|
34
31
|
} else {
|
package/lib/assertion.js
DELETED
|
@@ -1,147 +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 Assertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _query = require("./utilities/query");
|
|
12
|
-
function _classCallCheck(instance, Constructor) {
|
|
13
|
-
if (!(instance instanceof Constructor)) {
|
|
14
|
-
throw new TypeError("Cannot call a class as a function");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
function _defineProperties(target, props) {
|
|
18
|
-
for(var i = 0; i < props.length; i++){
|
|
19
|
-
var descriptor = props[i];
|
|
20
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
21
|
-
descriptor.configurable = true;
|
|
22
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
23
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
27
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
28
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
29
|
-
return Constructor;
|
|
30
|
-
}
|
|
31
|
-
var statementNodeQuery = (0, _query.nodeQuery)("/*/statement!");
|
|
32
|
-
var Assertion = /*#__PURE__*/ function() {
|
|
33
|
-
function Assertion(subproofNode, statementNode) {
|
|
34
|
-
_classCallCheck(this, Assertion);
|
|
35
|
-
this.subproofNode = subproofNode;
|
|
36
|
-
this.statementNode = statementNode;
|
|
37
|
-
}
|
|
38
|
-
_createClass(Assertion, [
|
|
39
|
-
{
|
|
40
|
-
key: "getNonTerminalNode",
|
|
41
|
-
value: function getNonTerminalNode() {
|
|
42
|
-
var nonTerminalNode = this.statementNode !== null ? this.statementNode : null;
|
|
43
|
-
return nonTerminalNode;
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
key: "getSubproofNode",
|
|
48
|
-
value: function getSubproofNode() {
|
|
49
|
-
return this.subproofNode;
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
key: "getStatementNode",
|
|
54
|
-
value: function getStatementNode() {
|
|
55
|
-
return this.statementNode;
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
key: "match",
|
|
60
|
-
value: function match(assertion) {
|
|
61
|
-
var matches = false;
|
|
62
|
-
var statementNode = assertion.getstatementNode();
|
|
63
|
-
if (statementNode !== null && this.statementNode !== null) {
|
|
64
|
-
var nonTerminalNode = this.statementNode, assertionNonTerminalNode = statementNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
|
|
65
|
-
matches = assertionNonTerminalNodeMatches; ///
|
|
66
|
-
}
|
|
67
|
-
return matches;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
], [
|
|
71
|
-
{
|
|
72
|
-
key: "fromSubproofNode",
|
|
73
|
-
value: function fromSubproofNode(subproofNode) {
|
|
74
|
-
var statementNode = null, assertion = new Assertion(subproofNode, statementNode);
|
|
75
|
-
return assertion;
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
key: "fromStatementNode",
|
|
80
|
-
value: function fromStatementNode(statementNode) {
|
|
81
|
-
var subproofNode = null, assertion = new Assertion(subproofNode, statementNode);
|
|
82
|
-
return assertion;
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
key: "fromQualifiedStatementNode",
|
|
87
|
-
value: function fromQualifiedStatementNode(qualifiedStatementNode) {
|
|
88
|
-
var subproofNode = null, statementNode = statementNodeQuery(qualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
|
|
89
|
-
return assertion;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
key: "fromUnqualifiedStatementNode",
|
|
94
|
-
value: function fromUnqualifiedStatementNode(unqualifiedStatementNode) {
|
|
95
|
-
var subproofNode = null, statementNode = statementNodeQuery(unqualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
|
|
96
|
-
return assertion;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
]);
|
|
100
|
-
return Assertion;
|
|
101
|
-
}();
|
|
102
|
-
function matchAssertionNode(assertionNode, node) {
|
|
103
|
-
var assertionNodeMatches = false;
|
|
104
|
-
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = assertionNode.isTerminalNode();
|
|
105
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
106
|
-
if (nodeTerminalNode) {
|
|
107
|
-
var terminalNode = node, assertionTerminalNode = assertionNode, assertionTerminalNodeMatches = matchAssertionTerminalNode(assertionTerminalNode, terminalNode);
|
|
108
|
-
assertionNodeMatches = assertionTerminalNodeMatches; ///
|
|
109
|
-
} else {
|
|
110
|
-
var nonTerminalNode = node, assertionNonTerminalNode = assertionNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
|
|
111
|
-
assertionNodeMatches = assertionNonTerminalNodeMatches; ///
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return assertionNodeMatches;
|
|
115
|
-
}
|
|
116
|
-
function matchAssertionChildNodes(assertionChildNodes, childNodes) {
|
|
117
|
-
var assertionChildNodesMatches = false;
|
|
118
|
-
var childNodesLength = childNodes.length, assertionChildNodesLength = assertionChildNodes.length;
|
|
119
|
-
if (childNodesLength === assertionChildNodesLength) {
|
|
120
|
-
assertionChildNodesMatches = childNodes.every(function(childNode, index) {
|
|
121
|
-
var assertionChildNode = assertionChildNodes[index], assertionNode = assertionChildNode, node = childNode, assertionNodeMatches = matchAssertionNode(assertionNode, node);
|
|
122
|
-
if (assertionNodeMatches) {
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
return assertionChildNodesMatches;
|
|
128
|
-
}
|
|
129
|
-
function matchAssertionTerminalNode(assertionTerminalNode, terminalNode) {
|
|
130
|
-
var assertionTerminalNodeMatches = false;
|
|
131
|
-
var matches = assertionTerminalNode.match(terminalNode);
|
|
132
|
-
if (matches) {
|
|
133
|
-
assertionTerminalNodeMatches = true;
|
|
134
|
-
}
|
|
135
|
-
return assertionTerminalNodeMatches;
|
|
136
|
-
}
|
|
137
|
-
function matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode) {
|
|
138
|
-
var assertionNonTerminalNodeMatches = false;
|
|
139
|
-
var ruleName = nonTerminalNode.getRuleName(), assertionRuleName = assertionNonTerminalNode.getRuleName(); ///
|
|
140
|
-
if (ruleName === assertionRuleName) {
|
|
141
|
-
var childNodes = nonTerminalNode.getChildNodes(), assertionChildNodes = assertionNonTerminalNode.getChildNodes(), assertionChildNodesMatches = matchAssertionChildNodes(assertionChildNodes, childNodes);
|
|
142
|
-
assertionNonTerminalNodeMatches = assertionChildNodesMatches; ///
|
|
143
|
-
}
|
|
144
|
-
return assertionNonTerminalNodeMatches;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3NlcnRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN1YnByb29mTm9kZSA9IHN1YnByb29mTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0Tm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9ICh0aGlzLnN0YXRlbWVudE5vZGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlbWVudE5vZGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXRTdWJwcm9vZk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VicHJvb2ZOb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2goYXNzZXJ0aW9uKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3NlcnRpb24uZ2V0c3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSAmJiAodGhpcy5zdGF0ZW1lbnROb2RlICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlKGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKTtcblxuICAgICAgbWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgYXNzZXJ0aW9uID0gbmV3IEFzc2VydGlvbihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3VicHJvb2ZOb2RlID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBhc3NlcnRpb24gPSBuZXcgQXNzZXJ0aW9uKHN1YnByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlLCBub2RlKSB7XG4gIGxldCBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gYXNzZXJ0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzKGFzc2VydGlvbkNoaWxkTm9kZXMsIGNoaWxkTm9kZXMpIHtcbiAgbGV0IGFzc2VydGlvbkNoaWxkTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoID0gYXNzZXJ0aW9uQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IGFzc2VydGlvbkNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbkNoaWxkTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgYXNzZXJ0aW9uTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgbGV0IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gYXNzZXJ0aW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSkge1xuICBsZXQgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGFzc2VydGlvblJ1bGVOYW1lID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gIGlmIChydWxlTmFtZSA9PT0gYXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uQ2hpbGROb2Rlcyhhc3NlcnRpb25DaGlsZE5vZGVzLCBjaGlsZE5vZGVzKTtcblxuICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJBc3NlcnRpb24iLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0U3VicHJvb2ZOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoIiwiYXNzZXJ0aW9uIiwibWF0Y2hlcyIsImdldHN0YXRlbWVudE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJmcm9tU3VicHJvb2ZOb2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJmcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwibWF0Y2hBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJhc3NlcnRpb25Ob2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQXNzZXJ0aW9uVGVybWluYWxOb2RlIiwibWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzIiwiYXNzZXJ0aW9uQ2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJpbmRleCIsImFzc2VydGlvbkNoaWxkTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJhc3NlcnRpb25SdWxlTmFtZSIsImdldENoaWxkTm9kZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3FCQUpLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsSUFBQSxBQUFNRiwwQkFxRWxCLEFBckVZO2FBQU1BLFVBQ1BHLFlBQVksRUFBRUMsYUFBYTs4QkFEcEJKO1FBRWpCLElBQUksQ0FBQ0csWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7O2lCQUhKSjs7WUFNbkJLLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU1DLGtCQUFrQixBQUFDLElBQUksQ0FBQ0YsYUFBYSxLQUFLLElBQUksR0FDekIsSUFBSSxDQUFDQSxhQUFhLEdBQ2hCLElBQUk7Z0JBRWpDLE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQ0osWUFBWTtZQUMxQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDSixhQUFhO1lBQzNCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLFNBQVMsRUFBRTtnQkFDZixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQU1QLGdCQUFnQk0sVUFBVUUsZ0JBQWdCO2dCQUVoRCxJQUFJLEFBQUNSLGtCQUFrQixJQUFJLElBQU0sSUFBSSxDQUFDQSxhQUFhLEtBQUssSUFBSSxFQUFHO29CQUM3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
|
package/lib/metaAssertion.js
DELETED
|
@@ -1,200 +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 MetaAssertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _array = require("./utilities/array");
|
|
12
|
-
var _query = require("./utilities/query");
|
|
13
|
-
var _metastatement = require("./utilities/metastatement");
|
|
14
|
-
function _classCallCheck(instance, Constructor) {
|
|
15
|
-
if (!(instance instanceof Constructor)) {
|
|
16
|
-
throw new TypeError("Cannot call a class as a function");
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function _defineProperties(target, props) {
|
|
20
|
-
for(var i = 0; i < props.length; i++){
|
|
21
|
-
var descriptor = props[i];
|
|
22
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
23
|
-
descriptor.configurable = true;
|
|
24
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
25
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
29
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
30
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
-
return Constructor;
|
|
32
|
-
}
|
|
33
|
-
var metastatementNodeQuery = (0, _query.nodeQuery)("/*/metastatement!"), metastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproofAssertion/metastatement"), metaSubproofAssertionNodeQuery = (0, _query.nodeQuery)("/metastatement/metaSubproofAssertion"), qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
|
|
34
|
-
var MetaAssertion = /*#__PURE__*/ function() {
|
|
35
|
-
function MetaAssertion(metaSubproofNode, metastatementNode) {
|
|
36
|
-
_classCallCheck(this, MetaAssertion);
|
|
37
|
-
this.metaSubproofNode = metaSubproofNode;
|
|
38
|
-
this.metastatementNode = metastatementNode;
|
|
39
|
-
}
|
|
40
|
-
_createClass(MetaAssertion, [
|
|
41
|
-
{
|
|
42
|
-
key: "getMetaSubproofNode",
|
|
43
|
-
value: function getMetaSubproofNode() {
|
|
44
|
-
return this.metaSubproofNode;
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
key: "getMetastatementNode",
|
|
49
|
-
value: function getMetastatementNode() {
|
|
50
|
-
return this.metastatementNode;
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
key: "match",
|
|
55
|
-
value: function match(metaAssertion) {
|
|
56
|
-
var matches = false;
|
|
57
|
-
var metastatementNode = metaAssertion.getMetastatementNode();
|
|
58
|
-
if (metastatementNode !== null) {
|
|
59
|
-
var metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(metastatementNode);
|
|
60
|
-
if (metaSubproofAssertionNode === null) {
|
|
61
|
-
var metastatementNodeMatches = this.matchMetastatementNode(metastatementNode);
|
|
62
|
-
matches = metastatementNodeMatches; ///
|
|
63
|
-
} else {
|
|
64
|
-
var metaSubproofAssertionNodeMatches = this.matchMetaSubproofAssertionNode(metaSubproofAssertionNode);
|
|
65
|
-
matches = metaSubproofAssertionNodeMatches; ///
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return matches;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
key: "matchMetastatementNode",
|
|
73
|
-
value: function matchMetastatementNode(metastatementNode) {
|
|
74
|
-
var metastatementNodeMatches = false;
|
|
75
|
-
if (this.metastatementNode !== null) {
|
|
76
|
-
var topmostMetastatementNode = metastatementNode, topmostMetaAssertionMetastatementNode = this.metastatementNode, topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
|
|
77
|
-
metastatementNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
|
|
78
|
-
}
|
|
79
|
-
return metastatementNodeMatches;
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
key: "matchMetaSubproofAssertionNode",
|
|
84
|
-
value: function matchMetaSubproofAssertionNode(metaSubproofAssertionNode) {
|
|
85
|
-
var metaSubproofAssertionNodeMatches = false;
|
|
86
|
-
if (this.metaSubproofNode !== null) {
|
|
87
|
-
var metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode), firstMetaSubproofAssertionMetastatementNode = (0, _array.first)(metaSubproofAssertionMetastatementNodes), qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.metaSubproofNode), firstQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.first)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
88
|
-
var topmostMetastatementNode = firstMetaSubproofAssertionMetastatementNode, topmostMetaAssertionMetastatementNode = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
|
|
89
|
-
if (topmostMetaAssertionMetastatementNodeMatches) {
|
|
90
|
-
var secondMetaSubproofAssertionMetastatementNode = (0, _array.second)(metaSubproofAssertionMetastatementNodes), secondQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.second)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
91
|
-
var topmostMetastatementNode1 = secondMetaSubproofAssertionMetastatementNode, topmostMetaAssertionMetastatementNode1 = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, topmostMetaAssertionMetastatementNodeMatches1 = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode1, topmostMetastatementNode1);
|
|
92
|
-
metaSubproofAssertionNodeMatches = topmostMetaAssertionMetastatementNodeMatches1; ///
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return metaSubproofAssertionNodeMatches;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
], [
|
|
99
|
-
{
|
|
100
|
-
key: "fromMetaSubproofNode",
|
|
101
|
-
value: function fromMetaSubproofNode(metaSubproofNode) {
|
|
102
|
-
var metastatementNode = null, metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
103
|
-
return metaAssertion;
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
key: "fromMetastatementNode",
|
|
108
|
-
value: function fromMetastatementNode(metastatementNode) {
|
|
109
|
-
var metaSubproofNode = null, metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
110
|
-
return metaAssertion;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
key: "fromQualifiedMetastatementNode",
|
|
115
|
-
value: function fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
|
|
116
|
-
var metaSubproofNode = null, metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode), metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
117
|
-
return metaAssertion;
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
key: "fromUnqualifiedMetastatementNode",
|
|
122
|
-
value: function fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
|
|
123
|
-
var metaSubproofNode = null, metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode), metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
124
|
-
return metaAssertion;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
]);
|
|
128
|
-
return MetaAssertion;
|
|
129
|
-
}();
|
|
130
|
-
function matchMetaAssertionNode(metaAssertionNode, node) {
|
|
131
|
-
var metaAssertionNodeMatches = false;
|
|
132
|
-
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
|
|
133
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
134
|
-
if (nodeTerminalNode) {
|
|
135
|
-
var terminalNode = node, metaAssertionTerminalNode = metaAssertionNode, metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
|
|
136
|
-
metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
|
|
137
|
-
} else {
|
|
138
|
-
var nonTerminalNode = node, metaAssertionNonTerminalNode = metaAssertionNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
139
|
-
metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return metaAssertionNodeMatches;
|
|
143
|
-
}
|
|
144
|
-
function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
|
|
145
|
-
var metaAssertionNodesMatches = false;
|
|
146
|
-
var nodesLength = nodes.length, metaAssertionNodesLength = metaAssertionNodes.length;
|
|
147
|
-
if (nodesLength === metaAssertionNodesLength) {
|
|
148
|
-
metaAssertionNodesMatches = nodes.every(function(node, index) {
|
|
149
|
-
var metaAssertionNode = metaAssertionNodes[index], metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
|
|
150
|
-
if (metaAssertionNodeMatches) {
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
return metaAssertionNodesMatches;
|
|
156
|
-
}
|
|
157
|
-
function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
|
|
158
|
-
var metaAssertionTerminalNodeMatches = false;
|
|
159
|
-
var matches = metaAssertionTerminalNode.match(terminalNode);
|
|
160
|
-
if (matches) {
|
|
161
|
-
metaAssertionTerminalNodeMatches = true;
|
|
162
|
-
}
|
|
163
|
-
return metaAssertionTerminalNodeMatches;
|
|
164
|
-
}
|
|
165
|
-
function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
|
|
166
|
-
var metaAssertionNonTerminalNodeMatches = false;
|
|
167
|
-
var ruleName = nonTerminalNode.getRuleName(), metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
|
|
168
|
-
if (ruleName === metaAssertionRuleName) {
|
|
169
|
-
var childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), metaAssertionNodes = metaAssertionChildNodes, metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
|
|
170
|
-
metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
|
|
171
|
-
}
|
|
172
|
-
return metaAssertionNonTerminalNodeMatches;
|
|
173
|
-
}
|
|
174
|
-
function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
|
|
175
|
-
var nonTerminalNode = metastatementNode, metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode), metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
|
|
176
|
-
return metaAssertionMetastatementNodeNatches;
|
|
177
|
-
}
|
|
178
|
-
function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
|
|
179
|
-
var metaAssertionMetastatementNodeMatches;
|
|
180
|
-
var metastatementNode = topmostMetastatementNode, metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
|
|
181
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
|
|
182
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
183
|
-
var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode, bracketedMetastatementChildNodeMatches = (0, _metastatement.matchBracketedMetastatementChildNode)(childNodes, function(bracketedMetastatementChildNode) {
|
|
184
|
-
var metastatementNode = bracketedMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
185
|
-
return bracketedMetastatementChildNodeMatches;
|
|
186
|
-
});
|
|
187
|
-
metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
|
|
188
|
-
}
|
|
189
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
190
|
-
var metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), bracketedMetaAssertionMetastatementChildNodeMatches = (0, _metastatement.matchBracketedMetastatementChildNode)(metaAssertionChildNodes, function(bracketedMetaAssertionMetastatementChildNode) {
|
|
191
|
-
var metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
192
|
-
return bracketedMetaAssertionMetastatementChildNodeMatches;
|
|
193
|
-
});
|
|
194
|
-
metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
|
|
195
|
-
}
|
|
196
|
-
var topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
|
|
197
|
-
return topmostMetaAssertionMetastatementNodeMatches;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9tZXRhc3RhdGVtZW50XCI7XG5cbmNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9tZXRhc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhU3VicHJvb2ZBc3NlcnRpb24vbWV0YXN0YXRlbWVudFwiKSxcbiAgICAgIG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhc3RhdGVtZW50L21ldGFTdWJwcm9vZkFzc2VydGlvblwiKSxcbiAgICAgIHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL21ldGFTdWJwcm9vZi9xdWFsaWZpZWRNZXRhc3RhdGVtZW50fHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFTdWJwcm9vZk5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhU3VicHJvb2ZOb2RlID0gbWV0YVN1YnByb29mTm9kZTtcbiAgICB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhU3VicHJvb2ZOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFTdWJwcm9vZk5vZGU7XG4gIH1cblxuICBnZXRNZXRhc3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIG1hdGNoKG1ldGFBc3NlcnRpb24pIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhQXNzZXJ0aW9uLmdldE1ldGFzdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAobWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1hdGNoZXMgPSBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7ICAvLy9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUobWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICAgICAgbWF0Y2hlcyA9IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5tZXRhc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hUb3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZShtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSB7XG4gICAgbGV0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5tZXRhU3VicHJvb2ZOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMgPSBtZXRhc3RhdGVtZW50Tm9kZXNRdWVyeShtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdChtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHRoaXMubWV0YVN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBmaXJzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdChxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlcyk7XG5cbiAgICAgIGNvbnN0IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSA9IGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtYXRjaFRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUodG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgdG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgaWYgKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHNlY29uZE1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlID0gc2Vjb25kKG1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICAgIHNlY29uZFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUgPSBzZWNvbmQocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMpO1xuXG4gICAgICAgIGNvbnN0IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSA9IHNlY29uZE1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHNlY29uZFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSh0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YVN1YnByb29mTm9kZShtZXRhU3VicHJvb2ZOb2RlKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG1ldGFBc3NlcnRpb24gPSBuZXcgTWV0YUFzc2VydGlvbihtZXRhU3VicHJvb2ZOb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBtZXRhU3VicHJvb2ZOb2RlID0gbnVsbCxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgbWV0YVN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IG1ldGFTdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZShtZXRhQXNzZXJ0aW9uTm9kZSwgbm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSk7XG5cbiAgICAgIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZXMobWV0YUFzc2VydGlvbk5vZGVzLCBub2Rlcykge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGggPSBtZXRhQXNzZXJ0aW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gbWV0YUFzc2VydGlvbk5vZGVzTGVuZ3RoKSB7XG4gICAgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbWV0YUFzc2VydGlvbk5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZShtZXRhQXNzZXJ0aW9uTm9kZSwgbm9kZSk7XG5cbiAgICAgIGlmIChtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSB7XG4gIGxldCBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIG1ldGFBc3NlcnRpb25SdWxlTmFtZSA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBtZXRhQXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbWV0YUFzc2VydGlvbk5vZGVzID0gbWV0YUFzc2VydGlvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25Ob2Rlc01hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob2RlcyhtZXRhQXNzZXJ0aW9uTm9kZXMsIG5vZGVzKTtcblxuICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZShtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSxcbiAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTmF0Y2hlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU5hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSh0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgbGV0IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICghbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUoY2hpbGROb2RlcywgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xuXG4gICAgICAgICAgICByZXR1cm4gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7XG4gICAgICAgICAgfSk7XG5cbiAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIGlmICghbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZShtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcywgKGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICAgICAgYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcblxuICAgICAgICAgICAgcmV0dXJuIGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcztcbiAgICAgICAgICB9KTtcblxuICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIGNvbnN0IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJNZXRhQXNzZXJ0aW9uIiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzUXVlcnkiLCJtZXRhU3VicHJvb2ZOb2RlIiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhU3VicHJvb2ZOb2RlIiwiZ2V0TWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaCIsIm1ldGFBc3NlcnRpb24iLCJtYXRjaGVzIiwibWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoTWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSIsInRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyIsImZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJmaXJzdCIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzIiwiZmlyc3RRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwic2Vjb25kTWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJzZWNvbmQiLCJzZWNvbmRRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwiZnJvbU1ldGFTdWJwcm9vZk5vZGUiLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJmcm9tUXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsIm1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsIm1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGVzIiwibWV0YUFzc2VydGlvbk5vZGVzIiwibm9kZXMiLCJtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIm1ldGFBc3NlcnRpb25SdWxlTmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwibWV0YUFzc2VydGlvbkNoaWxkTm9kZXMiLCJtYXRjaE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU5hdGNoZXMiLCJtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMiLCJtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBV3FCQTs7O3FCQVRTO3FCQUNROzZCQUNlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsc0JBQ25DQywwQkFBMEJDLElBQUFBLGlCQUFVLEVBQUMseUNBQ3JDQyxpQ0FBaUNILElBQUFBLGdCQUFTLEVBQUMseUNBQzNDSSw2REFBNkRGLElBQUFBLGlCQUFVLEVBQUM7QUFFL0QsSUFBQSxBQUFNSiw4QkE2R2xCLEFBN0dZO2FBQU1BLGNBQ1BPLGdCQUFnQixFQUFFQyxpQkFBaUI7OEJBRDVCUjtRQUVqQixJQUFJLENBQUNPLGdCQUFnQixHQUFHQTtRQUN4QixJQUFJLENBQUNDLGlCQUFpQixHQUFHQTs7aUJBSFJSOztZQU1uQlMsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDcEIsT0FBTyxJQUFJLENBQUNGLGdCQUFnQjtZQUM5Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDRixpQkFBaUI7WUFDL0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsYUFBYSxFQUFFO2dCQUNuQixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQU1MLG9CQUFv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
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
bracketedMetastatementChildNodeFromChildNodes: function() {
|
|
13
|
-
return bracketedMetastatementChildNodeFromChildNodes;
|
|
14
|
-
},
|
|
15
|
-
matchBracketedMetastatementChildNode: function() {
|
|
16
|
-
return matchBracketedMetastatementChildNode;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _array = require("../utilities/array");
|
|
20
|
-
var _ruleNames = require("../ruleNames");
|
|
21
|
-
var _constants = require("../constants");
|
|
22
|
-
function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
|
|
23
|
-
var bracketedMetastatementChildNode = null;
|
|
24
|
-
var childNodesLength = childNodes.length;
|
|
25
|
-
if (childNodesLength === _constants.BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
|
|
26
|
-
var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
27
|
-
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
28
|
-
var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameMetastatementRuleName = nonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
29
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
30
|
-
bracketedMetastatementChildNode = nonTerminalNode; ///
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return bracketedMetastatementChildNode;
|
|
35
|
-
}
|
|
36
|
-
function matchBracketedMetastatementChildNode(childNodes, callback) {
|
|
37
|
-
var bracketedMetastatementChildNodeMatches = false;
|
|
38
|
-
var bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
|
|
39
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
40
|
-
bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
|
|
41
|
-
}
|
|
42
|
-
return bracketedMetastatementChildNodeMatches;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWV0YXN0YXRlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IExFRlRfQlJBQ0tFVCwgUklHSFRfQlJBQ0tFVCwgQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgbGV0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0ICYmIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGNhbGxiYWNrKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbImJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyIsIm1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSIsImNoaWxkTm9kZXMiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlIiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCIsImZpcnN0Q2hpbGROb2RlIiwiZmlyc3QiLCJ0aGlyZENoaWxkTm9kZSIsInRoaXJkIiwic2Vjb25kQ2hpbGROb2RlIiwic2Vjb25kIiwiZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlIiwic2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJmaXJzdFRlcm1pbmFsTm9kZSIsInNlY29uZFRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudCIsImZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0IiwiTEVGVF9CUkFDS0VUIiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCIsIlJJR0hUX0JSQUNLRVQiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSIsIk1FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiY2FsbGJhY2siLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBTWdCQSw2Q0FBNkM7ZUFBN0NBOztJQWlDQUMsb0NBQW9DO2VBQXBDQTs7O3FCQXJDcUI7eUJBQ0c7eUJBQ2dEO0FBRWpGLFNBQVNELDhDQUE4Q0UsVUFBVSxFQUFFO0lBQ3hFLElBQUlDLGtDQUFrQyxJQUFJO0lBRTFDLElBQU1DLG1CQUFtQkYsV0FBV0csTUFBTTtJQUUxQyxJQUFJRCxxQkFBcUJFLHFEQUEwQyxFQUFFO1FBQ25FLElBQU1DLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDTixhQUN2Qk8saUJBQWlCQyxJQUFBQSxZQUFLLEVBQUNSLGFBQ3ZCUyxrQkFBa0JDLElBQUFBLGFBQU0sRUFBQ1YsYUFDekJXLDZCQUE2Qk4sZUFBZU8sY0FBYyxJQUMxREMsNkJBQTZCTixlQUFlSyxjQUFjLElBQzFERSxpQ0FBaUNMLGdCQUFnQk0saUJBQWlCO1FBRXhFLElBQUlKLDhCQUE4Qkcsa0NBQWtDRCw0QkFBNEI7WUFDOUYsSUFBTUcsa0JBQWtCUCxpQkFDbEJRLG9CQUFvQlosZ0JBQ3BCYSxxQkFBcUJYLGdCQUNyQlksMEJBQTBCSCxnQkFBZ0JJLFdBQVcsSUFDckRDLDJCQUEyQkosa0JBQWtCSyxVQUFVLElBQ3ZEQyw0QkFBNEJMLG1CQUFtQkksVUFBVSxJQUN6REUsc0NBQXVDSCw2QkFBNkJJLHVCQUFZLEVBQ2hGQyx3Q0FBeUNILDhCQUE4Qkksd0JBQWEsRUFDcEZDLCtDQUFnRFQsNEJBQTRCVSxrQ0FBdUI7WUFFekcsSUFBSUwsdUNBQXVDSSxnREFBZ0RGLHVDQUF1QztnQkFDaEl6QixrQ0FBa0NlLGlCQUFrQixHQUFHO1lBQ3pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9mO0FBQ1Q7QUFFTyxTQUFTRixxQ0FBcUNDLFVBQVUsRUFBRThCLFFBQVEsRUFBRTtJQUN6RSxJQUFJQyx5Q0FBeUMsS0FBSztJQUVsRCxJQUFNOUIsa0NBQWtDSCw4Q0FBOENFO0lBRXRGLElBQUlDLG9DQUFvQyxJQUFJLEVBQUU7UUFDNUM4Qix5Q0FBeUNELFNBQVM3QjtJQUNwRCxDQUFDO0lBRUQsT0FBTzhCO0FBQ1QifQ==
|