occam-verify-cli 1.0.404 → 1.0.414
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 +3 -3
- package/lib/context/local.js +3 -3
- package/lib/context/release.js +2 -2
- package/lib/context/temporary.js +103 -54
- package/lib/mixins/statement/verify.js +2 -2
- package/lib/mixins/step/unify.js +2 -2
- package/lib/node/argument.js +2 -2
- package/lib/node/assumption.js +6 -6
- package/lib/node/frame.js +19 -7
- package/lib/node/judgement.js +8 -1
- package/lib/node/statement.js +34 -15
- package/lib/node/substitution/term.js +3 -11
- package/lib/node/term.js +20 -8
- package/lib/nonTerminalNode.js +3 -3
- package/lib/ontology/assertion/contained.js +7 -7
- package/lib/ontology/assertion/defined.js +8 -8
- package/lib/ontology/assertion/subproof.js +3 -3
- package/lib/ontology/assumption.js +49 -45
- package/lib/ontology/combinator.js +3 -3
- package/lib/ontology/constructor.js +3 -3
- package/lib/ontology/equality.js +4 -4
- package/lib/ontology/equivalence.js +2 -2
- package/lib/ontology/frame.js +37 -12
- package/lib/ontology/judgement.js +13 -6
- package/lib/ontology/metavariable.js +75 -76
- package/lib/ontology/propertyRelation.js +2 -2
- package/lib/ontology/reference.js +33 -4
- package/lib/ontology/signature.js +2 -2
- package/lib/ontology/statement.js +33 -8
- package/lib/ontology/step.js +4 -4
- package/lib/ontology/substitution/frame.js +13 -15
- package/lib/ontology/substitution/statement.js +31 -32
- package/lib/ontology/substitution/term.js +26 -25
- package/lib/ontology/substitution.js +2 -2
- package/lib/ontology/substitutions.js +4 -4
- package/lib/ontology/term.js +26 -12
- package/lib/ontology/variable.js +2 -2
- package/lib/process/equate.js +322 -0
- package/lib/process/unify.js +623 -0
- package/lib/process/verify.js +332 -0
- package/lib/utilities/brackets.js +3 -8
- package/lib/utilities/context.js +4 -14
- package/lib/utilities/json.js +18 -1
- package/lib/utilities/pass.js +68 -0
- package/lib/utilities/substitutions.js +11 -16
- package/package.json +7 -7
- package/src/context/file.js +2 -2
- package/src/context/local.js +2 -2
- package/src/context/release.js +1 -1
- package/src/context/temporary.js +124 -54
- package/src/mixins/statement/verify.js +3 -1
- package/src/mixins/step/unify.js +0 -1
- package/src/node/argument.js +1 -1
- package/src/node/assumption.js +4 -4
- package/src/node/frame.js +19 -5
- package/src/node/judgement.js +7 -0
- package/src/node/statement.js +35 -13
- package/src/node/substitution/term.js +4 -14
- package/src/node/term.js +20 -6
- package/src/nonTerminalNode.js +1 -1
- package/src/ontology/assertion/contained.js +6 -6
- package/src/ontology/assertion/defined.js +7 -7
- package/src/ontology/assertion/subproof.js +1 -1
- package/src/ontology/assumption.js +52 -57
- package/src/ontology/combinator.js +1 -1
- package/src/ontology/constructor.js +1 -1
- package/src/ontology/equality.js +3 -3
- package/src/ontology/equivalence.js +1 -1
- package/src/ontology/frame.js +44 -10
- package/src/ontology/judgement.js +8 -3
- package/src/ontology/metavariable.js +108 -102
- package/src/ontology/propertyRelation.js +3 -2
- package/src/ontology/reference.js +39 -1
- package/src/ontology/signature.js +3 -3
- package/src/ontology/statement.js +38 -4
- package/src/ontology/step.js +7 -7
- package/src/ontology/substitution/frame.js +13 -17
- package/src/ontology/substitution/statement.js +45 -48
- package/src/ontology/substitution/term.js +19 -19
- package/src/ontology/substitution.js +3 -2
- package/src/ontology/substitutions.js +3 -3
- package/src/ontology/term.js +26 -5
- package/src/ontology/variable.js +3 -2
- package/src/process/equate.js +212 -0
- package/src/process/unify.js +634 -0
- package/src/process/verify.js +204 -0
- package/src/utilities/brackets.js +2 -11
- package/src/utilities/context.js +1 -21
- package/src/utilities/json.js +19 -0
- package/src/utilities/{unifier.js → pass.js} +17 -1
- package/src/utilities/substitutions.js +10 -20
- package/lib/unifier/equantional.js +0 -170
- package/lib/unifier/intrinsicLevel.js +0 -144
- package/lib/unifier/metaLevel.js +0 -197
- package/lib/unifier/metavariable.js +0 -140
- package/lib/unifier/statementWithCombinator.js +0 -177
- package/lib/unifier/termWithConstructor.js +0 -145
- package/lib/unifier.js +0 -241
- package/lib/utilities/arguments.js +0 -28
- package/lib/utilities/frame.js +0 -18
- package/lib/utilities/metavariable.js +0 -18
- package/lib/utilities/statement.js +0 -18
- package/lib/utilities/unification.js +0 -109
- package/lib/utilities/unifier.js +0 -51
- package/lib/utilities/variable.js +0 -18
- package/lib/verifier/combinator.js +0 -158
- package/lib/verifier.js +0 -219
- package/src/unifier/equantional.js +0 -90
- package/src/unifier/intrinsicLevel.js +0 -52
- package/src/unifier/metaLevel.js +0 -151
- package/src/unifier/metavariable.js +0 -50
- package/src/unifier/statementWithCombinator.js +0 -114
- package/src/unifier/termWithConstructor.js +0 -56
- package/src/unifier.js +0 -183
- package/src/utilities/arguments.js +0 -21
- package/src/utilities/frame.js +0 -13
- package/src/utilities/metavariable.js +0 -13
- package/src/utilities/statement.js +0 -13
- package/src/utilities/unification.js +0 -136
- package/src/utilities/variable.js +0 -13
- package/src/verifier/combinator.js +0 -72
- package/src/verifier.js +0 -150
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { nodeQuery } from "../utilities/query";
|
|
4
|
+
import { isLastRemainingArgumentFunction } from "../utilities/pass";
|
|
5
|
+
|
|
6
|
+
const nonTerminalNodeQuery = nodeQuery("/*");
|
|
7
|
+
|
|
8
|
+
const termNodeQuery = nodeQuery("/term"),
|
|
9
|
+
typeNodeQuery = nodeQuery("/type"),
|
|
10
|
+
statementNodeQuery = nodeQuery("/statement");
|
|
11
|
+
|
|
12
|
+
export default class Pass {
|
|
13
|
+
run(node, ...remainingArguments) {
|
|
14
|
+
let success;
|
|
15
|
+
|
|
16
|
+
const visited = this.visitNode(node, ...remainingArguments);
|
|
17
|
+
|
|
18
|
+
success = visited; ///
|
|
19
|
+
|
|
20
|
+
return success;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
descend(childNodes, ...remainingArguments) {
|
|
24
|
+
let descendedAhead = false;
|
|
25
|
+
|
|
26
|
+
const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
|
|
27
|
+
|
|
28
|
+
if (lastRemainingArgumentFunction) {
|
|
29
|
+
const index = 0;
|
|
30
|
+
|
|
31
|
+
descendedAhead = this.descendAhead(index, childNodes, ...remainingArguments); ///
|
|
32
|
+
} else {
|
|
33
|
+
const visited = childNodes.every((childNode) => {
|
|
34
|
+
const node = childNode, ///
|
|
35
|
+
visited = this.visitNode(node, ...remainingArguments);
|
|
36
|
+
|
|
37
|
+
if (visited) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (visited) {
|
|
43
|
+
descendedAhead = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return descendedAhead;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
descendAhead(index, childNodes, ...remainingArguments) {
|
|
51
|
+
let descendedAhead = false;
|
|
52
|
+
|
|
53
|
+
const descendAhead = remainingArguments.pop(), ///
|
|
54
|
+
childNodesLength = childNodes.length;
|
|
55
|
+
|
|
56
|
+
if (index === childNodesLength) {
|
|
57
|
+
descendedAhead = descendAhead();
|
|
58
|
+
} else {
|
|
59
|
+
const childNode = childNodes[index],
|
|
60
|
+
node = childNode, ///
|
|
61
|
+
visited = this.visitNode(node, ...remainingArguments, () => {
|
|
62
|
+
remainingArguments.push(descendAhead);
|
|
63
|
+
|
|
64
|
+
const aheadIndex = index + 1,
|
|
65
|
+
descendedAhead = this.descendAhead(aheadIndex, childNodes, ...remainingArguments);
|
|
66
|
+
|
|
67
|
+
return descendedAhead;
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (visited) {
|
|
71
|
+
descendedAhead = true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return descendedAhead;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
visitNode(node, ...remainingArguments) {
|
|
79
|
+
let visited;
|
|
80
|
+
|
|
81
|
+
const nodeTerminalNode = node.isTerminalNode();
|
|
82
|
+
|
|
83
|
+
if (nodeTerminalNode) {
|
|
84
|
+
const terminalNode = node; ///
|
|
85
|
+
|
|
86
|
+
visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
|
|
87
|
+
} else {
|
|
88
|
+
const nonTerminalNode = node; ///
|
|
89
|
+
|
|
90
|
+
visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return visited;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
visitTerminalNode(terminalNode, ...remainingArguments) {
|
|
97
|
+
let visited = false;
|
|
98
|
+
|
|
99
|
+
const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
|
|
100
|
+
|
|
101
|
+
if (lastRemainingArgumentFunction) {
|
|
102
|
+
const descendAhead = remainingArguments.pop(), ///
|
|
103
|
+
descendedAhead = descendAhead();
|
|
104
|
+
|
|
105
|
+
if (descendedAhead) {
|
|
106
|
+
visited = true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
remainingArguments.push(descendAhead);
|
|
110
|
+
} else {
|
|
111
|
+
visited = true;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return visited;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
118
|
+
let visited = false;
|
|
119
|
+
|
|
120
|
+
let { maps } = this.constructor;
|
|
121
|
+
|
|
122
|
+
maps = [ ///
|
|
123
|
+
...maps,
|
|
124
|
+
{
|
|
125
|
+
nodeQuery: nonTerminalNodeQuery,
|
|
126
|
+
run: (node, ...remainingArguments) => {
|
|
127
|
+
let visited = false;
|
|
128
|
+
|
|
129
|
+
const childNodes = nonTerminalNode.getChildNodes(), ///
|
|
130
|
+
descended = this.descend(childNodes, ...remainingArguments);
|
|
131
|
+
|
|
132
|
+
if (descended) {
|
|
133
|
+
visited = true;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return visited;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
maps.some((map) => {
|
|
142
|
+
const { nodeQuery, run } = map;
|
|
143
|
+
|
|
144
|
+
const node = nodeQuery(nonTerminalNode);
|
|
145
|
+
|
|
146
|
+
if (node !== null) {
|
|
147
|
+
const success = run(node, ...remainingArguments);
|
|
148
|
+
|
|
149
|
+
visited = success;
|
|
150
|
+
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
return visited;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
class CombinatorPass extends Pass {
|
|
160
|
+
static maps = [
|
|
161
|
+
{
|
|
162
|
+
nodeQuery: statementNodeQuery,
|
|
163
|
+
run: (statementNode, context) => {
|
|
164
|
+
const { Statement } = ontology,
|
|
165
|
+
statement = Statement.fromStatementNode(statementNode, context),
|
|
166
|
+
assignments = null,
|
|
167
|
+
stated = false,
|
|
168
|
+
statementVerifies = statement.verify(assignments, stated, context);
|
|
169
|
+
|
|
170
|
+
return statementVerifies;
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
nodeQuery: termNodeQuery,
|
|
175
|
+
verify: (termNode, context) => {
|
|
176
|
+
const { Term } = ontology,
|
|
177
|
+
term = Term.fromTermNode(termNode, context),
|
|
178
|
+
termVerifies = term.verify(context, () => {
|
|
179
|
+
const verifiesAhead = true;
|
|
180
|
+
|
|
181
|
+
return verifiesAhead;
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
return termVerifies;
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
nodeQuery: typeNodeQuery,
|
|
189
|
+
verify: (typeNode, context) => {
|
|
190
|
+
let typeVerifies = false;
|
|
191
|
+
|
|
192
|
+
const nominalTypeName = typeNode.getNominalTypeName(),
|
|
193
|
+
typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
194
|
+
|
|
195
|
+
if (typePresent) {
|
|
196
|
+
typeVerifies = true;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return typeVerifies;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
];
|
|
203
|
+
}
|
|
204
|
+
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import ontology from "../ontology";
|
|
4
|
-
import TemporaryContext from "../context/temporary";
|
|
5
4
|
import combinatorBracketedContext from "../context/bracketed/combinator";
|
|
6
5
|
import constructorBracketedContext from "../context/bracketed/constructor";
|
|
7
6
|
|
|
7
|
+
import { contextFromStatement } from "../utilities/context";
|
|
8
|
+
|
|
8
9
|
import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
9
10
|
|
|
10
11
|
export function stripBracketsFromTerm(term, context) {
|
|
@@ -88,13 +89,3 @@ export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
|
88
89
|
|
|
89
90
|
return bracketedStatementChildNode;
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
-
function contextFromStatement(statement, context) {
|
|
93
|
-
const statementTokens = statement.getTokens(),
|
|
94
|
-
tokens = statementTokens, ///
|
|
95
|
-
temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
|
|
96
|
-
|
|
97
|
-
context = temporaryContext; ///
|
|
98
|
-
|
|
99
|
-
return context;
|
|
100
|
-
}
|
package/src/utilities/context.js
CHANGED
|
@@ -3,16 +3,6 @@
|
|
|
3
3
|
import ontology from "../ontology";
|
|
4
4
|
import TemporaryContext from "../context/temporary";
|
|
5
5
|
|
|
6
|
-
export function metavariableFromFrame(frame, context) {
|
|
7
|
-
context = contextFromFrame(frame, context); ///
|
|
8
|
-
|
|
9
|
-
const { Metavariable } = ontology,
|
|
10
|
-
frameNode = frame.getNode(),
|
|
11
|
-
metavariable = Metavariable.fromFrameNode(frameNode, context);
|
|
12
|
-
|
|
13
|
-
return metavariable;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
6
|
export function equalityFromStatement(statement, context) {
|
|
17
7
|
context = contextFromStatement(statement, context); ///
|
|
18
8
|
|
|
@@ -103,17 +93,7 @@ export function satisfiesAssertionFromStatement(statement, context) {
|
|
|
103
93
|
return satisfiesAssertion;
|
|
104
94
|
}
|
|
105
95
|
|
|
106
|
-
function
|
|
107
|
-
const frameTokens = frame.getTokens(),
|
|
108
|
-
tokens = frameTokens, ///
|
|
109
|
-
temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
|
|
110
|
-
|
|
111
|
-
context = temporaryContext; ///
|
|
112
|
-
|
|
113
|
-
return context;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function contextFromStatement(statement, context) {
|
|
96
|
+
export function contextFromStatement(statement, context) {
|
|
117
97
|
const statementTokens = statement.getTokens(),
|
|
118
98
|
tokens = statementTokens, ///
|
|
119
99
|
temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
|
package/src/utilities/json.js
CHANGED
|
@@ -91,6 +91,19 @@ export function signatureFromJSON(json, context) {
|
|
|
91
91
|
return signature;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
export function referenceFromJSON(json, context) {
|
|
95
|
+
let { reference } = json;
|
|
96
|
+
|
|
97
|
+
const { Reference } = ontology,
|
|
98
|
+
referenceJSON = reference; ///
|
|
99
|
+
|
|
100
|
+
json = referenceJSON; ///
|
|
101
|
+
|
|
102
|
+
reference = Reference.fromJSON(json, context);
|
|
103
|
+
|
|
104
|
+
return reference;
|
|
105
|
+
}
|
|
106
|
+
|
|
94
107
|
export function conclusionFromJSON(json, context) {
|
|
95
108
|
let { conclusion } = json;
|
|
96
109
|
|
|
@@ -532,6 +545,12 @@ export function metaTypeToMetaTypeJSON(metaType) {
|
|
|
532
545
|
return metaTypeJSON;
|
|
533
546
|
}
|
|
534
547
|
|
|
548
|
+
export function referenceToReferenceJSON(reference) {
|
|
549
|
+
const referenceJSON = reference.toJSON();
|
|
550
|
+
|
|
551
|
+
return referenceJSON;
|
|
552
|
+
}
|
|
553
|
+
|
|
535
554
|
export function statementToStatementJSON(statement) {
|
|
536
555
|
const statementJSON = (statement !== null) ?
|
|
537
556
|
statement.toJSON() :
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { FUNCTION } from "../constants";
|
|
6
|
+
|
|
7
|
+
const { match, last } = arrayUtilities;
|
|
6
8
|
|
|
7
9
|
export function terminalNodeMapFromNodes(nodes) {
|
|
8
10
|
const terminalNodeMap = {};
|
|
@@ -47,3 +49,17 @@ export function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTermina
|
|
|
47
49
|
|
|
48
50
|
return terminalNodeMapsEqual;
|
|
49
51
|
}
|
|
52
|
+
|
|
53
|
+
export function isLastRemainingArgumentFunction(remainingArguments) {
|
|
54
|
+
let lastRemainingArgumentFunction = false;
|
|
55
|
+
|
|
56
|
+
const remainingArgumentsLength = remainingArguments.length;
|
|
57
|
+
|
|
58
|
+
if (remainingArgumentsLength > 0) {
|
|
59
|
+
const lastRemainingArgument = last(remainingArguments);
|
|
60
|
+
|
|
61
|
+
lastRemainingArgumentFunction = (typeof lastRemainingArgument === FUNCTION);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return lastRemainingArgumentFunction;
|
|
65
|
+
}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { nodeQuery } from "../utilities/query";
|
|
4
|
-
import { frameMetavariableNameFromFrameNode } from "../utilities/frame";
|
|
5
|
-
import { termVariableIdentifierFromTermNode } from "../utilities/variable";
|
|
6
|
-
import { statementMetavariableNameFromFrameNode } from "../utilities/statement";
|
|
7
|
-
|
|
8
|
-
const substitutionNodeQuery = nodeQuery("/statement/termSubstitution|frameSubstitution!");
|
|
9
|
-
|
|
10
3
|
export function termFromTermAndSubstitutions(term, substitutions, generalContext, specificContext) {
|
|
11
4
|
if (term !== null) {
|
|
12
5
|
const termNode = term.getNode(),
|
|
13
|
-
|
|
6
|
+
termSingular = term.isSingular();
|
|
14
7
|
|
|
15
8
|
term = null; ///
|
|
16
9
|
|
|
17
|
-
if (
|
|
18
|
-
const
|
|
19
|
-
variableIdentifier = termVariableIdentifier, ///
|
|
10
|
+
if (termSingular) {
|
|
11
|
+
const variableIdentifier = termNode.getVariableIdentifier(),
|
|
20
12
|
variable = generalContext.findVariableByVariableIdentifier(variableIdentifier);
|
|
21
13
|
|
|
22
14
|
if (variable !== null) {
|
|
@@ -37,13 +29,12 @@ export function termFromTermAndSubstitutions(term, substitutions, generalContext
|
|
|
37
29
|
export function frameFromFrameAndSubstitutions(frame, substitutions, generalContext, specificContext) {
|
|
38
30
|
if (frame !== null) {
|
|
39
31
|
const frameNode = frame.getNode(),
|
|
40
|
-
|
|
32
|
+
frameSingular = frame.isSingular();
|
|
41
33
|
|
|
42
34
|
frame = null; ///
|
|
43
35
|
|
|
44
|
-
if (
|
|
45
|
-
const
|
|
46
|
-
metavariableName = frameMetavariableName, ///
|
|
36
|
+
if (frameSingular) {
|
|
37
|
+
const metavariableName = frameNode.getMetavariableName(),
|
|
47
38
|
metavariable = generalContext.findMetavariableByMetavariableName(metavariableName);
|
|
48
39
|
|
|
49
40
|
if (metavariable !== null) {
|
|
@@ -66,21 +57,20 @@ export function frameFromFrameAndSubstitutions(frame, substitutions, generalCont
|
|
|
66
57
|
export function statementFromStatementAndSubstitutions(statement, substitutions, generalContext, specificContext) {
|
|
67
58
|
if (statement !== null) {
|
|
68
59
|
const statementNode = statement.getNode(),
|
|
69
|
-
|
|
60
|
+
statementSingular = statement.isSingular();
|
|
70
61
|
|
|
71
|
-
if (
|
|
62
|
+
if (statementSingular) {
|
|
72
63
|
statement = null;
|
|
73
64
|
|
|
74
65
|
let substitution = null;
|
|
75
66
|
|
|
76
|
-
const substitutionNode =
|
|
67
|
+
const substitutionNode = statementNode.getSubstitutionNode();
|
|
77
68
|
|
|
78
69
|
if (substitutionNode !== null) {
|
|
79
70
|
substitution = generalContext.findSubstitutionBySubstitutionNode(substitutionNode);
|
|
80
71
|
}
|
|
81
72
|
|
|
82
|
-
const
|
|
83
|
-
metavariableName = statementMetavariableName, ///
|
|
73
|
+
const metavariableName = statementNode.getMetavariableName(),
|
|
84
74
|
metavariable = generalContext.findMetavariableByMetavariableName(metavariableName);
|
|
85
75
|
|
|
86
76
|
if (metavariable !== null) {
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _unifier = /*#__PURE__*/ _interop_require_default(require("../unifier"));
|
|
12
|
-
var _query = require("../utilities/query");
|
|
13
|
-
function _assert_this_initialized(self) {
|
|
14
|
-
if (self === void 0) {
|
|
15
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
16
|
-
}
|
|
17
|
-
return self;
|
|
18
|
-
}
|
|
19
|
-
function _call_super(_this, derived, args) {
|
|
20
|
-
derived = _get_prototype_of(derived);
|
|
21
|
-
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
22
|
-
}
|
|
23
|
-
function _class_call_check(instance, Constructor) {
|
|
24
|
-
if (!(instance instanceof Constructor)) {
|
|
25
|
-
throw new TypeError("Cannot call a class as a function");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function _defineProperties(target, props) {
|
|
29
|
-
for(var i = 0; i < props.length; i++){
|
|
30
|
-
var descriptor = props[i];
|
|
31
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
32
|
-
descriptor.configurable = true;
|
|
33
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
34
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
38
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
39
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
40
|
-
return Constructor;
|
|
41
|
-
}
|
|
42
|
-
function _define_property(obj, key, value) {
|
|
43
|
-
if (key in obj) {
|
|
44
|
-
Object.defineProperty(obj, key, {
|
|
45
|
-
value: value,
|
|
46
|
-
enumerable: true,
|
|
47
|
-
configurable: true,
|
|
48
|
-
writable: true
|
|
49
|
-
});
|
|
50
|
-
} else {
|
|
51
|
-
obj[key] = value;
|
|
52
|
-
}
|
|
53
|
-
return obj;
|
|
54
|
-
}
|
|
55
|
-
function _get_prototype_of(o) {
|
|
56
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
57
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
58
|
-
};
|
|
59
|
-
return _get_prototype_of(o);
|
|
60
|
-
}
|
|
61
|
-
function _inherits(subClass, superClass) {
|
|
62
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
63
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
64
|
-
}
|
|
65
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
66
|
-
constructor: {
|
|
67
|
-
value: subClass,
|
|
68
|
-
writable: true,
|
|
69
|
-
configurable: true
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
73
|
-
}
|
|
74
|
-
function _interop_require_default(obj) {
|
|
75
|
-
return obj && obj.__esModule ? obj : {
|
|
76
|
-
default: obj
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function _possible_constructor_return(self, call) {
|
|
80
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
81
|
-
return call;
|
|
82
|
-
}
|
|
83
|
-
return _assert_this_initialized(self);
|
|
84
|
-
}
|
|
85
|
-
function _set_prototype_of(o, p) {
|
|
86
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
87
|
-
o.__proto__ = p;
|
|
88
|
-
return o;
|
|
89
|
-
};
|
|
90
|
-
return _set_prototype_of(o, p);
|
|
91
|
-
}
|
|
92
|
-
function _type_of(obj) {
|
|
93
|
-
"@swc/helpers - typeof";
|
|
94
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
95
|
-
}
|
|
96
|
-
function _is_native_reflect_construct() {
|
|
97
|
-
try {
|
|
98
|
-
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
99
|
-
} catch (_) {}
|
|
100
|
-
return (_is_native_reflect_construct = function() {
|
|
101
|
-
return !!result;
|
|
102
|
-
})();
|
|
103
|
-
}
|
|
104
|
-
var termNodeQuery = (0, _query.nodeQuery)("/term");
|
|
105
|
-
var EquationalUnifier = /*#__PURE__*/ function(Unifier) {
|
|
106
|
-
_inherits(EquationalUnifier, Unifier);
|
|
107
|
-
function EquationalUnifier() {
|
|
108
|
-
_class_call_check(this, EquationalUnifier);
|
|
109
|
-
return _call_super(this, EquationalUnifier, arguments);
|
|
110
|
-
}
|
|
111
|
-
_create_class(EquationalUnifier, [
|
|
112
|
-
{
|
|
113
|
-
key: "equateTerms",
|
|
114
|
-
value: function equateTerms(leftTermNode, rightTermNode, context) {
|
|
115
|
-
var termsEquate;
|
|
116
|
-
var generalNonTerminalNode = leftTermNode, specificNonTerminalNode = rightTermNode, nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
|
|
117
|
-
termsEquate = nonTerminalNodeUnifies; ///
|
|
118
|
-
return termsEquate;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
key: "equateStatements",
|
|
123
|
-
value: function equateStatements(statementANode, statementBNode, context) {
|
|
124
|
-
var statementsEquate;
|
|
125
|
-
var generalNonTerminalNode = statementANode, specificNonTerminalNode = statementBNode, nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
|
|
126
|
-
statementsEquate = nonTerminalNodeUnifies; ///
|
|
127
|
-
return statementsEquate;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
]);
|
|
131
|
-
return EquationalUnifier;
|
|
132
|
-
}(_unifier.default);
|
|
133
|
-
_define_property(EquationalUnifier, "maps", [
|
|
134
|
-
{
|
|
135
|
-
generalNodeQuery: termNodeQuery,
|
|
136
|
-
specificNodeQuery: termNodeQuery,
|
|
137
|
-
unify: function(leftTermNode, rightTermNode, context) {
|
|
138
|
-
var termUnifies = false;
|
|
139
|
-
if (!termUnifies) {
|
|
140
|
-
var depth = Infinity, leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
|
|
141
|
-
if (leftTermNodeMatchesRightTermNode) {
|
|
142
|
-
termUnifies = true;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if (!termUnifies) {
|
|
146
|
-
var equivalences = context.getEquivalences(), termNodes = [
|
|
147
|
-
leftTermNode,
|
|
148
|
-
rightTermNode
|
|
149
|
-
], equivalence = equivalences.findEquivalenceByTermNodes(termNodes);
|
|
150
|
-
if (equivalence !== null) {
|
|
151
|
-
termUnifies = true;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (!termUnifies) {
|
|
155
|
-
var depth1 = 1, leftTermNodeMatchesRightTermNode1 = leftTermNode.match(rightTermNode, depth1);
|
|
156
|
-
if (leftTermNodeMatchesRightTermNode1) {
|
|
157
|
-
var leftNonTerminalNode = leftTermNode, rightNonTerminalNode = rightTermNode, leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, childNodesUnify = equationalUnifier.unifyChildNodes(leftChildNodes, rightChildNodes, context);
|
|
158
|
-
if (childNodesUnify) {
|
|
159
|
-
termUnifies = true;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return termUnifies;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
]);
|
|
167
|
-
var equationalUnifier = new EquationalUnifier();
|
|
168
|
-
var _default = equationalUnifier;
|
|
169
|
-
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL2VxdWFudGlvbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKTtcblxuY2xhc3MgRXF1YXRpb25hbFVuaWZpZXIgZXh0ZW5kcyBVbmlmaWVyIHtcbiAgZXF1YXRlVGVybXMobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1zRXF1YXRlO1xuXG4gICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUgPSByaWdodFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVVbmlmaWVzID0gdGhpcy51bmlmeU5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICB0ZXJtc0VxdWF0ZSA9IG5vblRlcm1pbmFsTm9kZVVuaWZpZXM7IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1zRXF1YXRlO1xuICB9O1xuXG4gIGVxdWF0ZVN0YXRlbWVudHMoc3RhdGVtZW50QU5vZGUsIHN0YXRlbWVudEJOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudHNFcXVhdGU7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50QU5vZGUsIC8vL1xuICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Qk5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVVuaWZpZXMgPSB0aGlzLnVuaWZ5Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudHNFcXVhdGUgPSBub25UZXJtaW5hbE5vZGVVbmlmaWVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnRzRXF1YXRlO1xuICB9O1xuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksICAvLy9cbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LCAvLy9cbiAgICAgIHVuaWZ5OiAobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBkZXB0aCA9IEluZmluaXR5LFxuICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlLm1hdGNoKHJpZ2h0VGVybU5vZGUsIGRlcHRoKTtcblxuICAgICAgICAgIGlmIChsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSkge1xuICAgICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgICAgICAgIHRlcm1Ob2RlcyA9IFtcbiAgICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGVcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VzLmZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICAgICAgICBpZiAoZXF1aXZhbGVuY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgZGVwdGggPSAxLFxuICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlLm1hdGNoKHJpZ2h0VGVybU5vZGUsIGRlcHRoKTtcblxuICAgICAgICAgIGlmIChsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSkge1xuICAgICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICAgICAgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNVbmlmeSA9IGVxdWF0aW9uYWxVbmlmaWVyLnVuaWZ5Q2hpbGROb2RlcyhsZWZ0Q2hpbGROb2RlcywgcmlnaHRDaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNVbmlmeSkge1xuICAgICAgICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgZXF1YXRpb25hbFVuaWZpZXIgPSBuZXcgRXF1YXRpb25hbFVuaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZXF1YXRpb25hbFVuaWZpZXI7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIkVxdWF0aW9uYWxVbmlmaWVyIiwiZXF1YXRlVGVybXMiLCJsZWZ0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiY29udGV4dCIsInRlcm1zRXF1YXRlIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVW5pZmllcyIsInVuaWZ5Tm9uVGVybWluYWxOb2RlIiwiZXF1YXRlU3RhdGVtZW50cyIsInN0YXRlbWVudEFOb2RlIiwic3RhdGVtZW50Qk5vZGUiLCJzdGF0ZW1lbnRzRXF1YXRlIiwiVW5pZmllciIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJ1bmlmeSIsInRlcm1VbmlmaWVzIiwiZGVwdGgiLCJJbmZpbml0eSIsImxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlIiwibWF0Y2giLCJlcXVpdmFsZW5jZXMiLCJnZXRFcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVW5pZnkiLCJlcXVhdGlvbmFsVW5pZmllciIsInVuaWZ5Q2hpbGROb2RlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBeUZBOzs7ZUFBQTs7OzhEQXZGb0I7cUJBRU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUVoQyxJQUFBLEFBQU1DLGtDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtRQUFOLE9BQUEsa0JBQU1BOztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztnQkFDOUMsSUFBSUM7Z0JBRUosSUFBTUMseUJBQXlCSixjQUN6QkssMEJBQTBCSixlQUMxQksseUJBQXlCLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNILHdCQUF3QkMseUJBQXlCSDtnQkFFMUdDLGNBQWNHLHdCQUF3QixHQUFHO2dCQUV6QyxPQUFPSDtZQUNUOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQkMsY0FBYyxFQUFFQyxjQUFjLEVBQUVSLE9BQU87Z0JBQ3RELElBQUlTO2dCQUVKLElBQU1QLHlCQUF5QkssZ0JBQ3pCSiwwQkFBMEJLLGdCQUMxQkoseUJBQXlCLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNILHdCQUF3QkMseUJBQXlCSDtnQkFFMUdTLG1CQUFtQkwsd0JBQXdCLEdBQUc7Z0JBRTlDLE9BQU9LO1lBQ1Q7OztXQXZCSWI7RUFBMEJjLGdCQUFPO0FBeUJyQyxpQkF6QklkLG1CQXlCR2UsUUFBTztJQUNaO1FBQ0VDLGtCQUFrQmxCO1FBQ2xCbUIsbUJBQW1CbkI7UUFDbkJvQixPQUFPLFNBQUNoQixjQUFjQyxlQUFlQztZQUNuQyxJQUFJZSxjQUFjO1lBRWxCLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUMsUUFBUUMsVUFDUkMsbUNBQW1DcEIsYUFBYXFCLEtBQUssQ0FBQ3BCLGVBQWVpQjtnQkFFM0UsSUFBSUUsa0NBQWtDO29CQUNwQ0gsY0FBYztnQkFDaEI7WUFDRjtZQUVBLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUssZUFBZXBCLFFBQVFxQixlQUFlLElBQ3RDQyxZQUFZO29CQUNWeEI7b0JBQ0FDO2lCQUNELEVBQ0R3QixjQUFjSCxhQUFhSSwwQkFBMEIsQ0FBQ0Y7Z0JBRTVELElBQUlDLGdCQUFnQixNQUFNO29CQUN4QlIsY0FBYztnQkFDaEI7WUFDRjtZQUVBLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUMsU0FBUSxHQUNSRSxvQ0FBbUNwQixhQUFhcUIsS0FBSyxDQUFDcEIsZUFBZWlCO2dCQUUzRSxJQUFJRSxtQ0FBa0M7b0JBQ3BDLElBQU1PLHNCQUFzQjNCLGNBQ3RCNEIsdUJBQXVCM0IsZUFDdkI0QixnQ0FBZ0NGLG9CQUFvQkcsYUFBYSxJQUNqRUMsaUNBQWlDSCxxQkFBcUJFLGFBQWEsSUFDbkVFLGlCQUFpQkgsK0JBQ2pCSSxrQkFBa0JGLGdDQUNsQkcsa0JBQWtCQyxrQkFBa0JDLGVBQWUsQ0FBQ0osZ0JBQWdCQyxpQkFBaUIvQjtvQkFFM0YsSUFBSWdDLGlCQUFpQjt3QkFDbkJqQixjQUFjO29CQUNoQjtnQkFDRjtZQUNGO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0NBQ0Q7QUFHSCxJQUFNa0Isb0JBQW9CLElBQUlyQztJQUU5QixXQUFlcUMifQ==
|