occam-verify-cli 0.0.1068 → 0.0.1069

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 (115) hide show
  1. package/bin/action/verify.js +3 -2
  2. package/lib/assertion/subproof.js +3 -3
  3. package/lib/axiom.js +11 -6
  4. package/lib/combinator.js +9 -9
  5. package/lib/conclusion.js +10 -7
  6. package/lib/conjecture.js +11 -6
  7. package/lib/consequent.js +10 -7
  8. package/lib/constructor.js +9 -9
  9. package/lib/context/file.js +34 -126
  10. package/lib/context/local.js +16 -5
  11. package/lib/context/release.js +2 -3
  12. package/lib/declaration.js +50 -43
  13. package/lib/equivalence.js +2 -2
  14. package/lib/frame.js +100 -80
  15. package/lib/index.js +22 -6
  16. package/lib/judgement.js +3 -3
  17. package/lib/label.js +12 -8
  18. package/lib/lemma.js +12 -12
  19. package/lib/metaLemma.js +120 -8
  20. package/lib/metatheorem.js +145 -9
  21. package/lib/metavariable.js +39 -22
  22. package/lib/mixins/statement/qualified/unify.js +6 -10
  23. package/lib/mixins/statement/unify.js +3 -3
  24. package/lib/mixins/term/unify.js +2 -2
  25. package/lib/premise.js +12 -8
  26. package/lib/reference.js +7 -9
  27. package/lib/rule.js +24 -39
  28. package/lib/ruleNames.js +1 -5
  29. package/lib/statement/unqualified.js +9 -8
  30. package/lib/statement.js +4 -4
  31. package/lib/substitution/frameForMetavariable.js +30 -26
  32. package/lib/substitution/statementForMetavariable.js +44 -26
  33. package/lib/substitution/termForVariable.js +33 -37
  34. package/lib/substitution.js +24 -21
  35. package/lib/substitutions.js +7 -1
  36. package/lib/supposition.js +12 -8
  37. package/lib/term.js +6 -11
  38. package/lib/theorem.js +11 -6
  39. package/lib/topLevelAssertion.js +24 -42
  40. package/lib/type.js +5 -12
  41. package/lib/unifier/metaLevel.js +3 -3
  42. package/lib/unifier/metavariable.js +6 -6
  43. package/lib/unifier/statementWithCombinator.js +16 -16
  44. package/lib/unifier/termWithConstructor.js +7 -7
  45. package/lib/utilities/brackets.js +10 -10
  46. package/lib/utilities/json.js +493 -0
  47. package/lib/utilities/node.js +15 -22
  48. package/lib/utilities/release.js +53 -0
  49. package/lib/utilities/releaseContext.js +4 -15
  50. package/lib/utilities/tokens.js +7 -7
  51. package/lib/variable.js +6 -11
  52. package/lib/verifier/topLevel.js +5 -5
  53. package/package.json +1 -1
  54. package/src/assertion/subproof.js +2 -3
  55. package/src/axiom.js +14 -6
  56. package/src/combinator.js +12 -13
  57. package/src/conclusion.js +12 -9
  58. package/src/conjecture.js +14 -6
  59. package/src/consequent.js +12 -9
  60. package/src/constructor.js +11 -13
  61. package/src/context/file.js +94 -202
  62. package/src/context/local.js +8 -6
  63. package/src/context/release.js +2 -3
  64. package/src/declaration.js +72 -44
  65. package/src/equivalence.js +2 -2
  66. package/src/frame.js +111 -86
  67. package/src/index.js +17 -1
  68. package/src/judgement.js +2 -2
  69. package/src/label.js +15 -10
  70. package/src/lemma.js +17 -10
  71. package/src/metaLemma.js +102 -1
  72. package/src/metatheorem.js +143 -2
  73. package/src/metavariable.js +50 -30
  74. package/src/mixins/statement/qualified/unify.js +7 -19
  75. package/src/mixins/statement/unify.js +2 -2
  76. package/src/mixins/term/unify.js +1 -1
  77. package/src/premise.js +18 -10
  78. package/src/reference.js +7 -11
  79. package/src/rule.js +33 -57
  80. package/src/ruleNames.js +0 -1
  81. package/src/statement/unqualified.js +10 -10
  82. package/src/statement.js +3 -2
  83. package/src/substitution/frameForMetavariable.js +39 -33
  84. package/src/substitution/statementForMetavariable.js +64 -31
  85. package/src/substitution/termForVariable.js +47 -37
  86. package/src/substitution.js +18 -16
  87. package/src/substitutions.js +2 -0
  88. package/src/supposition.js +18 -10
  89. package/src/term.js +5 -15
  90. package/src/theorem.js +14 -6
  91. package/src/topLevelAssertion.js +38 -64
  92. package/src/type.js +5 -20
  93. package/src/unifier/metaLevel.js +2 -2
  94. package/src/unifier/metavariable.js +5 -5
  95. package/src/unifier/statementWithCombinator.js +18 -18
  96. package/src/unifier/termWithConstructor.js +7 -7
  97. package/src/utilities/brackets.js +5 -5
  98. package/src/utilities/json.js +551 -0
  99. package/src/utilities/node.js +15 -26
  100. package/src/{verify → utilities}/release.js +5 -1
  101. package/src/utilities/releaseContext.js +2 -2
  102. package/src/utilities/tokens.js +10 -7
  103. package/src/variable.js +4 -14
  104. package/src/verifier/topLevel.js +6 -4
  105. package/lib/argument.js +0 -106
  106. package/lib/metaTypes.js +0 -19
  107. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +0 -45
  108. package/lib/verify/metaLemma.js +0 -49
  109. package/lib/verify/metatheorem.js +0 -48
  110. package/lib/verify/release.js +0 -50
  111. package/src/argument.js +0 -79
  112. package/src/metaTypes.js +0 -11
  113. package/src/unify/statementWithSttaemetnGivenEquivalences.js +0 -51
  114. package/src/verify/metaLemma.js +0 -72
  115. package/src/verify/metatheorem.js +0 -67
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ axiomsFromJSON: function() {
13
+ return axiomsFromJSON;
14
+ },
15
+ axiomsToAxiomsJSON: function() {
16
+ return axiomsToAxiomsJSON;
17
+ },
18
+ combinatorsFromJSON: function() {
19
+ return combinatorsFromJSON;
20
+ },
21
+ combinatorsToCombinatorsJSON: function() {
22
+ return combinatorsToCombinatorsJSON;
23
+ },
24
+ conclusionFromJSON: function() {
25
+ return conclusionFromJSON;
26
+ },
27
+ conclusionToConclusionJSON: function() {
28
+ return conclusionToConclusionJSON;
29
+ },
30
+ conjecturesFromJSON: function() {
31
+ return conjecturesFromJSON;
32
+ },
33
+ conjecturesToConjecturesJSON: function() {
34
+ return conjecturesToConjecturesJSON;
35
+ },
36
+ consequentFromJSON: function() {
37
+ return consequentFromJSON;
38
+ },
39
+ consequentToConsequentJSON: function() {
40
+ return consequentToConsequentJSON;
41
+ },
42
+ constructorsFromJSON: function() {
43
+ return constructorsFromJSON;
44
+ },
45
+ constructorsToConstructorsJSON: function() {
46
+ return constructorsToConstructorsJSON;
47
+ },
48
+ labelsFromJSON: function() {
49
+ return labelsFromJSON;
50
+ },
51
+ labelsToLabelsJSON: function() {
52
+ return labelsToLabelsJSON;
53
+ },
54
+ metaTypeFromJSON: function() {
55
+ return metaTypeFromJSON;
56
+ },
57
+ metaTypeToMetaTypeJSON: function() {
58
+ return metaTypeToMetaTypeJSON;
59
+ },
60
+ metatheoremsFromJSON: function() {
61
+ return metatheoremsFromJSON;
62
+ },
63
+ metatheoremsToMetatheoremsJSON: function() {
64
+ return metatheoremsToMetatheoremsJSON;
65
+ },
66
+ metavariableFromJSON: function() {
67
+ return metavariableFromJSON;
68
+ },
69
+ metavariableToMetavariableJSON: function() {
70
+ return metavariableToMetavariableJSON;
71
+ },
72
+ metavariablesFromJSON: function() {
73
+ return metavariablesFromJSON;
74
+ },
75
+ metavariablesToMetavariablesJSON: function() {
76
+ return metavariablesToMetavariablesJSON;
77
+ },
78
+ premisesFromJSON: function() {
79
+ return premisesFromJSON;
80
+ },
81
+ premisesToPremisesJSON: function() {
82
+ return premisesToPremisesJSON;
83
+ },
84
+ rulesFromJSON: function() {
85
+ return rulesFromJSON;
86
+ },
87
+ rulesToRulesJSON: function() {
88
+ return rulesToRulesJSON;
89
+ },
90
+ statementFromJSON: function() {
91
+ return statementFromJSON;
92
+ },
93
+ statementToStatementJSON: function() {
94
+ return statementToStatementJSON;
95
+ },
96
+ substitutionsFromJSON: function() {
97
+ return substitutionsFromJSON;
98
+ },
99
+ substitutionsToSubstitutionsJSON: function() {
100
+ return substitutionsToSubstitutionsJSON;
101
+ },
102
+ superTypeFromJSON: function() {
103
+ return superTypeFromJSON;
104
+ },
105
+ superTypeToSuperTypeJSON: function() {
106
+ return superTypeToSuperTypeJSON;
107
+ },
108
+ suppositionsFromJSON: function() {
109
+ return suppositionsFromJSON;
110
+ },
111
+ suppositionsToSuppositionsJSON: function() {
112
+ return suppositionsToSuppositionsJSON;
113
+ },
114
+ termFromJSON: function() {
115
+ return termFromJSON;
116
+ },
117
+ termToTermJSON: function() {
118
+ return termToTermJSON;
119
+ },
120
+ theoremsFromJSON: function() {
121
+ return theoremsFromJSON;
122
+ },
123
+ theoremsToTheoremsJSON: function() {
124
+ return theoremsToTheoremsJSON;
125
+ },
126
+ typeFromJSON: function() {
127
+ return typeFromJSON;
128
+ },
129
+ typeToTypeJSON: function() {
130
+ return typeToTypeJSON;
131
+ },
132
+ typesFromJSON: function() {
133
+ return typesFromJSON;
134
+ },
135
+ typesToTypesJSON: function() {
136
+ return typesToTypesJSON;
137
+ },
138
+ unqualifiedStatementFromJSON: function() {
139
+ return unqualifiedStatementFromJSON;
140
+ },
141
+ unqualifiedStatementToUnqualifiedStatementJSON: function() {
142
+ return unqualifiedStatementToUnqualifiedStatementJSON;
143
+ },
144
+ variablesFromJSON: function() {
145
+ return variablesFromJSON;
146
+ },
147
+ variablesToVariablesJSON: function() {
148
+ return variablesToVariablesJSON;
149
+ }
150
+ });
151
+ var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
152
+ function _interop_require_default(obj) {
153
+ return obj && obj.__esModule ? obj : {
154
+ default: obj
155
+ };
156
+ }
157
+ function termFromJSON(json, fileContext) {
158
+ var term = json.term;
159
+ var termJSON = term; ///
160
+ json = termJSON; ///
161
+ var Term = _shim.default.Term;
162
+ term = Term.fromJSON(json, fileContext);
163
+ return term;
164
+ }
165
+ function typeFromJSON(json, fileContext) {
166
+ var type = json.type;
167
+ var name = type.name, typeName = name; ///
168
+ type = fileContext.findTypeByTypeName(typeName);
169
+ return type;
170
+ }
171
+ function metaTypeFromJSON(json, fileContext) {
172
+ var metaType = json.metaType;
173
+ if (metaType !== null) {
174
+ var name = metaType.name, metaTypeName = name; ///
175
+ metaType = fileContext.findMetaTypeByMetaTypeName(metaTypeName);
176
+ }
177
+ return metaType;
178
+ }
179
+ function superTypeFromJSON(json, fileContext) {
180
+ var superType = json.superType;
181
+ var superTypeJSON = superType; ///
182
+ json = superTypeJSON; ///
183
+ var name = json.name, typeName = name, type = fileContext.findTypeByTypeName(typeName);
184
+ superType = type; ///
185
+ return superType;
186
+ }
187
+ function statementFromJSON(json, fileContext) {
188
+ var statement = json.statement;
189
+ var Statement = _shim.default.Statement, statementJSON = statement; ///
190
+ json = statementJSON; ///
191
+ statement = Statement.fromJSON(json, fileContext);
192
+ return statement;
193
+ }
194
+ function conclusionFromJSON(json, fileContext) {
195
+ var conclusion = json.conclusion;
196
+ var Conclusion = _shim.default.Conclusion, conclusionJSON = conclusion; ///
197
+ json = conclusionJSON; ///
198
+ conclusion = Conclusion.fromJSON(json, fileContext);
199
+ return conclusion;
200
+ }
201
+ function consequentFromJSON(json, fileContext) {
202
+ var consequent = json.consequent;
203
+ var Consequent = _shim.default.Consequent, consequentJSON = consequent; ///
204
+ json = consequentJSON; ///
205
+ consequent = Consequent.fromJSON(json, fileContext);
206
+ return consequent;
207
+ }
208
+ function metavariableFromJSON(json, fileContext) {
209
+ var metavariable = json.metavariable;
210
+ var Metavariable = _shim.default.Metavariable, metavariableJSON = metavariable; ///
211
+ json = metavariableJSON; ///
212
+ metavariable = Metavariable.fromJSON(json, fileContext);
213
+ return metavariable;
214
+ }
215
+ function unqualifiedStatementFromJSON(json, fileContext) {
216
+ var unqualifiedStatement = json.unqualifiedStatement;
217
+ var UnqualifiedStatement = _shim.default.UnqualifiedStatement, unqualifiedStatementJSON = unqualifiedStatement; ///
218
+ json = unqualifiedStatementJSON; ///
219
+ unqualifiedStatement = UnqualifiedStatement.fromJSON(json, fileContext);
220
+ return unqualifiedStatement;
221
+ }
222
+ function typesFromJSON(json, fileContext) {
223
+ var types = json.types;
224
+ var typesJSON = types; ///
225
+ types = typesJSON.map(function(typeJSON) {
226
+ var Type = _shim.default.Type, _$json = typeJSON, type = Type.fromJSON(_$json, fileContext);
227
+ return type;
228
+ });
229
+ return types;
230
+ }
231
+ function rulesFromJSON(json, fileContext) {
232
+ var rules = json.rules;
233
+ var rulesJSON = rules; ///
234
+ rules = rulesJSON.map(function(ruleJSON) {
235
+ var Rule = _shim.default.Rule, _$json = ruleJSON, rule = Rule.fromJSON(_$json, fileContext);
236
+ return rule;
237
+ });
238
+ return rules;
239
+ }
240
+ function labelsFromJSON(json, fileContext) {
241
+ var labels = json.labels;
242
+ var Label = _shim.default.Label, labelsJSON = labels; ///
243
+ labels = labelsJSON.map(function(labelJSON) {
244
+ var _$json = labelJSON, label = Label.fromJSON(_$json, fileContext);
245
+ return label;
246
+ });
247
+ return labels;
248
+ }
249
+ function axiomsFromJSON(json, fileContext) {
250
+ var axioms = json.axioms;
251
+ var axiomsJSON = axioms; ///
252
+ axioms = axiomsJSON.map(function(axiomJSON) {
253
+ var Axiom = _shim.default.Axiom, _$json = axiomJSON, axiom = Axiom.fromJSON(_$json, fileContext);
254
+ return axiom;
255
+ });
256
+ return axioms;
257
+ }
258
+ function premisesFromJSON(json, fileContext) {
259
+ var premises = json.premises;
260
+ var Premise = _shim.default.Premise, premisesJSON = premises; ///
261
+ premises = premisesJSON.map(function(premiseJSON) {
262
+ var _$json = premiseJSON, premise = Premise.fromJSON(_$json, fileContext);
263
+ return premise;
264
+ });
265
+ return premises;
266
+ }
267
+ function theoremsFromJSON(json, fileContext) {
268
+ var theorems = json.theorems;
269
+ var theoremsJSON = theorems; ///
270
+ theorems = theoremsJSON.map(function(theoremJSON) {
271
+ var Theorem = _shim.default.Theorem, _$json = theoremJSON, theorem = Theorem.fromJSON(_$json, fileContext);
272
+ return theorem;
273
+ });
274
+ return theorems;
275
+ }
276
+ function variablesFromJSON(json, fileContext) {
277
+ var variables = json.variables;
278
+ var variablesJSON = variables; ///
279
+ variables = variablesJSON.map(function(variableJSON) {
280
+ var Variable = _shim.default.Variable, _$json = variableJSON, variable = Variable.fromJSON(_$json, fileContext);
281
+ return variable;
282
+ });
283
+ return variables;
284
+ }
285
+ function conjecturesFromJSON(json, fileContext) {
286
+ var conjectures = json.conjectures;
287
+ var conjecturesJSON = conjectures; ///
288
+ conjectures = conjecturesJSON.map(function(conjectureJSON) {
289
+ var Conjecture = _shim.default.Conjecture, _$json = conjectureJSON, conjecture = Conjecture.fromJSON(_$json, fileContext);
290
+ return conjecture;
291
+ });
292
+ return conjectures;
293
+ }
294
+ function combinatorsFromJSON(json, fileContext) {
295
+ var combinators = json.combinators;
296
+ var combinatorsJSON = combinators; ///
297
+ combinators = combinatorsJSON.map(function(combinatorJSON) {
298
+ var Combinator = _shim.default.Combinator, _$json = combinatorJSON, combinator = Combinator.fromJSON(_$json, fileContext);
299
+ return combinator;
300
+ });
301
+ return combinators;
302
+ }
303
+ function constructorsFromJSON(json, fileContext) {
304
+ var constructors = json.constructors;
305
+ var constructorsJSON = constructors; ///
306
+ constructors = constructorsJSON.map(function(constructorJSON) {
307
+ var Constructor = _shim.default.Constructor, _$json = constructorJSON, constructor = Constructor.fromJSON(_$json, fileContext);
308
+ return constructor;
309
+ });
310
+ return constructors;
311
+ }
312
+ function metatheoremsFromJSON(json, fileContext) {
313
+ var metatheorems = json.metatheorems;
314
+ var metatheoremsJSON = metatheorems; ///
315
+ metatheorems = metatheoremsJSON.map(function(metatheoremJSON) {
316
+ var Metatheorem = _shim.default.Metatheorem, _$json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(_$json, fileContext);
317
+ return metatheorem;
318
+ });
319
+ return metatheorems;
320
+ }
321
+ function suppositionsFromJSON(json, fileContext) {
322
+ var suppositions = json.suppositions;
323
+ var Supposition = _shim.default.Supposition, suppositionsJSON = suppositions; ///
324
+ suppositions = suppositionsJSON.map(function(suppositionJSON) {
325
+ var _$json = suppositionJSON, supposition = Supposition.fromJSON(_$json, fileContext);
326
+ return supposition;
327
+ });
328
+ return suppositions;
329
+ }
330
+ function substitutionsFromJSON(json, fileContext) {
331
+ var substitutions = json.substitutions;
332
+ var Substitution = _shim.default.Substitution, substitutionsJSON = substitutions; ///
333
+ substitutions = substitutionsJSON.map(function(substitutionJSON) {
334
+ var _$json = substitutionJSON, substitution = Substitution.fromJSON(_$json, fileContext);
335
+ return substitution;
336
+ });
337
+ return substitutions;
338
+ }
339
+ function metavariablesFromJSON(json, fileContext) {
340
+ var metavariables = json.metavariables;
341
+ var metavariablesJSON = metavariables; ///
342
+ metavariables = metavariablesJSON.map(function(metavariableJSON) {
343
+ var Metavariable = _shim.default.Metavariable, _$json = metavariableJSON, metavariable = Metavariable.fromJSON(_$json, fileContext);
344
+ return metavariable;
345
+ });
346
+ return metavariables;
347
+ }
348
+ function termToTermJSON(term) {
349
+ var termJSON = term.toJSON();
350
+ return termJSON;
351
+ }
352
+ function typeToTypeJSON(type) {
353
+ var typeJSON = type.toJSON();
354
+ return typeJSON;
355
+ }
356
+ function metaTypeToMetaTypeJSON(metaType) {
357
+ var metaTypeJSON = metaType !== null ? metaType.toJSON() : null;
358
+ return metaTypeJSON;
359
+ }
360
+ function superTypeToSuperTypeJSON(superType) {
361
+ var superTypeJSON = superType.toJSON();
362
+ return superTypeJSON;
363
+ }
364
+ function statementToStatementJSON(statement) {
365
+ var statementJSON = statement.toJSNO();
366
+ return statementJSON;
367
+ }
368
+ function conclusionToConclusionJSON(conclusion) {
369
+ var conclusionJSON = conclusion.toJSON();
370
+ return conclusionJSON;
371
+ }
372
+ function consequentToConsequentJSON(consequent) {
373
+ var consequentJSON = consequent.toJSON();
374
+ return consequentJSON;
375
+ }
376
+ function metavariableToMetavariableJSON(metavariable) {
377
+ var metavariableJSON = metavariable.toJSNO();
378
+ return metavariableJSON;
379
+ }
380
+ function unqualifiedStatementToUnqualifiedStatementJSON(unqualifiedStatement) {
381
+ var unqualifiedStatementJSON = unqualifiedStatement.toJSNO();
382
+ return unqualifiedStatementJSON;
383
+ }
384
+ function typesToTypesJSON(types) {
385
+ var typesJSON = types.map(function(type) {
386
+ var typeJSON = type.toJSON();
387
+ type = typeJSON; ///
388
+ return type;
389
+ });
390
+ return typesJSON;
391
+ }
392
+ function rulesToRulesJSON(rules) {
393
+ var rulesJSON = rules.map(function(rule) {
394
+ var ruleJSON = rule.toJSON();
395
+ rule = ruleJSON; ///
396
+ return rule;
397
+ });
398
+ return rulesJSON;
399
+ }
400
+ function labelsToLabelsJSON(labels) {
401
+ var labelsJSON = labels.map(function(label) {
402
+ var labelJSON = label.toJSON();
403
+ return labelJSON;
404
+ });
405
+ return labelsJSON;
406
+ }
407
+ function axiomsToAxiomsJSON(axioms) {
408
+ var axiomsJSON = axioms.map(function(axiom) {
409
+ var axiomJSON = axiom.toJSON();
410
+ axiom = axiomJSON; ///
411
+ return axiom;
412
+ });
413
+ return axiomsJSON;
414
+ }
415
+ function premisesToPremisesJSON(premises) {
416
+ var premisesJSON = premises.map(function(premise) {
417
+ var premiseJSON = premise.toJSON();
418
+ return premiseJSON;
419
+ });
420
+ return premisesJSON;
421
+ }
422
+ function theoremsToTheoremsJSON(theorems) {
423
+ var theoremsJSON = theorems.map(function(theorem) {
424
+ var theoremJSON = theorem.toJSON();
425
+ theorem = theoremJSON; ///
426
+ return theorem;
427
+ });
428
+ return theoremsJSON;
429
+ }
430
+ function variablesToVariablesJSON(variables) {
431
+ var variablesJSON = variables.map(function(variable) {
432
+ var variableJSON = variable.toJSON();
433
+ variable = variableJSON; ///
434
+ return variable;
435
+ });
436
+ return variablesJSON;
437
+ }
438
+ function conjecturesToConjecturesJSON(conjectures) {
439
+ var conjecturesJSON = conjectures.map(function(conjecture) {
440
+ var conjectureJSON = conjecture.toJSON();
441
+ conjecture = conjectureJSON; ///
442
+ return conjecture;
443
+ });
444
+ return conjecturesJSON;
445
+ }
446
+ function combinatorsToCombinatorsJSON(combinators) {
447
+ var combinatorsJSON = combinators.map(function(combinator) {
448
+ var combinatorJSON = combinator.toJSON();
449
+ combinator = combinatorJSON; ///
450
+ return combinator;
451
+ });
452
+ return combinatorsJSON;
453
+ }
454
+ function suppositionsToSuppositionsJSON(suppositions) {
455
+ var suppositionsJSON = suppositions.map(function(supposition) {
456
+ var suppositionJSON = supposition.toJSON();
457
+ return suppositionJSON;
458
+ });
459
+ return suppositionsJSON;
460
+ }
461
+ function constructorsToConstructorsJSON(constructors) {
462
+ var constructorsJSON = constructors.map(function(constructor) {
463
+ var constructorJSON = constructor.toJSON();
464
+ constructor = constructorJSON; ///
465
+ return constructor;
466
+ });
467
+ return constructorsJSON;
468
+ }
469
+ function metatheoremsToMetatheoremsJSON(metatheorems) {
470
+ var metatheoremsJSON = metatheorems.map(function(metatheorem) {
471
+ var metatheoremJSON = metatheorem.toJSON();
472
+ metatheorem = metatheoremJSON; ///
473
+ return metatheorem;
474
+ });
475
+ return metatheoremsJSON;
476
+ }
477
+ function substitutionsToSubstitutionsJSON(substitutions) {
478
+ var substitutionsJSON = substitutions.mapSubstitution(function(substitution) {
479
+ var substitutionJSON = substitution.toJSON();
480
+ return substitutionJSON;
481
+ });
482
+ return substitutionsJSON;
483
+ }
484
+ function metavariablesToMetavariablesJSON(metavariables) {
485
+ var metavariablesJSON = metavariables.map(function(metavariable) {
486
+ var metavariableJSON = metavariable.toJSON();
487
+ metavariable = metavariableJSON; ///
488
+ return metavariable;
489
+ });
490
+ return metavariablesJSON;
491
+ }
492
+
493
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyB0ZXJtIH0gPSBqc29uO1xuXG4gIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gc2hpbTtcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBjb25zdCB7IG5hbWUgfSA9IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lID0gbmFtZTsgIC8vL1xuXG4gIHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IG1ldGFUeXBlLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIG1ldGFUeXBlID0gZmlsZUNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cGVyVHlwZSB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlOyAgLy8vXG5cbiAganNvbiA9IHN1cGVyVHlwZUpTT047IC8vL1xuXG4gIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgdHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gIHJldHVybiBzdXBlclR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnQgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IHNoaW0sXG4gICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBzaGltLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zZXF1ZW50RnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgY29uc2VxdWVudCB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnNlcXVlbnQgfSA9IHNoaW0sXG4gICAgICAgIGNvbnNlcXVlbnRKU09OID0gY29uc2VxdWVudDsgIC8vL1xuXG4gIGpzb24gPSBjb25zZXF1ZW50SlNPTjsgIC8vL1xuXG4gIGNvbnNlcXVlbnQgPSBDb25zZXF1ZW50LmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gY29uc2VxdWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gc2hpbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnF1YWxpZmllZFN0YXRlbWVudEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHVucXVhbGlmaWVkU3RhdGVtZW50IH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVW5xdWFsaWZpZWRTdGF0ZW1lbnQgfSA9IHNoaW0sXG4gICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50SlNPTiA9IHVucXVhbGlmaWVkU3RhdGVtZW50OyAgLy8vXG5cbiAganNvbiA9IHVucXVhbGlmaWVkU3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgdW5xdWFsaWZpZWRTdGF0ZW1lbnQgPSBVbnF1YWxpZmllZFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyB0eXBlcyB9ID0ganNvbjtcblxuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlczsgLy8vXG4gICAgICAgIHR5cGVzID0gdHlwZXNKU09OLm1hcCgodHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCB7IFR5cGUgfSA9IHNoaW0sXG4gICAgICAgICAgICAgICAganNvbiA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuICh0eXBlKTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCBydWxlc0pTT04gPSBydWxlczsgLy8vXG4gICAgICAgIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCB7IFJ1bGUgfSA9IHNoaW0sXG4gICAgICAgICAgICAgICAganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIChydWxlKTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IHNoaW0sXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG4gICAgICAgIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCB7IEF4aW9tIH0gPSBzaGltLFxuICAgICAgICAgICAgICAgIGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiAoYXhpb20pO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IHNoaW0sXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXM7IC8vL1xuICAgICAgICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBUaGVvcmVtIH0gPSBzaGltLFxuICAgICAgICAgICAgICAgIGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiAodGhlb3JlbSk7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cbiAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgVmFyaWFibGUgfSA9IHNoaW0sXG4gICAgICAgICAgICAgICAganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuICh2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cbiAgICAgICAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gc2hpbSxcbiAgICAgICAgICAgICAgICBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gKGNvbmplY3R1cmUpO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cbiAgICAgICAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gc2hpbSxcbiAgICAgICAgICAgICAgICBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gKGNvbWJpbmF0b3IpO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBzaGltLFxuICAgICAgICAgICAgICAgIGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiAoY29uc3RydWN0b3IpO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuICAgICAgICBtZXRhdGhlb3JlbXMgPSBtZXRhdGhlb3JlbXNKU09OLm1hcCgobWV0YXRoZW9yZW1KU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gc2hpbSxcbiAgICAgICAgICAgICAgICBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gKG1ldGF0aGVvcmVtKTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBzaGltLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1YnN0aXR1dGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdWJzdGl0dXRpb24gfSA9IHNoaW0sXG4gICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgIC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG4gICAgICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gc2hpbSxcbiAgICAgICAgICAgICAgICBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gKG1ldGF2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuICByZXR1cm4gbWV0YVR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlVG9TdXBlclR5cGVKU09OKHN1cGVyVHlwZSkge1xuICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gIHJldHVybiBzdXBlclR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHN0YXRlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNOTygpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc2VxdWVudFRvQ29uc2VxdWVudEpTT04oY29uc2VxdWVudCkge1xuICBjb25zdCBjb25zZXF1ZW50SlNPTiA9IGNvbnNlcXVlbnQudG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNOTygpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb1VucXVhbGlmaWVkU3RhdGVtZW50SlNPTih1bnF1YWxpZmllZFN0YXRlbWVudCkge1xuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudEpTT04gPSB1bnF1YWxpZmllZFN0YXRlbWVudC50b0pTTk8oKTtcblxuICByZXR1cm4gdW5xdWFsaWZpZWRTdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICB0eXBlID0gdHlwZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJ1bGUgPSBydWxlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICBheGlvbSA9IGF4aW9tSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHRoZW9yZW0gPSB0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgY29uamVjdHVyZSA9IGNvbmplY3R1cmVKU09OOyAvLy9cblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICBjb21iaW5hdG9yID0gY29tYmluYXRvckpTT047IC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvckpTT047ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgbWV0YXRoZW9yZW0gPSBtZXRhdGhlb3JlbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG4iXSwibmFtZXMiOlsiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zZXF1ZW50RnJvbUpTT04iLCJjb25zZXF1ZW50VG9Db25zZXF1ZW50SlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlRnJvbUpTT04iLCJzdXBlclR5cGVUb1N1cGVyVHlwZUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRGcm9tSlNPTiIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9VbnF1YWxpZmllZFN0YXRlbWVudEpTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJmaWxlQ29udGV4dCIsInRlcm0iLCJ0ZXJtSlNPTiIsIlRlcm0iLCJzaGltIiwiZnJvbUpTT04iLCJ0eXBlIiwibmFtZSIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZUpTT04iLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsImNvbnNlcXVlbnQiLCJDb25zZXF1ZW50IiwiY29uc2VxdWVudEpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJVbnF1YWxpZmllZFN0YXRlbWVudCIsInVucXVhbGlmaWVkU3RhdGVtZW50SlNPTiIsInR5cGVzIiwidHlwZXNKU09OIiwibWFwIiwidHlwZUpTT04iLCJUeXBlIiwicnVsZXMiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsIlJ1bGUiLCJydWxlIiwibGFiZWxzIiwiTGFiZWwiLCJsYWJlbHNKU09OIiwibGFiZWxKU09OIiwibGFiZWwiLCJheGlvbXMiLCJheGlvbXNKU09OIiwiYXhpb21KU09OIiwiQXhpb20iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJUaGVvcmVtIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsInZhcmlhYmxlc0pTT04iLCJ2YXJpYWJsZUpTT04iLCJWYXJpYWJsZSIsInZhcmlhYmxlIiwiY29uamVjdHVyZXMiLCJjb25qZWN0dXJlc0pTT04iLCJjb25qZWN0dXJlSlNPTiIsIkNvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJjb21iaW5hdG9yc0pTT04iLCJjb21iaW5hdG9ySlNPTiIsIkNvbWJpbmF0b3IiLCJjb21iaW5hdG9yIiwiY29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9ySlNPTiIsIkNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJtZXRhdGhlb3JlbXNKU09OIiwibWV0YXRoZW9yZW1KU09OIiwiTWV0YXRoZW9yZW0iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsInRvSlNOTyIsIm1hcFN1YnN0aXR1dGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBeUtnQkEsY0FBYztlQUFkQTs7SUFpUUFDLGtCQUFrQjtlQUFsQkE7O0lBckxBQyxtQkFBbUI7ZUFBbkJBOztJQStPQUMsNEJBQTRCO2VBQTVCQTs7SUE3WkFDLGtCQUFrQjtlQUFsQkE7O0lBeVNBQywwQkFBMEI7ZUFBMUJBOztJQTFJQUMsbUJBQW1CO2VBQW5CQTs7SUFrUEFDLDRCQUE0QjtlQUE1QkE7O0lBcFlBQyxrQkFBa0I7ZUFBbEJBOztJQWtTQUMsMEJBQTBCO2VBQTFCQTs7SUFsSEFDLG9CQUFvQjtlQUFwQkE7O0lBc1BBQyw4QkFBOEI7ZUFBOUJBOztJQWpXQUMsY0FBYztlQUFkQTs7SUF1UUFDLGtCQUFrQjtlQUFsQkE7O0lBbllBQyxnQkFBZ0I7ZUFBaEJBOztJQWdVQUMsc0JBQXNCO2VBQXRCQTs7SUExRUFDLG9CQUFvQjtlQUFwQkE7O0lBbVBBQyw4QkFBOEI7ZUFBOUJBOztJQXJhQUMsb0JBQW9CO2VBQXBCQTs7SUEyUkFDLDhCQUE4QjtlQUE5QkE7O0lBMURBQyxxQkFBcUI7ZUFBckJBOztJQTBOQUMsZ0NBQWdDO2VBQWhDQTs7SUFwV0FDLGdCQUFnQjtlQUFoQkE7O0lBOFBBQyxzQkFBc0I7ZUFBdEJBOztJQTVTQUMsYUFBYTtlQUFiQTs7SUEwUUFDLGdCQUFnQjtlQUFoQkE7O0lBMVZBQyxpQkFBaUI7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