occam-verify-cli 1.0.382 → 1.0.385

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/lib/action/verify.js +2 -1
  2. package/lib/context/file.js +2 -2
  3. package/lib/context/release.js +2 -2
  4. package/lib/mixins/statement/verify.js +3 -3
  5. package/lib/mixins/step/unify.js +4 -4
  6. package/lib/mixins/term/verify.js +4 -4
  7. package/lib/ontology/assertion/contained.js +316 -0
  8. package/lib/ontology/assertion/defined.js +290 -0
  9. package/lib/ontology/assertion/property.js +271 -0
  10. package/lib/ontology/assertion/satisfies.js +254 -0
  11. package/lib/ontology/assertion/subproof.js +186 -0
  12. package/lib/ontology/assertion/type.js +252 -0
  13. package/lib/{dom → ontology}/axiom.js +3 -3
  14. package/lib/{dom → ontology}/combinator/bracketed.js +4 -4
  15. package/lib/ontology/combinator.js +141 -0
  16. package/lib/ontology/conclusion.js +172 -0
  17. package/lib/{dom → ontology}/conjecture.js +3 -3
  18. package/lib/{dom → ontology}/constructor/bracketed.js +5 -5
  19. package/lib/ontology/constructor.js +171 -0
  20. package/lib/ontology/declaration/combinator.js +168 -0
  21. package/lib/ontology/declaration/complexType.js +346 -0
  22. package/lib/ontology/declaration/constructor.js +199 -0
  23. package/lib/ontology/declaration/metavariable.js +209 -0
  24. package/lib/ontology/declaration/simpleType.js +243 -0
  25. package/lib/ontology/declaration/typePrefix.js +181 -0
  26. package/lib/ontology/declaration/variable.js +197 -0
  27. package/lib/ontology/declaration.js +360 -0
  28. package/lib/ontology/deduction.js +186 -0
  29. package/lib/ontology/derivation.js +155 -0
  30. package/lib/ontology/equality.js +288 -0
  31. package/lib/{dom → ontology}/error.js +3 -3
  32. package/lib/ontology/frame.js +362 -0
  33. package/lib/ontology/hypothesis.js +190 -0
  34. package/lib/ontology/judgement.js +241 -0
  35. package/lib/ontology/label.js +199 -0
  36. package/lib/{dom → ontology}/lemma.js +3 -3
  37. package/lib/{dom → ontology}/metaLemma.js +3 -3
  38. package/lib/{dom → ontology}/metaType.js +3 -3
  39. package/lib/{dom → ontology}/metatheorem.js +3 -3
  40. package/lib/ontology/metavariable.js +504 -0
  41. package/lib/{dom → ontology}/parameter.js +3 -3
  42. package/lib/ontology/premise.js +271 -0
  43. package/lib/ontology/procedureCall.js +243 -0
  44. package/lib/{dom → ontology}/procedureReference.js +3 -3
  45. package/lib/{dom → ontology}/proof.js +4 -4
  46. package/lib/ontology/property.js +166 -0
  47. package/lib/ontology/propertyRelation.js +202 -0
  48. package/lib/ontology/reference.js +293 -0
  49. package/lib/ontology/rule.js +375 -0
  50. package/lib/ontology/section.js +255 -0
  51. package/lib/ontology/signature.js +220 -0
  52. package/lib/{dom → ontology}/statement.js +3 -3
  53. package/lib/ontology/step.js +283 -0
  54. package/lib/ontology/subDerivation.js +147 -0
  55. package/lib/ontology/subproof.js +266 -0
  56. package/lib/ontology/substitution/frame.js +216 -0
  57. package/lib/{dom → ontology}/substitution/reference.js +3 -3
  58. package/lib/{dom → ontology}/substitution/statement.js +3 -3
  59. package/lib/ontology/substitution/term.js +230 -0
  60. package/lib/ontology/substitution.js +207 -0
  61. package/lib/ontology/supposition.js +283 -0
  62. package/lib/ontology/term.js +339 -0
  63. package/lib/{dom → ontology}/theorem.js +3 -3
  64. package/lib/ontology/topLevelAssertion.js +432 -0
  65. package/lib/ontology/topLevelMetaAssertion.js +235 -0
  66. package/lib/ontology/type.js +556 -0
  67. package/lib/ontology/typePrefix.js +99 -0
  68. package/lib/ontology/variable.js +331 -0
  69. package/lib/ontology.js +27 -0
  70. package/lib/preamble.js +60 -60
  71. package/lib/prepare.js +25 -0
  72. package/lib/unifier/intrinsicLevel.js +3 -3
  73. package/lib/unifier/metaLevel.js +7 -7
  74. package/lib/unifier/metavariable.js +3 -3
  75. package/lib/unifier/statementWithCombinator.js +5 -5
  76. package/lib/unifier/termWithConstructor.js +3 -3
  77. package/lib/utilities/brackets.js +5 -5
  78. package/lib/utilities/context.js +12 -12
  79. package/lib/utilities/fileSystem.js +2 -2
  80. package/lib/utilities/json.js +30 -30
  81. package/lib/utilities/node.js +7 -7
  82. package/lib/utilities/release.js +12 -4
  83. package/lib/utilities/releaseContext.js +1 -1
  84. package/lib/utilities/substitutions.js +6 -6
  85. package/lib/utilities/type.js +2 -2
  86. package/lib/verifier/combinator.js +4 -4
  87. package/lib/verifier/constructor.js +3 -3
  88. package/lib/verifier/topLevel.js +18 -18
  89. package/package.json +1 -1
  90. package/src/action/verify.js +2 -0
  91. package/src/context/file.js +1 -1
  92. package/src/context/release.js +1 -1
  93. package/src/mixins/statement/verify.js +2 -2
  94. package/src/mixins/step/unify.js +3 -3
  95. package/src/mixins/term/verify.js +3 -3
  96. package/src/{dom → ontology}/assertion/contained.js +4 -4
  97. package/src/{dom → ontology}/assertion/defined.js +6 -6
  98. package/src/{dom → ontology}/assertion/property.js +5 -5
  99. package/src/{dom → ontology}/assertion/satisfies.js +5 -5
  100. package/src/{dom → ontology}/assertion/subproof.js +4 -4
  101. package/src/{dom → ontology}/assertion/type.js +5 -5
  102. package/src/{dom → ontology}/axiom.js +2 -2
  103. package/src/{dom → ontology}/combinator/bracketed.js +4 -4
  104. package/src/{dom → ontology}/combinator.js +4 -4
  105. package/src/{dom → ontology}/conclusion.js +4 -4
  106. package/src/{dom → ontology}/conjecture.js +2 -2
  107. package/src/{dom → ontology}/constructor/bracketed.js +5 -5
  108. package/src/{dom → ontology}/constructor.js +5 -5
  109. package/src/{dom → ontology}/declaration/combinator.js +4 -4
  110. package/src/{dom → ontology}/declaration/complexType.js +4 -4
  111. package/src/{dom → ontology}/declaration/constructor.js +4 -4
  112. package/src/{dom → ontology}/declaration/metavariable.js +5 -5
  113. package/src/{dom → ontology}/declaration/simpleType.js +4 -4
  114. package/src/{dom → ontology}/declaration/typePrefix.js +4 -4
  115. package/src/{dom → ontology}/declaration/variable.js +4 -4
  116. package/src/{dom → ontology}/declaration.js +5 -5
  117. package/src/{dom → ontology}/deduction.js +4 -4
  118. package/src/{dom → ontology}/derivation.js +4 -4
  119. package/src/{dom → ontology}/equality.js +6 -6
  120. package/src/{dom → ontology}/error.js +2 -2
  121. package/src/{dom → ontology}/frame.js +6 -6
  122. package/src/{dom → ontology}/hypothesis.js +5 -6
  123. package/src/{dom → ontology}/judgement.js +5 -5
  124. package/src/{dom → ontology}/label.js +4 -4
  125. package/src/{dom → ontology}/lemma.js +2 -2
  126. package/src/{dom → ontology}/metaLemma.js +2 -2
  127. package/src/{dom → ontology}/metaType.js +2 -2
  128. package/src/{dom → ontology}/metatheorem.js +2 -2
  129. package/src/{dom → ontology}/metavariable.js +8 -8
  130. package/src/{dom → ontology}/parameter.js +2 -2
  131. package/src/{dom → ontology}/premise.js +5 -5
  132. package/src/{dom → ontology}/procedureCall.js +5 -5
  133. package/src/{dom → ontology}/procedureReference.js +2 -2
  134. package/src/{dom → ontology}/proof.js +4 -4
  135. package/src/{dom → ontology}/property.js +4 -4
  136. package/src/{dom → ontology}/propertyRelation.js +4 -4
  137. package/src/{dom → ontology}/reference.js +6 -6
  138. package/src/{dom → ontology}/rule.js +7 -7
  139. package/src/{dom → ontology}/section.js +8 -8
  140. package/src/{dom → ontology}/signature.js +4 -4
  141. package/src/{dom → ontology}/statement.js +2 -2
  142. package/src/{dom → ontology}/step.js +4 -4
  143. package/src/{dom → ontology}/subDerivation.js +4 -4
  144. package/src/{dom → ontology}/subproof.js +5 -5
  145. package/src/{dom → ontology}/substitution/frame.js +4 -4
  146. package/src/{dom → ontology}/substitution/reference.js +2 -2
  147. package/src/{dom → ontology}/substitution/statement.js +2 -2
  148. package/src/{dom → ontology}/substitution/term.js +5 -5
  149. package/src/{dom → ontology}/supposition.js +5 -5
  150. package/src/{dom → ontology}/term.js +6 -6
  151. package/src/{dom → ontology}/theorem.js +2 -2
  152. package/src/{dom → ontology}/topLevelAssertion.js +6 -6
  153. package/src/{dom → ontology}/topLevelMetaAssertion.js +2 -2
  154. package/src/{dom → ontology}/type.js +4 -4
  155. package/src/{dom → ontology}/typePrefix.js +3 -5
  156. package/src/{dom → ontology}/variable.js +6 -6
  157. package/src/ontology.js +13 -0
  158. package/src/preamble.js +59 -59
  159. package/src/{configure.js → prepare.js} +1 -1
  160. package/src/unifier/intrinsicLevel.js +2 -2
  161. package/src/unifier/metaLevel.js +6 -6
  162. package/src/unifier/metavariable.js +2 -2
  163. package/src/unifier/statementWithCombinator.js +4 -4
  164. package/src/unifier/termWithConstructor.js +2 -2
  165. package/src/utilities/brackets.js +4 -4
  166. package/src/utilities/context.js +11 -11
  167. package/src/utilities/fileSystem.js +1 -1
  168. package/src/utilities/json.js +29 -29
  169. package/src/utilities/node.js +6 -6
  170. package/src/utilities/release.js +1 -1
  171. package/src/utilities/releaseContext.js +3 -3
  172. package/src/utilities/substitutions.js +5 -5
  173. package/src/utilities/type.js +1 -1
  174. package/src/verifier/combinator.js +3 -3
  175. package/src/verifier/constructor.js +2 -2
  176. package/src/verifier/topLevel.js +17 -17
  177. package/verify.js +2 -2
  178. package/lib/configure.js +0 -25
  179. package/lib/dom/assertion/contained.js +0 -316
  180. package/lib/dom/assertion/defined.js +0 -290
  181. package/lib/dom/assertion/property.js +0 -271
  182. package/lib/dom/assertion/satisfies.js +0 -254
  183. package/lib/dom/assertion/subproof.js +0 -186
  184. package/lib/dom/assertion/type.js +0 -252
  185. package/lib/dom/combinator.js +0 -141
  186. package/lib/dom/conclusion.js +0 -172
  187. package/lib/dom/constructor.js +0 -171
  188. package/lib/dom/declaration/combinator.js +0 -168
  189. package/lib/dom/declaration/complexType.js +0 -346
  190. package/lib/dom/declaration/constructor.js +0 -199
  191. package/lib/dom/declaration/metavariable.js +0 -209
  192. package/lib/dom/declaration/simpleType.js +0 -243
  193. package/lib/dom/declaration/typePrefix.js +0 -181
  194. package/lib/dom/declaration/variable.js +0 -197
  195. package/lib/dom/declaration.js +0 -360
  196. package/lib/dom/deduction.js +0 -186
  197. package/lib/dom/derivation.js +0 -155
  198. package/lib/dom/equality.js +0 -288
  199. package/lib/dom/frame.js +0 -362
  200. package/lib/dom/hypothesis.js +0 -191
  201. package/lib/dom/judgement.js +0 -241
  202. package/lib/dom/label.js +0 -199
  203. package/lib/dom/metavariable.js +0 -504
  204. package/lib/dom/premise.js +0 -271
  205. package/lib/dom/procedureCall.js +0 -243
  206. package/lib/dom/property.js +0 -166
  207. package/lib/dom/propertyRelation.js +0 -202
  208. package/lib/dom/reference.js +0 -293
  209. package/lib/dom/rule.js +0 -375
  210. package/lib/dom/section.js +0 -255
  211. package/lib/dom/signature.js +0 -220
  212. package/lib/dom/step.js +0 -283
  213. package/lib/dom/subDerivation.js +0 -147
  214. package/lib/dom/subproof.js +0 -266
  215. package/lib/dom/substitution/frame.js +0 -216
  216. package/lib/dom/substitution/term.js +0 -230
  217. package/lib/dom/substitution.js +0 -207
  218. package/lib/dom/supposition.js +0 -283
  219. package/lib/dom/term.js +0 -339
  220. package/lib/dom/topLevelAssertion.js +0 -432
  221. package/lib/dom/topLevelMetaAssertion.js +0 -235
  222. package/lib/dom/type.js +0 -556
  223. package/lib/dom/typePrefix.js +0 -100
  224. package/lib/dom/variable.js +0 -331
  225. package/lib/dom.js +0 -27
  226. package/src/dom.js +0 -13
  227. /package/src/{dom → ontology}/substitution.js +0 -0
