occam-verify-cli 0.0.916 → 0.0.918
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/axiom.js +11 -24
- package/lib/conjecture.js +11 -24
- package/lib/constants.js +9 -1
- package/lib/constructor/bracketed.js +11 -24
- package/lib/context/local/metaLevel.js +16 -24
- package/lib/lemma.js +11 -24
- package/lib/metaLemma.js +11 -24
- package/lib/metaType/frame.js +11 -24
- package/lib/metaType/reference.js +11 -24
- package/lib/metaType/statement.js +11 -24
- package/lib/metatheorem.js +11 -24
- package/lib/ocmbinator/bracketed.js +11 -24
- package/lib/substitution/metastatementForMetavariable.js +11 -24
- package/lib/substitution/statementForMetavariable.js +11 -24
- package/lib/substitution/termForVariable.js +11 -24
- package/lib/theorem.js +11 -24
- package/lib/type.js +11 -24
- package/lib/utilities/verify.js +7 -7
- package/lib/verifier/node/metaLevel.js +11 -24
- package/lib/verifier/node/statementAsCombinator.js +11 -24
- package/lib/verifier/node/termAsConstructor.js +11 -24
- package/lib/verifier/nodes/equality.js +11 -24
- package/lib/verifier/nodes/intrinsicLevel.js +11 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +11 -24
- package/lib/verifier/nodes/metaLevel.js +11 -24
- package/lib/verifier/nodes/statementAgainstCombinator.js +11 -24
- package/lib/verifier/nodes/termAgainstConstructor.js +11 -24
- package/lib/verify/metastatement.js +10 -6
- package/lib/verify/statement.js +45 -46
- package/lib/verify/statementAsContainedAssertion.js +93 -0
- package/lib/verify/statementAsDefinedAssertion.js +111 -0
- package/package.json +2 -2
- package/src/constants.js +2 -0
- package/src/utilities/verify.js +5 -5
- package/src/verify/metastatement.js +13 -5
- package/src/verify/statement.js +70 -70
- package/src/verify/statementAsContainedAssertion.js +112 -0
- package/src/verify/statementAsDefinedAssertion.js +136 -0
- package/lib/verify/containedAssertion.js +0 -93
- package/lib/verify/definedAssertion.js +0 -111
- package/src/verify/containedAssertion.js +0 -112
- package/src/verify/definedAssertion.js +0 -137
package/src/verify/statement.js
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import verifyEquality from "../verify/equality";
|
|
4
4
|
import bracketedCombinator from "../ocmbinator/bracketed";
|
|
5
5
|
import verifyTypeAssertion from "../verify/typeAssertion";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import verifyStatementAsDefinedAssertion from "../verify/statementAsDefinedAssertion";
|
|
7
|
+
import verifyStatementAsContainedAssertion from "../verify/statementAsContainedAssertion";
|
|
8
8
|
import statementAgainstCombinatorNodesVerifier from "../verifier/nodes/statementAgainstCombinator";
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { DEFINED, CONTAINED } from "../constants";
|
|
11
|
+
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
11
12
|
|
|
12
13
|
const equalityNodeQuery = nodeQuery("/statement/equality!"),
|
|
13
14
|
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
|
|
14
|
-
|
|
15
|
-
containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
|
|
15
|
+
operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
|
|
16
16
|
|
|
17
17
|
function verifyStatement(statementNode, assignments, derived, localContext) {
|
|
18
18
|
let statementVerified;
|
|
@@ -77,23 +77,24 @@ export default verifyStatement;
|
|
|
77
77
|
export function verifyStatementAsEquality(statementNode, assignments, derived, localContext) {
|
|
78
78
|
let statementVerifiedAsEquality = false;
|
|
79
79
|
|
|
80
|
-
const
|
|
80
|
+
const statementEquality = isStatementEquality(statementNode);
|
|
81
81
|
|
|
82
|
-
if (
|
|
82
|
+
if (statementEquality) {
|
|
83
83
|
const statementString = localContext.nodeAsString(statementNode);
|
|
84
84
|
|
|
85
|
-
localContext.trace(`Verifying the '${statementString}' statement as an equality...`,
|
|
85
|
+
localContext.trace(`Verifying the '${statementString}' statement as an equality...`, statementNode);
|
|
86
86
|
|
|
87
|
-
const
|
|
88
|
-
|
|
87
|
+
const equalityNode = equalityNodeQuery(statementNode),
|
|
88
|
+
equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext, () => {
|
|
89
|
+
const verifiedAhead = true;
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
return verifiedAhead;
|
|
92
|
+
});
|
|
92
93
|
|
|
93
94
|
statementVerifiedAsEquality = equalityVerified; ///
|
|
94
95
|
|
|
95
96
|
if (statementVerifiedAsEquality) {
|
|
96
|
-
localContext.debug(`...verified the '${statementString}' statement as an equality.`,
|
|
97
|
+
localContext.debug(`...verified the '${statementString}' statement as an equality.`, statementNode);
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
@@ -103,82 +104,39 @@ export function verifyStatementAsEquality(statementNode, assignments, derived, l
|
|
|
103
104
|
export function verifyStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
|
|
104
105
|
let statementVerifiedAsTypeAssertion = false;
|
|
105
106
|
|
|
106
|
-
const
|
|
107
|
+
const statementTypeAssertion = isStatementTypeAssertion(statementNode);
|
|
107
108
|
|
|
108
|
-
if (
|
|
109
|
+
if (statementTypeAssertion) {
|
|
109
110
|
const statementString = localContext.nodeAsString(statementNode);
|
|
110
111
|
|
|
111
|
-
localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`,
|
|
112
|
+
localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
|
|
112
113
|
|
|
113
|
-
const
|
|
114
|
-
|
|
114
|
+
const typeAssertionNode = typeAssertionNodeQuery(statementNode),
|
|
115
|
+
typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext, () => {
|
|
116
|
+
const verifiedAhead = true;
|
|
115
117
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
return verifiedAhead;
|
|
119
|
+
});
|
|
118
120
|
|
|
119
121
|
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
120
122
|
|
|
121
123
|
if (statementVerifiedAsTypeAssertion) {
|
|
122
|
-
localContext.debug(`...verified the '${statementString}' statement as a type assertion.`,
|
|
124
|
+
localContext.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
|
|
123
125
|
}
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
return statementVerifiedAsTypeAssertion;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
|
-
function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
130
|
-
let statementVerifiedAsDefinedAssertion = false;
|
|
131
|
-
|
|
132
|
-
const definedAssertionNode = definedAssertionNodeQuery(statementNode);
|
|
133
|
-
|
|
134
|
-
if (definedAssertionNode !== null) {
|
|
135
|
-
const statementString = localContext.nodeAsString(statementNode);
|
|
136
|
-
|
|
137
|
-
localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, definedAssertionNode);
|
|
138
|
-
|
|
139
|
-
const definedAssertionVerified = verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext);
|
|
140
|
-
|
|
141
|
-
statementVerifiedAsDefinedAssertion = definedAssertionVerified; ///
|
|
142
|
-
|
|
143
|
-
if (statementVerifiedAsDefinedAssertion) {
|
|
144
|
-
localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, definedAssertionNode);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return statementVerifiedAsDefinedAssertion;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
function verifyStatementAsContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
152
|
-
let statementVerifiedAsContainedAssertion = false;
|
|
153
|
-
|
|
154
|
-
const containedAssertionNode = containedAssertionNodeQuery(statementNode);
|
|
155
|
-
|
|
156
|
-
if (containedAssertionNode !== null) {
|
|
157
|
-
const statementString = localContext.nodeAsString(statementNode);
|
|
158
|
-
|
|
159
|
-
localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, containedAssertionNode);
|
|
160
|
-
|
|
161
|
-
const containedAssertionVerified = verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext);
|
|
162
|
-
|
|
163
|
-
statementVerifiedAsContainedAssertion = containedAssertionVerified; ///
|
|
164
|
-
|
|
165
|
-
if (statementVerifiedAsContainedAssertion) {
|
|
166
|
-
localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, containedAssertionNode);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return statementVerifiedAsContainedAssertion;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
131
|
function verifyStatementAgainstCombinators(statementNode, assignments, derived, localContext) {
|
|
174
132
|
let statementVerifiedAgainstCombinators = false;
|
|
175
133
|
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
134
|
+
const statementEquality = isStatementEquality(statementNode),
|
|
135
|
+
statementTypeAssertion = isStatementTypeAssertion(statementNode),
|
|
136
|
+
statementDefinedAssertion = isStatementDefinedAssertion(statementNode),
|
|
137
|
+
statementContainedAssertion = isStatementContainedAssertion(statementNode);
|
|
180
138
|
|
|
181
|
-
if (
|
|
139
|
+
if (!statementEquality && !statementTypeAssertion && !statementDefinedAssertion && !statementContainedAssertion) {
|
|
182
140
|
let combinators = localContext.getCombinators();
|
|
183
141
|
|
|
184
142
|
combinators = [ ///
|
|
@@ -223,3 +181,45 @@ function verifyStatementAgainstCombinator(statementNode, combinator, localContex
|
|
|
223
181
|
|
|
224
182
|
return statementVerifiedAgainstCombinator;
|
|
225
183
|
}
|
|
184
|
+
|
|
185
|
+
function isStatementEquality(statementNode) {
|
|
186
|
+
const equalityNode = equalityNodeQuery(statementNode),
|
|
187
|
+
statementEquality = (equalityNode !== null);
|
|
188
|
+
|
|
189
|
+
return statementEquality;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function isStatementTypeAssertion(statementNode) {
|
|
193
|
+
const typeAssertionNode = typeAssertionNodeQuery(statementNode),
|
|
194
|
+
statementTypeAssertion = (typeAssertionNode === null);
|
|
195
|
+
|
|
196
|
+
return statementTypeAssertion;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function isStatementDefinedAssertion(statementNode) {
|
|
200
|
+
const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
|
|
201
|
+
statementDefinedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
|
|
202
|
+
const content = operatorTerminalNode.getContent(),
|
|
203
|
+
contentDefined = (content === DEFINED);
|
|
204
|
+
|
|
205
|
+
if (contentDefined) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
return statementDefinedAssertion;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function isStatementContainedAssertion(statementNode) {
|
|
214
|
+
const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
|
|
215
|
+
statementContainedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
|
|
216
|
+
const content = operatorTerminalNode.getContent(),
|
|
217
|
+
contentContained = (content === CONTAINED);
|
|
218
|
+
|
|
219
|
+
if (contentContained) {
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
return statementContainedAssertion;
|
|
225
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
4
|
+
|
|
5
|
+
import { isAssertionNegated } from "../utilities/verify";
|
|
6
|
+
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
7
|
+
|
|
8
|
+
const variableNodeQuery = nodeQuery("/statement/term/variable!"),
|
|
9
|
+
metastatementVariableNodesQuery = nodesQuery("/statement/statement//variable");
|
|
10
|
+
|
|
11
|
+
export default function verifyStatementAsContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
12
|
+
let statementVerifiedAsContainedAssertion;
|
|
13
|
+
|
|
14
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
15
|
+
|
|
16
|
+
localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, statementNode);
|
|
17
|
+
|
|
18
|
+
const statementFunctions = [
|
|
19
|
+
verifyStatementAsDerivedContainedAssertion,
|
|
20
|
+
verifyStatementAsStatedContainedAssertion
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
statementVerifiedAsContainedAssertion = statementFunctions.some((statementFunction) => {
|
|
24
|
+
const statementVerifiedAsContainedAssertion = statementFunction(statementNode, assignments, derived, localContext);
|
|
25
|
+
|
|
26
|
+
if (statementVerifiedAsContainedAssertion) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
if (statementVerifiedAsContainedAssertion) {
|
|
32
|
+
localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, statementNode);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return statementVerifiedAsContainedAssertion;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function verifyStatementAsDerivedContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
39
|
+
let statementVerifiedAsDefinedContainedAssertion = false;
|
|
40
|
+
|
|
41
|
+
if (derived) {
|
|
42
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
43
|
+
|
|
44
|
+
localContext.trace(`Verifying the derived '${statementString}' statement as a contained assertion...`, statementNode);
|
|
45
|
+
|
|
46
|
+
const statementNegated = isAssertionNegated(statementNode),
|
|
47
|
+
variableNode = variableNodeQuery(statementNode),
|
|
48
|
+
negated = statementNegated; ///
|
|
49
|
+
|
|
50
|
+
if (false) {
|
|
51
|
+
///
|
|
52
|
+
} else if (variableNode !== null) {
|
|
53
|
+
const metastatementVariableNodes = metastatementVariableNodesQuery(statementNode),
|
|
54
|
+
variableNodeMatchesMetaArgumentVariableNode = metastatementVariableNodes.some((metastatementVariableNode) => {
|
|
55
|
+
const variableNodeMatchesMetaArgumentVariableNode = variableNode.match(metastatementVariableNode);
|
|
56
|
+
|
|
57
|
+
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
if (!negated) {
|
|
63
|
+
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
64
|
+
statementVerifiedAsDefinedContainedAssertion = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (negated) {
|
|
69
|
+
if (!variableNodeMatchesMetaArgumentVariableNode) {
|
|
70
|
+
statementVerifiedAsDefinedContainedAssertion = true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (statementVerifiedAsDefinedContainedAssertion) {
|
|
76
|
+
localContext.debug(`...verified the derived '${statementString}' statement as a contained assertion.`, statementNode);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return statementVerifiedAsDefinedContainedAssertion;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function verifyStatementAsStatedContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
84
|
+
let statementVerifiedAsStatedContainedAssertion = false;
|
|
85
|
+
|
|
86
|
+
if (!derived) {
|
|
87
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
88
|
+
|
|
89
|
+
localContext.trace(`Verifying the stated '${statementString}' statement as a contained assertion...`, statementNode);
|
|
90
|
+
|
|
91
|
+
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
92
|
+
|
|
93
|
+
if (intrinsicLevel) {
|
|
94
|
+
localContext.debug(`The stated '${statementString}' statement as a contained assertion cannot be verified at intrinsic level.`, statementNode);
|
|
95
|
+
} else {
|
|
96
|
+
const nonTerminalNode = statementNode, ///
|
|
97
|
+
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
98
|
+
const verifiedAhead = true;
|
|
99
|
+
|
|
100
|
+
return verifiedAhead;
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
statementVerifiedAsStatedContainedAssertion = nonTerminalNodeVerified; ///
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (statementVerifiedAsStatedContainedAssertion) {
|
|
107
|
+
localContext.debug(`...verified the stated '${statementString}' statement as a contained assertion.`, statementNode);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return statementVerifiedAsStatedContainedAssertion;
|
|
112
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import verifyTerm from "./term";
|
|
4
|
+
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
5
|
+
|
|
6
|
+
import { first } from "../utilities/array";
|
|
7
|
+
import { nodeQuery } from "../utilities/query";
|
|
8
|
+
import { isStatementNegated } from "../utilities/verify";
|
|
9
|
+
|
|
10
|
+
const termNodeQuery = nodeQuery("/statement/term!"),
|
|
11
|
+
variableNodeQuery = nodeQuery("/statement/term/variable!");
|
|
12
|
+
|
|
13
|
+
export default function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
14
|
+
let statementVerifiedAsDefinedAssertion;
|
|
15
|
+
|
|
16
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
17
|
+
|
|
18
|
+
localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
|
|
19
|
+
|
|
20
|
+
const definedAssertionFunctions = [
|
|
21
|
+
verifyDerivedStatementAsDefinedAssertion,
|
|
22
|
+
verifyStatedStatementAsDefinedAssertion
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
|
|
26
|
+
const statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
|
|
27
|
+
|
|
28
|
+
if (statementVerifiedAsDefinedAssertion) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (statementVerifiedAsDefinedAssertion) {
|
|
34
|
+
localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return statementVerifiedAsDefinedAssertion;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
41
|
+
let derivedStatementVerifiedAsDefeindAssertion = false;
|
|
42
|
+
|
|
43
|
+
if (derived) {
|
|
44
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
45
|
+
|
|
46
|
+
localContext.trace(`Verifying the derived '${statementString}' statement as a defined assertion...`, statementNode);
|
|
47
|
+
|
|
48
|
+
const statementNegated = isStatementNegated(statementNode),
|
|
49
|
+
variableNode = variableNodeQuery(statementNode),
|
|
50
|
+
termNode = termNodeQuery(statementNode);
|
|
51
|
+
|
|
52
|
+
if (false) {
|
|
53
|
+
///
|
|
54
|
+
} else if (variableNode !== null) {
|
|
55
|
+
const variable = localContext.findVariableByVariableNode(variableNode);
|
|
56
|
+
|
|
57
|
+
if (variable !== null) {
|
|
58
|
+
const variableDefined = localContext.isVariableDefined(variable);
|
|
59
|
+
|
|
60
|
+
if (!statementNegated) {
|
|
61
|
+
if (variableDefined) {
|
|
62
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (statementNegated) {
|
|
67
|
+
if (!variableDefined) {
|
|
68
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (termNode !== null) {
|
|
73
|
+
const terms = [],
|
|
74
|
+
termVerified = verifyTerm(termNode, terms, localContext, () => {
|
|
75
|
+
const verifiedAhead = true;
|
|
76
|
+
|
|
77
|
+
return verifiedAhead;
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
if (termVerified) {
|
|
81
|
+
const firstTerm = first(terms),
|
|
82
|
+
term = firstTerm, ///
|
|
83
|
+
termGrounded = localContext.isTermGrounded(term);
|
|
84
|
+
|
|
85
|
+
if (!statementNegated) {
|
|
86
|
+
if (termGrounded) {
|
|
87
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (statementNegated) {
|
|
92
|
+
if (!termGrounded) {
|
|
93
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (derivedStatementVerifiedAsDefeindAssertion) {
|
|
100
|
+
localContext.debug(`...verified the derived '${statementString}' statement as a defined assertion.`, statementNode);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return derivedStatementVerifiedAsDefeindAssertion;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
108
|
+
let statedStatementVerifiedAsDefinedAssertion = false;
|
|
109
|
+
|
|
110
|
+
if (!derived) {
|
|
111
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
112
|
+
|
|
113
|
+
localContext.trace(`Verifying the stated '${statementString}' statement as a defined assertion...`, statementNode);
|
|
114
|
+
|
|
115
|
+
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
116
|
+
|
|
117
|
+
if (intrinsicLevel) {
|
|
118
|
+
localContext.debug(`The stated '${statementString}' statement as a defined assertion cannot be verified at intrinsic level.`, statementNode);
|
|
119
|
+
} else {
|
|
120
|
+
const nonTerminalNode = statementNode, ///
|
|
121
|
+
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
122
|
+
const verifiedAhead = true;
|
|
123
|
+
|
|
124
|
+
return verifiedAhead;
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
statedStatementVerifiedAsDefinedAssertion = nonTerminalNodeVerified; ///
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (statedStatementVerifiedAsDefinedAssertion) {
|
|
131
|
+
localContext.debug(`...verified the stated '${statementString}' statement as a defined assertion.`, statementNode);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return statedStatementVerifiedAsDefinedAssertion;
|
|
136
|
+
}
|
|
@@ -1,93 +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 verifyContainedAssertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
12
|
-
var _verify = require("../utilities/verify");
|
|
13
|
-
var _query = require("../utilities/query");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
var variableNodeQuery = (0, _query.nodeQuery)("/containedAssertion/term/variable!"), metastatementVariableNodesQuery = (0, _query.nodesQuery)("/containedAssertion/statement//variable");
|
|
20
|
-
function verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
21
|
-
var containedAssertionVerified;
|
|
22
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
23
|
-
localContext.trace("Verifying the '".concat(containedAssertionString, "' contained assertion..."), containedAssertionNode);
|
|
24
|
-
var containedAssertionFunctions = [
|
|
25
|
-
verifyDerivedContainedAssertion,
|
|
26
|
-
verifyStatedContainedAssertion
|
|
27
|
-
];
|
|
28
|
-
containedAssertionVerified = containedAssertionFunctions.some(function(containedAssertionFunction) {
|
|
29
|
-
var containedAssertionVerified = containedAssertionFunction(containedAssertionNode, assignments, derived, localContext);
|
|
30
|
-
if (containedAssertionVerified) {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
if (containedAssertionVerified) {
|
|
35
|
-
localContext.debug("...verified the '".concat(containedAssertionString, "' contained assertion."), containedAssertionNode);
|
|
36
|
-
}
|
|
37
|
-
return containedAssertionVerified;
|
|
38
|
-
}
|
|
39
|
-
function verifyDerivedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
40
|
-
var derivedContainedAssertionVerified = false;
|
|
41
|
-
if (derived) {
|
|
42
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
43
|
-
localContext.trace("Verifying the derived '".concat(containedAssertionString, "' contained assertion..."), containedAssertionNode);
|
|
44
|
-
var containedAssertionNegated = (0, _verify.isAssertionNegated)(containedAssertionNode), variableNode = variableNodeQuery(containedAssertionNode), negated = containedAssertionNegated; ///
|
|
45
|
-
if (false) {
|
|
46
|
-
///
|
|
47
|
-
} else if (variableNode !== null) {
|
|
48
|
-
var metastatementVariableNodes = metastatementVariableNodesQuery(containedAssertionNode), variableNodeMatchesMetaArgumentVariableNode = metastatementVariableNodes.some(function(metastatementVariableNode) {
|
|
49
|
-
var variableNodeMatchesMetaArgumentVariableNode = variableNode.match(metastatementVariableNode);
|
|
50
|
-
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
if (!negated) {
|
|
55
|
-
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
56
|
-
derivedContainedAssertionVerified = true;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (negated) {
|
|
60
|
-
if (!variableNodeMatchesMetaArgumentVariableNode) {
|
|
61
|
-
derivedContainedAssertionVerified = true;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (derivedContainedAssertionVerified) {
|
|
66
|
-
localContext.debug("...verified the derived '".concat(containedAssertionString, "' contained assertion."), containedAssertionNode);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return derivedContainedAssertionVerified;
|
|
70
|
-
}
|
|
71
|
-
function verifyStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
72
|
-
var statedContainedAssertionVerified = false;
|
|
73
|
-
if (!derived) {
|
|
74
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
75
|
-
localContext.trace("Verifying the stated '".concat(containedAssertionString, "' contained assertion..."), containedAssertionNode);
|
|
76
|
-
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
77
|
-
if (intrinsicLevel) {
|
|
78
|
-
localContext.debug("The stated '".concat(containedAssertionString, "' contained assertion cannot be verified at intrinsic level."), containedAssertionNode);
|
|
79
|
-
} else {
|
|
80
|
-
var nonTerminalNode = containedAssertionNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
81
|
-
var verifiedAhead = true;
|
|
82
|
-
return verifiedAhead;
|
|
83
|
-
});
|
|
84
|
-
statedContainedAssertionVerified = nonTerminalNodeVerified; ///
|
|
85
|
-
}
|
|
86
|
-
if (statedContainedAssertionVerified) {
|
|
87
|
-
localContext.debug("...verified the stated '".concat(containedAssertionString, "' contained assertion."), containedAssertionNode);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return statedContainedAssertionVerified;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvY29udGFpbmVkQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbWV0YUxldmVsTm9kZVZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci9ub2RlL21ldGFMZXZlbFwiO1xuXG5pbXBvcnQgeyBpc0Fzc2VydGlvbk5lZ2F0ZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb250YWluZWRBc3NlcnRpb24vdGVybS92YXJpYWJsZSFcIiksXG4gICAgICBtZXRhc3RhdGVtZW50VmFyaWFibGVOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9jb250YWluZWRBc3NlcnRpb24vc3RhdGVtZW50Ly92YXJpYWJsZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5Q29udGFpbmVkQXNzZXJ0aW9uKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkO1xuXG4gIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gLCBjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcblxuICBjb25zdCBjb250YWluZWRBc3NlcnRpb25GdW5jdGlvbnMgPSBbXG4gICAgdmVyaWZ5RGVyaXZlZENvbnRhaW5lZEFzc2VydGlvbixcbiAgICB2ZXJpZnlTdGF0ZWRDb250YWluZWRBc3NlcnRpb25cbiAgXTtcblxuICBjb250YWluZWRBc3NlcnRpb25WZXJpZmllZCA9IGNvbnRhaW5lZEFzc2VydGlvbkZ1bmN0aW9ucy5zb21lKChjb250YWluZWRBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkID0gY29udGFpbmVkQXNzZXJ0aW9uRnVuY3Rpb24oY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gLCBjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiBjb250YWluZWRBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5RGVyaXZlZENvbnRhaW5lZEFzc2VydGlvbihjb250YWluZWRBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgZGVyaXZlZCAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCwgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25OZWdhdGVkID0gaXNBc3NlcnRpb25OZWdhdGVkKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIG5lZ2F0ZWQgPSBjb250YWluZWRBc3NlcnRpb25OZWdhdGVkOyAgLy8vXG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhc3RhdGVtZW50VmFyaWFibGVOb2RlcyA9IG1ldGFzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzUXVlcnkoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICB2YXJpYWJsZU5vZGVNYXRjaGVzTWV0YUFyZ3VtZW50VmFyaWFibGVOb2RlID0gbWV0YXN0YXRlbWVudFZhcmlhYmxlTm9kZXMuc29tZSgobWV0YXN0YXRlbWVudFZhcmlhYmxlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5vZGVNYXRjaGVzTWV0YUFyZ3VtZW50VmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlLm1hdGNoKG1ldGFzdGF0ZW1lbnRWYXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICAgIGlmICh2YXJpYWJsZU5vZGVNYXRjaGVzTWV0YUFyZ3VtZW50VmFyaWFibGVOb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAoIW5lZ2F0ZWQpIHtcbiAgICAgICAgaWYgKHZhcmlhYmxlTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICBkZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICAgIGlmICghdmFyaWFibGVOb2RlTWF0Y2hlc01ldGFBcmd1bWVudFZhcmlhYmxlTm9kZSkge1xuICAgICAgICAgIGRlcml2ZWRDb250YWluZWRBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVyaXZlZENvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBkZXJpdmVkICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uYCwgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRDb250YWluZWRBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlZENvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSBzdGF0ZWQgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSBzdGF0ZWQgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBjYW5ub3QgYmUgdmVyaWZpZWQgYXQgaW50cmluc2ljIGxldmVsLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YUxldmVsTm9kZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBzdGF0ZWRDb250YWluZWRBc3NlcnRpb25WZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlIHN0YXRlZCAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZWRDb250YWluZWRBc3NlcnRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlDb250YWluZWRBc3NlcnRpb24iLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsImNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJjb250YWluZWRBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uIiwidmVyaWZ5U3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uIiwic29tZSIsImNvbnRhaW5lZEFzc2VydGlvbkZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQiLCJjb250YWluZWRBc3NlcnRpb25OZWdhdGVkIiwiaXNBc3NlcnRpb25OZWdhdGVkIiwidmFyaWFibGVOb2RlIiwibmVnYXRlZCIsIm1ldGFzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzIiwidmFyaWFibGVOb2RlTWF0Y2hlc01ldGFBcmd1bWVudFZhcmlhYmxlTm9kZSIsIm1ldGFzdGF0ZW1lbnRWYXJpYWJsZU5vZGUiLCJtYXRjaCIsInN0YXRlZENvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkIiwiaW50cmluc2ljTGV2ZWwiLCJpc0ludHJpbnNpY0xldmVsIiwibm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJtZXRhTGV2ZWxOb2RlVmVyaWZpZXIiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJ2ZXJpZmllZEFoZWFkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7O2dFQVJVO3NCQUVDO3FCQUNHOzs7Ozs7QUFFdEMsSUFBTUMsb0JBQW9CQyxJQUFBQSxnQkFBUyxFQUFDLHVDQUM5QkMsa0NBQWtDQyxJQUFBQSxpQkFBVSxFQUFDO0FBRXBDLFNBQVNKLHlCQUF5Qkssc0JBQXNCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxF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
|