occam-nominal 1.0.490 → 1.0.493
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/element/assertion/contained.js +61 -89
- package/lib/element/assertion/defined.js +51 -72
- package/lib/element/claim/conjecture.js +10 -12
- package/lib/element/claim/lemma.js +8 -10
- package/lib/element/claim/theorem.js +8 -10
- package/lib/element/claim.js +24 -41
- package/lib/element/fact/premise.js +4 -2
- package/lib/element/fact/step.js +5 -5
- package/lib/element/schema.js +2 -2
- package/lib/element/statement.js +4 -1
- package/lib/element/substitution/term.js +39 -58
- package/lib/element/variable.js +10 -18
- package/lib/process/unify.js +4 -4
- package/lib/process/validation.js +2 -1
- package/package.json +3 -3
- package/src/element/assertion/contained.js +71 -110
- package/src/element/assertion/defined.js +60 -89
- package/src/element/claim/conjecture.js +9 -11
- package/src/element/claim/lemma.js +7 -11
- package/src/element/claim/theorem.js +8 -10
- package/src/element/claim.js +28 -48
- package/src/element/fact/premise.js +3 -1
- package/src/element/fact/step.js +5 -6
- package/src/element/schema.js +1 -1
- package/src/element/statement.js +4 -0
- package/src/element/substitution/term.js +42 -70
- package/src/element/variable.js +9 -23
- package/src/process/unify.js +3 -3
- package/src/process/validation.js +2 -0
|
@@ -21,7 +21,7 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
default: obj
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
const { breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
24
|
+
const { all, exists } = _occamlanguages.continuationUtilities, { breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
25
25
|
const _default = (0, _elements.define)(class ContainedAssertion extends _assertion.default {
|
|
26
26
|
constructor(context, string, node, breakPoint, term, negated, statement){
|
|
27
27
|
super(context, string, node, breakPoint);
|
|
@@ -42,118 +42,90 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
42
42
|
const node = this.getNode(), containedAssertionNode = node; ///
|
|
43
43
|
return containedAssertionNode;
|
|
44
44
|
}
|
|
45
|
-
validate(state, context,
|
|
46
|
-
let
|
|
45
|
+
validate(state, context, forward, back) {
|
|
46
|
+
let assertion;
|
|
47
47
|
const containedAssertionString = this.getString(); ///
|
|
48
48
|
context.trace(`Validating the '${containedAssertionString}' contained assertion...`);
|
|
49
|
-
let assertion;
|
|
50
49
|
assertion = this.findAssertion(context);
|
|
51
50
|
if (assertion !== null) {
|
|
52
51
|
const containedAssertion = assertion; ///
|
|
53
52
|
context.debug(`The '${containedAssertionString}' contained assertion is already present.`);
|
|
54
|
-
|
|
55
|
-
} else {
|
|
56
|
-
assertion = this; ///
|
|
57
|
-
const validateTerm = this.validateTerm.bind(this), validateStatement = this.validateStatement.bind(this);
|
|
58
|
-
validates = all([
|
|
59
|
-
validateTerm,
|
|
60
|
-
validateStatement
|
|
61
|
-
], state, context, (state, context)=>{
|
|
62
|
-
let validates;
|
|
63
|
-
const validateWhenDeclared = this.validateWhenDeclared.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
64
|
-
validates = exists([
|
|
65
|
-
validateWhenDeclared,
|
|
66
|
-
validateWhenDerived
|
|
67
|
-
], state, context, (state, context)=>{
|
|
68
|
-
let validates;
|
|
69
|
-
context.addAssertion(assertion);
|
|
70
|
-
const containedAssertion = assertion; ///
|
|
71
|
-
validates = continuation(containedAssertion, context);
|
|
72
|
-
return validates;
|
|
73
|
-
});
|
|
74
|
-
return validates;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
if (validates) {
|
|
78
|
-
context.debug(`...validated the '${containedAssertionString}' contained assertion.`);
|
|
53
|
+
return forward(containedAssertion, context, back);
|
|
79
54
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
55
|
+
assertion = this; ///
|
|
56
|
+
const validateTerm = this.validateTerm.bind(this), validateStatement = this.validateStatement.bind(this);
|
|
57
|
+
all([
|
|
58
|
+
validateTerm,
|
|
59
|
+
validateStatement
|
|
60
|
+
], state, context, (state, context, back)=>{
|
|
61
|
+
const validateWhenDeclared = this.validateWhenDeclared.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
62
|
+
exists([
|
|
63
|
+
validateWhenDeclared,
|
|
64
|
+
validateWhenDerived
|
|
65
|
+
], state, context, (state, context, back)=>{
|
|
66
|
+
const containedAssertion = assertion; ///
|
|
67
|
+
context.addAssertion(assertion);
|
|
68
|
+
context.debug(`...validated the '${containedAssertionString}' contained assertion.`);
|
|
69
|
+
return forward(containedAssertion, context, back);
|
|
70
|
+
}, back);
|
|
71
|
+
}, back);
|
|
72
|
+
}
|
|
73
|
+
validateTerm(state, context, forward, back) {
|
|
84
74
|
const containedAssertionString = this.getString(); ///
|
|
85
75
|
context.trace(`Validating the '${containedAssertionString}' contained assertion's term...`);
|
|
86
76
|
const termSingular = this.term.isSingular();
|
|
87
|
-
if (termSingular) {
|
|
88
|
-
termValidates = this.term.validate(state, context, (term, context)=>{
|
|
89
|
-
let validates;
|
|
90
|
-
this.term = term;
|
|
91
|
-
validates = continuation(state, context);
|
|
92
|
-
return validates;
|
|
93
|
-
});
|
|
94
|
-
} else {
|
|
77
|
+
if (!termSingular) {
|
|
95
78
|
const termString = this.term.getString() ///
|
|
96
79
|
;
|
|
97
|
-
termValidates = false;
|
|
98
80
|
context.debug(`The '${termString}' term is not singular.`);
|
|
81
|
+
return back();
|
|
99
82
|
}
|
|
100
|
-
|
|
83
|
+
return this.term.validate(state, context, (term, context, back)=>{
|
|
84
|
+
this.term = term;
|
|
101
85
|
context.debug(`...validates the '${containedAssertionString}' contained assertion's term.`);
|
|
102
|
-
|
|
103
|
-
|
|
86
|
+
return forward(state, context, back);
|
|
87
|
+
}, back);
|
|
104
88
|
}
|
|
105
|
-
validateStatement(state, context,
|
|
106
|
-
let statementValidates;
|
|
89
|
+
validateStatement(state, context, forward, back) {
|
|
107
90
|
const containedAssertionString = this.getString(); ///
|
|
108
91
|
context.trace(`Validating the '${containedAssertionString}' contained assertion's statement...`);
|
|
109
92
|
const statementSingular = this.statement.isSingular();
|
|
110
|
-
if (statementSingular) {
|
|
111
|
-
statementValidates = this.statement.validate(state, context, (statement, context)=>{
|
|
112
|
-
let validates;
|
|
113
|
-
this.statement = statement;
|
|
114
|
-
validates = continuation(state, context);
|
|
115
|
-
return validates;
|
|
116
|
-
});
|
|
117
|
-
} else {
|
|
93
|
+
if (!statementSingular) {
|
|
118
94
|
const statementString = this.statement.getString() ///
|
|
119
95
|
;
|
|
120
|
-
statementValidates = false;
|
|
121
96
|
context.debug(`The '${statementString}' statement is not singular.`);
|
|
97
|
+
return back();
|
|
122
98
|
}
|
|
123
|
-
|
|
99
|
+
return this.statement.validate(state, context, (statement, context, back)=>{
|
|
100
|
+
this.statement = statement;
|
|
124
101
|
context.debug(`...validates the '${containedAssertionString}' contained assertion's statement.`);
|
|
125
|
-
|
|
126
|
-
|
|
102
|
+
return forward(state, context, back);
|
|
103
|
+
}, back);
|
|
127
104
|
}
|
|
128
|
-
validateWhenDeclared(state, context,
|
|
129
|
-
let validatesWhenDeclared = false;
|
|
105
|
+
validateWhenDeclared(state, context, forward, back) {
|
|
130
106
|
const declared = (0, _state.isDeclared)(state);
|
|
131
|
-
if (declared) {
|
|
132
|
-
|
|
133
|
-
context.trace(`Validating the '${containedAssertionString}' declared contained assertion...`);
|
|
134
|
-
validatesWhenDeclared = continuation(state, context);
|
|
135
|
-
if (validatesWhenDeclared) {
|
|
136
|
-
context.debug(`...validated the '${containedAssertionString}' declared contained assertion.`);
|
|
137
|
-
}
|
|
107
|
+
if (!declared) {
|
|
108
|
+
return back();
|
|
138
109
|
}
|
|
139
|
-
|
|
110
|
+
const containedAssertionString = this.getString(); ///
|
|
111
|
+
context.trace(`Validating the '${containedAssertionString}' declared contained assertion...`);
|
|
112
|
+
context.debug(`...validated the '${containedAssertionString}' declared contained assertion.`);
|
|
113
|
+
return forward(state, context, back);
|
|
140
114
|
}
|
|
141
|
-
validateWhenDerived(state, context,
|
|
142
|
-
let validatesWhenDerived = false;
|
|
115
|
+
validateWhenDerived(state, context, forward, back) {
|
|
143
116
|
const derived = (0, _state.isDerived)(state);
|
|
144
|
-
if (derived) {
|
|
145
|
-
|
|
146
|
-
context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
|
|
147
|
-
validatesWhenDerived = validateWhenDerived(this.term, this.statement, this.negated, context, (context)=>{
|
|
148
|
-
continuation(state, context);
|
|
149
|
-
});
|
|
150
|
-
if (validatesWhenDerived) {
|
|
151
|
-
context.debug(`...validated the '${containedAssertionString}' derived contained assertion.`);
|
|
152
|
-
}
|
|
117
|
+
if (!derived) {
|
|
118
|
+
return back();
|
|
153
119
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
120
|
+
const containedAssertionString = this.getString(); ///
|
|
121
|
+
context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
|
|
122
|
+
return validateWhenDerived(this.term, this.statement, this.negated, context, (context, bcak)=>{
|
|
123
|
+
context.debug(`...validated the '${containedAssertionString}' derived contained assertion.`);
|
|
124
|
+
return forward(state, context, back);
|
|
125
|
+
}, back);
|
|
126
|
+
}
|
|
127
|
+
unifyIndependently(generalContext, specificContext, forward, back) {
|
|
128
|
+
debugger;
|
|
157
129
|
let unifiesIndependently = false;
|
|
158
130
|
const context = specificContext, containedAssertionString = this.getString(); ///
|
|
159
131
|
context.trace(`Unifying the '${containedAssertionString}' contained assertion independently...`);
|
|
@@ -187,19 +159,19 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
187
159
|
return containedAssertion;
|
|
188
160
|
}
|
|
189
161
|
});
|
|
190
|
-
function validateWhenDerived(term, statement, negated, context,
|
|
191
|
-
let validatesWhenDerived = false;
|
|
162
|
+
function validateWhenDerived(term, statement, negated, context, forward, back) {
|
|
192
163
|
const termContained = statement.isTermContained(term, context);
|
|
164
|
+
let validatesWhenDerived = false;
|
|
193
165
|
if (!negated && termContained) {
|
|
194
166
|
validatesWhenDerived = true;
|
|
195
167
|
}
|
|
196
168
|
if (negated && !termContained) {
|
|
197
169
|
validatesWhenDerived = true;
|
|
198
170
|
}
|
|
199
|
-
if (validatesWhenDerived) {
|
|
200
|
-
|
|
171
|
+
if (!validatesWhenDerived) {
|
|
172
|
+
return back();
|
|
201
173
|
}
|
|
202
|
-
return
|
|
174
|
+
return forward(context, back);
|
|
203
175
|
}
|
|
204
176
|
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICB0ZXJtVmFsaWRhdGVzID0gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSBmYWxzZVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkXG5cbiAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgbmVnYXRlZCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Db250YWluZWQgPSBzdGF0ZW1lbnQuaXNUZXJtQ29udGFpbmVkKHRlcm0sIGNvbnRleHQpO1xuXG4gIGlmICghbmVnYXRlZCAmJiB0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG5lZ2F0ZWQgJiYgIXRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn0iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnRhaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwic3RhdGVtZW50IiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldFN0YXRlbWVudCIsImdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJjb250YWluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFsbCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsImFkZEFzc2VydGlvbiIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRh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
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc0RlY2xhcmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucywgc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb250YWluZWRBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtICA9IHRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U2luZ3VsYXIgPSB0aGlzLnN0YXRlbWVudC5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXN0YXRlbWVudFNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSB0aGlzLnN0YXRlbWVudC5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMuc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiY2FrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBkZWJ1Z2dlclxuXG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zKHRoaXMuc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWRcblxuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odW5pZmllc0luZGVwZW5kZW50bHkpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnRhaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IG5ldyBDb250YWluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkLCBzdGF0ZW1lbnQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgc3RhdGVtZW50LCBuZWdhdGVkLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHRlcm1Db250YWluZWQgPSBzdGF0ZW1lbnQuaXNUZXJtQ29udGFpbmVkKHRlcm0sIGNvbnRleHQpO1xuXG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGlmICghbmVnYXRlZCAmJiB0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG5lZ2F0ZWQgJiYgIXRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xufSJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImJjYWsiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJjb250aW51YXRpb24iLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsInRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1Db250YWluZWQiLCJpc1Rlcm1Db250YWluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW1CQTs7O2VBQUE7OztnQ0FqQjBEO2tFQUVwQzswQkFFQzt5QkFDSzt1QkFDVTs2QkFDUTsrQkFDdUM7eUJBSWpDOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdkMsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR0MsbUNBQW1CO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyxrQkFBUztJQUM5RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxTQUFTLENBQUU7UUFDdkUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNILFNBQVM7SUFDdkI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQyx5QkFBeUJWLE1BQU8sR0FBRztRQUV6QyxPQUFPVTtJQUNUO0lBRUFDLFNBQVNDLEtBQUssRUFBRWQsT0FBTyxFQUFFZSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN0QyxJQUFJQztRQUVKLE1BQU1DLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEbkIsUUFBUW9CLEtBQUss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
|
|
@@ -22,7 +22,7 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
default: obj
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
const { breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
25
|
+
const { all, exists } = _occamlanguages.continuationUtilities, { breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
26
26
|
const _default = (0, _elements.define)(class DefinedAssertion extends _assertion.default {
|
|
27
27
|
constructor(context, string, node, breakPoint, term, negated){
|
|
28
28
|
super(context, string, node, breakPoint);
|
|
@@ -39,94 +39,73 @@ const _default = (0, _elements.define)(class DefinedAssertion extends _assertion
|
|
|
39
39
|
const node = this.getNode(), definedAssertionNode = node; ///
|
|
40
40
|
return definedAssertionNode;
|
|
41
41
|
}
|
|
42
|
-
validate(state, context,
|
|
43
|
-
let
|
|
42
|
+
validate(state, context, forward, back) {
|
|
43
|
+
let assertion;
|
|
44
44
|
const definedAssertionString = this.getString(); ///
|
|
45
45
|
context.trace(`Validating the '${definedAssertionString}' defined assertion...`);
|
|
46
|
-
let assertion;
|
|
47
46
|
assertion = this.findAssertion(context);
|
|
48
47
|
if (assertion !== null) {
|
|
49
48
|
const definedAssertion = assertion; ///
|
|
50
49
|
context.debug(`The '${definedAssertionString}' defined assertion is already present.`);
|
|
51
|
-
|
|
52
|
-
} else {
|
|
53
|
-
assertion = this;
|
|
54
|
-
const validateTerm = this.validateTerm.bind(this);
|
|
55
|
-
validates = all([
|
|
56
|
-
validateTerm
|
|
57
|
-
], state, context, (state, context)=>{
|
|
58
|
-
let validates;
|
|
59
|
-
const validateWhenDeclared = this.validateWhenDeclared.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
60
|
-
validates = exists([
|
|
61
|
-
validateWhenDeclared,
|
|
62
|
-
validateWhenDerived
|
|
63
|
-
], state, context, (state, context)=>{
|
|
64
|
-
let validates;
|
|
65
|
-
context.addAssertion(assertion);
|
|
66
|
-
const definedAssertion = assertion; ///
|
|
67
|
-
validates = continuation(definedAssertion, context);
|
|
68
|
-
return validates;
|
|
69
|
-
});
|
|
70
|
-
return validates;
|
|
71
|
-
});
|
|
50
|
+
return forward(definedAssertion, context, back);
|
|
72
51
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
52
|
+
assertion = this;
|
|
53
|
+
const validateTerm = this.validateTerm.bind(this);
|
|
54
|
+
return all([
|
|
55
|
+
validateTerm
|
|
56
|
+
], state, context, (state, context, back)=>{
|
|
57
|
+
const validateWhenDeclared = this.validateWhenDeclared.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
58
|
+
return exists([
|
|
59
|
+
validateWhenDeclared,
|
|
60
|
+
validateWhenDerived
|
|
61
|
+
], state, context, (state, context, back)=>{
|
|
62
|
+
const definedAssertion = assertion; ///
|
|
63
|
+
context.addAssertion(assertion);
|
|
64
|
+
context.debug(`...validated the '${definedAssertionString}' defined assertion.`);
|
|
65
|
+
return forward(definedAssertion, context, back);
|
|
66
|
+
}, back);
|
|
67
|
+
}, back);
|
|
77
68
|
}
|
|
78
|
-
validateTerm(state, context,
|
|
79
|
-
let termValidates;
|
|
69
|
+
validateTerm(state, context, forward, back) {
|
|
80
70
|
const definedAssertionString = this.getString(); ///
|
|
81
71
|
context.trace(`Validating the '${definedAssertionString}' defined assertion's term...`);
|
|
82
72
|
const termSingular = this.term.isSingular();
|
|
83
|
-
if (termSingular) {
|
|
84
|
-
termValidates = this.term.validate(state, context, (term, context)=>{
|
|
85
|
-
let validates;
|
|
86
|
-
this.term = term;
|
|
87
|
-
validates = continuation(state, context);
|
|
88
|
-
return validates;
|
|
89
|
-
});
|
|
90
|
-
} else {
|
|
73
|
+
if (!termSingular) {
|
|
91
74
|
const termString = this.term.getString() ///
|
|
92
75
|
;
|
|
93
|
-
termValidates = false;
|
|
94
76
|
context.debug(`The '${termString}' term is not singular.`);
|
|
77
|
+
return back();
|
|
95
78
|
}
|
|
96
|
-
|
|
79
|
+
return this.term.validate(state, context, (term, context, back)=>{
|
|
80
|
+
this.term = term;
|
|
97
81
|
context.debug(`...validates the '${definedAssertionString}' defined assertion's term.`);
|
|
98
|
-
|
|
99
|
-
|
|
82
|
+
return forward(state, context, back);
|
|
83
|
+
}, back);
|
|
100
84
|
}
|
|
101
|
-
validateWhenDeclared(state, context,
|
|
102
|
-
let validatesWhenDeclared = false;
|
|
85
|
+
validateWhenDeclared(state, context, forward, back) {
|
|
103
86
|
const declared = (0, _state.isDeclared)(state);
|
|
104
|
-
if (declared) {
|
|
105
|
-
|
|
106
|
-
context.trace(`Validating the '${definedAssertionString}' declared defined assertion...`);
|
|
107
|
-
validatesWhenDeclared = continuation(state, context);
|
|
108
|
-
if (validatesWhenDeclared) {
|
|
109
|
-
context.debug(`...validated the '${definedAssertionString}' declared defined assertion.`);
|
|
110
|
-
}
|
|
87
|
+
if (!declared) {
|
|
88
|
+
return back();
|
|
111
89
|
}
|
|
112
|
-
|
|
90
|
+
const definedAssertionString = this.getString(); ///
|
|
91
|
+
context.trace(`Validating the '${definedAssertionString}' declared defined assertion...`);
|
|
92
|
+
context.debug(`...validated the '${definedAssertionString}' declared defined assertion.`);
|
|
93
|
+
return forward(state, context, back);
|
|
113
94
|
}
|
|
114
|
-
validateWhenDerived(state, context,
|
|
115
|
-
let validatesWhenDerived = false;
|
|
95
|
+
validateWhenDerived(state, context, forward, back) {
|
|
116
96
|
const derived = (0, _state.isDerived)(state);
|
|
117
|
-
if (derived) {
|
|
118
|
-
|
|
119
|
-
context.trace(`Validating the '${definedAssertionString}' derived defined assertion...`);
|
|
120
|
-
validatesWhenDerived = validateWhenDerived(this.term, this.negated, context, (context)=>{
|
|
121
|
-
continuation(state, context);
|
|
122
|
-
});
|
|
123
|
-
if (validatesWhenDerived) {
|
|
124
|
-
context.debug(`...validated the '${definedAssertionString}' derived defined assertion.`);
|
|
125
|
-
}
|
|
97
|
+
if (!derived) {
|
|
98
|
+
return back();
|
|
126
99
|
}
|
|
127
|
-
|
|
100
|
+
const definedAssertionString = this.getString(); ///
|
|
101
|
+
context.trace(`Validating the '${definedAssertionString}' derived defined assertion...`);
|
|
102
|
+
return validateWhenDerived(this.term, this.negated, context, (context, back)=>{
|
|
103
|
+
context.debug(`...validated the '${definedAssertionString}' derived defined assertion.`);
|
|
104
|
+
return forward(state, context, back);
|
|
105
|
+
}, back);
|
|
128
106
|
}
|
|
129
|
-
unifyIndependently(generalContext, specificContext,
|
|
107
|
+
unifyIndependently(generalContext, specificContext, forward, back) {
|
|
108
|
+
debugger;
|
|
130
109
|
let unifiesIndependently = false;
|
|
131
110
|
const context = specificContext, definedAssertionString = this.getString(); ///
|
|
132
111
|
context.trace(`Unifying the '${definedAssertionString}' defined assertion independently...`);
|
|
@@ -171,19 +150,19 @@ function isVariableDefined(variable, context) {
|
|
|
171
150
|
}), variableDefined = variableMatchesDefinedVariable; ///
|
|
172
151
|
return variableDefined;
|
|
173
152
|
}
|
|
174
|
-
function validateWhenDerived(term, negated, context,
|
|
175
|
-
let validatesWhenDerived = false;
|
|
153
|
+
function validateWhenDerived(term, negated, context, forward, back) {
|
|
176
154
|
const variableIdentifier = term.getVariableIdentifier(), declaredDariable = context.findDeclaredVariableByVariableIdentifier(variableIdentifier), declaredDariableDefined = isVariableDefined(declaredDariable, context);
|
|
155
|
+
let validatesWhenDerived = false;
|
|
177
156
|
if (!negated && declaredDariableDefined) {
|
|
178
157
|
validatesWhenDerived = true;
|
|
179
158
|
}
|
|
180
159
|
if (negated && !declaredDariableDefined) {
|
|
181
160
|
validatesWhenDerived = true;
|
|
182
161
|
}
|
|
183
|
-
if (validatesWhenDerived) {
|
|
184
|
-
|
|
162
|
+
if (!validatesWhenDerived) {
|
|
163
|
+
return back();
|
|
185
164
|
}
|
|
186
|
-
return
|
|
165
|
+
return forward(context, back);
|
|
187
166
|
}
|
|
188
167
|
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc0RlY2xhcmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VxdWl2YWxlbmNlc1wiO1xuaW1wb3J0IHsgdGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUsIG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlLCBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBicmVha1BvaW50RnJvbUpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWZpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybVxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICB0ZXJtVmFsaWRhdGVzID0gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSBmYWxzZVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmIChkZWNsYXJlZCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlY2xhcmVkO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVmaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZmluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBuZXcgRGVmaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBpc1ZhcmlhYmxlRGVmaW5lZCh2YXJpYWJsZSwgY29udGV4dCkge1xuICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXMgPSBbXTtcblxuICBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzKGVxdWl2YWxlbmNlcywgZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgY29uc3QgdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5zb21lKChkZWZpbmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGUuaXNFcXVhbFRvKHZhcmlhYmxlKTtcblxuICAgICAgICAgIGlmIChkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPT09IHZhcmlhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB2YXJpYWJsZURlZmluZWQgPSB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGU7IC8vL1xuXG4gIHJldHVybiB2YXJpYWJsZURlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgbmVnYXRlZCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm0uZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkRGFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZURlZmluZWQgPSBpc1ZhcmlhYmxlRGVmaW5lZChkZWNsYXJlZERhcmlhYmxlLCBjb250ZXh0KTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn1cbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldERlZmluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsImRlZmluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzZXJ0aW9uIiwidGVybVZhbGlkYXRlcyIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlIiwic29tZSIsImRlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZURlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkb0M7a0VBRWQ7MEJBRUM7eUJBQ0s7dUJBQ1U7NkJBQ007K0JBQ0M7OEJBQ1k7eUJBQzBEOzs7Ozs7QUFFbkgsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyx5QkFBeUJDLGtCQUFTO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLENBQUU7UUFDNUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7SUFDakI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0YsT0FBTztJQUNyQjtJQUVBRywwQkFBMEI7UUFDeEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLHVCQUF1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
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlLCBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpcztcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBkZWJ1Z2dlclxuXG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVmaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZmluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBuZXcgRGVmaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBpc1ZhcmlhYmxlRGVmaW5lZCh2YXJpYWJsZSwgY29udGV4dCkge1xuICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXMgPSBbXTtcblxuICBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzKGVxdWl2YWxlbmNlcywgZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgY29uc3QgdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5zb21lKChkZWZpbmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGUuaXNFcXVhbFRvKHZhcmlhYmxlKTtcblxuICAgICAgICAgIGlmIChkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPT09IHZhcmlhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB2YXJpYWJsZURlZmluZWQgPSB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGU7IC8vL1xuXG4gIHJldHVybiB2YXJpYWJsZURlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgbmVnYXRlZCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0ZXJtLmdldFZhcmlhYmxlSWRlbnRpZmllcigpLFxuICAgICAgICBkZWNsYXJlZERhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciksXG4gICAgICAgIGRlY2xhcmVkRGFyaWFibGVEZWZpbmVkID0gaXNWYXJpYWJsZURlZmluZWQoZGVjbGFyZWREYXJpYWJsZSwgY29udGV4dCk7XG5cbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKCFuZWdhdGVkICYmIGRlY2xhcmVkRGFyaWFibGVEZWZpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG5lZ2F0ZWQgJiYgIWRlY2xhcmVkRGFyaWFibGVEZWZpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldERlZmluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZmluZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwiY29udGludWF0aW9uIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZSIsImVxdWl2YWxlbmNlcyIsImdldEVxdWl2YWxlbmNlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSIsInNvbWUiLCJkZWZpbmVkVmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZERhcmlhYmxlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGVEZWZpbmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7Z0NBZjBEO2tFQUVwQzswQkFFQzt5QkFDSzt1QkFDVTs2QkFDTTsrQkFDQzs4QkFDWTt5QkFDMEQ7Ozs7OztBQUVuSCxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQixFQUN2QyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFH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
|
|
@@ -22,17 +22,15 @@ const _default = (0, _elements.define)(class Conjecture extends _claim.default {
|
|
|
22
22
|
const node = this.getNode(), conjectureNode = node; ///
|
|
23
23
|
return conjectureNode;
|
|
24
24
|
}
|
|
25
|
-
verify = breakable(function(context,
|
|
26
|
-
const
|
|
27
|
-
context.trace(`Verifying the '${
|
|
28
|
-
return this.verifyEx(context, (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return continuation(verifies, context);
|
|
35
|
-
});
|
|
25
|
+
verify = breakable(function(context, forward, back) {
|
|
26
|
+
const conjecttureString = this.getString(); ///
|
|
27
|
+
context.trace(`Verifying the '${conjecttureString}' conjectture...`);
|
|
28
|
+
return this.verifyEx(context, (context, back)=>{
|
|
29
|
+
const conjectture = this; ///
|
|
30
|
+
context.addConjecture(conjectture);
|
|
31
|
+
context.debug(`...verified the '${conjecttureString}' conjectture.`);
|
|
32
|
+
return forward(context, back);
|
|
33
|
+
}, back);
|
|
36
34
|
});
|
|
37
35
|
static name = "Conjecture";
|
|
38
36
|
static fromJSON(json, context) {
|
|
@@ -40,4 +38,4 @@ const _default = (0, _elements.define)(class Conjecture extends _claim.default {
|
|
|
40
38
|
}
|
|
41
39
|
});
|
|
42
40
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uamVjdHVyZSBleHRlbmRzIENsYWltIHtcbiAgZ2V0Q29uamVjdHVyZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbmplY3R1cmVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVOb2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uamVjdHR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uamVjdHR1cmVTdHJpbmd9JyBjb25qZWN0dHVyZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudmVyaWZ5RXgoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbmplY3R0dXJlID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQ29uamVjdHVyZShjb25qZWN0dHVyZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25qZWN0dHVyZVN0cmluZ30nIGNvbmplY3R0dXJlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbmplY3R1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gQ2xhaW0uZnJvbUpTT04oQ29uamVjdHVyZSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25qZWN0dXJlIiwiQ2xhaW0iLCJnZXRDb25qZWN0dXJlTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiY29uamVjdHVyZU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJjb25qZWN0dHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5RXgiLCJjb25qZWN0dHVyZSIsImFkZENvbmplY3R1cmUiLCJkZWJ1ZyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVJvQzs4REFFbEI7MEJBRUs7Ozs7OztBQUV2QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLGNBQUs7SUFDbERDLG9CQUFvQjtRQUNsQixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsaUJBQWlCRixNQUFPLEdBQUc7UUFFakMsT0FBT0U7SUFDVDtJQUVBQyxTQUFTVCxVQUFVLFNBQVVVLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO1FBQ2pELE1BQU1DLG9CQUFvQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRS9DSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGtCQUFrQixnQkFBZ0IsQ0FBQztRQUVuRSxPQUFPLElBQUksQ0FBQ0csUUFBUSxDQUFDTixTQUFTLENBQUNBLFNBQVNFO1lBQ3RDLE1BQU1LLGNBQWMsSUFBSSxFQUFFLEdBQUc7WUFFN0JQLFFBQVFRLGFBQWEsQ0FBQ0Q7WUFFdEJQLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFTixrQkFBa0IsY0FBYyxDQUFDO1lBRW5FLE9BQU9GLFFBQVFELFNBQVNFO1FBQzFCLEdBQUdBO0lBQ0wsR0FBRztJQUVILE9BQU9RLE9BQU8sYUFBYTtJQUUzQixPQUFPQyxTQUFTQyxJQUFJLEVBQUVaLE9BQU8sRUFBRTtRQUFFLE9BQU9OLGNBQUssQ0FBQ2lCLFFBQVEsQ0FBQ2xCLFlBQVltQixNQUFNWjtJQUFVO0FBQ3JGIn0=
|