@@ -0,0 +1,254 @@
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 _ontology = /*#__PURE__*/ _interop_require_wildcard(require("../../ontology"));
12
+ var _substitutions = /*#__PURE__*/ _interop_require_default(require("../../substitutions"));
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _defineProperties(target, props) {
19
+ for(var i = 0; i < props.length; i++){
20
+ var descriptor = props[i];
21
+ descriptor.enumerable = descriptor.enumerable || false;
22
+ descriptor.configurable = true;
23
+ if ("value" in descriptor) descriptor.writable = true;
24
+ Object.defineProperty(target, descriptor.key, descriptor);
25
+ }
26
+ }
27
+ function _create_class(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ return Constructor;
31
+ }
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) {
34
+ Object.defineProperty(obj, key, {
35
+ value: value,
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true
39
+ });
40
+ } else {
41
+ obj[key] = value;
42
+ }
43
+ return obj;
44
+ }
45
+ function _interop_require_default(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ default: obj
48
+ };
49
+ }
50
+ function _getRequireWildcardCache(nodeInterop) {
51
+ if (typeof WeakMap !== "function") return null;
52
+ var cacheBabelInterop = new WeakMap();
53
+ var cacheNodeInterop = new WeakMap();
54
+ return (_getRequireWildcardCache = function(nodeInterop) {
55
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
56
+ })(nodeInterop);
57
+ }
58
+ function _interop_require_wildcard(obj, nodeInterop) {
59
+ if (!nodeInterop && obj && obj.__esModule) {
60
+ return obj;
61
+ }
62
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
63
+ return {
64
+ default: obj
65
+ };
66
+ }
67
+ var cache = _getRequireWildcardCache(nodeInterop);
68
+ if (cache && cache.has(obj)) {
69
+ return cache.get(obj);
70
+ }
71
+ var newObj = {
72
+ __proto__: null
73
+ };
74
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
75
+ for(var key in obj){
76
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
77
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
78
+ if (desc && (desc.get || desc.set)) {
79
+ Object.defineProperty(newObj, key, desc);
80
+ } else {
81
+ newObj[key] = obj[key];
82
+ }
83
+ }
84
+ }
85
+ newObj.default = obj;
86
+ if (cache) {
87
+ cache.set(obj, newObj);
88
+ }
89
+ return newObj;
90
+ }
91
+ var _SatisfiesAssertion;
92
+ var _default = (0, _ontology.define)((_SatisfiesAssertion = /*#__PURE__*/ function() {
93
+ function SatisfiesAssertion(string, node, tokens, signature, reference) {
94
+ _class_call_check(this, SatisfiesAssertion);
95
+ this.string = string;
96
+ this.node = node;
97
+ this.tokens = tokens;
98
+ this.signature = signature;
99
+ this.reference = reference;
100
+ }
101
+ _create_class(SatisfiesAssertion, [
102
+ {
103
+ key: "getString",
104
+ value: function getString() {
105
+ return this.string;
106
+ }
107
+ },
108
+ {
109
+ key: "getNode",
110
+ value: function getNode() {
111
+ return this.node;
112
+ }
113
+ },
114
+ {
115
+ key: "getTokens",
116
+ value: function getTokens() {
117
+ return this.tokens;
118
+ }
119
+ },
120
+ {
121
+ key: "getSignature",
122
+ value: function getSignature() {
123
+ return this.signature;
124
+ }
125
+ },
126
+ {
127
+ key: "getReference",
128
+ value: function getReference() {
129
+ return this.reference;
130
+ }
131
+ },
132
+ {
133
+ key: "compareSubstitutions",
134
+ value: function compareSubstitutions(substitutions, context) {
135
+ return this.signature.compareSubstitutions(substitutions, context);
136
+ }
137
+ },
138
+ {
139
+ key: "correlateSubstitutions",
140
+ value: function correlateSubstitutions(substitutions, context) {
141
+ return this.signature.correlateSubstitutions(substitutions, context);
142
+ }
143
+ },
144
+ {
145
+ key: "verify",
146
+ value: function verify(assignments, stated, context) {
147
+ var verifies = false;
148
+ var satisfiesAssertionString = this.string; ///
149
+ context.trace("Verifying the '".concat(satisfiesAssertionString, "' satisfies assertion..."));
150
+ var signatureVerifies = this.verifySignature(assignments, stated, context);
151
+ if (signatureVerifies) {
152
+ var referenceVerifies = this.verifyReference(assignments, stated, context);
153
+ verifies = referenceVerifies; ///
154
+ }
155
+ if (verifies) {
156
+ context.debug("...verified the '".concat(satisfiesAssertionString, "' satisfies assertion."));
157
+ }
158
+ return verifies;
159
+ }
160
+ },
161
+ {
162
+ key: "verifySignature",
163
+ value: function verifySignature(assignments, stated, context) {
164
+ var signatureVerifies = this.signature.verify(context);
165
+ return signatureVerifies;
166
+ }
167
+ },
168
+ {
169
+ key: "verifyReference",
170
+ value: function verifyReference(assignments, stated, context) {
171
+ var referenceVerifies = false;
172
+ var referenceString = this.reference.getString();
173
+ context.trace("Verifying the '".concat(referenceString, "' reference..."));
174
+ var axiom = context.findAxiomByReference(this.reference, context);
175
+ if (axiom !== null) {
176
+ var axiomSatisfiable = axiom.isSatisfiable();
177
+ if (axiomSatisfiable) {
178
+ referenceVerifies = true;
179
+ }
180
+ }
181
+ if (referenceVerifies) {
182
+ context.debug("...verified the '".concat(referenceString, "' reference."));
183
+ }
184
+ return referenceVerifies;
185
+ }
186
+ },
187
+ {
188
+ key: "unifyStatementAndStepsOrSubproofs",
189
+ value: function unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, context) {
190
+ var statementUnifies = false;
191
+ var statementString = statement.getString(), satisfiesAssertionString = this.string; ///
192
+ context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(satisfiesAssertionString, "' satisfies assertion..."));
193
+ this.signature.verify(context);
194
+ var axiom = context.findAxiomByReference(this.reference), satisfiable = axiom.isSatisfiable();
195
+ if (satisfiable) {
196
+ var substitutions;
197
+ substitutions = _substitutions.default.fromNothing();
198
+ var signatureMatches = axiom.matchSignature(this.signature, substitutions, context);
199
+ if (signatureMatches) {
200
+ var substitutionsB = substitutions; ///
201
+ substitutions = _substitutions.default.fromNothing();
202
+ statementUnifies = axiom.unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, substitutions, context);
203
+ if (statementUnifies) {
204
+ var substitutionsA = substitutions, substitutionsMatch = substitutionsA.correlateSubstitutions(substitutionsB);
205
+ if (!substitutionsMatch) {
206
+ var substitutionsAString = substitutionsA.asString(), substitutionsBString = substitutionsB.asString();
207
+ context.trace("THe signature's ".concat(substitutionsBString, " substitutions do not correlate with the unification's ").concat(substitutionsAString, " substitutions."));
208
+ statementUnifies = false;
209
+ }
210
+ }
211
+ }
212
+ }
213
+ if (statementUnifies) {
214
+ context.debug("...unified the '".concat(statementString, "' statement with the '").concat(satisfiesAssertionString, "' satisfies assertion."));
215
+ }
216
+ return statementUnifies;
217
+ }
218
+ }
219
+ ], [
220
+ {
221
+ key: "fromStepNode",
222
+ value: function fromStepNode(stepNode, context) {
223
+ var satisfiesAssertion = null;
224
+ var satisfiesAssertionNode = stepNode.getSatisfiedAssertionNode();
225
+ if (satisfiesAssertionNode !== null) {
226
+ satisfiesAssertion = satisfiesAssertionFromSatisfiesAssertionNode(satisfiesAssertionNode, context);
227
+ }
228
+ return satisfiesAssertion;
229
+ }
230
+ },
231
+ {
232
+ key: "fromStatementNode",
233
+ value: function fromStatementNode(statementNode, context) {
234
+ var satisfiesAssertion = null;
235
+ var satisfiesAssertionNode = statementNode.getSatisfiedAssertionNode();
236
+ if (satisfiesAssertionNode !== null) {
237
+ satisfiesAssertion = satisfiesAssertionFromSatisfiesAssertionNode(satisfiesAssertionNode, context);
238
+ }
239
+ return satisfiesAssertion;
240
+ }
241
+ }
242
+ ]);
243
+ return SatisfiesAssertion;
244
+ }(), _define_property(_SatisfiesAssertion, "name", "SatisfiesAssertion"), _SatisfiesAssertion));
245
+ function signatureFromSatisfiesAssertionNode(satisfiesAssertionNode, context) {
246
+ var Signature = _ontology.default.Signature, signatureNode = satisfiesAssertionNode.getSignatureNode(), signature = Signature.fromSignatureNode(signatureNode, context);
247
+ return signature;
248
+ }
249
+ function satisfiesAssertionFromSatisfiesAssertionNode(satisfiesAssertionNode, context) {
250
+ var Reference = _ontology.default.Reference, SatisfiesAssertion = _ontology.default.SatisfiesAssertion, node = satisfiesAssertionNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), signature = signatureFromSatisfiesAssertionNode(satisfiesAssertionNode, context), reference = Reference.fromSatisfiesAssertionNode(satisfiesAssertionNode, context), satisfiesAssertion = new SatisfiesAssertion(string, node, tokens, signature, reference);
251
+ return satisfiesAssertion;
252
+ }
253
+
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vbnRvbG9neS9hc3NlcnRpb24vc2F0aXNmaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgb250b2xvZ3kgZnJvbSBcIi4uLy4uL29udG9sb2d5XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9vbnRvbG9neVwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi4vLi4vc3Vic3RpdHV0aW9uc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2F0aXNmaWVzQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCB0b2tlbnMsIHNpZ25hdHVyZSwgcmVmZXJlbmNlKSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXRUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25hdHVyZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBjb21wYXJlU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7IHJldHVybiB0aGlzLnNpZ25hdHVyZS5jb21wYXJlU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBjb250ZXh0KTsgfVxuXG4gIGNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCkgeyByZXR1cm4gdGhpcy5zaWduYXR1cmUuY29ycmVsYXRlU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBjb250ZXh0KTsgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NhdGlzZmllc0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlTaWduYXR1cmUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAoc2lnbmF0dXJlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlSZWZlcmVuY2UoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVzID0gcmVmZXJlbmNlVmVyaWZpZXM7IC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NhdGlzZmllc0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZmllcyBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U2lnbmF0dXJlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVWZXJpZmllcyA9IHRoaXMuc2lnbmF0dXJlLnZlcmlmeShjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVJlZmVyZW5jZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UodGhpcy5yZWZlcmVuY2UsIGNvbnRleHQpO1xuXG4gICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBheGlvbVNhdGlzZmlhYmxlID0gYXhpb20uaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgICBpZiAoYXhpb21TYXRpc2ZpYWJsZSkge1xuICAgICAgICByZWZlcmVuY2VWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlZmVyZW5jZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWZXJpZmllcztcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50QW5kU3RlcHNPclN1YnByb29mcyhzdGF0ZW1lbnQsIHN0ZXBzT3JTdWJwcm9vZnMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHNhdGlzZmllc0Fzc2VydGlvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c2F0aXNmaWVzQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmaWVzIGFzc2VydGlvbi4uLmApO1xuXG4gICAgdGhpcy5zaWduYXR1cmUudmVyaWZ5KGNvbnRleHQpO1xuXG4gICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHRoaXMucmVmZXJlbmNlKSxcbiAgICAgICAgICBzYXRpc2ZpYWJsZSA9IGF4aW9tLmlzU2F0aXNmaWFibGUoKTtcblxuICAgIGlmIChzYXRpc2ZpYWJsZSkge1xuICAgICAgbGV0IHN1YnN0aXR1dGlvbnM7XG5cbiAgICAgIHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZU1hdGNoZXMgPSBheGlvbS5tYXRjaFNpZ25hdHVyZSh0aGlzLnNpZ25hdHVyZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzaWduYXR1cmVNYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNCID0gc3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKTtcblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gYXhpb20udW5pZnlTdGF0ZW1lbnRBbmRTdGVwc09yU3VicHJvb2ZzKHN0YXRlbWVudCwgc3RlcHNPclN1YnByb29mcywgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25zQSA9IHN1YnN0aXR1dGlvbnMsIC8vL1xuICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNNYXRjaCA9IHN1YnN0aXR1dGlvbnNBLmNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9uc0IpO1xuXG4gICAgICAgICAgaWYgKCFzdWJzdGl0dXRpb25zTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNBU3RyaW5nID0gc3Vic3RpdHV0aW9uc0EuYXNTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNCU3RyaW5nID0gc3Vic3RpdHV0aW9uc0IuYXNTdHJpbmcoKTtcblxuICAgICAgICAgICAgY29udGV4dC50cmFjZShgVEhlIHNpZ25hdHVyZSdzICR7c3Vic3RpdHV0aW9uc0JTdHJpbmd9IHN1YnN0aXR1dGlvbnMgZG8gbm90IGNvcnJlbGF0ZSB3aXRoIHRoZSB1bmlmaWNhdGlvbidzICR7c3Vic3RpdHV0aW9uc0FTdHJpbmd9IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3NhdGlzZmllc0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZmllcyBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2F0aXNmaWVzQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCkge1xuICAgIGxldCBzYXRpc2ZpZXNBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc2F0aXNmaWVzQXNzZXJ0aW9uTm9kZSA9IHN0ZXBOb2RlLmdldFNhdGlzZmllZEFzc2VydGlvbk5vZGUoKTtcblxuICAgIGlmIChzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU2F0aXNmaWVzQXNzZXJ0aW9uTm9kZShzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2F0aXNmaWVzQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2F0aXNmaWVzQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHNhdGlzZmllc0Fzc2VydGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFNhdGlzZmllZEFzc2VydGlvbk5vZGUoKTtcblxuICAgIGlmIChzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU2F0aXNmaWVzQXNzZXJ0aW9uTm9kZShzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2F0aXNmaWVzQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc2lnbmF0dXJlRnJvbVNhdGlzZmllc0Fzc2VydGlvbk5vZGUoc2F0aXNmaWVzQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gb250b2xvZ3ksXG4gICAgICAgIHNpZ25hdHVyZU5vZGUgPSBzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLmdldFNpZ25hdHVyZU5vZGUoKSxcbiAgICAgICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmZ1bmN0aW9uIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TYXRpc2ZpZXNBc3NlcnRpb25Ob2RlKHNhdGlzZmllc0Fzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZWZlcmVuY2UsIFNhdGlzZmllc0Fzc2VydGlvbiB9ID0gb250b2xvZ3ksXG4gICAgICAgIG5vZGUgPSBzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbVNhdGlzZmllc0Fzc2VydGlvbk5vZGUoc2F0aXNmaWVzQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tU2F0aXNmaWVzQXNzZXJ0aW9uTm9kZShzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gbmV3IFNhdGlzZmllc0Fzc2VydGlvbihzdHJpbmcsIG5vZGUsIHRva2Vucywgc2lnbmF0dXJlLCByZWZlcmVuY2UpO1xuXG4gIHJldHVybiBzYXRpc2ZpZXNBc3NlcnRpb247XG59XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwic3RyaW5nIiwibm9kZSIsInRva2VucyIsInNpZ25hdHVyZSIsInJlZmVyZW5jZSIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJnZXRTaWduYXR1cmUiLCJnZXRSZWZlcmVuY2UiLCJjb21wYXJlU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0IiwiY29ycmVsYXRlU3Vic3RpdHV0aW9ucyIsInZlcmlmeSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwidmVyaWZpZXMiLCJzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmciLCJ0cmFjZSIsInNpZ25hdHVyZVZlcmlmaWVzIiwidmVyaWZ5U2lnbmF0dXJlIiwicmVmZXJlbmNlVmVyaWZpZXMiLCJ2ZXJpZnlSZWZlcmVuY2UiLCJkZWJ1ZyIsInJlZmVyZW5jZVN0cmluZyIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJheGlvbVNhdGlzZmlhYmxlIiwiaXNTYXRpc2ZpYWJsZSIsInVuaWZ5U3RhdGVtZW50QW5kU3RlcHNPclN1YnByb29mcyIsInN0YXRlbWVudCIsInN0ZXBzT3JTdWJwcm9vZnMiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RhdGVtZW50U3RyaW5nIiwic2F0aXNmaWFibGUiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJzaWduYXR1cmVNYXRjaGVzIiwibWF0Y2hTaWduYXR1cmUiLCJzdWJzdGl0dXRpb25zQiIsInN1YnN0aXR1dGlvbnNBIiwic3Vic3RpdHV0aW9uc01hdGNoIiwic3Vic3RpdHV0aW9uc0FTdHJpbmciLCJhc1N0cmluZyIsInN1YnN0aXR1dGlvbnNCU3RyaW5nIiwiZnJvbVN0ZXBOb2RlIiwic3RlcE5vZGUiLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlIiwiZ2V0U2F0aXNmaWVkQXNzZXJ0aW9uTm9kZSIsInNhdGlzZmllc0Fzc2VydGlvbkZyb21TYXRpc2ZpZXNBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwibmFtZSIsInNpZ25hdHVyZUZyb21TYXRpc2ZpZXNBc3NlcnRpb25Ob2RlIiwiU2lnbmF0dXJlIiwib250b2xvZ3kiLCJzaWduYXR1cmVOb2RlIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImZyb21TaWduYXR1cmVOb2RlIiwiUmVmZXJlbmNlIiwibm9kZUFzU3RyaW5nIiwibm9kZUFzVG9rZW5zIiwiZnJvbVNhdGlzZmllc0Fzc2VydGlvbk5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7O2dFQU5xQjtvRUFJSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFMUIsV0FBZUEsSUFBQUEsZ0JBQU0sdUNBQUM7YUFBTUMsbUJBQ2RDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsU0FBUztnQ0FENUJMO1FBRXhCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7Ozs7WUFHbkJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsTUFBTTtZQUNwQjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsSUFBSTtZQUNsQjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsTUFBTTtZQUNwQjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsU0FBUztZQUN2Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsU0FBUztZQUN2Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUJDLGFBQWEsRUFBRUMsT0FBTztnQkFBSSxPQUFPLElBQUksQ0FBQ1QsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0MsZUFBZUM7WUFBVTs7O1lBRW5IQyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCRixhQUFhLEVBQUVDLE9BQU87Z0JBQUksT0FBTyxJQUFJLENBQUNULFNBQVMsQ0FBQ1Usc0JBQXNCLENBQUNGLGVBQWVDO1lBQVU7OztZQUV2SEUsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLFdBQVcsRUFBRUMsTUFBTSxFQUFFSixPQUFPO2dCQUNqQyxJQUFJSyxXQUFXO2dCQUVmLElBQU1DLDJCQUEyQixJQUFJLENBQUNsQixNQUFNLEVBQUUsR0FBRztnQkFFakRZLFFBQVFPLEtBQUssQ0FBQyxBQUFDLGtCQUEwQyxPQUF6QkQsMEJBQXlCO2dCQUV6RCxJQUFNRSxvQkFBb0IsSUFBSSxDQUFDQyxlQUFlLENBQUNOLGFBQWFDLFFBQVFKO2dCQUVwRSxJQUFJUSxtQkFBbUI7b0JBQ3JCLElBQU1FLG9CQUFvQixJQUFJLENBQUNDLGVBQWUsQ0FBQ1IsYUFBYUMsUUFBUUo7b0JBRXBFSyxXQUFXSyxtQkFBbUIsR0FBRztnQkFDbkM7Z0JBRUEsSUFBSUwsVUFBVTtvQkFDWkwsUUFBUVksS0FBSyxDQUFDLEFBQUMsb0JBQTRDLE9BQXpCTiwwQkFBeUI7Z0JBQzdEO2dCQUVBLE9BQU9EO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCTixXQUFXLEVBQUVDLE1BQU0sRUFBRUosT0FBTztnQkFDMUMsSUFBTVEsb0JBQW9CLElBQUksQ0FBQ2pCLFNBQVMsQ0FBQ1csTUFBTSxDQUFDRjtnQkFFaEQsT0FBT1E7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxnQkFBZ0JSLFdBQVcsRUFBRUMsTUFBTSxFQUFFSixPQUFPO2dCQUMxQyxJQUFJVSxvQkFBb0I7Z0JBRXhCLElBQU1HLGtCQUFrQixJQUFJLENBQUNyQixTQUFTLENBQUNDLFNBQVM7Z0JBRWhETyxRQUFRTyxLQUFLLENBQUMsQUFBQyxrQkFBaUMsT0FBaEJNLGlCQUFnQjtnQkFFaEQsSUFBTUMsUUFBUWQsUUFBUWUsb0JBQW9CLENBQUMsSUFBSSxDQUFDdkIsU0FBUyxFQUFFUTtnQkFFM0QsSUFBSWMsVUFBVSxNQUFNO29CQUNsQixJQUFNRSxtQkFBbUJGLE1BQU1HLGFBQWE7b0JBRTVDLElBQUlELGtCQUFrQjt3QkFDcEJOLG9CQUFvQjtvQkFDdEI7Z0JBQ0Y7Z0JBRUEsSUFBSUEsbUJBQW1CO29CQUNyQlYsUUFBUVksS0FBSyxDQUFDLEFBQUMsb0JBQW1DLE9BQWhCQyxpQkFBZ0I7Z0JBQ3BEO2dCQUVBLE9BQU9IO1lBQ1Q7OztZQUVBUSxLQUFBQTttQkFBQUEsU0FBQUEsa0NBQWtDQyxTQUFTLEVBQUVDLGdCQUFnQixFQUFFcEIsT0FBTztnQkFDcEUsSUFBSXFCLG1CQUFtQjtnQkFFdkIsSUFBTUMsa0JBQWtCSCxVQUFVMUIsU0FBUyxJQUNyQ2EsMkJBQTJCLElBQUksQ0FBQ2xCLE1BQU0sRUFBRSxHQUFHO2dCQUVqRFksUUFBUU8sS0FBSyxDQUFDLEFBQUMsaUJBQXdERCxPQUF4Q2dCLGlCQUFnQiwwQkFBaUQsT0FBekJoQiwwQkFBeUI7Z0JBRWhHLElBQUksQ0FBQ2YsU0FBUyxDQUFDVyxNQUFNLENBQUNGO2dCQUV0QixJQUFNYyxRQUFRZCxRQUFRZSxvQkFBb0IsQ0FBQyxJQUFJLENBQUN2QixTQUFTLEdBQ25EK0IsY0FBY1QsTUFBTUcsYUFBYTtnQkFFdkMsSUFBSU0sYUFBYTtvQkFDZixJQUFJeEI7b0JBRUpBLGdCQUFnQnlCLHNCQUFhLENBQUNDLFdBQVc7b0JBRXpDLElBQU1DLG1CQUFtQlosTUFBTWEsY0FBYyxDQUFDLElBQUksQ0FBQ3BDLFNBQVMsRUFBRVEsZUFBZUM7b0JBRTdFLElBQUkwQixrQkFBa0I7d0JBQ3BCLElBQU1FLGlCQUFpQjdCLGVBQWUsR0FBRzt3QkFFekNBLGdCQUFnQnlCLHNCQUFhLENBQUNDLFdBQVc7d0JBRXpDSixtQkFBbUJQLE1BQU1JLGlDQUFpQyxDQUFDQyxXQUFXQyxrQkFBa0JyQixlQUFlQzt3QkFFdkcsSUFBSXFCLGtCQUFrQjs0QkFDcEIsSUFBTVEsaUJBQWlCOUIsZUFDakIrQixxQkFBcUJELGVBQWU1QixzQkFBc0IsQ0FBQzJCOzRCQUVqRSxJQUFJLENBQUNFLG9CQUFvQjtnQ0FDdkIsSUFBTUMsdUJBQXVCRixlQUFlRyxRQUFRLElBQzlDQyx1QkFBdUJMLGVBQWVJLFFBQVE7Z0NBRXBEaEMsUUFBUU8sS0FBSyxDQUFDLEFBQUMsbUJBQWdHd0IsT0FBOUVFLHNCQUFxQiwyREFBOEUsT0FBckJGLHNCQUFxQjtnQ0FFcElWLG1CQUFtQjs0QkFDckI7d0JBQ0Y7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsSUFBSUEsa0JBQWtCO29CQUNwQnJCLFFBQVFZLEtBQUssQ0FBQyxBQUFDLG1CQUEwRE4sT0FBeENnQixpQkFBZ0IsMEJBQWlELE9BQXpCaEIsMEJBQXlCO2dCQUNwRztnQkFFQSxPQUFPZTtZQUNUOzs7O1lBSU9hLEtBQUFBO21CQUFQLFNBQU9BLGFBQWFDLFFBQVEsRUFBRW5DLE9BQU87Z0JBQ25DLElBQUlvQyxxQkFBcUI7Z0JBRXpCLElBQU1DLHlCQUF5QkYsU0FBU0cseUJBQXlCO2dCQUVqRSxJQUFJRCwyQkFBMkIsTUFBTTtvQkFDbkNELHFCQUFxQkcsNkNBQTZDRix3QkFBd0JyQztnQkFDNUY7Z0JBRUEsT0FBT29DO1lBQ1Q7OztZQUVPSSxLQUFBQTttQkFBUCxTQUFPQSxrQkFBa0JDLGFBQWEsRUFBRXpDLE9BQU87Z0JBQzdDLElBQUlvQyxxQkFBcUI7Z0JBRXpCLElBQU1DLHlCQUF5QkksY0FBY0gseUJBQXlCO2dCQUV0RSxJQUFJRCwyQkFBMkIsTUFBTTtvQkFDbkNELHFCQUFxQkcsNkNBQTZDRix3QkFBd0JyQztnQkFDNUY7Z0JBRUEsT0FBT29DO1lBQ1Q7Ozs7S0F4QkEsc0NBQU9NLFFBQU87QUEyQmhCLFNBQVNDLG9DQUFvQ04sc0JBQXNCLEVBQUVyQyxPQUFPO0lBQzFFLElBQU0sQUFBRTRDLFlBQWNDLGlCQUFRLENBQXRCRCxXQUNGRSxnQkFBZ0JULHVCQUF1QlUsZ0JBQWdCLElBQ3ZEeEQsWUFBWXFELFVBQVVJLGlCQUFpQixDQUFDRixlQUFlOUM7SUFFN0QsT0FBT1Q7QUFDVDtBQUVBLFNBQVNnRCw2Q0FBNkNGLHNCQUFzQixFQUFFckMsT0FBTztJQUNuRixJQUFRaUQsWUFBa0NKLGlCQUFRLENBQTFDSSxXQUFXOUQscUJBQXVCMEQsaUJBQVEsQ0FBL0IxRCxvQkFDYkUsT0FBT2dELHdCQUNQakQsU0FBU1ksUUFBUWtELFlBQVksQ0FBQzdELE9BQzlCQyxTQUFTVSxRQUFRbUQsWUFBWSxDQUFDOUQsT0FDOUJFLFlBQVlvRCxvQ0FBb0NOLHdCQUF3QnJDLFVBQ3hFUixZQUFZeUQsVUFBVUcsMEJBQTBCLENBQUNmLHdCQUF3QnJDLFVBQ3pFb0MscUJBQXFCLElBQUlqRCxtQkFBbUJDLFFBQVFDLE1BQU1DLFFBQVFDLFdBQVdDO0lBRW5GLE9BQU80QztBQUNUIn0=
@@ -0,0 +1,186 @@
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 _necessary = require("necessary");
12
+ var _ontology = /*#__PURE__*/ _interop_require_wildcard(require("../../ontology"));
13
+ var _unification = require("../../utilities/unification");
14
+ function _class_call_check(instance, Constructor) {
15
+ if (!(instance instanceof Constructor)) {
16
+ throw new TypeError("Cannot call a class as a function");
17
+ }
18
+ }
19
+ function _defineProperties(target, props) {
20
+ for(var i = 0; i < props.length; i++){
21
+ var descriptor = props[i];
22
+ descriptor.enumerable = descriptor.enumerable || false;
23
+ descriptor.configurable = true;
24
+ if ("value" in descriptor) descriptor.writable = true;
25
+ Object.defineProperty(target, descriptor.key, descriptor);
26
+ }
27
+ }
28
+ function _create_class(Constructor, protoProps, staticProps) {
29
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
+ if (staticProps) _defineProperties(Constructor, staticProps);
31
+ return Constructor;
32
+ }
33
+ function _define_property(obj, key, value) {
34
+ if (key in obj) {
35
+ Object.defineProperty(obj, key, {
36
+ value: value,
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true
40
+ });
41
+ } else {
42
+ obj[key] = value;
43
+ }
44
+ return obj;
45
+ }
46
+ function _getRequireWildcardCache(nodeInterop) {
47
+ if (typeof WeakMap !== "function") return null;
48
+ var cacheBabelInterop = new WeakMap();
49
+ var cacheNodeInterop = new WeakMap();
50
+ return (_getRequireWildcardCache = function(nodeInterop) {
51
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
52
+ })(nodeInterop);
53
+ }
54
+ function _interop_require_wildcard(obj, nodeInterop) {
55
+ if (!nodeInterop && obj && obj.__esModule) {
56
+ return obj;
57
+ }
58
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
59
+ return {
60
+ default: obj
61
+ };
62
+ }
63
+ var cache = _getRequireWildcardCache(nodeInterop);
64
+ if (cache && cache.has(obj)) {
65
+ return cache.get(obj);
66
+ }
67
+ var newObj = {
68
+ __proto__: null
69
+ };
70
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
71
+ for(var key in obj){
72
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
73
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
74
+ if (desc && (desc.get || desc.set)) {
75
+ Object.defineProperty(newObj, key, desc);
76
+ } else {
77
+ newObj[key] = obj[key];
78
+ }
79
+ }
80
+ }
81
+ newObj.default = obj;
82
+ if (cache) {
83
+ cache.set(obj, newObj);
84
+ }
85
+ return newObj;
86
+ }
87
+ var _SubproofAssertion;
88
+ var match = _necessary.arrayUtilities.match;
89
+ var _default = (0, _ontology.define)((_SubproofAssertion = /*#__PURE__*/ function() {
90
+ function SubproofAssertion(string, node, statements) {
91
+ _class_call_check(this, SubproofAssertion);
92
+ this.string = string;
93
+ this.node = node;
94
+ this.statements = statements;
95
+ }
96
+ _create_class(SubproofAssertion, [
97
+ {
98
+ key: "getString",
99
+ value: function getString() {
100
+ return this.string;
101
+ }
102
+ },
103
+ {
104
+ key: "getNode",
105
+ value: function getNode() {
106
+ return this.node;
107
+ }
108
+ },
109
+ {
110
+ key: "getStatements",
111
+ value: function getStatements() {
112
+ return this.statements;
113
+ }
114
+ },
115
+ {
116
+ key: "unifySubproof",
117
+ value: function unifySubproof(subproof, substitutions, generalContext, specificContext) {
118
+ var subproofUnifies;
119
+ var subproofString = subproof.getString(), subproofAssertionString = this.string; ///
120
+ specificContext.trace("Unifying the '".concat(subproofString, "' subproof with the '").concat(subproofAssertionString, "' subproof assertion..."));
121
+ var subproofStatements = subproof.getStatements(), subproofAssertionStatements = this.statements; ///
122
+ subproofUnifies = match(subproofAssertionStatements, subproofStatements, function(subproofAssertionStatement, subproofStatement) {
123
+ var generalStatement = subproofAssertionStatement, specificStatement = subproofStatement, statementUnifies = (0, _unification.unifyStatement)(generalStatement, specificStatement, substitutions, generalContext, specificContext);
124
+ if (statementUnifies) {
125
+ return true;
126
+ }
127
+ });
128
+ if (subproofUnifies) {
129
+ specificContext.debug("...unified the '".concat(subproofString, "' subproof with the '").concat(subproofAssertionString, "' subproof assertion."));
130
+ }
131
+ return subproofUnifies;
132
+ }
133
+ },
134
+ {
135
+ key: "verify",
136
+ value: function verify(assignments, stated, context) {
137
+ var verifies;
138
+ var subproofAssertionString = this.string; ///
139
+ context.trace("Verifying the '".concat(subproofAssertionString, "' subproof assertion..."));
140
+ var statementsVerify = this.verifyStatements(assignments, stated, context);
141
+ verifies = statementsVerify; ///
142
+ if (verifies) {
143
+ context.debug("...verified the '".concat(subproofAssertionString, "' subproof assertion."));
144
+ }
145
+ return verifies;
146
+ }
147
+ },
148
+ {
149
+ key: "verifyStatements",
150
+ value: function verifyStatements(assignments, stated, context) {
151
+ stated = true; ///
152
+ assignments = null; ///
153
+ var statementsVerify = this.statements.map(function(statement) {
154
+ var statementVerifies = statement.verify(assignments, stated, context);
155
+ if (statementVerifies) {
156
+ return true;
157
+ }
158
+ });
159
+ return statementsVerify;
160
+ }
161
+ }
162
+ ], [
163
+ {
164
+ key: "fromStatementNode",
165
+ value: function fromStatementNode(statementNode, context) {
166
+ var subproofAssertion = null;
167
+ var subproofAssertionNode = statementNode.getSubproofAssertionNode();
168
+ if (subproofAssertionNode !== null) {
169
+ var node = subproofAssertionNode, string = context.nodeAsString(node), statements = statementsFromSubproofAssertionNode(subproofAssertionNode, context);
170
+ subproofAssertion = new SubproofAssertion(string, node, statements);
171
+ }
172
+ return subproofAssertion;
173
+ }
174
+ }
175
+ ]);
176
+ return SubproofAssertion;
177
+ }(), _define_property(_SubproofAssertion, "name", "SubproofAssertion"), _SubproofAssertion));
178
+ function statementsFromSubproofAssertionNode(subproofAssertionNode, context) {
179
+ var Statement = _ontology.default.Statement, statementNodes = subproofAssertionNode.getStatementNodes(), statements = statementNodes.map(function(statementNode) {
180
+ var statement = Statement.fromStatementNode(statementNode, context);
181
+ return statement;
182
+ });
183
+ return statements;
184
+ }
185
+
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vbnRvbG9neS9hc3NlcnRpb24vc3VicHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgb250b2xvZ3kgZnJvbSBcIi4uLy4uL29udG9sb2d5XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9vbnRvbG9neVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3VuaWZpY2F0aW9uXCI7XG5cbmNvbnN0IHsgbWF0Y2ggfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3VicHJvb2ZBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHN0YXRlbWVudHMpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnRzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdWJwcm9vZlVuaWZpZXM7XG5cbiAgICBjb25zdCBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mU3RhdGVtZW50cyA9IHN1YnByb29mLmdldFN0YXRlbWVudHMoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudHMgPSB0aGlzLnN0YXRlbWVudHM7ICAvLy9cblxuICAgIHN1YnByb29mVW5pZmllcyA9IG1hdGNoKHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50cywgc3VicHJvb2ZTdGF0ZW1lbnRzLCAoc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnQsIHN1YnByb29mU3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3VicHJvb2ZTdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB1bmlmeVN0YXRlbWVudChnZW5lcmFsU3RhdGVtZW50LCBzcGVjaWZpY1N0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZlVuaWZpZXM7XG4gIH1cblxuICB2ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcztcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudHNWZXJpZnkgPSB0aGlzLnZlcmlmeVN0YXRlbWVudHMoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICB2ZXJpZmllcyA9IHN0YXRlbWVudHNWZXJpZnk7ICAvLy9cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN0YXRlbWVudHMoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIHN0YXRlZCA9IHRydWU7ICAvLy9cblxuICAgIGFzc2lnbm1lbnRzID0gbnVsbDsgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnRzVmVyaWZ5ID0gdGhpcy5zdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllcyA9IHN0YXRlbWVudC52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRzVmVyaWZ5O1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1YnByb29mQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzdWJwcm9vZkFzc2VydGlvbk5vZGUsIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBuZXcgU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbVN1YnByb29mQXNzZXJ0aW9uTm9kZShzdWJwcm9vZkFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlcyA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlcygpLFxuICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50Tm9kZXMubWFwKChzdGF0ZW1lbnROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG4iXSwibmFtZXMiOlsibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlN1YnByb29mQXNzZXJ0aW9uIiwic3RyaW5nIiwibm9kZSIsInN0YXRlbWVudHMiLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiZ2V0U3RhdGVtZW50cyIsInVuaWZ5U3VicHJvb2YiLCJzdWJwcm9vZiIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN1YnByb29mVW5pZmllcyIsInN1YnByb29mU3RyaW5nIiwic3VicHJvb2ZBc3NlcnRpb25TdHJpbmciLCJ0cmFjZSIsInN1YnByb29mU3RhdGVtZW50cyIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50cyIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Iiwic3VicHJvb2ZTdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdGF0ZW1lbnQiLCJkZWJ1ZyIsInZlcmlmeSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwiY29udGV4dCIsInZlcmlmaWVzIiwic3RhdGVtZW50c1ZlcmlmeSIsInZlcmlmeVN0YXRlbWVudHMiLCJtYXAiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRWZXJpZmllcyIsImZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwibm9kZUFzU3RyaW5nIiwic3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJuYW1lIiwiU3RhdGVtZW50Iiwib250b2xvZ3kiLCJzdGF0ZW1lbnROb2RlcyIsImdldFN0YXRlbWVudE5vZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFX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