occam-verify-cli 0.0.526 → 0.0.529
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bin/abbreviations.js +5 -1
- package/bin/action/help.js +4 -0
- package/bin/action/verify.js +35 -13
- package/bin/actions.js +11 -6
- package/bin/defaults.js +4 -0
- package/bin/options.js +4 -0
- package/bin/utilities/releaseContext.js +5 -7
- package/lib/assertion/type.js +10 -40
- package/lib/axiom.js +8 -8
- package/lib/axiomLemmaTheoremConjecture.js +190 -0
- package/lib/combinator.js +4 -3
- package/lib/conclusion.js +8 -7
- package/lib/conjecture.js +141 -0
- package/lib/consequence.js +6 -5
- package/lib/constants.js +11 -27
- package/lib/constructor.js +5 -4
- package/lib/context/file.js +88 -73
- package/lib/context/metaproof.js +51 -20
- package/lib/context/proof.js +48 -114
- package/lib/context/release/directory.js +25 -6
- package/lib/context/release/file.js +38 -25
- package/lib/context/release.js +32 -51
- package/lib/equality.js +79 -51
- package/lib/index.js +4 -16
- package/lib/kinds.js +5 -1
- package/lib/label.js +4 -3
- package/lib/lemma.js +8 -8
- package/lib/log.js +146 -0
- package/lib/matcher.js +25 -75
- package/lib/metaTypeNames.js +13 -0
- package/lib/mixins/file.js +62 -2
- package/lib/mixins/logging.js +13 -13
- package/lib/node/metastatement/bracketed.js +16 -0
- package/lib/node/statement/bracketed.js +16 -0
- package/lib/node/statement/combinator/bracketed.js +17 -0
- package/lib/node/statement/combinator/equality.js +17 -0
- package/lib/node/statement/equality.js +16 -0
- package/lib/ocmbinator/bracketed.js +3 -4
- package/lib/ocmbinator/equality.js +3 -4
- package/lib/premise.js +13 -12
- package/lib/rule.js +5 -5
- package/lib/ruleNames.js +1 -9
- package/lib/step/metaproof.js +28 -25
- package/lib/step/proof.js +23 -1
- package/lib/substitution/metastatementForMetavariable.js +16 -13
- package/lib/substitution/statementForMetavariable.js +16 -13
- package/lib/substitution/termForVariable.js +76 -0
- package/lib/supposition.js +7 -6
- package/lib/theorem.js +8 -8
- package/lib/type.js +12 -5
- package/lib/utilities/metaproof.js +60 -0
- package/lib/utilities/node.js +56 -0
- package/lib/utilities/proof.js +60 -0
- package/lib/utilities/releaseContext.js +24 -12
- package/lib/utilities/string.js +3 -38
- package/lib/variable.js +4 -38
- package/lib/{matcher → verifier}/metastatementForMetavariable/conclusion.js +12 -12
- package/lib/{matcher → verifier}/metastatementForMetavariable/premise.js +12 -12
- package/lib/verifier/metastatementForMetavariable.js +198 -0
- package/lib/{matcher → verifier}/statementForMetavariable/conclusion.js +12 -12
- package/lib/{matcher → verifier}/statementForMetavariable/premise.js +12 -12
- package/lib/verifier/statementForMetavariable.js +203 -0
- package/lib/{matcher/statementForVariable → verifier/termForVariable}/consequence.js +13 -13
- package/lib/{matcher/statementForVariable → verifier/termForVariable}/supposition.js +13 -13
- package/lib/verifier/termForVariable.js +198 -0
- package/lib/verifier.js +92 -0
- package/lib/verify/assertion/type.js +62 -41
- package/lib/verify/axiom.js +3 -6
- package/lib/verify/conclusion.js +2 -4
- package/lib/verify/conjecture.js +54 -0
- package/lib/verify/consequence.js +2 -4
- package/lib/verify/declaration/combinator.js +1 -3
- package/lib/verify/declaration/constructor.js +1 -3
- package/lib/verify/declaration/topLevel.js +7 -5
- package/lib/verify/declaration/type.js +1 -3
- package/lib/verify/declaration/variable.js +1 -3
- package/lib/verify/derivation.js +1 -5
- package/lib/verify/label.js +1 -3
- package/lib/verify/lemma.js +3 -6
- package/lib/verify/metastatement/qualified.js +2 -5
- package/lib/verify/metastatement/unqualified.js +2 -5
- package/lib/verify/metastatement.js +1 -3
- package/lib/verify/premise.js +2 -4
- package/lib/verify/proof.js +3 -5
- package/lib/verify/rule.js +3 -6
- package/lib/verify/ruleDerivation.js +1 -5
- package/lib/verify/ruleProof.js +3 -5
- package/lib/verify/statement/qualified.js +40 -13
- package/lib/verify/statement/unqualified.js +2 -5
- package/lib/verify/statement.js +56 -62
- package/lib/verify/statementAsCombinator.js +4 -6
- package/lib/verify/supposition.js +2 -4
- package/lib/verify/term.js +4 -10
- package/lib/verify/termAsConstructor.js +6 -9
- package/lib/verify/theorem.js +3 -6
- package/lib/verify/type.js +5 -9
- package/lib/verify/variable.js +5 -9
- package/package.json +1 -1
- package/src/assertion/type.js +7 -32
- package/src/axiom.js +4 -4
- package/src/{axiomLemmaTheorem.js → axiomLemmaTheoremConjecture.js} +9 -9
- package/src/combinator.js +3 -3
- package/src/conclusion.js +7 -7
- package/src/conjecture.js +13 -0
- package/src/consequence.js +5 -5
- package/src/constants.js +3 -7
- package/src/constructor.js +4 -4
- package/src/context/file.js +85 -65
- package/src/context/metaproof.js +55 -15
- package/src/context/proof.js +53 -50
- package/src/context/release/directory.js +31 -7
- package/src/context/release/file.js +47 -31
- package/src/context/release.js +23 -32
- package/src/equality.js +108 -61
- package/src/index.js +2 -4
- package/src/kinds.js +1 -0
- package/src/label.js +3 -3
- package/src/lemma.js +4 -4
- package/src/log.js +116 -0
- package/src/matcher.js +32 -24
- package/src/metaTypeNames.js +3 -0
- package/src/mixins/file.js +46 -1
- package/src/mixins/logging.js +6 -6
- package/src/node/metastatement/bracketed.js +9 -0
- package/src/node/statement/bracketed.js +9 -0
- package/src/node/statement/combinator/bracketed.js +10 -0
- package/src/node/statement/combinator/equality.js +11 -0
- package/src/node/statement/equality.js +10 -0
- package/src/ocmbinator/bracketed.js +2 -5
- package/src/ocmbinator/equality.js +2 -5
- package/src/premise.js +13 -13
- package/src/rule.js +4 -4
- package/src/ruleNames.js +0 -2
- package/src/step/metaproof.js +32 -29
- package/src/step/proof.js +28 -0
- package/src/substitution/metastatementForMetavariable.js +10 -15
- package/src/substitution/statementForMetavariable.js +11 -16
- package/src/substitution/termForVariable.js +36 -0
- package/src/supposition.js +6 -6
- package/src/theorem.js +4 -4
- package/src/type.js +17 -7
- package/src/utilities/metaproof.js +62 -0
- package/src/utilities/node.js +73 -0
- package/src/utilities/proof.js +62 -0
- package/src/utilities/releaseContext.js +30 -12
- package/src/utilities/string.js +4 -53
- package/src/variable.js +4 -37
- package/src/verifier/metastatementForMetavariable/conclusion.js +9 -0
- package/src/verifier/metastatementForMetavariable/premise.js +9 -0
- package/src/verifier/metastatementForMetavariable.js +89 -0
- package/src/verifier/statementForMetavariable/conclusion.js +9 -0
- package/src/verifier/statementForMetavariable/premise.js +9 -0
- package/src/verifier/statementForMetavariable.js +105 -0
- package/src/verifier/termForVariable/consequence.js +9 -0
- package/src/verifier/termForVariable/supposition.js +9 -0
- package/src/verifier/termForVariable.js +89 -0
- package/src/verifier.js +74 -0
- package/src/verify/assertion/type.js +74 -74
- package/src/verify/axiom.js +2 -9
- package/src/verify/conclusion.js +1 -7
- package/src/verify/conjecture.js +67 -0
- package/src/verify/consequence.js +1 -7
- package/src/verify/declaration/combinator.js +0 -6
- package/src/verify/declaration/constructor.js +0 -6
- package/src/verify/declaration/topLevel.js +7 -6
- package/src/verify/declaration/type.js +0 -6
- package/src/verify/declaration/variable.js +0 -6
- package/src/verify/derivation.js +0 -12
- package/src/verify/label.js +0 -6
- package/src/verify/lemma.js +4 -11
- package/src/verify/metastatement/qualified.js +1 -8
- package/src/verify/metastatement/unqualified.js +1 -8
- package/src/verify/metastatement.js +0 -6
- package/src/verify/premise.js +1 -7
- package/src/verify/proof.js +1 -7
- package/src/verify/rule.js +2 -9
- package/src/verify/ruleDerivation.js +0 -12
- package/src/verify/ruleProof.js +1 -7
- package/src/verify/statement/qualified.js +54 -20
- package/src/verify/statement/unqualified.js +1 -8
- package/src/verify/statement.js +65 -95
- package/src/verify/statementAsCombinator.js +3 -9
- package/src/verify/supposition.js +1 -7
- package/src/verify/term.js +3 -21
- package/src/verify/termAsConstructor.js +5 -13
- package/src/verify/theorem.js +2 -9
- package/src/verify/type.js +4 -13
- package/src/verify/variable.js +4 -13
- package/bin/callbacks.js +0 -48
- package/lib/axiomLemmaTheorem.js +0 -190
- package/lib/callbacks.js +0 -75
- package/lib/context/release/combinator.js +0 -64
- package/lib/jsonTypes.js +0 -30
- package/lib/matcher/metastatementForMetavariable.js +0 -201
- package/lib/matcher/statementForMetavariable.js +0 -201
- package/lib/matcher/statementForVariable.js +0 -201
- package/lib/mixins/callbacks.js +0 -27
- package/lib/substitution/statementForVariable.js +0 -86
- package/lib/utilities/json.js +0 -187
- package/lib/utilities/substitution.js +0 -61
- package/lib/utilities/version.js +0 -32
- package/lib/versionChanges.js +0 -34
- package/src/callbacks.js +0 -39
- package/src/context/release/combinator.js +0 -39
- package/src/jsonTypes.js +0 -6
- package/src/matcher/metastatementForMetavariable/conclusion.js +0 -9
- package/src/matcher/metastatementForMetavariable/premise.js +0 -9
- package/src/matcher/metastatementForMetavariable.js +0 -99
- package/src/matcher/statementForMetavariable/conclusion.js +0 -9
- package/src/matcher/statementForMetavariable/premise.js +0 -9
- package/src/matcher/statementForMetavariable.js +0 -99
- package/src/matcher/statementForVariable/consequence.js +0 -9
- package/src/matcher/statementForVariable/supposition.js +0 -9
- package/src/matcher/statementForVariable.js +0 -99
- package/src/mixins/callbacks.js +0 -15
- package/src/substitution/statementForVariable.js +0 -64
- package/src/utilities/json.js +0 -264
- package/src/utilities/substitution.js +0 -79
- package/src/utilities/version.js +0 -30
- package/src/versionChanges.js +0 -11
|
@@ -23,7 +23,6 @@ function _interopRequireDefault(obj) {
|
|
|
23
23
|
var childNodesQuery = (0, _query.nodesQuery)("/ruleDerivation|ruleSubDerivation/*"), premiseNodesQuery = (0, _query.nodesQuery)("/ruleSubproof/premise"), metastatementNodeQuery = (0, _query.nodeQuery)("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!"), ruleSubDerivationNodeQuery = (0, _query.nodeQuery)("/ruleSubproof/ruleSubDerivation");
|
|
24
24
|
function verifyRuleDerivation(ruleDerivationNode, metaproofContext) {
|
|
25
25
|
var ruleDerivationVerified;
|
|
26
|
-
metaproofContext.begin(ruleDerivationNode);
|
|
27
26
|
var childNodes = childNodesQuery(ruleDerivationNode);
|
|
28
27
|
ruleDerivationVerified = childNodes.every(function(childNode) {
|
|
29
28
|
var childVerified = verifyChild(childNode, metaproofContext);
|
|
@@ -31,12 +30,10 @@ function verifyRuleDerivation(ruleDerivationNode, metaproofContext) {
|
|
|
31
30
|
return true;
|
|
32
31
|
}
|
|
33
32
|
});
|
|
34
|
-
ruleDerivationVerified ? metaproofContext.complete(ruleDerivationNode) : metaproofContext.halt(ruleDerivationNode);
|
|
35
33
|
return ruleDerivationVerified;
|
|
36
34
|
}
|
|
37
35
|
function verifyRuleSubDerivation(ruleSubDerivationNode, metaproofContext) {
|
|
38
36
|
var ruleSubDerivationVerified;
|
|
39
|
-
metaproofContext.begin(ruleSubDerivationNode);
|
|
40
37
|
var childNodes = childNodesQuery(ruleSubDerivationNode);
|
|
41
38
|
ruleSubDerivationVerified = childNodes.every(function(childNode) {
|
|
42
39
|
var childVerified = verifyChild(childNode, metaproofContext);
|
|
@@ -44,7 +41,6 @@ function verifyRuleSubDerivation(ruleSubDerivationNode, metaproofContext) {
|
|
|
44
41
|
return true;
|
|
45
42
|
}
|
|
46
43
|
});
|
|
47
|
-
ruleSubDerivationVerified ? metaproofContext.complete(ruleSubDerivationNode) : metaproofContext.halt(ruleSubDerivationNode);
|
|
48
44
|
return ruleSubDerivationVerified;
|
|
49
45
|
}
|
|
50
46
|
function verifyRuleSubproof(ruleSubproofNode, metaproofContext) {
|
|
@@ -102,4 +98,4 @@ function verifyChild(childNode, metaproofContext) {
|
|
|
102
98
|
return childVerified;
|
|
103
99
|
}
|
|
104
100
|
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcnVsZURlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhcHJvb2ZTdGVwIGZyb20gXCIuLi9zdGVwL21ldGFwcm9vZlwiO1xuaW1wb3J0IHZlcmlmeVByZW1pc2UgZnJvbSBcIi4uL3ZlcmlmeS9wcmVtaXNlXCI7XG5pbXBvcnQgTWV0YXByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9tZXRhcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWRcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IFJVTEVfU1VCUFJPT0ZfUlVMRV9OQU1FLCBRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUsIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBjaGlsZE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVEZXJpdmF0aW9ufHJ1bGVTdWJEZXJpdmF0aW9uLypcIiksXG4gICAgICBwcmVtaXNlTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcnVsZVN1YnByb29mL3ByZW1pc2VcIiksXG4gICAgICBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpLFxuICAgICAgcnVsZVN1YkRlcml2YXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcnVsZVN1YnByb29mL3J1bGVTdWJEZXJpdmF0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlSdWxlRGVyaXZhdGlvbihydWxlRGVyaXZhdGlvbk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQ7XG5cbiAgbWV0YXByb29mQ29udGV4dC5iZWdpbihydWxlRGVyaXZhdGlvbk5vZGUpO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzUXVlcnkocnVsZURlcml2YXRpb25Ob2RlKTtcblxuICBydWxlRGVyaXZhdGlvblZlcmlmaWVkID0gY2hpbGROb2Rlcy5ldmVyeSgoY2hpbGROb2RlKSA9PiB7XG4gICAgY29uc3QgY2hpbGRWZXJpZmllZCA9IHZlcmlmeUNoaWxkKGNoaWxkTm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICBpZiAoY2hpbGRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBydWxlRGVyaXZhdGlvblZlcmlmaWVkID9cbiAgICBtZXRhcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHJ1bGVEZXJpdmF0aW9uTm9kZSkgOlxuICAgICAgbWV0YXByb29mQ29udGV4dC5oYWx0KHJ1bGVEZXJpdmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIHJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVJ1bGVTdWJEZXJpdmF0aW9uKHJ1bGVTdWJEZXJpdmF0aW9uTm9kZSwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgcnVsZVN1YkRlcml2YXRpb25WZXJpZmllZDtcblxuICBtZXRhcHJvb2ZDb250ZXh0LmJlZ2luKHJ1bGVTdWJEZXJpdmF0aW9uTm9kZSk7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNRdWVyeShydWxlU3ViRGVyaXZhdGlvbk5vZGUpO1xuXG4gIHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBjaGlsZFZlcmlmaWVkID0gdmVyaWZ5Q2hpbGQoY2hpbGROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgIGlmIChjaGlsZFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQgP1xuICAgIG1ldGFwcm9vZkNvbnRleHQuY29tcGxldGUocnVsZVN1YkRlcml2YXRpb25Ob2RlKSA6XG4gICAgICBtZXRhcHJvb2ZDb250ZXh0LmhhbHQocnVsZVN1YkRlcml2YXRpb25Ob2RlKTtcblxuICByZXR1cm4gcnVsZVN1YkRlcml2YXRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UnVsZVN1YnByb29mKHJ1bGVTdWJwcm9vZk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHJ1bGVTdWJwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbWV0YXByb29mQ29udGV4dCA9IE1ldGFwcm9vZkNvbnRleHQuZnJvbU1ldGFwcm9vZkNvbnRleHQobWV0YXByb29mQ29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHByZW1pc2VzID0gW10sXG4gICAgICAgIHByZW1pc2VOb2RlcyA9IHByZW1pc2VOb2Rlc1F1ZXJ5KHJ1bGVTdWJwcm9vZk5vZGUpLFxuICAgICAgICBwcmVtaXNlc1ZlcmlmaWVkID0gcHJlbWlzZU5vZGVzLmV2ZXJ5KChwcmVtaXNlTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZW1pc2VWZXJpZmllZCA9IHZlcmlmeVByZW1pc2UocHJlbWlzZU5vZGUsIHByZW1pc2VzLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgIGlmIChwcmVtaXNlVmVyaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgaWYgKHByZW1pc2VzVmVyaWZpZWQpIHtcbiAgICBjb25zdCBydWxlU3ViRGVyaXZhdGlvbk5vZGUgPSBydWxlU3ViRGVyaXZhdGlvbk5vZGVRdWVyeShydWxlU3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICBydWxlU3ViRGVyaXZhdGlvblZlcmlmaWVkID0gdmVyaWZ5UnVsZVN1YkRlcml2YXRpb24ocnVsZVN1YkRlcml2YXRpb25Ob2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgIGlmIChydWxlU3ViRGVyaXZhdGlvblZlcmlmaWVkKSB7XG4gICAgICBydWxlU3VicHJvb2ZWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJ1bGVTdWJwcm9vZlZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlDaGlsZChjaGlsZE5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IGNoaWxkVmVyaWZpZWQ7XG5cbiAgY29uc3QgY2hpbGROb2RlUnVsZU5hbWUgPSBjaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICBzd2l0Y2ggKGNoaWxkTm9kZVJ1bGVOYW1lKSB7XG4gICAgY2FzZSBSVUxFX1NVQlBST09GX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgcnVsZVN1YnByb29mTm9kZSA9IGNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgcnVsZVN1YnByb29mVmVyaWZpZWQgPSB2ZXJpZnlSdWxlU3VicHJvb2YocnVsZVN1YnByb29mTm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChydWxlU3VicHJvb2ZWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBtZXRhcHJvb2ZTdGVwID0gTWV0YXByb29mU3RlcC5mcm9tUnVsZVN1YnByb29mTm9kZShydWxlU3VicHJvb2ZOb2RlKTtcblxuICAgICAgICBtZXRhcHJvb2ZDb250ZXh0LmFkZE1ldGFwcm9vZlN0ZXAobWV0YXByb29mU3RlcCk7XG5cbiAgICAgICAgY2hpbGRWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gdHJ1ZSxcbiAgICAgICAgICAgIGFzc2VydGlvbnMgPSBbXSxcbiAgICAgICAgICAgIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlID0gY2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICBtZXRhcHJvb2ZTdGVwID0gTWV0YXByb29mU3RlcC5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YXByb29mU3RlcChtZXRhcHJvb2ZTdGVwKTtcblxuICAgICAgICBjaGlsZFZlcmlmaWVkID0gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgZGVyaXZlZCA9IHRydWUsXG4gICAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlID0gY2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgbWV0YXByb29mU3RlcCA9IE1ldGFwcm9vZlN0ZXAuZnJvbU1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBtZXRhcHJvb2ZDb250ZXh0LmFkZE1ldGFwcm9vZlN0ZXAobWV0YXByb29mU3RlcCk7XG5cbiAgICAgICAgY2hpbGRWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaGlsZFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVJ1bGVEZXJpdmF0aW9uIiwiY2hpbGROb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInByZW1pc2VOb2Rlc1F1ZXJ5IiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJ1bGVTdWJEZXJpdmF0aW9uTm9kZVF1ZXJ5IiwicnVsZURlcml2YXRpb25Ob2RlIiwibWV0YXByb29mQ29udGV4dCIsInJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQiLCJiZWdpbiIsImNoaWxkTm9kZXMiLCJldmVyeSIsImNoaWxkTm9kZSIsImNoaWxkVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZCIsImNvbXBsZXRlIiwiaGFsdCIsInZlcmlmeVJ1bGVTdWJEZXJpdmF0aW9uIiwicnVsZVN1YkRlcml2YXRpb25Ob2RlIiwicnVsZVN1YkRlcml2YXRpb25WZXJpZmllZCIsInZlcmlmeVJ1bGVTdWJwcm9vZiIsInJ1bGVTdWJwcm9vZk5vZGUiLCJydWxlU3VicHJvb2ZWZXJpZmllZCIsIk1ldGFwcm9vZkNvbnRleHQiLCJmcm9tTWV0YXByb29mQ29udGV4dCIsInByZW1pc2VzIiwicHJlbWlzZU5vZGVzIiwicHJlbWlzZXNWZXJpZmllZCIsInByZW1pc2VOb2RlIiwicHJlbWlzZVZlcmlmaWVkIiwidmVyaWZ5UHJlbWlzZSIsImNoaWxkTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJSVUxFX1NVQlBST09GX1JVTEVfTkFNRSIsIm1ldGFwcm9vZlN0ZXAiLCJNZXRhcHJvb2ZTdGVwIiwiZnJvbVJ1bGVTdWJwcm9vZk5vZGUiLCJhZGRNZXRhcHJvb2ZTdGVwIiwiUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiZGVyaXZlZCIsImFzc2VydGlvbnMiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIlVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUF3QkE7Ozs4REFkRTs0REFDQTsrREFDRzs4REFDWTtnRUFDRTtxQkFFTDt5QkFDMEU7Ozs7OztBQUVoSCxJQUFNQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsd0NBQzdCQyxvQkFBb0JELElBQUFBLGlCQUFVLEVBQUMsMEJBQy9CRSx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsb0VBQ25DQyw2QkFBNkJELElBQUFBLGdCQUFTLEVBQUM7QUFFOUIsU0FBU0wscUJB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
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcnVsZURlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhcHJvb2ZTdGVwIGZyb20gXCIuLi9zdGVwL21ldGFwcm9vZlwiO1xuaW1wb3J0IHZlcmlmeVByZW1pc2UgZnJvbSBcIi4uL3ZlcmlmeS9wcmVtaXNlXCI7XG5pbXBvcnQgTWV0YXByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9tZXRhcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWRcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IFJVTEVfU1VCUFJPT0ZfUlVMRV9OQU1FLCBRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUsIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBjaGlsZE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVEZXJpdmF0aW9ufHJ1bGVTdWJEZXJpdmF0aW9uLypcIiksXG4gICAgICBwcmVtaXNlTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcnVsZVN1YnByb29mL3ByZW1pc2VcIiksXG4gICAgICBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpLFxuICAgICAgcnVsZVN1YkRlcml2YXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcnVsZVN1YnByb29mL3J1bGVTdWJEZXJpdmF0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlSdWxlRGVyaXZhdGlvbihydWxlRGVyaXZhdGlvbk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQ7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNRdWVyeShydWxlRGVyaXZhdGlvbk5vZGUpO1xuXG4gIHJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBjaGlsZFZlcmlmaWVkID0gdmVyaWZ5Q2hpbGQoY2hpbGROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgIGlmIChjaGlsZFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBydWxlRGVyaXZhdGlvblZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlSdWxlU3ViRGVyaXZhdGlvbihydWxlU3ViRGVyaXZhdGlvbk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQ7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNRdWVyeShydWxlU3ViRGVyaXZhdGlvbk5vZGUpO1xuXG4gIHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBjaGlsZFZlcmlmaWVkID0gdmVyaWZ5Q2hpbGQoY2hpbGROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgIGlmIChjaGlsZFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBydWxlU3ViRGVyaXZhdGlvblZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlSdWxlU3VicHJvb2YocnVsZVN1YnByb29mTm9kZSwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgcnVsZVN1YnByb29mVmVyaWZpZWQgPSBmYWxzZTtcblxuICBtZXRhcHJvb2ZDb250ZXh0ID0gTWV0YXByb29mQ29udGV4dC5mcm9tTWV0YXByb29mQ29udGV4dChtZXRhcHJvb2ZDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgcHJlbWlzZXMgPSBbXSxcbiAgICAgICAgcHJlbWlzZU5vZGVzID0gcHJlbWlzZU5vZGVzUXVlcnkocnVsZVN1YnByb29mTm9kZSksXG4gICAgICAgIHByZW1pc2VzVmVyaWZpZWQgPSBwcmVtaXNlTm9kZXMuZXZlcnkoKHByZW1pc2VOb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJlbWlzZVZlcmlmaWVkID0gdmVyaWZ5UHJlbWlzZShwcmVtaXNlTm9kZSwgcHJlbWlzZXMsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHByZW1pc2VWZXJpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICBpZiAocHJlbWlzZXNWZXJpZmllZCkge1xuICAgIGNvbnN0IHJ1bGVTdWJEZXJpdmF0aW9uTm9kZSA9IHJ1bGVTdWJEZXJpdmF0aW9uTm9kZVF1ZXJ5KHJ1bGVTdWJwcm9vZk5vZGUpLFxuICAgICAgICAgIHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQgPSB2ZXJpZnlSdWxlU3ViRGVyaXZhdGlvbihydWxlU3ViRGVyaXZhdGlvbk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgaWYgKHJ1bGVTdWJEZXJpdmF0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJ1bGVTdWJwcm9vZlZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnVsZVN1YnByb29mVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUNoaWxkKGNoaWxkTm9kZSwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgY2hpbGRWZXJpZmllZDtcblxuICBjb25zdCBjaGlsZE5vZGVSdWxlTmFtZSA9IGNoaWxkTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIHN3aXRjaCAoY2hpbGROb2RlUnVsZU5hbWUpIHtcbiAgICBjYXNlIFJVTEVfU1VCUFJPT0ZfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBydWxlU3VicHJvb2ZOb2RlID0gY2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBydWxlU3VicHJvb2ZWZXJpZmllZCA9IHZlcmlmeVJ1bGVTdWJwcm9vZihydWxlU3VicHJvb2ZOb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHJ1bGVTdWJwcm9vZlZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGFwcm9vZlN0ZXAgPSBNZXRhcHJvb2ZTdGVwLmZyb21SdWxlU3VicHJvb2ZOb2RlKHJ1bGVTdWJwcm9vZk5vZGUpO1xuXG4gICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YXByb29mU3RlcChtZXRhcHJvb2ZTdGVwKTtcblxuICAgICAgICBjaGlsZFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUU6IHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSB0cnVlLFxuICAgICAgICAgICAgYXNzZXJ0aW9ucyA9IFtdLFxuICAgICAgICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBjaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQocXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsIGFzc2VydGlvbnMsIGRlcml2ZWQsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgIG1ldGFwcm9vZlN0ZXAgPSBNZXRhcHJvb2ZTdGVwLmZyb21NZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgbWV0YXByb29mQ29udGV4dC5hZGRNZXRhcHJvb2ZTdGVwKG1ldGFwcm9vZlN0ZXApO1xuXG4gICAgICAgIGNoaWxkVmVyaWZpZWQgPSBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gdHJ1ZSxcbiAgICAgICAgICAgIGFzc2VydGlvbnMgPSBbXSxcbiAgICAgICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBjaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50KHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsIGFzc2VydGlvbnMsIGRlcml2ZWQsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICBpZiAodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICBtZXRhcHJvb2ZTdGVwID0gTWV0YXByb29mU3RlcC5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YXByb29mU3RlcChtZXRhcHJvb2ZTdGVwKTtcblxuICAgICAgICBjaGlsZFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoaWxkVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UnVsZURlcml2YXRpb24iLCJjaGlsZE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwicHJlbWlzZU5vZGVzUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicnVsZVN1YkRlcml2YXRpb25Ob2RlUXVlcnkiLCJydWxlRGVyaXZhdGlvbk5vZGUiLCJtZXRhcHJvb2ZDb250ZXh0IiwicnVsZURlcml2YXRpb25WZXJpZmllZCIsImNoaWxkTm9kZXMiLCJldmVyeSIsImNoaWxkTm9kZSIsImNoaWxkVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZCIsInZlcmlmeVJ1bGVTdWJEZXJpdmF0aW9uIiwicnVsZVN1YkRlcml2YXRpb25Ob2RlIiwicnVsZVN1YkRlcml2YXRpb25WZXJpZmllZCIsInZlcmlmeVJ1bGVTdWJwcm9vZiIsInJ1bGVTdWJwcm9vZk5vZGUiLCJydWxlU3VicHJvb2ZWZXJpZmllZCIsIk1ldGFwcm9vZkNvbnRleHQiLCJmcm9tTWV0YXByb29mQ29udGV4dCIsInByZW1pc2VzIiwicHJlbWlzZU5vZGVzIiwicHJlbWlzZXNWZXJpZmllZCIsInByZW1pc2VOb2RlIiwicHJlbWlzZVZlcmlmaWVkIiwidmVyaWZ5UHJlbWlzZSIsImNoaWxkTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJSVUxFX1NVQlBST09GX1JVTEVfTkFNRSIsIm1ldGFwcm9vZlN0ZXAiLCJNZXRhcHJvb2ZTdGVwIiwiZnJvbVJ1bGVTdWJwcm9vZk5vZGUiLCJhZGRNZXRhcHJvb2ZTdGVwIiwiUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiZGVyaXZlZCIsImFzc2VydGlvbnMiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIlVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUF3QkE7Ozs4REFkRTs0REFDQTsrREFDRzs4REFDWTtnRUFDRTtxQkFFTDt5QkFDMEU7Ozs7OztBQUVoSCxJQUFNQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsd0NBQzdCQyxvQkFBb0JELElBQUFBLGlCQUFVLEVBQUMsMEJBQy9CRSx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsb0VBQ25DQyw2QkFBNkJELElBQUFBLGdCQUFTLEVBQUM7QUFFOUIsU0FBU0wscUJBQXFCTyxrQkFBa0IsRUFBRUMsZ0JBQWdCLEVBQUU7SUFDakYsSUFBSUM7SUFFSixJQUFNQyxhQUFhVCxnQkFBZ0JNO0lBRW5DRSx5QkFBeUJDLFdBQVdDLEtBQUssQ0FBQyxTQUFDQyxXQUFjO1FBQ3ZELElBQU1DLGdCQUFnQkMsWUFBWUYsV0FBV0o7UUFFN0MsSUFBSUssZUFBZTtZQUNqQixPQUFPLElBQUk7UUFDYixDQUFDO0lBQ0g7SUFFQSxPQUFPSjtBQUNUO0FBRUEsU0FBU00sd0JBQXdCQyxxQkFBcUIsRUFBRVIsZ0JBQWdCLEVBQUU7SUFDeEUsSUFBSVM7SUFFSixJQUFNUCxhQUFhVCxnQkFBZ0JlO0lBRW5DQyw0QkFBNEJQLFdBQVdDLEtBQUssQ0FBQyxTQUFDQyxXQUFjO1FBQzFELElBQU1DLGdCQUFnQkMsWUFBWUYsV0FBV0o7UUFFN0MsSUFBSUssZUFBZTtZQUNqQixPQUFPLElBQUk7UUFDYixDQUFDO0lBQ0g7SUFFQSxPQUFPSTtBQUNUO0FBRUEsU0FBU0MsbUJBQW1CQyxnQkFBZ0IsRUFBRVgsZ0JBQWdCLEVBQUU7SUFDOUQsSUFBSVksdUJBQXVCLEtBQUs7SUFFaENaLG1CQUFtQmEsbUJBQWdCLENBQUNDLG9CQUFvQixDQUFDZCxtQkFBbUIsR0FBRztJQUUvRSxJQUFNZSxXQUFXLEVBQUUsRUFDYkMsZUFBZXJCLGtCQUFrQmdCLG1CQUNqQ00sbUJBQW1CRCxhQUFhYixLQUFLLENBQUMsU0FBQ2UsYUFBZ0I7UUFDckQsSUFBTUMsa0JBQWtCQyxJQUFBQSxnQkFBYSxFQUFDRixhQUFhSCxVQUFVZjtRQUU3RCxJQUFJbUIsaUJBQWlCO1lBQ25CLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVOLElBQUlGLGtCQUFrQjtRQUNwQixJQUFNVCx3QkFBd0JWLDJCQUEyQmEsbUJBQ25ERiw0QkFBNEJGLHdCQUF3QkMsdUJBQXVCUjtRQUVqRixJQUFJUywyQkFBMkI7WUFDN0JHLHVCQUF1QixJQUFJO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0E7QUFDVDtBQUVBLFNBQVNOLFlBQVlGLFNBQVMsRUFBRUosZ0JBQWdCLEVBQUU7SUFDaEQsSUFBSUs7SUFFSixJQUFNZ0Isb0JBQW9CakIsVUFBVWtCLFdBQVc7SUFFL0MsT0FBUUQ7UUFDTixLQUFLRSxrQ0FBdUI7WUFBRTtnQkFDNUIsSUFBTVosbUJBQW1CUCxXQUNuQlEsdUJBQXVCRixtQkFBbUJDLGtCQUFrQlg7Z0JBRWxFLElBQUlZLHNCQUFzQjtvQkFDeEIsSUFBTVksZ0JBQWdCQyxrQkFBYSxDQUFDQyxvQkFBb0IsQ0FBQ2Y7b0JBRXpEWCxpQkFBaUIyQixnQkFBZ0IsQ0FBQ0g7b0JBRWxDbkIsZ0JBQWdCLElBQUk7Z0JBQ3RCLENBQUM7Z0JBRUQsS0FBTTtZQUNSO1FBRUEsS0FBS3VCLDRDQUFpQztZQUFFO2dCQUN0QyxJQUFNQyxVQUFVLElBQUksRUFDZEMsYUFBYSxFQUFFLEVBQ2ZDLDZCQUE2QjNCLFdBQzdCNEIsaUNBQWlDQyxJQUFBQSxrQkFBNEIsRUFBQ0YsNEJBQTRCRCxZQUFZRCxTQUFTN0I7Z0JBRXJILElBQUlnQyxnQ0FBZ0M7b0JBQ2xDLElBQU1FLG9CQUFvQnRDLHVCQUF1Qm1DLDZCQUMzQ1AsaUJBQWdCQyxrQkFBYSxDQUFDVSxxQkFBcUIsQ0FBQ0Q7b0JBRTFEbEMsaUJBQWlCMkIsZ0JBQWdCLENBQUNIO29CQUVsQ25CLGdCQUFnQjJCLGdDQUFnQyxHQUFHO2dCQUNyRCxDQUFDO2dCQUVELEtBQU07WUFDUjtRQUVBLEtBQUtJLDhDQUFtQztZQUFFO2dCQUN4QyxJQUFNUCxXQUFVLElBQUksRUFDZEMsY0FBYSxFQUFFLEVBQ2ZPLCtCQUErQmpDLFdBQy9Ca0MsbUNBQW1DQyxJQUFBQSxvQkFBOEIsRUFBQ0YsOEJBQThCUCxhQUFZRCxVQUFTN0I7Z0JBRTNILElBQUlzQyxrQ0FBa0M7b0JBQ3BDLElBQU1KLHFCQUFvQnRDLHVCQUF1QnlDLCtCQUMzQ2IsaUJBQWdCQyxrQkFBYSxDQUFDVSxxQkFBcUIsQ0FBQ0Q7b0JBRTFEbEMsaUJBQWlCMkIsZ0JBQWdCLENBQUNIO29CQUVsQ25CLGdCQUFnQixJQUFJO2dCQUN0QixDQUFDO2dCQUVELEtBQU07WUFDUjtJQUNGO0lBRUEsT0FBT0E7QUFDVCJ9
|
package/lib/verify/ruleProof.js
CHANGED
|
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return verifyRuleProof;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _matcher = /*#__PURE__*/ _interopRequireDefault(require("../matcher"));
|
|
11
12
|
var _ruleDerivation = /*#__PURE__*/ _interopRequireDefault(require("../verify/ruleDerivation"));
|
|
12
|
-
var _matcher = require("../matcher");
|
|
13
13
|
var _query = require("../utilities/query");
|
|
14
14
|
function _interopRequireDefault(obj) {
|
|
15
15
|
return obj && obj.__esModule ? obj : {
|
|
@@ -19,14 +19,12 @@ function _interopRequireDefault(obj) {
|
|
|
19
19
|
var ruleDerivationNodeQuery = (0, _query.nodeQuery)("/ruleProof/ruleDerivation!");
|
|
20
20
|
function verifyRuleProof(ruleProofNode, conclusion, metaproofContext) {
|
|
21
21
|
var ruleProofVerified = false;
|
|
22
|
-
metaproofContext.begin(ruleProofNode);
|
|
23
22
|
var ruleDerivationNode = ruleDerivationNodeQuery(ruleProofNode), ruleDerivationVerified = (0, _ruleDerivation.default)(ruleDerivationNode, metaproofContext);
|
|
24
23
|
if (ruleDerivationVerified) {
|
|
25
|
-
var lastMetaproofStep = metaproofContext.getLastMetaproofStep(), metaproofStep = lastMetaproofStep, metastatementNode = metaproofStep.getMetastatementNode(), conclusionMetastatementNode = conclusion.getMetastatementNode(), nodeA = metastatementNode, nodeB = conclusionMetastatementNode, nodeMatches = _matcher.
|
|
24
|
+
var lastMetaproofStep = metaproofContext.getLastMetaproofStep(), metaproofStep = lastMetaproofStep, metastatementNode = metaproofStep.getMetastatementNode(), conclusionMetastatementNode = conclusion.getMetastatementNode(), nodeA = metastatementNode, nodeB = conclusionMetastatementNode, nodeMatches = _matcher.default.matchNode(nodeA, nodeB);
|
|
26
25
|
ruleProofVerified = nodeMatches; ///
|
|
27
26
|
}
|
|
28
|
-
ruleProofVerified ? metaproofContext.complete(ruleProofNode) : metaproofContext.complete(ruleProofNode);
|
|
29
27
|
return ruleProofVerified;
|
|
30
28
|
}
|
|
31
29
|
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcnVsZVByb29mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbWF0Y2hlciBmcm9tIFwiLi4vbWF0Y2hlclwiO1xuaW1wb3J0IHZlcmlmeVJ1bGVEZXJpdmF0aW9uIGZyb20gXCIuLi92ZXJpZnkvcnVsZURlcml2YXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBydWxlRGVyaXZhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9ydWxlUHJvb2YvcnVsZURlcml2YXRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlSdWxlUHJvb2YocnVsZVByb29mTm9kZSwgY29uY2x1c2lvbiwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgcnVsZVByb29mVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBydWxlRGVyaXZhdGlvbk5vZGUgPSBydWxlRGVyaXZhdGlvbk5vZGVRdWVyeShydWxlUHJvb2ZOb2RlKSxcbiAgICAgICAgcnVsZURlcml2YXRpb25WZXJpZmllZCA9IHZlcmlmeVJ1bGVEZXJpdmF0aW9uKHJ1bGVEZXJpdmF0aW9uTm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgaWYgKHJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQpIHtcbiAgICBjb25zdCBsYXN0TWV0YXByb29mU3RlcCA9IG1ldGFwcm9vZkNvbnRleHQuZ2V0TGFzdE1ldGFwcm9vZlN0ZXAoKSxcbiAgICAgICAgICBtZXRhcHJvb2ZTdGVwID0gbGFzdE1ldGFwcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXByb29mU3RlcC5nZXRNZXRhc3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb24uZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBub2RlQSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgbm9kZUIgPSBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IG1hdGNoZXIubWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICBydWxlUHJvb2ZWZXJpZmllZCA9IG5vZGVNYXRjaGVzOyAgLy8vXG4gIH1cblxuICByZXR1cm4gcnVsZVByb29mVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UnVsZVByb29mIiwicnVsZURlcml2YXRpb25Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJydWxlUHJvb2ZOb2RlIiwiY29uY2x1c2lvbiIsIm1ldGFwcm9vZkNvbnRleHQiLCJydWxlUHJvb2ZWZXJpZmllZCIsInJ1bGVEZXJpdmF0aW9uTm9kZSIsInJ1bGVEZXJpdmF0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlSdWxlRGVyaXZhdGlvbiIsImxhc3RNZXRhcHJvb2ZTdGVwIiwiZ2V0TGFzdE1ldGFwcm9vZlN0ZXAiLCJtZXRhcHJvb2ZTdGVwIiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhc3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm5vZGVBIiwibm9kZUIiLCJub2RlTWF0Y2hlcyIsIm1hdGNoZXIiLCJtYXRjaE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBd0JBOzs7NERBUEo7bUVBQ2E7cUJBRVA7Ozs7OztBQUUxQixJQUFNQywwQkFBMEJDLElBQUFBLGdCQUFTLEVBQUM7QUFFM0IsU0FBU0YsZ0JBQWdCRyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsZ0JBQWdCLEVBQUU7SUFDbkYsSUFBSUMsb0JBQW9CLEtBQUs7SUFFN0IsSUFBTUMscUJBQXFCTix3QkFBd0JFLGdCQUM3Q0sseUJBQXlCQyxJQUFBQSx1QkFBb0IsRUFBQ0Ysb0JBQW9CRjtJQUV4RSxJQUFJRyx3QkFBd0I7UUFDMUIsSUFBTUUsb0JBQW9CTCxpQkFBaUJNLG9CQUFvQixJQUN6REMsZ0JBQWdCRixtQkFDaEJHLG9CQUFvQkQsY0FBY0Usb0JBQW9CLElBQ3REQyw4QkFBOEJYLFdBQVdVLG9CQUFvQixJQUM3REUsUUFBUUgsbUJBQ1JJLFFBQVFGLDZCQUNSRyxjQUFjQyxnQkFBTyxDQUFDQyxTQUFTLENBQUNKLE9BQU9DO1FBRTdDWCxvQkFBb0JZLGFBQWMsR0FBRztJQUN2QyxDQUFDO0lBRUQsT0FBT1o7QUFDVCJ9
|
|
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _statement = /*#__PURE__*/ _interopRequireDefault(require("../../verify/statement"));
|
|
12
|
-
var _string = require("../../utilities/string");
|
|
13
12
|
var _query = require("../../utilities/query");
|
|
14
13
|
function _interopRequireDefault(obj) {
|
|
15
14
|
return obj && obj.__esModule ? obj : {
|
|
@@ -19,26 +18,54 @@ function _interopRequireDefault(obj) {
|
|
|
19
18
|
var referenceNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/qualification!/reference!"), statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!");
|
|
20
19
|
function verifyQualifiedStatement(qualifiedStatementNode, assertions, derived, proofContext) {
|
|
21
20
|
var qualifiedStatementVerified = false;
|
|
22
|
-
proofContext.begin(qualifiedStatementNode);
|
|
23
21
|
var statementNode = statementNodeQuery(qualifiedStatementNode);
|
|
24
22
|
if (statementNode !== null) {
|
|
25
23
|
var statementString = proofContext.nodeAsString(statementNode);
|
|
26
|
-
proofContext.debug("Verifying the '".concat(statementString, "' qualified statement..."));
|
|
27
|
-
var ruleMatchesStatement = true;
|
|
24
|
+
proofContext.debug("Verifying the '".concat(statementString, "' qualified statement..."), qualifiedStatementNode);
|
|
28
25
|
var referenceNode = referenceNodeQuery(qualifiedStatementNode);
|
|
29
|
-
if (referenceNode
|
|
30
|
-
var referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode), rule = proofContext.findRuleByReferenceName(referenceName);
|
|
31
|
-
if (rule !== null) {
|
|
32
|
-
ruleMatchesStatement = rule.matchStatement(statementNode, proofContext);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (ruleMatchesStatement) {
|
|
26
|
+
if (referenceNode === null) {
|
|
36
27
|
var context = proofContext, statementVerified = (0, _statement.default)(statementNode, assertions, derived, context);
|
|
37
28
|
qualifiedStatementVerified = statementVerified; ///
|
|
29
|
+
} else {
|
|
30
|
+
var referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode);
|
|
31
|
+
if (!qualifiedStatementVerified) {
|
|
32
|
+
var rule = proofContext.findRuleByReferenceName(referenceName);
|
|
33
|
+
if (rule !== null) {
|
|
34
|
+
var ruleMatchesStatement = rule.matchStatement(statementNode, proofContext);
|
|
35
|
+
qualifiedStatementVerified = ruleMatchesStatement; ///
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!qualifiedStatementVerified) {
|
|
39
|
+
var axiom = proofContext.findAxiomByReferenceName(referenceName);
|
|
40
|
+
if (axiom !== null) {
|
|
41
|
+
var axiomMatchesStatement = axiom.matchStatement(statementNode, proofContext);
|
|
42
|
+
qualifiedStatementVerified = axiomMatchesStatement; ///
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!qualifiedStatementVerified) {
|
|
46
|
+
var lemma = proofContext.findLemmaByReferenceName(referenceName);
|
|
47
|
+
if (lemma !== null) {
|
|
48
|
+
var lemmaMatchesStatement = lemma.matchStatement(statementNode, proofContext);
|
|
49
|
+
qualifiedStatementVerified = lemmaMatchesStatement; ///
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!qualifiedStatementVerified) {
|
|
53
|
+
var theorem = proofContext.findTheoremByReferenceName(referenceName);
|
|
54
|
+
if (theorem !== null) {
|
|
55
|
+
var theoremMatchesStatement = theorem.matchStatement(statementNode, proofContext);
|
|
56
|
+
qualifiedStatementVerified = theoremMatchesStatement; ///
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!qualifiedStatementVerified) {
|
|
60
|
+
var conjecture = proofContext.findConjectureByReferenceName(referenceName);
|
|
61
|
+
if (conjecture !== null) {
|
|
62
|
+
var conjectureMatchesStatement = conjecture.matchStatement(statementNode, proofContext);
|
|
63
|
+
qualifiedStatementVerified = conjectureMatchesStatement; ///
|
|
64
|
+
}
|
|
65
|
+
}
|
|
38
66
|
}
|
|
39
67
|
}
|
|
40
|
-
qualifiedStatementVerified ? proofContext.complete(qualifiedStatementNode) : proofContext.halt(qualifiedStatementNode);
|
|
41
68
|
return qualifiedStatementVerified;
|
|
42
69
|
}
|
|
43
70
|
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzZXJ0aW9ucywgZGVyaXZlZCwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBwcm9vZkNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcHJvb2ZDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAocmVmZXJlbmNlTm9kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHByb29mQ29udGV4dCxcbiAgICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGFzc2VydGlvbnMsIGRlcml2ZWQsIGNvbnRleHQpO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVmZXJlbmNlTmFtZSA9IHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgICAgaWYgKCFxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBydWxlID0gcHJvb2ZDb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgcnVsZU1hdGNoZXNTdGF0ZW1lbnQgPSBydWxlLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHJ1bGVNYXRjaGVzU3RhdGVtZW50OyAgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBheGlvbSA9IHByb29mQ29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGxlbW1hID0gcHJvb2ZDb250ZXh0LmZpbmRMZW1tYUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICAgICAgICBpZiAobGVtbWEgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBsZW1tYU1hdGNoZXNTdGF0ZW1lbnQgPSBsZW1tYS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBsZW1tYU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgdGhlb3JlbSA9IHByb29mQ29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICAgICAgICBpZiAodGhlb3JlbSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRoZW9yZW1NYXRjaGVzU3RhdGVtZW50ID0gdGhlb3JlbS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlID0gcHJvb2ZDb250ZXh0LmZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgICAgIGlmIChjb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQgPSBjb25qZWN0dXJlLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50OyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJxdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiYXNzZXJ0aW9ucyIsImRlcml2ZWQiLCJwcm9vZkNvbnRleHQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsInJlZmVyZW5jZU5vZGUiLCJjb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lIiwicnVsZU1hdGNoZXNTdGF0ZW1lbnQiLCJtYXRjaFN0YXRlbWVudCIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2VOYW1lIiwiYXhpb21NYXRjaGVzU3RhdGVtZW50IiwibGVtbWEiLCJmaW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlTmFtZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQXdCQTs7OzhEQVBJO3FCQUU4Qjs7Ozs7O0FBRTFELElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyxrREFDL0JDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRix5QkFBeUJJLHNCQUFzQixFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFO0lBQzFHLElBQUlDLDZCQUE2QixLQUFLO0lBRXRDLElBQU1DLGdCQUFnQk4sbUJBQW1CQztJQUV6QyxJQUFJSyxrQkFBa0IsSUFBSSxFQUFFO1FBQzFCLElBQU1DLGtCQUFrQkgsYUFBYUksWUFBWSxDQUFDRjtRQUVsREYsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0IsNkJBQTJCTjtRQUVoRixJQUFNUyxnQkFBZ0JaLG1CQUFtQkc7UUFFekMsSUFBSVMsa0JBQWtCLElBQUksRUFBRTtZQUMxQixJQUFNQyxVQUFVUCxjQUNWUSxvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNQLGVBQWVKLFlBQVlDLFNBQVNRO1lBRTlFTiw2QkFBNkJPLG1CQUFtQixHQUFHO1FBQ3JELE9BQU87WUFDTCxJQUFNRSxnQkFBZ0JDLElBQUFBLHFDQUE4QixFQUFDTDtZQUVyRCxJQUFJLENBQUNMLDRCQUE0QjtnQkFDL0IsSUFBTVcsT0FBT1osYUFBYWEsdUJBQXVCLENBQUNIO2dCQUVsRCxJQUFJRSxTQUFTLElBQUksRUFBRTtvQkFDakIsSUFBTUUsdUJBQXVCRixLQUFLRyxjQUFjLENBQUNiLGVBQWVGO29CQUVoRUMsNkJBQTZCYSxzQkFBdUIsR0FBRztnQkFDekQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUNiLDRCQUE0QjtnQkFDL0IsSUFBTWUsUUFBUWhCLGFBQWFpQix3QkFBd0IsQ0FBQ1A7Z0JBRXBELElBQUlNLFVBQVUsSUFBSSxFQUFFO29CQUNsQixJQUFNRSx3QkFBd0JGLE1BQU1ELGNBQWMsQ0FBQ2IsZUFBZUY7b0JBRWxFQyw2QkFBNkJpQix1QkFBdUIsR0FBRztnQkFDekQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUNqQiw0QkFBNEI7Z0JBQy9CLElBQU1rQixRQUFRbkIsYUFBYW9CLHdCQUF3QixDQUFDVjtnQkFFcEQsSUFBSVMsVUFBVSxJQUFJLEVBQUU7b0JBQ2xCLElBQU1FLHdCQUF3QkYsTUFBTUosY0FBYyxDQUFDYixlQUFlRjtvQkFFbEVDLDZCQUE2Qm9CLHVCQUF1QixHQUFHO2dCQUN6RCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQ3BCLDRCQUE0QjtnQkFDL0IsSUFBTXFCLFVBQVV0QixhQUFhdUIsMEJBQTBCLENBQUNiO2dCQUV4RCxJQUFJWSxZQUFZLElBQUksRUFBRTtvQkFDcEIsSUFBTUUsMEJBQTBCRixRQUFRUCxjQUFjLENBQUNiLGVBQWVGO29CQUV0RUMsNkJBQTZCdUIseUJBQXlCLEdBQUc7Z0JBQzNELENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxDQUFDdkIsNEJBQTRCO2dCQUMvQixJQUFNd0IsYUFBYXpCLGFBQWEwQiw2QkFBNkIsQ0FBQ2hCO2dCQUU5RCxJQUFJZSxlQUFlLElBQUksRUFBRTtvQkFDdkIsSUFBTUUsNkJBQTZCRixXQUFXVixjQUFjLENBQUNiLGVBQWVGO29CQUU1RUMsNkJBQTZCMEIsNEJBQTRCLEdBQUc7Z0JBQzlELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPMUI7QUFDVCJ9
|
|
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
var _statement = /*#__PURE__*/ _interopRequireDefault(require("../statement"));
|
|
12
12
|
var _query = require("../../utilities/query");
|
|
13
|
-
var _string = require("../../utilities/string");
|
|
14
13
|
function _interopRequireDefault(obj) {
|
|
15
14
|
return obj && obj.__esModule ? obj : {
|
|
16
15
|
default: obj
|
|
@@ -19,11 +18,10 @@ function _interopRequireDefault(obj) {
|
|
|
19
18
|
var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!");
|
|
20
19
|
function verifyUnqualifiedStatement(unqualifiedStatementNode, assertions, derived, proofContext) {
|
|
21
20
|
var unqualifiedStatementVerified = false;
|
|
22
|
-
proofContext.begin(unqualifiedStatementNode);
|
|
23
21
|
var statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
24
22
|
if (statementNode !== null) {
|
|
25
23
|
var statementString = proofContext.nodeAsString(statementNode);
|
|
26
|
-
proofContext.debug("Verifying the '".concat(statementString, "' unqualified statement..."));
|
|
24
|
+
proofContext.debug("Verifying the '".concat(statementString, "' unqualified statement..."), unqualifiedStatementNode);
|
|
27
25
|
var statementMatches = true;
|
|
28
26
|
if (derived) {
|
|
29
27
|
statementMatches = proofContext.matchStatement(statementNode);
|
|
@@ -33,8 +31,7 @@ function verifyUnqualifiedStatement(unqualifiedStatementNode, assertions, derive
|
|
|
33
31
|
unqualifiedStatementVerified = statementVerified; ///
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
unqualifiedStatementVerified ? proofContext.complete(unqualifiedStatementNode) : proofContext.halt(unqualifiedStatementNode);
|
|
37
34
|
return unqualifiedStatementVerified;
|
|
38
35
|
}
|
|
39
36
|
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi9zdGF0ZW1lbnRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBwcm9vZkNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcHJvb2ZDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsZXQgc3RhdGVtZW50TWF0Y2hlcyA9IHRydWU7XG5cbiAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgc3RhdGVtZW50TWF0Y2hlcyA9IHByb29mQ29udGV4dC5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50TWF0Y2hlcykge1xuICAgICAgY29uc3QgY29udGV4dCA9IHByb29mQ29udGV4dCwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KTtcblxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJhc3NlcnRpb25zIiwiZGVyaXZlZCIsInByb29mQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnQiLCJjb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBd0JBOzs7OERBTkk7cUJBRUY7Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YsMkJBQTJCRyx3QkFBd0IsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRTtJQUM5RyxJQUFJQywrQkFBK0IsS0FBSztJQUV4QyxJQUFNQyxnQkFBZ0JQLG1CQUFtQkU7SUFFekMsSUFBSUssa0JBQWtCLElBQUksRUFBRTtRQUMxQixJQUFNQyxrQkFBa0JILGFBQWFJLFlBQVksQ0FBQ0Y7UUFFbERGLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkYsaUJBQWdCLCtCQUE2Qk47UUFFbEYsSUFBSVMsbUJBQW1CLElBQUk7UUFFM0IsSUFBSVAsU0FBUztZQUNYTyxtQkFBbUJOLGFBQWFPLGNBQWMsQ0FBQ0w7UUFDakQsQ0FBQztRQUVELElBQUlJLGtCQUFrQjtZQUNwQixJQUFNRSxVQUFVUixjQUNWUyxvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNSLGVBQWVKLFlBQVlDLFNBQVNTO1lBRTlFUCwrQkFBK0JRLG1CQUFvQixHQUFHO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT1I7QUFDVCJ9
|
package/lib/verify/statement.js
CHANGED
|
@@ -2,22 +2,28 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
default: function() {
|
|
8
13
|
return verifyStatement;
|
|
14
|
+
},
|
|
15
|
+
verifyStatementAgainstCombinator: function() {
|
|
16
|
+
return verifyStatementAgainstCombinator;
|
|
9
17
|
}
|
|
10
18
|
});
|
|
11
19
|
var _equality = /*#__PURE__*/ _interopRequireDefault(require("../equality"));
|
|
12
20
|
var _term = /*#__PURE__*/ _interopRequireDefault(require("../verify/term"));
|
|
13
|
-
var _equality1 = /*#__PURE__*/ _interopRequireDefault(require("../ocmbinator/equality"));
|
|
14
21
|
var _bracketed = /*#__PURE__*/ _interopRequireDefault(require("../ocmbinator/bracketed"));
|
|
15
22
|
var _type = /*#__PURE__*/ _interopRequireDefault(require("../verify/assertion/type"));
|
|
16
23
|
var _array = require("../utilities/array");
|
|
17
24
|
var _type1 = require("../type");
|
|
18
25
|
var _typeNames = require("../typeNames");
|
|
19
26
|
var _metaTypes = require("../metaTypes");
|
|
20
|
-
var _constants = require("../constants");
|
|
21
27
|
var _query = require("../utilities/query");
|
|
22
28
|
var _ruleNames = require("../ruleNames");
|
|
23
29
|
function _arrayLikeToArray(arr, len) {
|
|
@@ -50,45 +56,26 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
|
50
56
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
51
57
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
52
58
|
}
|
|
53
|
-
var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), metaTypeNodeQuery = (0, _query.nodeQuery)("/metaArgument/metaType
|
|
59
|
+
var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), metaTypeNodeQuery = (0, _query.nodeQuery)("/metaArgument/metaType!"), statementNodeQuery = (0, _query.nodeQuery)("/metaArgument/statement!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!"), metaTypeTerminalNodeQuery = (0, _query.nodeQuery)("/metaType/@meta-type");
|
|
54
60
|
function verifyStatement(statementNode, assertions, derived, context) {
|
|
55
61
|
var statementVerified = false;
|
|
56
|
-
context.begin(statementNode);
|
|
57
62
|
if (!statementVerified) {
|
|
58
|
-
var
|
|
59
|
-
statementVerified =
|
|
63
|
+
var statementVerifiedAgainstCombinators = verifyStatementAgainstCombinators(statementNode, context);
|
|
64
|
+
statementVerified = statementVerifiedAgainstCombinators; ///
|
|
60
65
|
}
|
|
61
66
|
if (!statementVerified) {
|
|
62
|
-
var statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode, assertions, context);
|
|
67
|
+
var statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode, assertions, derived, context);
|
|
63
68
|
statementVerified = statementVerifiedAsTypeAssertion; ///
|
|
64
69
|
}
|
|
65
70
|
if (!statementVerified) {
|
|
66
|
-
var
|
|
67
|
-
statementVerified =
|
|
71
|
+
var statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
|
|
72
|
+
statementVerified = statementVerifiedAsEquality; //
|
|
68
73
|
}
|
|
69
|
-
statementVerified ? context.complete(statementNode) : context.halt(statementNode);
|
|
70
74
|
return statementVerified;
|
|
71
75
|
}
|
|
72
|
-
function
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
if (statementVerifiedAgainstCombinator) {
|
|
76
|
-
statementVerifiedAsEquality = true;
|
|
77
|
-
if (derived) {
|
|
78
|
-
var equality = _equality.default.fromStatementNode(statementNode), proofSteps = context.getProofSteps(), equalities = equalitiesFromProofSteps(proofSteps), equalityEquates = equality.equate(equalities);
|
|
79
|
-
statementVerifiedAsEquality = equalityEquates; ///
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return statementVerifiedAsEquality;
|
|
83
|
-
}
|
|
84
|
-
function verifyStatementAsTypeAssertion(statementNode, assertions, context) {
|
|
85
|
-
var statementVerifiedAsTypeAssertion = false;
|
|
86
|
-
var typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
87
|
-
if (typeAssertionNode !== null) {
|
|
88
|
-
var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assertions, context);
|
|
89
|
-
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
90
|
-
}
|
|
91
|
-
return statementVerifiedAsTypeAssertion;
|
|
76
|
+
function verifyStatementAgainstCombinator(statementNode, combinator, context) {
|
|
77
|
+
var combinatorStatementNode = combinator.getStatementNode(), node = statementNode, combinatorNode = combinatorStatementNode, nodeVerified = verifyNode(node, combinatorNode, context), statementVerifiedAgainstCombinator = nodeVerified; ///
|
|
78
|
+
return statementVerifiedAgainstCombinator;
|
|
92
79
|
}
|
|
93
80
|
function verifyStatementAgainstCombinators(statementNode, context) {
|
|
94
81
|
var statementVerifiedAgainstCombinators = false;
|
|
@@ -107,9 +94,29 @@ function verifyStatementAgainstCombinators(statementNode, context) {
|
|
|
107
94
|
}
|
|
108
95
|
return statementVerifiedAgainstCombinators;
|
|
109
96
|
}
|
|
110
|
-
function
|
|
111
|
-
var
|
|
112
|
-
|
|
97
|
+
function verifyStatementAsTypeAssertion(statementNode, assertions, derived, context) {
|
|
98
|
+
var statementVerifiedAsTypeAssertion = false;
|
|
99
|
+
var typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
100
|
+
if (typeAssertionNode !== null) {
|
|
101
|
+
var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assertions, derived, context);
|
|
102
|
+
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
103
|
+
}
|
|
104
|
+
return statementVerifiedAsTypeAssertion;
|
|
105
|
+
}
|
|
106
|
+
function verifyStatementAsEquality(statementNode, derived, context) {
|
|
107
|
+
var statementVerifiedAsEquality = false;
|
|
108
|
+
var equality = _equality.default.fromStatementNode(statementNode, context);
|
|
109
|
+
if (equality !== null) {
|
|
110
|
+
statementVerifiedAsEquality = true; ///
|
|
111
|
+
if (derived) {
|
|
112
|
+
var equalities = context.getEqualities();
|
|
113
|
+
if (equalities !== null) {
|
|
114
|
+
var equalityEquates = equality.equate(equalities, context);
|
|
115
|
+
statementVerifiedAsEquality = equalityEquates; ///
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return statementVerifiedAsEquality;
|
|
113
120
|
}
|
|
114
121
|
function verifyNode(node, combinatorNode, context) {
|
|
115
122
|
var nodeVerified;
|
|
@@ -178,7 +185,7 @@ function verifyArgumentNode(argumentNode, combinatorArgumentNode, context) {
|
|
|
178
185
|
var termNode = termNodeQuery(argumentNode);
|
|
179
186
|
if (termNode === null) {
|
|
180
187
|
var argumentString = context.nodeAsString(argumentNode);
|
|
181
|
-
context.error("The ".concat(argumentString, " argument should be a term, not a type"));
|
|
188
|
+
context.error("The ".concat(argumentString, " argument should be a term, not a type"), argumentNode);
|
|
182
189
|
} else {
|
|
183
190
|
var types = [], termVerified = (0, _term.default)(termNode, types, context);
|
|
184
191
|
if (termVerified) {
|
|
@@ -192,37 +199,24 @@ function verifyArgumentNode(argumentNode, combinatorArgumentNode, context) {
|
|
|
192
199
|
}
|
|
193
200
|
function verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context) {
|
|
194
201
|
var metaArgumentNodeVerified = false;
|
|
195
|
-
var statementNode = statementNodeQuery(metaArgumentNode);
|
|
202
|
+
var statementNode = statementNodeQuery(metaArgumentNode), combinatorMetaTYpeNode = metaTypeNodeQuery(combinatorMetaargumentNode);
|
|
196
203
|
if (statementNode === null) {
|
|
197
204
|
var metaArgumentString = context.nodeAsString(metaArgumentNode);
|
|
198
|
-
context.error("
|
|
205
|
+
context.error("Expected a statement but got a '".concat(metaArgumentString, "' meta-type."), metaArgumentNode);
|
|
199
206
|
} else {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
context.error("The '".concat(combinatorMetaargumentString, "' combinator meta-argument should be the 'Statement' meta-type."));
|
|
207
|
+
if (combinatorMetaTYpeNode === null) {
|
|
208
|
+
var combinatorMetaargumentString = context.nodeAsString(combinatorMetaargumentNode);
|
|
209
|
+
context.error("Expected a meta-type but got a '".concat(combinatorMetaargumentString, "' statement."), metaArgumentNode);
|
|
210
|
+
} else {
|
|
211
|
+
var combinatorMetaTypeTerminalNode = metaTypeTerminalNodeQuery(combinatorMetaTYpeNode), content = combinatorMetaTypeTerminalNode.getContent(), contentStatementMetaType = content === _metaTypes.STATEMENT_META_TYPE;
|
|
212
|
+
if (!contentStatementMetaType) {
|
|
213
|
+
context.error("Expected the meta-type to be 'Statement' but got '".concat(content, "'."), metaArgumentNode);
|
|
214
|
+
} else {
|
|
215
|
+
metaArgumentNodeVerified = true;
|
|
210
216
|
}
|
|
211
217
|
}
|
|
212
218
|
}
|
|
213
219
|
return metaArgumentNodeVerified;
|
|
214
220
|
}
|
|
215
|
-
function equalitiesFromProofSteps(proofSteps) {
|
|
216
|
-
var start = -_constants.MAXIMUM_INDEXES_LENGTH; ///
|
|
217
|
-
proofSteps = proofSteps.slice(start); ///
|
|
218
|
-
var equalities = proofSteps.reduce(function(equalities, proofStep, index) {
|
|
219
|
-
var equality = _equality.default.fromProofStep(proofStep);
|
|
220
|
-
if (equality !== null) {
|
|
221
|
-
equalities.push(equality);
|
|
222
|
-
}
|
|
223
|
-
return equalities;
|
|
224
|
-
}, []);
|
|
225
|
-
return equalities;
|
|
226
|
-
}
|
|
227
221
|
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRXF1YWxpdHkgZnJvbSBcIi4uL2VxdWFsaXR5XCI7XG5pbXBvcnQgdmVyaWZ5VGVybSBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1cIjtcbmltcG9ydCBlcXVhbGl0eUNvbWJpbmF0b3IgZnJvbSBcIi4uL29jbWJpbmF0b3IvZXF1YWxpdHlcIjtcbmltcG9ydCBicmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuLi9vY21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS9hc3NlcnRpb24vdHlwZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgT0JKRUNUX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IFNUQVRFTUVOVF9NRVRBX1RZUEUgfSBmcm9tIFwiLi4vbWV0YVR5cGVzXCI7XG5pbXBvcnQgeyBNQVhJTVVNX0lOREVYRVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IEFSR1VNRU5UX1JVTEVfTkFNRSwgTUVUQV9BUkdVTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGUhXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YUFyZ3VtZW50L21ldGFUeXBlIS9AbWV0YS10eXBlXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFBcmd1bWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnRleHQuYmVnaW4oc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHkoc3RhdGVtZW50Tm9kZSwgZGVyaXZlZCwgY29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTsgIC8vXG4gIH1cblxuICBpZiAoIXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB2ZXJpZnlTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uOyAvLy9cbiAgfVxuXG4gIGlmICghc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyA9IHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9ycyhzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnM7ICAvLy9cbiAgfVxuXG4gIHN0YXRlbWVudFZlcmlmaWVkID9cbiAgICBjb250ZXh0LmNvbXBsZXRlKHN0YXRlbWVudE5vZGUpIDpcbiAgICAgIGNvbnRleHQuaGFsdChzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHkoc3RhdGVtZW50Tm9kZSwgZGVyaXZlZCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZmFsc2U7XG5cbiAgY29uc3QgY29tYmluYXRvciA9IGVxdWFsaXR5Q29tYmluYXRvciwgIC8vL1xuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yID0gdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgY29tYmluYXRvciwgY29udGV4dCk7XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IpIHtcbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSB0cnVlO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICBwcm9vZlN0ZXBzID0gY29udGV4dC5nZXRQcm9vZlN0ZXBzKCksXG4gICAgICAgICAgICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0Zyb21Qcm9vZlN0ZXBzKHByb29mU3RlcHMpLFxuICAgICAgICAgICAgZXF1YWxpdHlFcXVhdGVzID0gZXF1YWxpdHkuZXF1YXRlKGVxdWFsaXRpZXMpO1xuXG4gICAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBlcXVhbGl0eUVxdWF0ZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3JzKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3JzID0gZmFsc2U7XG5cbiAgbGV0IGNvbWJpbmF0b3JzID0gY29udGV4dC5nZXRDb21iaW5hdG9ycygpO1xuXG4gIGNvbWJpbmF0b3JzID0gWyAvLy9cbiAgICBicmFja2V0ZWRDb21iaW5hdG9yLFxuICAgIC4uLmNvbWJpbmF0b3JzXG4gIF07XG5cbiAgY29uc3QgY29tYmluYXRvciA9IGNvbWJpbmF0b3JzLmZpbmQoKGNvbWJpbmF0b3IpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yID0gdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgY29tYmluYXRvciwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChjb21iaW5hdG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3JzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbWJpbmF0b3JOb2RlID0gY29tYmluYXRvclN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb2RlKG5vZGUsIGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgY29tYmluYXRvck5vZGVUZXJtaW5hbE5vZGUgPSBjb21iaW5hdG9yTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBjb21iaW5hdG9yTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb21iaW5hdG9yVGVybWluYWxOb2RlID0gY29tYmluYXRvck5vZGUsICAvLy9cbiAgICAgICAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29tYmluYXRvclRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29tYmluYXRvck5vblRlcm1pbmFsTm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZXMobm9kZXMsIGNvbWJpbmF0b3JOb2RlcywgY29udGV4dCkge1xuICBsZXQgbm9kZXNWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb21iaW5hdG9yTm9kZXNMZW5ndGggPSBjb21iaW5hdG9yTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29tYmluYXRvck5vZGVzTGVuZ3RoKSB7XG4gICAgbm9kZXNWZXJpZmllZCA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29tYmluYXRvck5vZGUgPSBjb21iaW5hdG9yTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBjb21iaW5hdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChub2RlVmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29tYmluYXRvclRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gdGVybWluYWxOb2RlLm1hdGNoKGNvbWJpbmF0b3JUZXJtaW5hbE5vZGUpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICBjb21iaW5hdG9yUnVsZU5hbWUgPSBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gIGlmIChydWxlTmFtZSA9PT0gY29tYmluYXRvclJ1bGVOYW1lKSB7XG4gICAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgICAgY2FzZSBBUkdVTUVOVF9SVUxFX05BTUU6IHtcbiAgICAgICAgY29uc3QgYXJndW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgY29tYmluYXRvckFyZ3VtZW50Tm9kZSA9IGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGNvbWJpbmF0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIE1FVEFfQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgIGNvbnN0IG1ldGFBcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBjb21iaW5hdG9yTWV0YWFyZ3VtZW50Tm9kZSA9IGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlNZXRhYXJndW1lbnROb2RlKG1ldGFBcmd1bWVudE5vZGUsIGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFBcmd1bWVudE5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JDaGlsZE5vZGVzID0gY29tYmluYXRvck5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlcyA9IGNvbWJpbmF0b3JDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgbm9kZXNWZXJpZmllZCA9IHZlcmlmeU5vZGVzKG5vZGVzLCBjb21iaW5hdG9yTm9kZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbm9kZXNWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb21iaW5hdG9yQXJndW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBhcmd1bWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShhcmd1bWVudE5vZGUpO1xuXG4gIGlmICh0ZXJtTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke2FyZ3VtZW50U3RyaW5nfSBhcmd1bWVudCBzaG91bGQgYmUgYSB0ZXJtLCBub3QgYSB0eXBlYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoY29tYmluYXRvckFyZ3VtZW50Tm9kZSksXG4gICAgICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgICAgIHR5cGUgPSAodHlwZU5hbWUgPT09IE9CSkVDVF9UWVBFX05BTUUpID9cbiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgIHN0YXRlbWVudFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNZXRhYXJndW1lbnROb2RlKG1ldGFBcmd1bWVudE5vZGUsIGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KG1ldGFBcmd1bWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YUFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobWV0YUFyZ3VtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LmVycm9yKGBUaGUgJyR7bWV0YUFyZ3VtZW50U3RyaW5nfScgbWV0YS1hcmd1bWVudCBzaG91bGQgYmUgYSBzdGF0ZW1lbnQsIG5vdCBhIG1ldGEtdHlwZS5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXJpdmVkID0gZmFsc2UsXG4gICAgICAgICAgYXNzZXJ0aW9ucyA9IG51bGwsXG4gICAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzZXJ0aW9ucywgZGVyaXZlZCwgY29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbWJpbmF0b3JNZXRhVFlwZU5vZGUgPSBtZXRhVHlwZU5vZGVRdWVyeShjb21iaW5hdG9yTWV0YWFyZ3VtZW50Tm9kZSk7XG5cbiAgICAgIGlmIChjb21iaW5hdG9yTWV0YVRZcGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGNvbWJpbmF0b3JNZXRhVFlwZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgdGVybWluYWxOb2RlQ29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICAgIHRlcm1pbmFsTm9kZUNvbnRlbnRTdGF0ZW1lbnRNZXRhVHlwZSA9ICh0ZXJtaW5hbE5vZGVDb250ZW50ID09PSBTVEFURU1FTlRfTUVUQV9UWVBFKTtcblxuICAgICAgICBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSB0ZXJtaW5hbE5vZGVDb250ZW50U3RhdGVtZW50TWV0YVR5cGU7ICAvLy9cbiAgICAgIH1cblxuICAgICAgaWYgKCFtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgY29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlKTtcblxuICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgJyR7Y29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZ30nIGNvbWJpbmF0b3IgbWV0YS1hcmd1bWVudCBzaG91bGQgYmUgdGhlICdTdGF0ZW1lbnQnIG1ldGEtdHlwZS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YUFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiBlcXVhbGl0aWVzRnJvbVByb29mU3RlcHMocHJvb2ZTdGVwcykge1xuICBjb25zdCBzdGFydCA9IC1NQVhJTVVNX0lOREVYRVNfTEVOR1RIOyAgLy8vXG5cbiAgcHJvb2ZTdGVwcyA9IHByb29mU3RlcHMuc2xpY2Uoc3RhcnQpOyAvLy9cblxuICBjb25zdCBlcXVhbGl0aWVzID0gcHJvb2ZTdGVwcy5yZWR1Y2UoKGVxdWFsaXRpZXMsIHByb29mU3RlcCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21Qcm9vZlN0ZXAocHJvb2ZTdGVwKTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgZXF1YWxpdGllcy5wdXNoKGVxdWFsaXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfSwgW10pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudCIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZSIsImFzc2VydGlvbnMiLCJkZXJpdmVkIiwiY29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkIiwiYmVnaW4iLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJ2ZXJpZnlTdGF0ZW1lbnRBc0VxdWFsaXR5Iiwic3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24iLCJ2ZXJpZnlTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyIsInZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9ycyIsImNvbXBsZXRlIiwiaGFsdCIsImNvbWJpbmF0b3IiLCJlcXVhbGl0eUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yIiwidmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IiLCJlcXVhbGl0eSIsIkVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudE5vZGUiLCJwcm9vZlN0ZXBzIiwiZ2V0UHJvb2ZTdGVwcyIsImVxdWFsaXRpZXMiLCJlcXVhbGl0aWVzRnJvbVByb29mU3RlcHMiLCJlcXVhbGl0eUVxdWF0ZXMiLCJlcXVhdGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iLCJjb21iaW5hdG9ycyIsImdldENvbWJpbmF0b3JzIiwiYnJhY2tldGVkQ29tYmluYXRvciIsImZpbmQiLCJjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJub2RlIiwiY29tYmluYXRvck5vZGUiLCJub2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb2RlIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwiY29tYmluYXRvck5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb21iaW5hdG9yVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJ2ZXJpZnlOb2RlcyIsIm5vZGVzIiwiY29tYmluYXRvck5vZGVzIiwibm9kZXNWZXJpZmllZCIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29tYmluYXRvck5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjb21iaW5hdG9yUnVsZU5hbWUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJhcmd1bWVudE5vZGUiLCJjb21iaW5hdG9yQXJndW1lbnROb2RlIiwiYXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudE5vZGUiLCJNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSIsIm1ldGFBcmd1bWVudE5vZGUiLCJjb21iaW5hdG9yTWV0YWFyZ3VtZW50Tm9kZSIsIm1ldGFBcmd1bWVudE5vZGVWZXJpZmllZCIsInZlcmlmeU1ldGFhcmd1bWVudE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbWJpbmF0b3JDaGlsZE5vZGVzIiwidGVybU5vZGUiLCJhcmd1bWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImVycm9yIiwidHlwZXMiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJ0ZXJtVHlwZSIsInR5cGVOb2RlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGUiLCJPQkpFQ1RfVFlQRV9OQU1FIiwib2JqZWN0VHlwZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInN0YXRlbWVudFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJtZXRhQXJndW1lbnRTdHJpbmciLCJjb21iaW5hdG9yTWV0YVRZcGVOb2RlIiwidGVybWluYWxOb2RlQ29udGVudCIsImdldENvbnRlbnQiLCJ0ZXJtaW5hbE5vZGVDb250ZW50U3RhdGVtZW50TWV0YVR5cGUiLCJTVEFURU1FTlRfTUVUQV9UWVBFIiwiY29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZyIsInN0YXJ0IiwiTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCIsInNsaWNlIiwicmVkdWNlIiwicHJvb2ZTdGVwIiwiZnJvbVByb29mU3RlcCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXNCQTs7O2VBQXdCQTs7OzZEQXBCSDt5REFDRTs4REFDUTs4REFDQzt5REFDQTtxQkFFVjtxQkFDSzt5QkFDTTt5QkFDRzt5QkFDRztxQkFDUzt5QkFDWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUMsdUNBQzlCRyxxQkFBcUJILElBQUFBLGdCQUFTLEVBQUMsNkJBQy9CSSx5QkFBeUJKLElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsZ0JBQWdCTyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUU7SUFDbkYsSUFBSUMsb0JBQW9CLEtBQUs7SUFFN0JELFFBQVFFLEtBQUssQ0FBQ0w7SUFFZCxJQUFJLENBQUNJLG1CQUFtQjtRQUN0QixJQUFNRSw4QkFBOEJDLDBCQUEwQlAsZUFBZUUsU0FBU0M7UUFFdEZDLG9CQUFvQkUsNkJBQThCLEVBQUU7SUFDdEQsQ0FBQztJQUVELElBQUksQ0FBQ0YsbUJBQW1CO1FBQ3RCLElBQU1JLG1DQUFtQ0MsK0JBQStCVCxlQUFlQyxZQUFZRTtRQUVuR0Msb0JBQW9CSSxrQ0FBa0MsR0FBRztJQUMzRCxDQUFDO0lBRUQsSUFBSSxDQUFDSixtQkFBbUI7UUFDdEIsSUFBTU0sc0NBQXNDQyxrQ0FBa0NYLGVBQWVHO1FBRTdGQyxvQkFBb0JNLHFDQUFzQyxHQUFHO0lBQy9ELENBQUM7SUFFRE4sb0JBQ0VELFFBQVFTLFFBQVEsQ0FBQ1osaUJBQ2ZHLFFBQVFVLElBQUksQ0FBQ2IsY0FBYztJQUUvQixPQUFPSTtBQUNUO0FBRUEsU0FBU0csMEJBQTBCUCxhQUFhLEVBQUVFLE9BQU8sRUFBRUMsT0FBTyxFQUFFO0lBQ2xFLElBQUlHLDhCQUE4QixLQUFLO0lBRXZDLElBQU1RLGFBQWFDLGtCQUFrQixFQUMvQkMscUNBQXFDQyxpQ0FBaUNqQixlQUFlYyxZQUFZWDtJQUV2RyxJQUFJYSxvQ0FBb0M7UUFDdENWLDhCQUE4QixJQUFJO1FBRWxDLElBQUlKLFNBQVM7WUFDWCxJQUFNZ0IsV0FBV0MsaUJBQVEsQ0FBQ0MsaUJBQWlCLENBQUNwQixnQkFDdENxQixhQUFhbEIsUUFBUW1CLGFBQWEsSUFDbENDLGFBQWFDLHlCQUF5QkgsYUFDdENJLGtCQUFrQlAsU0FBU1EsTUFBTSxDQUFDSDtZQUV4Q2pCLDhCQUE4Qm1CLGlCQUFpQixHQUFHO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT25CO0FBQ1Q7QUFFQSxTQUFTRywrQkFBK0JULGFBQWEsRUFBRUMsVUFBVSxFQUFFRSxPQUFPLEVBQUU7SUFDMUUsSUFBSUssbUNBQW1DLEtBQUs7SUFFNUMsSUFBTW1CLG9CQUFvQjVCLHVCQUF1QkM7SUFFakQsSUFBSTJCLHNCQUFzQixJQUFJLEVBQUU7UUFDOUIsSUFBTUMsd0JBQXdCQyxJQUFBQSxhQUFtQixFQUFDRixtQkFBbUIxQixZQUFZRTtRQUVqRkssbUNBQW1Db0IsdUJBQXVCLEdBQUc7SUFDL0QsQ0FBQztJQUVELE9BQU9wQjtBQUNUO0FBRUEsU0FBU0csa0NBQWtDWCxhQUFhLEVBQUVHLE9BQU8sRUFBRTtJQUNqRSxJQUFJTyxzQ0FBc0MsS0FBSztJQUUvQyxJQUFJb0IsY0FBYzNCLFFBQVE0QixjQUFjO0lBRXhDRCxjQUFjO1FBQ1pFLGtCQUFtQjtLQUVwQixDQUhhLE9BRVosbUJBQUdGO0lBR0wsSUFBTWhCLGFBQWFnQixZQUFZRyxJQUFJLENBQUMsU0FBQ25CLFlBQWU7UUFDNUMsSUFBTUUscUNBQXFDQyxpQ0FBaUNqQixlQUFlYyxZQUFZWDtRQUV2RyxJQUFJYSxvQ0FBb0M7WUFDdEMsT0FBTyxJQUFJO1FBQ2IsQ0FBQztJQUNILE1BQU0sSUFBSTtJQUVoQixJQUFJRixlQUFlLElBQUksRUFBRTtRQUN2Qkosc0NBQXNDLElBQUk7SUFDNUMsQ0FBQztJQUVELE9BQU9BO0FBQ1Q7QUFFQSxTQUFTTyxpQ0FBaUNqQixhQUFhLEVBQUVjLFVBQVUsRUFBRVgsT0FBTyxFQUFFO0lBQzVFLElBQU0rQiwwQkFBMEJwQixXQUFXcUIsZ0JBQWdCLElBQ3JEQyxPQUFPcEMsZUFDUHFDLGlCQUFpQkgseUJBQ2pCSSxlQUFlQyxXQUFXSCxNQUFNQyxnQkFBZ0JsQyxVQUNoRGEscUNBQXFDc0IsY0FBZSxHQUFHO0lBRTdELE9BQU90QjtBQUNUO0FBRUEsU0FBU3VCLFdBQVdILElBQUksRUFBRUMsY0FBYyxFQUFFbEMsT0FBTyxFQUFFO0lBQ2pELElBQUltQztJQUVKLElBQU1FLG1CQUFtQkosS0FBS0ssY0FBYyxJQUN0Q0MsNkJBQTZCTCxlQUFlSSxjQUFjO0lBRWhFLElBQUlELHFCQUFxQkUsNEJBQTRCO1FBQ25ELElBQUlGLGtCQUFrQjtZQUNwQixJQUFNRyxlQUFlUCxNQUNmUSx5QkFBeUJQLGdCQUN6QlEsdUJBQXVCQyxtQkFBbUJILGNBQWNDLHdCQUF3QnpDO1lBRXRGbUMsZUFBZU8sc0JBQXVCLEdBQUc7UUFDM0MsT0FBTztZQUNMLElBQU1FLGtCQUFrQlgsTUFDbEJZLDRCQUE0QlgsZ0JBQzVCWSwwQkFBMEJDLHNCQUFzQkgsaUJBQWlCQywyQkFBMkI3QztZQUVsR21DLGVBQWVXLHlCQUF5QixHQUFHO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT1g7QUFDVDtBQUVBLFNBQVNhLFlBQVlDLEtBQUssRUFBRUMsZUFBZSxFQUFFbEQsT0FBTyxFQUFFO0lBQ3BELElBQUltRCxnQkFBZ0IsS0FBSztJQUV6QixJQUFNQyxjQUFjSCxNQUFNSSxNQUFNLEVBQzFCQyx3QkFBd0JKLGdCQUFnQkcsTUFBTTtJQUVwRCxJQUFJRCxnQkFBZ0JFLHVCQUF1QjtRQUN6Q0gsZ0JBQWdCRixNQUFNTSxLQUFLLENBQUMsU0FBQ3RCLE1BQU11QixPQUFVO1lBQzNDLElBQU10QixpQkFBaUJnQixlQUFlLENBQUNNLE1BQU0sRUFDdkNyQixlQUFlQyxXQUFXSCxNQUFNQyxnQkFBZ0JsQztZQUV0RCxJQUFJbUMsY0FBYztnQkFDaEIsT0FBTyxJQUFJO1lBQ2IsQ0FBQztRQUNIO0lBQ0YsQ0FBQztJQUVELE9BQU9nQjtBQUNUO0FBRUEsU0FBU1IsbUJBQW1CSCxZQUFZLEVBQUVDLHNCQUFzQixFQUFFekMsT0FBTyxFQUFFO0lBQ3pFLElBQUkwQyx1QkFBdUIsS0FBSztJQUVoQyxJQUFNZSxVQUFVakIsYUFBYWtCLEtBQUssQ0FBQ2pCO0lBRW5DLElBQUlnQixTQUFTO1FBQ1hmLHVCQUF1QixJQUFJO0lBQzdCLENBQUM7SUFFRCxPQUFPQTtBQUNUO0FBRUEsU0FBU0ssc0JBQXNCSCxlQUFlLEVBQUVDLHlCQUF5QixFQUFFN0MsT0FBTyxFQUFFO0lBQ2xGLElBQUk4QywwQkFBMEIsS0FBSztJQUVuQyxJQUFNYSxXQUFXZixnQkFBZ0JnQixXQUFXLElBQ3RDQyxxQkFBcUJoQiwwQkFBMEJlLFdBQVcsSUFBSSxHQUFHO0lBRXZFLElBQUlELGFBQWFFLG9CQUFvQjtRQUNuQyxPQUFRRjtZQUNOLEtBQUtHLDZCQUFrQjtnQkFBRTtvQkFDdkIsSUFBTUMsZUFBZW5CLGlCQUNmb0IseUJBQXlCbkIsMkJBQ3pCb0IsdUJBQXVCQyxtQkFBbUJILGNBQWNDLHdCQUF3QmhFO29CQUV0RjhDLDBCQUEwQm1CLHNCQUFzQixHQUFHO29CQUVuRCxLQUFNO2dCQUNSO1lBRUEsS0FBS0Usa0NBQXVCO2dCQUFFO29CQUM1QixJQUFNQyxtQkFBbUJ4QixpQkFDbkJ5Qiw2QkFBNkJ4QiwyQkFDN0J5QiwyQkFBMkJDLHVCQUF1Qkgsa0JBQWtCQyw0QkFBNEJyRTtvQkFFdEc4QywwQkFBMEJ3QiwwQkFBMEIsR0FBRztvQkFFdkQsS0FBTTtnQkFDUjtZQUVBO2dCQUFTO29CQUNQLElBQU1FLGFBQWE1QixnQkFBZ0I2QixhQUFhLElBQzFDQyx1QkFBdUI3QiwwQkFBMEI0QixhQUFhLElBQzlEeEIsUUFBUXVCLFlBQ1J0QixrQkFBa0J3QixzQkFDbEJ2QixnQkFBZ0JILFlBQVlDLE9BQU9DLGlCQUFpQmxEO29CQUUxRDhDLDBCQUEwQkssZUFBZSxHQUFHO29CQUU1QyxLQUFNO2dCQUNSO1FBQ0Y7SUFDRixDQUFDO0lBRUQsT0FBT0w7QUFDVDtBQUVBLFNBQVNvQixtQkFBbUJILFlBQVksRUFBRUMsc0JBQXNCLEVBQUVoRSxPQUFPLEVBQUU7SUFDekUsSUFBSWlFLHVCQUF1QixLQUFLO0lBRWhDLElBQU1VLFdBQVdwRixjQUFjd0U7SUFFL0IsSUFBSVksYUFBYSxJQUFJLEVBQUU7UUFDckIsSUFBTUMsaUJBQWlCNUUsUUFBUTZFLFlBQVksQ0FBQ2Q7UUFFNUMvRCxRQUFROEUsS0FBSyxDQUFDLEFBQUMsT0FBcUIsT0FBZkYsZ0JBQWU7SUFDdEMsT0FBTztRQUNMLElBQU1HLFFBQVEsRUFBRSxFQUNWQyxlQUFlQyxJQUFBQSxhQUFVLEVBQUNOLFVBQVVJLE9BQU8vRTtRQUVqRCxJQUFJZ0YsY0FBYztZQUNoQixJQUFNRSxZQUFZQyxJQUFBQSxZQUFLLEVBQUNKLFFBQ2xCSyxXQUFXRixXQUNYRyxXQUFXNUYsY0FBY3VFLHlCQUN6QnNCLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDRixXQUNoQ0csT0FBTyxBQUFDRixhQUFhRywyQkFBZ0IsR0FDNUJDLGlCQUFVLEdBQ1IxRixRQUFRMkYsa0JBQWtCLENBQUNMLFNBQVMsRUFDL0NNLHNDQUFzQ1IsU0FBU1Msb0JBQW9CLENBQUNMO1lBRTFFLElBQUlJLHFDQUFxQztnQkFDdkMzQix1QkFBdUIsSUFBSTtZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPQTtBQUNUO0FBRUEsU0FBU00sdUJBQXVCSCxnQkFBZ0IsRUFBRUMsMEJBQTBCLEVBQUVyRSxPQUFPLEVBQUU7SUFDckYsSUFBSXNFLDJCQUEyQixLQUFLO0lBRXBDLElBQU16RSxnQkFBZ0JGLG1CQUFtQnlFO0lBRXpDLElBQUl2RSxrQkFBa0IsSUFBSSxFQUFFO1FBQzFCLElBQU1pRyxxQkFBcUI5RixRQUFRNkUsWUFBWSxDQUFDVDtRQUVoRHBFLFFBQVE4RSxLQUFLLENBQUMsQUFBQyxRQUEwQixPQUFuQmdCLG9CQUFtQjtJQUMzQyxPQUFPO1FBQ0wsSUFBTS9GLFVBQVUsS0FBSyxFQUNmRCxhQUFhLElBQUksRUFDakJHLG9CQUFvQlgsZ0JBQWdCTyxlQUFlQyxZQUFZQyxTQUFTQztRQUU5RSxJQUFJQyxtQkFBbUI7WUFDckIsSUFBTThGLHlCQUF5QnJHLGtCQUFrQjJFO1lBRWpELElBQUkwQiwyQkFBMkIsSUFBSSxFQUFFO2dCQUNuQyxJQUFNdkQsZUFBZXVELHdCQUNmQyxzQkFBc0J4RCxhQUFheUQsVUFBVSxJQUM3Q0MsdUNBQXdDRix3QkFBd0JHLDhCQUFtQjtnQkFFekY3QiwyQkFBMkI0QixzQ0FBdUMsR0FBRztZQUN2RSxDQUFDO1lBRUQsSUFBSSxDQUFDNUIsMEJBQTBCO2dCQUM3QixJQUFNOEIsK0JBQStCcEcsUUFBUTZFLFlBQVksQ0FBQ1I7Z0JBRTFEckUsUUFBUThFLEtBQUssQ0FBQyxBQUFDLFFBQW9DLE9BQTdCc0IsOEJBQTZCO1lBQ3JELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU85QjtBQUNUO0FBRUEsU0FBU2pELHlCQUF5QkgsVUFBVSxFQUFFO0lBQzVDLElBQU1tRixRQUFRLENBQUNDLGlDQUFzQixFQUFHLEdBQUc7SUFFM0NwRixhQUFhQSxXQUFXcUYsS0FBSyxDQUFDRixRQUFRLEdBQUc7SUFFekMsSUFBTWpGLGFBQWFGLFdBQVdzRixNQUFNLENBQUMsU0FBQ3BGLFlBQVlxRixXQUFXakQsT0FBVTtRQUNyRSxJQUFNekMsV0FBV0MsaUJBQVEsQ0FBQzBGLGFBQWEsQ0FBQ0Q7UUFFeEMsSUFBSTFGLGFBQWEsSUFBSSxFQUFFO1lBQ3JCSyxXQUFXdUYsSUFBSSxDQUFDNUY7UUFDbEIsQ0FBQztRQUVELE9BQU9LO0lBQ1QsR0FBRyxFQUFFO0lBRUwsT0FBT0E7QUFDVCJ9
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRXF1YWxpdHkgZnJvbSBcIi4uL2VxdWFsaXR5XCI7XG5pbXBvcnQgdmVyaWZ5VGVybSBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1cIjtcbmltcG9ydCBicmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuLi9vY21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS9hc3NlcnRpb24vdHlwZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgT0JKRUNUX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IFNUQVRFTUVOVF9NRVRBX1RZUEUgfSBmcm9tIFwiLi4vbWV0YVR5cGVzXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgQVJHVU1FTlRfUlVMRV9OQU1FLCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZSFcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhQXJndW1lbnQvbWV0YVR5cGUhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFBcmd1bWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIiksXG4gICAgICBtZXRhVHlwZVRlcm1pbmFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFUeXBlL0BtZXRhLXR5cGVcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICghc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyA9IHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9ycyhzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnM7ICAvLy9cbiAgfVxuXG4gIGlmICghc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHZlcmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb247IC8vL1xuICB9XG5cbiAgaWYgKCFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHkoc3RhdGVtZW50Tm9kZSwgZGVyaXZlZCwgY29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTsgIC8vXG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbWJpbmF0b3JOb2RlID0gY29tYmluYXRvclN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnMoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnMgPSBmYWxzZTtcblxuICBsZXQgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCk7XG5cbiAgY29tYmluYXRvcnMgPSBbIC8vL1xuICAgIGJyYWNrZXRlZENvbWJpbmF0b3IsXG4gICAgLi4uY29tYmluYXRvcnNcbiAgXTtcblxuICBjb25zdCBjb21iaW5hdG9yID0gY29tYmluYXRvcnMuZmluZCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IgPSB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgaWYgKGNvbWJpbmF0b3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NlcnRpb25zLCBkZXJpdmVkLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnROb2RlLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHRydWU7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXRpZXMgPSBjb250ZXh0LmdldEVxdWFsaXRpZXMoKTtcblxuICAgICAgaWYgKGVxdWFsaXRpZXMgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXF1YWxpdHlFcXVhdGVzID0gZXF1YWxpdHkuZXF1YXRlKGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5RXF1YXRlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZShub2RlLCBjb21iaW5hdG9yTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIGNvbWJpbmF0b3JOb2RlVGVybWluYWxOb2RlID0gY29tYmluYXRvck5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gY29tYmluYXRvck5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgY29tYmluYXRvclRlcm1pbmFsTm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGNvbWJpbmF0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlVmVyaWZpZWQgPSB0ZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgICAgbm9kZVZlcmlmaWVkID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGVzKG5vZGVzLCBjb21iaW5hdG9yTm9kZXMsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVzVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgY29tYmluYXRvck5vZGVzTGVuZ3RoID0gY29tYmluYXRvck5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IGNvbWJpbmF0b3JOb2Rlc0xlbmd0aCkge1xuICAgIG5vZGVzVmVyaWZpZWQgPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmF0b3JOb2RlID0gY29tYmluYXRvck5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIG5vZGVWZXJpZmllZCA9IHZlcmlmeU5vZGUobm9kZSwgY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobm9kZVZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGNvbWJpbmF0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHRlcm1pbmFsTm9kZS5tYXRjaChjb21iaW5hdG9yVGVybWluYWxOb2RlKTtcblxuICBpZiAobWF0Y2hlcykge1xuICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29tYmluYXRvck5vblRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgY29tYmluYXRvclJ1bGVOYW1lID0gY29tYmluYXRvck5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IGNvbWJpbmF0b3JSdWxlTmFtZSkge1xuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JBcmd1bWVudE5vZGUgPSBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb21iaW5hdG9yQXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGFyZ3VtZW50Tm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRToge1xuICAgICAgICBjb25zdCBtZXRhQXJndW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUgPSBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YUFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdmVyaWZ5TWV0YWFyZ3VtZW50Tm9kZShtZXRhQXJndW1lbnROb2RlLCBjb21iaW5hdG9yTWV0YWFyZ3VtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBjb21iaW5hdG9yQ2hpbGROb2RlcyA9IGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBjb21iaW5hdG9yTm9kZXMgPSBjb21iaW5hdG9yQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIG5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlOb2Rlcyhub2RlcywgY29tYmluYXRvck5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29tYmluYXRvckFyZ3VtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgYXJndW1lbnROb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICBpZiAodGVybU5vZGUgPT09IG51bGwpIHtcbiAgICBjb25zdCBhcmd1bWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LmVycm9yKGBUaGUgJHthcmd1bWVudFN0cmluZ30gYXJndW1lbnQgc2hvdWxkIGJlIGEgdGVybSwgbm90IGEgdHlwZWAsIGFyZ3VtZW50Tm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoY29tYmluYXRvckFyZ3VtZW50Tm9kZSksXG4gICAgICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgICAgIHR5cGUgPSAodHlwZU5hbWUgPT09IE9CSkVDVF9UWVBFX05BTUUpID9cbiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgIHN0YXRlbWVudFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNZXRhYXJndW1lbnROb2RlKG1ldGFBcmd1bWVudE5vZGUsIGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KG1ldGFBcmd1bWVudE5vZGUpLFxuICAgICAgICBjb21iaW5hdG9yTWV0YVRZcGVOb2RlID0gbWV0YVR5cGVOb2RlUXVlcnkoY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YUFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobWV0YUFyZ3VtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LmVycm9yKGBFeHBlY3RlZCBhIHN0YXRlbWVudCBidXQgZ290IGEgJyR7bWV0YUFyZ3VtZW50U3RyaW5nfScgbWV0YS10eXBlLmAsIG1ldGFBcmd1bWVudE5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChjb21iaW5hdG9yTWV0YVRZcGVOb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjb21iaW5hdG9yTWV0YWFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUpO1xuXG4gICAgICBjb250ZXh0LmVycm9yKGBFeHBlY3RlZCBhIG1ldGEtdHlwZSBidXQgZ290IGEgJyR7Y29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZ30nIHN0YXRlbWVudC5gLCBtZXRhQXJndW1lbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29tYmluYXRvck1ldGFUeXBlVGVybWluYWxOb2RlID0gbWV0YVR5cGVUZXJtaW5hbE5vZGVRdWVyeShjb21iaW5hdG9yTWV0YVRZcGVOb2RlKSxcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb21iaW5hdG9yTWV0YVR5cGVUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgY29udGVudFN0YXRlbWVudE1ldGFUeXBlID0gKGNvbnRlbnQgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEUpO1xuXG4gICAgICBpZiAoIWNvbnRlbnRTdGF0ZW1lbnRNZXRhVHlwZSkge1xuICAgICAgICBjb250ZXh0LmVycm9yKGBFeHBlY3RlZCB0aGUgbWV0YS10eXBlIHRvIGJlICdTdGF0ZW1lbnQnIGJ1dCBnb3QgJyR7Y29udGVudH0nLmAsIG1ldGFBcmd1bWVudE5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWV0YUFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YUFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudCIsInZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9yIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJtZXRhVHlwZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJtZXRhVHlwZVRlcm1pbmFsTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZSIsImFzc2VydGlvbnMiLCJkZXJpdmVkIiwiY29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnMiLCJ2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnMiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInZlcmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbiIsInN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsInZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHkiLCJjb21iaW5hdG9yIiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwibm9kZSIsImNvbWJpbmF0b3JOb2RlIiwibm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9kZSIsInN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IiLCJjb21iaW5hdG9ycyIsImdldENvbWJpbmF0b3JzIiwiYnJhY2tldGVkQ29tYmluYXRvciIsImZpbmQiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iLCJlcXVhbGl0eSIsIkVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudE5vZGUiLCJlcXVhbGl0aWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXR5RXF1YXRlcyIsImVxdWF0ZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsImNvbWJpbmF0b3JOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29tYmluYXRvclRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiY29tYmluYXRvck5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZ5Tm9kZXMiLCJub2RlcyIsImNvbWJpbmF0b3JOb2RlcyIsIm5vZGVzVmVyaWZpZWQiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbWJpbmF0b3JOb2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY29tYmluYXRvclJ1bGVOYW1lIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiYXJndW1lbnROb2RlIiwiY29tYmluYXRvckFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnROb2RlIiwiTUVUQV9BUkdVTUVOVF9SVUxFX05BTUUiLCJtZXRhQXJndW1lbnROb2RlIiwiY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUiLCJtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhYXJndW1lbnROb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjb21iaW5hdG9yQ2hpbGROb2RlcyIsInRlcm1Ob2RlIiwiYXJndW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJlcnJvciIsInR5cGVzIiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsImZpcnN0VHlwZSIsImZpcnN0IiwidGVybVR5cGUiLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlIiwiT0JKRUNUX1RZUEVfTkFNRSIsIm9iamVjdFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJzdGF0ZW1lbnRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiY29tYmluYXRvck1ldGFUWXBlTm9kZSIsIm1ldGFBcmd1bWVudFN0cmluZyIsImNvbWJpbmF0b3JNZXRhYXJndW1lbnRTdHJpbmciLCJjb21iaW5hdG9yTWV0YVR5cGVUZXJtaW5hbE5vZGUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsImNvbnRlbnRTdGF0ZW1lbnRNZXRhVHlwZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQXFCQSxPQXNCQztlQXRCdUJBOztJQXdCUkMsZ0NBQWdDO2VBQWhDQTs7OzZEQTNDSzt5REFDRTs4REFDUzt5REFDQTtxQkFFVjtxQkFDSzt5QkFDTTt5QkFDRztxQkFDWTt5QkFDWTs7Ozs7Ozs7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
|