occam-nominal 1.0.307 → 1.0.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file/nominal.js +2 -2
- package/lib/element/assertion/contained.js +5 -8
- package/lib/element/assertion/subproof.js +12 -15
- package/lib/element/combinator/bracketed.js +2 -2
- package/lib/element/combinator.js +2 -2
- package/lib/element/declaration/combinator.js +3 -3
- package/lib/element/declaration/metavariable.js +2 -2
- package/lib/element/declaration/variable.js +4 -4
- package/lib/element/deduction.js +5 -6
- package/lib/element/derivation.js +3 -3
- package/lib/element/equality.js +3 -4
- package/lib/element/frame.js +5 -5
- package/lib/element/goal.js +5 -8
- package/lib/element/judgement.js +4 -5
- package/lib/element/label.js +5 -6
- package/lib/element/metavariable.js +67 -67
- package/lib/element/procedureCall.js +25 -25
- package/lib/element/proofAssertion/premise.js +26 -19
- package/lib/element/proofAssertion/step.js +5 -5
- package/lib/element/proofAssertion/supposition.js +4 -5
- package/lib/element/proofAssertion.js +6 -13
- package/lib/element/rule.js +13 -13
- package/lib/element/statement.js +5 -5
- package/lib/element/subDerivation.js +3 -3
- package/lib/element/subproof.js +6 -6
- package/lib/element/substitution/frame.js +3 -5
- package/lib/element/substitution/term.js +3 -5
- package/lib/element/term.js +22 -22
- package/lib/element/topLevelAssertion.js +5 -5
- package/lib/pass/continuationZip.js +2 -2
- package/lib/process/unify.js +9 -9
- package/lib/process/validate.js +9 -9
- package/lib/process/validation.js +5 -5
- package/lib/process/verify.js +18 -18
- package/lib/utilities/compression.js +137 -0
- package/lib/utilities/continuation.js +5 -5
- package/package.json +3 -3
- package/src/context/file/nominal.js +1 -1
- package/src/element/assertion/contained.js +4 -10
- package/src/element/assertion/subproof.js +11 -17
- package/src/element/combinator/bracketed.js +1 -1
- package/src/element/combinator.js +1 -1
- package/src/element/declaration/combinator.js +2 -2
- package/src/element/declaration/metavariable.js +1 -1
- package/src/element/declaration/variable.js +3 -3
- package/src/element/deduction.js +4 -6
- package/src/element/derivation.js +2 -2
- package/src/element/equality.js +2 -4
- package/src/element/frame.js +4 -4
- package/src/element/goal.js +4 -10
- package/src/element/judgement.js +4 -6
- package/src/element/label.js +4 -6
- package/src/element/metavariable.js +79 -80
- package/src/element/procedureCall.js +28 -29
- package/src/element/proofAssertion/premise.js +32 -23
- package/src/element/proofAssertion/step.js +5 -5
- package/src/element/proofAssertion/supposition.js +5 -5
- package/src/element/proofAssertion.js +7 -19
- package/src/element/rule.js +12 -12
- package/src/element/statement.js +6 -4
- package/src/element/subDerivation.js +2 -2
- package/src/element/subproof.js +5 -5
- package/src/element/substitution/frame.js +4 -6
- package/src/element/substitution/term.js +4 -6
- package/src/element/term.js +25 -27
- package/src/element/topLevelAssertion.js +4 -4
- package/src/pass/continuationZip.js +1 -1
- package/src/process/unify.js +8 -9
- package/src/process/validate.js +8 -8
- package/src/process/validation.js +4 -4
- package/src/process/verify.js +17 -17
- package/src/utilities/compression.js +115 -0
- package/src/utilities/continuation.js +4 -4
|
@@ -88,8 +88,8 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
88
88
|
verifyLabels(context, continuation) {
|
|
89
89
|
const topLevelAssertionString = this.getString(); ///
|
|
90
90
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's labels...`);
|
|
91
|
-
every(this.labels, (label, continuation)=>{
|
|
92
|
-
this.verifyLabel(label, context, continuation);
|
|
91
|
+
return every(this.labels, (label, continuation)=>{
|
|
92
|
+
return this.verifyLabel(label, context, continuation);
|
|
93
93
|
}, (labelsVerify)=>{
|
|
94
94
|
if (labelsVerify) {
|
|
95
95
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's labels.`);
|
|
@@ -151,8 +151,8 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
151
151
|
verifySuppositions(context, continuation) {
|
|
152
152
|
const topLevelAssertionString = this.getString(); ///
|
|
153
153
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's suppositions...`);
|
|
154
|
-
forwardsEvery(this.suppositions, (supposition, continuation)=>{
|
|
155
|
-
this.verifySupposition(supposition, context, continuation);
|
|
154
|
+
return forwardsEvery(this.suppositions, (supposition, continuation)=>{
|
|
155
|
+
return this.verifySupposition(supposition, context, continuation);
|
|
156
156
|
}, (suppositionsVerify)=>{
|
|
157
157
|
if (suppositionsVerify) {
|
|
158
158
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's suppositions.`);
|
|
@@ -268,4 +268,4 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbHNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgc2lnbmF0dXJlRnJvbUpTT04sXG4gICAgICAgICBsYWJlbHNUb0xhYmVsc0pTT04sXG4gICAgICAgICBoeXBvdGhlc2VzRnJvbUpTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcmV2ZXJzZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb3BMZXZlbEFzc2VydGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICBhbGwoW1xuICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgXSwgY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnlMYWJlbHMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIGxhYmVscy4uLmApO1xuXG4gICAgZXZlcnkodGhpcy5sYWJlbHMsIChsYWJlbCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICB0aGlzLnZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIChsYWJlbHNWZXJpZnkpID0+IHtcbiAgICAgIGlmIChsYWJlbHNWZXJpZnkpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIGxhYmVscy5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKGxhYmVsc1ZlcmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlMYWJlbChsYWJlbCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICBsYWJlbC52ZXJpZnkoKGxhYmVsVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChsYWJlbFZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24obGFiZWxWZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlQcm9vZihjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAodGhpcy5wcm9vZiA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvb2ZWZXJpZmllcyA9IHRydWU7IC8vL1xuXG4gICAgICBjb250aW51YXRpb24ocHJvb2ZWZXJpZmllcyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgcHJvb2YuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgdGhpcy5wcm9vZi52ZXJpZnkoc3RhdGVtZW50LCBjb250ZXh0LCAocHJvb2ZWZXJpZmllcykgPT4ge1xuICAgICAgaWYgKHByb29mVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24ocHJvb2ZWZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlEZWR1Y3Rpb24oY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGRlZHVjdGlvblZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoZGVkdWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKGRlZHVjdGlvblZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKHN1cHBvc2l0aW9uVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdXBwb3NpdGlvblZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbiA9IHN1cHBvc2l0aW9uOyAgLy8vL1xuXG4gICAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgICBjb250ZXh0LmFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHN1cHBvc2l0aW9uVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb25zKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBzdXBwb3NpdGlvbnMuLi5gKTtcblxuICAgIGZvcndhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICB0aGlzLnZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIChzdXBwb3NpdGlvbnNWZXJpZnkpID0+IHtcbiAgICAgIGlmIChzdXBwb3NpdGlvbnNWZXJpZnkpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIHN1cHBvc2l0aW9ucy5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1ZlcmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzKGh5cG90aGVzaXMsIGNvbnRleHQpIHtcbiAgICBsZXQgaHlwb3RoZXNpc0Rpc2NoYXJnZXM7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJkaW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXMgPSBoeXBvdGhlc2lzLmRpc2NoYXJnZShjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlcykge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNEaXNjaGFyZ2VzO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzID0gZXZlcnkoaHlwb3RoZXNlcywgKGh5cG90aGVzaXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGh5cG90aGVzaXNEaXNjaGFyZ2VzID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzKGh5cG90aGVzaXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc0Rpc2NoYXJnZXM7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBsZXQgc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0ZXBVbmlmaWVzID0gdGhpcy5kZWR1Y3Rpb24udW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIGRlZHVjdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRoaXMudW5pZnlTdGVwV2l0aERlZHVjdGlvbihzdGVwLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VzID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQpO1xuXG4gICAgICBpZiAoaHlwb3RoZXNlc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zID0gdGhpcy51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gY29udGV4dC5hcmVEZXJpdmVkU3Vic3RpdHV0aW9uc1Jlc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCkge1xuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnk7XG4gIH1cblxuICB1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgc3VwcG9zaXRpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24gPSBmYWxzZTtcblxuICAgIHRoaXMuYnJlYWsoY29udGV4dCk7XG5cbiAgICBpZiAoIXN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24gPSBleHRyYWN0KHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24pID0+IHtcbiAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHN1cHBvc2l0aW9uLnVuaWZ5U3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LnJlc29sdmVEZXJpdmVkU3Vic3RpdHV0aW9ucygpO1xuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG5cbiAgICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24pIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uVW5pZmllc0luZGVwZW5kZW50bHkgPSBzdXBwb3NpdGlvbi51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCk7XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb247XG4gIH1cblxuICB1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zO1xuXG4gICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IHJldmVyc2Uoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyk7IC8vL1xuXG4gICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zID0gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RlcFVuaWZpZXNXaXRoU3VwcG9zaXRpb24gPSB0aGlzLnVuaWZ5U3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1dpdGhTdXBwb3NpdGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBzdXBwb3NpdGlvbiwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhTdXBwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbnM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVsc1RvTGFiZWxzSlNPTih0aGlzLmxhYmVscyksXG4gICAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTih0aGlzLmRlZHVjdGlvbiksXG4gICAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTih0aGlzLnN1cHBvc2l0aW9ucyksXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTih0aGlzLnNpZ25hdHVyZSksXG4gICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0pTT04sICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIGxhYmVscyxcbiAgICAgICAgICAgIGRlZHVjdGlvbixcbiAgICAgICAgICAgIHN1cHBvc2l0aW9ucyxcbiAgICAgICAgICAgIHNpZ25hdHVyZSxcbiAgICAgICAgICAgIGh5cG90aGVzZXNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oQ2xhc3MsIGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc2lnbmF0dXJlLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiksXG4gICAgICAgICAgc3RyaW5nID0gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcsIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uID0gbmV3IENsYXNzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIHNpZ25hdHVyZSwgaHlwb3RoZXNlcyk7XG5cbiAgICByZXR1cm4gdG9wTGV2ZWxBc3NlcnRpb247XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJUb3BMZXZlbEFzc2VydGlvbiIsInJldmVyc2UiLCJhcnJheVV0aWxpdGllcyIsImV2ZXJ5IiwiZXh0cmFjdCIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsYWJlbHMiLCJzdXBwb3NpdGlvbnMiLCJkZWR1Y3Rpb24iLCJwcm9vZiIsInNpZ25hdHVyZSIsImh5cG90aGVzZXMiLCJnZXRMYWJlbHMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZXREZWR1Y3Rpb24iLCJnZXRQcm9vZiIsImdldFNpZ25hdHVyZSIsImdldEh5cG90aGVzZXMiLCJzZXRIeXBvdGhlc2VzIiwiZ2V0U3VwcG9zaXRpb24iLCJpbmRleCIsInN1cHBvc2l0aW9uIiwiaXNTYXRpc2ZpYWJsZSIsInNhdGlzZmlhYmxlIiwiaXNIeXBvdGhldGljYWwiLCJoeXBvdGhlc2VzTGVuZ3RoIiwibGVuZ3RoIiwiaHlwb3RoZXRpY2FsIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwic29tZSIsImxhYmVsIiwidmVyaWZ5RXgiLCJjb250aW51YXRpb24iLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImFsbCIsInZlcmlmaWVzIiwiZGVidWciLCJ2ZXJpZnlMYWJlbCIsImxhYmVsc1ZlcmlmeSIsImxhYmVsU3RyaW5nIiwidmVyaWZ5IiwibGFiZWxWZXJpZmllcyIsInByb29mVmVyaWZpZXMiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJkZWR1Y3Rpb25TdHJpbmciLCJkZWR1Y3Rpb25WZXJpZmllcyIsInZlcmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzdXBwb3NpdGlvblZlcmlmaWVzIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJzdXBwb3NpdGlvbnNWZXJpZnkiLCJkaXNjaGFyZ2VIeXBvdGhlc2lzIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiYnJlYWsiLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VzIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwU3RyaW5nIiwic3RlcFVuaWZpZXMiLCJ1bmlmeVN0ZXAiLCJ1bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb25zIiwiZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsImFyZURlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQiLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbiIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInJlc29sdmVEZXJpdmVkU3Vic3RpdHV0aW9ucyIsInN1cHBvc2l0aW9uVW5pZmllc0luZGVwZW5kZW50bHkiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJzdGVwVW5pZmllc1dpdGhTdXBwb3NpdGlvbiIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF1QkE7OztlQUFxQkE7OzsyQkFyQlU7Z0NBQ3FDOzhCQUVoRDt5QkFDSTt3QkFDMkQ7c0JBVXBDO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDekUsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtBQUUvRCxNQUFNViwwQkFBMEJXLHVCQUFPO0lBQ3BELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsQ0FBRTtRQUM1RyxLQUFLLENBQUNULFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNOLE1BQU07SUFDcEI7SUFFQU8sa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDTixZQUFZO0lBQzFCO0lBRUFPLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ04sU0FBUztJQUN2QjtJQUVBTyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNOLEtBQUs7SUFDbkI7SUFFQU8sZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDTixTQUFTO0lBQ3ZCO0lBRUFPLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDTixVQUFVO0lBQ3hCO0lBRUFPLGNBQWNQLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQVEsZUFBZUMsS0FBSyxFQUFFO1FBQ3BCLE1BQU1DLGNBQWMsSUFBSSxDQUFDZCxZQUFZLENBQUNhLE1BQU0sSUFBSTtRQUVoRCxPQUFPQztJQUNUO0lBRUFDLGdCQUFnQjtRQUNkLE1BQU1DLGNBQWM7UUFFcEIsT0FBT0E7SUFDVDtJQUVBQyxpQkFBaUI7UUFDZixNQUFNQyxtQkFBbUIsSUFBSSxDQUFDZCxVQUFVLENBQUNlLE1BQU0sRUFDekNDLGVBQWdCRixtQkFBbUI7UUFFekMsT0FBT0U7SUFDVDtJQUVBQyxzQkFBc0JDLGdCQUFnQixFQUFFO1FBQ3RDLE1BQU1DLDBCQUEwQixJQUFJLENBQUN4QixNQUFNLENBQUN5QixJQUFJLENBQUMsQ0FBQ0M7WUFDaEQsTUFBTUYsMEJBQTBCRSxNQUFNSixxQkFBcUIsQ0FBQ0M7WUFFNUQsSUFBSUMseUJBQXlCO2dCQUMzQixPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUcsU0FBUy9CLE9BQU8sRUFBRWdDLFlBQVksRUFBRTtRQUM5QixNQUFNQywwQkFBMEIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUVyRGxDLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHdCQUF3Qix3QkFBd0IsQ0FBQztRQUVqRkcsSUFBQUEsZ0JBQU8sRUFBQyxDQUFDcEM7WUFDUCxNQUFNcUMsY0FBYyxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksR0FDeENDLGVBQWUsSUFBSSxDQUFDQSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJLEdBQzFDRSxrQkFBa0IsSUFBSSxDQUFDQSxlQUFlLENBQUNGLElBQUksQ0FBQyxJQUFJLEdBQ2hERyxxQkFBcUIsSUFBSSxDQUFDQSxrQkFBa0IsQ0FBQ0gsSUFBSSxDQUFDLElBQUk7WUFFNURJLElBQUFBLGlCQUFHLEVBQUM7Z0JBQ0ZIO2dCQUNBRTtnQkFDQUQ7Z0JBQ0FIO2FBQ0QsRUFBRXJDLFNBQVMsQ0FBQzJDO2dCQUNYLElBQUlBLFVBQVU7b0JBQ1ozQyxRQUFRNEMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVYLHdCQUF3QixzQkFBc0IsQ0FBQztnQkFDbkY7Z0JBRUFELGFBQWFXO1lBQ2Y7UUFDRixHQUFHM0M7SUFDTDtJQUVBdUMsYUFBYXZDLE9BQU8sRUFBRWdDLFlBQVksRUFBRTtRQUNsQyxNQUFNQywwQkFBMEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV0RGxDLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHdCQUF3QixpQ0FBaUMsQ0FBQztRQUUxRjFDLE1BQU0sSUFBSSxDQUFDYSxNQUFNLEVBQUUsQ0FBQzBCLE9BQU9FO1lBQ3pCLElBQUksQ0FBQ2EsV0FBVyxDQUFDZixPQUFPOUIsU0FBU2dDO1FBQ25DLEdBQUcsQ0FBQ2M7WUFDRixJQUFJQSxjQUFjO2dCQUNoQjlDLFFBQVE0QyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVgsd0JBQXdCLCtCQUErQixDQUFDO1lBQzVGO1lBRUFELGFBQWFjO1FBQ2Y7SUFDRjtJQUVBRCxZQUFZZixLQUFLLEVBQUU5QixPQUFPLEVBQUVnQyxZQUFZLEVBQUU7UUFDeEMsTUFBTWUsY0FBY2pCLE1BQU1JLFNBQVMsSUFDN0JELDBCQUEwQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRXJEbEMsUUFBUW1DLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsd0JBQXdCLHlCQUF5QixFQUFFYyxZQUFZLFVBQVUsQ0FBQztRQUUxR2pCLE1BQU1rQixNQUFNLENBQUMsQ0FBQ0M7WUFDWixJQUFJQSxlQUFlO2dCQUNqQmpELFFBQVE0QyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVgsd0JBQXdCLHlCQUF5QixFQUFFYyxZQUFZLFFBQVEsQ0FBQztZQUM1RztZQUVBZixhQUFhaUI7UUFDZjtJQUNGO0lBRUFaLFlBQVlyQyxPQUFPLEVBQUVnQyxZQUFZLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUN6QixLQUFLLEtBQUssTUFBTTtZQUN2QixNQUFNMkMsZ0JBQWdCLE1BQU0sR0FBRztZQUUvQmxCLGFBQWFrQjtZQUViO1FBQ0Y7UUFFQSxNQUFNakIsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERsQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRix3QkFBd0IsZ0NBQWdDLENBQUM7UUFFekYsTUFBTWtCLFlBQVksSUFBSSxDQUFDN0MsU0FBUyxDQUFDOEMsWUFBWTtRQUU3QyxJQUFJLENBQUM3QyxLQUFLLENBQUN5QyxNQUFNLENBQUNHLFdBQVduRCxTQUFTLENBQUNrRDtZQUNyQyxJQUFJQSxlQUFlO2dCQUNqQmxELFFBQVE0QyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVgsd0JBQXdCLDhCQUE4QixDQUFDO1lBQzNGO1lBRUFELGFBQWFrQjtRQUNmO0lBQ0Y7SUFFQVYsZ0JBQWdCeEMsT0FBTyxFQUFFZ0MsWUFBWSxFQUFFO1FBQ3JDLE1BQU1xQixrQkFBa0IsSUFBSSxDQUFDL0MsU0FBUyxDQUFDNEIsU0FBUyxJQUMxQ0QsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFckRsQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRix3QkFBd0IseUJBQXlCLEVBQUVvQixnQkFBZ0IsY0FBYyxDQUFDO1FBRWxILElBQUksQ0FBQy9DLFNBQVMsQ0FBQzBDLE1BQU0sQ0FBQ2hELFNBQVMsQ0FBQ3NEO1lBQzlCLElBQUlBLG1CQUFtQjtnQkFDckJ0RCxRQUFRNEMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVYLHdCQUF3Qix5QkFBeUIsRUFBRW9CLGdCQUFnQixZQUFZLENBQUM7WUFDcEg7WUFFQXJCLGFBQWFzQjtRQUNmO0lBQ0Y7SUFFQUMsa0JBQWtCcEMsV0FBVyxFQUFFbkIsT0FBTyxFQUFFZ0MsWUFBWSxFQUFFO1FBQ3BELE1BQU13QixvQkFBb0JyQyxZQUFZZSxTQUFTLElBQ3pDRCwwQkFBMEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV0RGxDLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHdCQUF3Qix5QkFBeUIsRUFBRXVCLGtCQUFrQixnQkFBZ0IsQ0FBQztRQUV0SHJDLFlBQVk2QixNQUFNLENBQUNoRCxTQUFTLENBQUN5RDtZQUMzQixJQUFJQSxxQkFBcUI7Z0JBQ3ZCLE1BQU1DLDJCQUEyQnZDLGFBQWMsSUFBSTtnQkFFbkRuQixRQUFRMkQsaUJBQWlCO2dCQUV6QjNELFFBQVE0RCwyQkFBMkIsQ0FBQ0Y7WUFDdEM7WUFFQSxJQUFJRCxxQkFBcUI7Z0JBQ3ZCekQsUUFBUTRDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFWCx3QkFBd0IseUJBQXlCLEVBQUV1QixrQkFBa0IsY0FBYyxDQUFDO1lBQ3hIO1lBRUF4QixhQUFheUI7UUFDZjtJQUNGO0lBRUFoQixtQkFBbUJ6QyxPQUFPLEVBQUVnQyxZQUFZLEVBQUU7UUFDeEMsTUFBTUMsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERsQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRix3QkFBd0IsdUNBQXVDLENBQUM7UUFFaEd4QyxjQUFjLElBQUksQ0FBQ1ksWUFBWSxFQUFFLENBQUNjLGFBQWFhO1lBQzdDLElBQUksQ0FBQ3VCLGlCQUFpQixDQUFDcEMsYUFBYW5CLFNBQVNnQztRQUMvQyxHQUFHLENBQUM2QjtZQUNGLElBQUlBLG9CQUFvQjtnQkFDdEI3RCxRQUFRNEMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVYLHdCQUF3QixxQ0FBcUMsQ0FBQztZQUNsRztZQUVBRCxhQUFhNkI7UUFDZjtJQUNGO0lBRUFDLG9CQUFvQkMsVUFBVSxFQUFFL0QsT0FBTyxFQUFFO1FBQ3ZDLElBQUlnRTtRQUVKLElBQUksQ0FBQ0MsS0FBSyxDQUFDakU7UUFFWCxNQUFNa0UsbUJBQW1CSCxXQUFXN0IsU0FBUyxJQUN2Q0QsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFckRsQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVGLHdCQUF3Qix5QkFBeUIsRUFBRWlDLGlCQUFpQixlQUFlLENBQUM7UUFFdEhGLHVCQUF1QkQsV0FBV0ksU0FBUyxDQUFDbkU7UUFFNUMsSUFBSWdFLHNCQUFzQjtZQUN4QmhFLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUIsRUFBRUYsd0JBQXdCLHlCQUF5QixFQUFFaUMsaUJBQWlCLGFBQWEsQ0FBQztRQUN4SDtRQUVBLE9BQU9GO0lBQ1Q7SUFFQUksb0JBQW9CcEUsT0FBTyxFQUFFO1FBQzNCLE1BQU1TLGFBQWEsSUFBSSxDQUFDTSxhQUFhLElBQy9Cc0QsdUJBQXVCOUUsTUFBTWtCLFlBQVksQ0FBQ3NEO1lBQ3hDLE1BQU1DLHVCQUF1QixJQUFJLENBQUNGLG1CQUFtQixDQUFDQyxZQUFZL0Q7WUFFbEUsSUFBSWdFLHNCQUFzQjtnQkFDeEIsT0FBTztZQUNUO1FBQ0Y7UUFFTixPQUFPSztJQUNUO0lBRUFDLHVCQUF1QkMsSUFBSSxFQUFFdkUsT0FBTyxFQUFFO1FBQ3BDLElBQUl3RSwyQkFBMkI7UUFFL0IsSUFBSSxDQUFDUCxLQUFLLENBQUNqRTtRQUVYLE1BQU15RSxhQUFhRixLQUFLckMsU0FBUyxJQUMzQkQsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFckRsQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFc0MsV0FBVyxpQkFBaUIsRUFBRXhDLHdCQUF3QixvQ0FBb0MsQ0FBQztRQUUxSCxNQUFNeUMsY0FBYyxJQUFJLENBQUNwRSxTQUFTLENBQUNxRSxTQUFTLENBQUNKLE1BQU12RTtRQUVuRCxJQUFJMEUsYUFBYTtZQUNmRiwyQkFBMkI7UUFDN0I7UUFFQSxJQUFJQSwwQkFBMEI7WUFDNUJ4RSxRQUFRNEMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU2QixXQUFXLGlCQUFpQixFQUFFeEMsd0JBQXdCLGtDQUFrQyxDQUFDO1FBQzVIO1FBRUEsT0FBT3VDO0lBQ1Q7SUFFQUksc0NBQXNDTCxJQUFJLEVBQUVNLHlCQUF5QixFQUFFN0UsT0FBTyxFQUFFO1FBQzlFLElBQUk4RSx3Q0FBd0M7UUFFNUMsTUFBTU4sMkJBQTJCLElBQUksQ0FBQ0Ysc0JBQXNCLENBQUNDLE1BQU12RTtRQUVuRSxJQUFJd0UsMEJBQTBCO1lBQzVCLE1BQU1ILHVCQUF1QixJQUFJLENBQUNELG1CQUFtQixDQUFDcEU7WUFFdEQsSUFBSXFFLHNCQUFzQjtnQkFDeEIsTUFBTVUsbURBQW1ELElBQUksQ0FBQ0MsOENBQThDLENBQUNILDJCQUEyQjdFO2dCQUV4SSxJQUFJK0Usa0RBQWtEO29CQUNwRCxNQUFNRSwrQkFBK0JqRixRQUFRa0YsK0JBQStCO29CQUU1RSxJQUFJRCw4QkFBOEI7d0JBQ2hDSCx3Q0FBd0M7b0JBQzFDO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUssOENBQThDTix5QkFBeUIsRUFBRTFELFdBQVcsRUFBRW5CLE9BQU8sRUFBRTtRQUM3RixJQUFJb0Ysa0RBQWtEO1FBRXRELElBQUksQ0FBQ25CLEtBQUssQ0FBQ2pFO1FBRVgsSUFBSSxDQUFDb0YsaURBQWlEO1lBQ3BELE1BQU0xQiwyQkFBMkJsRSxRQUFRcUYsMkJBQTJCLENBQUNuQjtnQkFDbkUsTUFBTTJCLGtDQUFrQ2xFLFlBQVltRSw2QkFBNkIsQ0FBQzVCLDBCQUEwQjFEO2dCQUU1RyxJQUFJcUYsaUNBQWlDO29CQUNuQ3JGLFFBQVF1RiwyQkFBMkI7b0JBRW5DLE9BQU87Z0JBQ1Q7WUFDRixNQUFNO1lBRU4sSUFBSTdCLDZCQUE2QixNQUFNO2dCQUNyQzBCLGtEQUFrRDtZQUNwRDtRQUNGO1FBRUEsSUFBSSxDQUFDQSxpREFBaUQ7WUFDcEQsTUFBTUksa0NBQWtDckUsWUFBWXNFLGtCQUFrQixDQUFDekY7WUFFdkUsSUFBSXdGLGlDQUFpQztnQkFDbkNKLGtEQUFrRDtZQUNwRDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBSiwrQ0FBK0NILHlCQUF5QixFQUFFN0UsT0FBTyxFQUFFO1FBQ2pGLElBQUkrRTtRQUVKRiw0QkFBNEJ4RixRQUFRd0YsNEJBQTRCLEdBQUc7UUFFbkVFLG1EQUFtRHJGLGVBQWUsSUFBSSxDQUFDVyxZQUFZLEVBQUUsQ0FBQ2M7WUFDcEYsTUFBTXVFLDZCQUE2QixJQUFJLENBQUNQLDZDQUE2QyxDQUFDTiwyQkFBMkIxRCxhQUFhbkI7WUFFOUgsSUFBSTBGLDRCQUE0QjtnQkFDOUIsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPWDtJQUNUO0lBRUFZLFNBQVM7UUFDUCxNQUFNQyxhQUFhQyxJQUFBQSx3QkFBa0IsRUFBQyxJQUFJLENBQUN6RixNQUFNLEdBQzNDMEYsZ0JBQWdCQyxJQUFBQSw4QkFBd0IsRUFBQyxJQUFJLENBQUN6RixTQUFTLEdBQ3ZEMEYsbUJBQW1CQyxJQUFBQSxvQ0FBOEIsRUFBQyxJQUFJLENBQUM1RixZQUFZLEdBQ25FNkYsZ0JBQWdCQyxJQUFBQSw4QkFBd0IsRUFBQyxJQUFJLENBQUMzRixTQUFTLEdBQ3ZENEYsaUJBQWlCQyxJQUFBQSxnQ0FBMEIsRUFBQyxJQUFJLENBQUM1RixVQUFVLEdBQzNEUixTQUFTLElBQUksQ0FBQ2lDLFNBQVM7UUFFN0IsSUFBSS9CO1FBRUpBLGFBQWEsSUFBSSxDQUFDbUcsYUFBYTtRQUUvQixNQUFNQyxpQkFBaUIxRywyQkFBMkJNO1FBRWxEQSxhQUFhb0csZ0JBQWlCLEdBQUc7UUFFakMsTUFBTW5HLFNBQVN3RixZQUNUdEYsWUFBWXdGLGVBQ1p6RixlQUFlMkYsa0JBQ2Z4RixZQUFZMEYsZUFDWnpGLGFBQWEyRixnQkFDYkksT0FBTztZQUNMdkc7WUFDQUU7WUFDQUM7WUFDQUU7WUFDQUQ7WUFDQUc7WUFDQUM7UUFDRjtRQUVOLE9BQU8rRjtJQUNUO0lBRUEsT0FBT0MsU0FBU0MsS0FBSyxFQUFFRixJQUFJLEVBQUV4RyxPQUFPLEVBQUU7UUFDcEMsTUFBTUksU0FBU3VHLElBQUFBLG9CQUFjLEVBQUNILE1BQU14RyxVQUM5Qk0sWUFBWXNHLElBQUFBLHVCQUFpQixFQUFDSixNQUFNeEcsVUFDcENLLGVBQWV3RyxJQUFBQSwwQkFBb0IsRUFBQ0wsTUFBTXhHLFVBQzFDUSxZQUFZc0csSUFBQUEsdUJBQWlCLEVBQUNOLE1BQU14RyxVQUNwQ1MsYUFBYXNHLElBQUFBLHdCQUFrQixFQUFDUCxNQUFNeEcsVUFDdENpQywwQkFBMEIrRSxJQUFBQSwwRUFBa0UsRUFBQzVHLFFBQVFJLFdBQVdILGNBQWNDLFlBQzlITCxTQUFTZ0MseUJBQ1QvQixPQUFPLE1BQ1BDLGFBQWFQLG1CQUFtQjRHLE9BQ2hDakcsUUFBUSxNQUNSMEcsb0JBQW9CLElBQUlQLE1BQU0xRyxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxRQUFRQyxjQUFjQyxXQUFXQyxPQUFPQyxXQUFXQztRQUUxSCxPQUFPd0c7SUFDVDtBQUNGIn0=
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbHNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgc2lnbmF0dXJlRnJvbUpTT04sXG4gICAgICAgICBsYWJlbHNUb0xhYmVsc0pTT04sXG4gICAgICAgICBoeXBvdGhlc2VzRnJvbUpTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcmV2ZXJzZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb3BMZXZlbEFzc2VydGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICBhbGwoW1xuICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgXSwgY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnlMYWJlbHMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIGxhYmVscy4uLmApO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMubGFiZWxzLCAobGFiZWwsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgKGxhYmVsc1ZlcmlmeSkgPT4ge1xuICAgICAgaWYgKGxhYmVsc1ZlcmlmeSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgbGFiZWxzLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24obGFiZWxzVmVyaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIGxhYmVsLnZlcmlmeSgobGFiZWxWZXJpZmllcykgPT4ge1xuICAgICAgaWYgKGxhYmVsVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihsYWJlbFZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9vZlZlcmlmaWVzID0gdHJ1ZTsgLy8vXG5cbiAgICAgIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgcHJvb2YuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeURlZHVjdGlvbihjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHRoaXMuZGVkdWN0aW9uLnZlcmlmeShjb250ZXh0LCAoZGVkdWN0aW9uVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChkZWR1Y3Rpb25WZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oZGVkdWN0aW9uVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHN1cHBvc2l0aW9uLnZlcmlmeShjb250ZXh0LCAoc3VwcG9zaXRpb25WZXJpZmllcykgPT4ge1xuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvblZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oc3VwcG9zaXRpb25WZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCAoc3VwcG9zaXRpb25zVmVyaWZ5KSA9PiB7XG4gICAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBzdXBwb3NpdGlvbnMuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNWZXJpZnkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0KSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzO1xuXG4gICAgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIGh5cG90aGVzaXNEaXNjaGFyZ2VzID0gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCk7XG5cbiAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlcztcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgICBoeXBvdGhlc2VzRGlzY2hhcmdlcyA9IGV2ZXJ5KGh5cG90aGVzZXMsIChoeXBvdGhlc2lzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoeXBvdGhlc2lzRGlzY2hhcmdlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzO1xuICB9XG5cbiAgdW5pZnlTdGVwV2l0aERlZHVjdGlvbihzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwVW5pZmllcyA9IHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBkZWR1Y3Rpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbjtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCk7XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KTtcblxuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucyA9IHRoaXMudW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCA9IGNvbnRleHQuYXJlRGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgaWYgKCFzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbikge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gZXh0cmFjdChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSBzdXBwb3NpdGlvbi51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5yZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMoKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuXG4gICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvblVuaWZpZXNJbmRlcGVuZGVudGx5ID0gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucztcblxuICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSByZXZlcnNlKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpOyAvLy9cblxuICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucyA9IGJhY2t3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdGhpcy51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgc3VwcG9zaXRpb24sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNXaXRoU3VwcG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBkZWR1Y3Rpb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIHN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nLCAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvbiA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpO1xuXG4gICAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uO1xuICB9XG59XG4iXSwibmFtZXMiOlsiVG9wTGV2ZWxBc3NlcnRpb24iLCJyZXZlcnNlIiwiYXJyYXlVdGlsaXRpZXMiLCJldmVyeSIsImV4dHJhY3QiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJzaWduYXR1cmUiLCJoeXBvdGhlc2VzIiwiZ2V0TGFiZWxzIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRTaWduYXR1cmUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldFN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvbiIsImlzU2F0aXNmaWFibGUiLCJzYXRpc2ZpYWJsZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInNvbWUiLCJsYWJlbCIsInZlcmlmeUV4IiwiY29udGludWF0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJhbGwiLCJ2ZXJpZmllcyIsImRlYnVnIiwidmVyaWZ5TGFiZWwiLCJsYWJlbHNWZXJpZnkiLCJsYWJlbFN0cmluZyIsInZlcmlmeSIsImxhYmVsVmVyaWZpZXMiLCJwcm9vZlZlcmlmaWVzIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uVmVyaWZpZXMiLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zaXRpb25WZXJpZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsImFzc2lnbkFzc2lnbm1lbnRzIiwiYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VwcG9zaXRpb25zVmVyaWZ5IiwiZGlzY2hhcmdlSHlwb3RoZXNpcyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlcyIsImJyZWFrIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJoeXBvdGhlc2VzRGlzY2hhcmdlcyIsInVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24iLCJzdGVwIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwic3RlcFN0cmluZyIsInN0ZXBVbmlmaWVzIiwidW5pZnlTdGVwIiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5Iiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyIsImRlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQiLCJhcmVEZXJpdmVkU3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJyZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJzdXBwb3NpdGlvblVuaWZpZXNJbmRlcGVuZGVudGx5IiwidW5pZnlJbmRlcGVuZGVudGx5Iiwic3RlcFVuaWZpZXNXaXRoU3VwcG9zaXRpb24iLCJ0b0pTT04iLCJsYWJlbHNKU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwiZGVkdWN0aW9uSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJzaWduYXR1cmVKU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsIkNsYXNzIiwibGFiZWxzRnJvbUpTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJ0b3BMZXZlbEFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBdUJBOzs7ZUFBcUJBOzs7MkJBckJVO2dDQUNxQzs4QkFFaEQ7eUJBQ0k7d0JBQzJEO3NCQVVwQztBQUUvQyxNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyx5QkFBYyxFQUM1QixFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3pFLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7QUFFL0QsTUFBTVYsMEJBQTBCVyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxVQUFVLENBQUU7UUFDNUcsS0FBSyxDQUFDVCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxH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
|
|
@@ -12,8 +12,8 @@ const _occamlanguages = require("occam-languages");
|
|
|
12
12
|
class ContinuationZipPass extends _occamlanguages.ContinuationZipPass {
|
|
13
13
|
run(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
|
|
14
14
|
const continuation = remainingArguments.pop(), generalChildNodes = generalNonTerminalNode.getChildNodes(), specificChildNodes = specificNonTerminalNode.getChildNodes(); ///
|
|
15
|
-
this.descend(generalChildNodes, specificChildNodes, ...remainingArguments, continuation);
|
|
15
|
+
return this.descend(generalChildNodes, specificChildNodes, ...remainingArguments, continuation);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2NvbnRpbnVhdGlvblppcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQ29udGludWF0aW9uWmlwUGFzcyBhcyBDb250aW51YXRpb25aaXBQYXNzQmFzZSB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGludWF0aW9uWmlwUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3NCYXNlIHtcbiAgcnVuKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgZ2VuZXJhbENoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpOyAvLy9cblxuICAgIHJldHVybiB0aGlzLmRlc2NlbmQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ29udGludWF0aW9uWmlwUGFzcyIsIkNvbnRpbnVhdGlvblppcFBhc3NCYXNlIiwicnVuIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwiZ2VuZXJhbENoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztnQ0FGMEM7QUFFaEQsTUFBTUEsNEJBQTRCQyxtQ0FBdUI7SUFDdEVDLElBQUlDLHNCQUFzQixFQUFFQyx1QkFBdUIsRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUMxRSxNQUFNQyxlQUFlRCxtQkFBbUJFLEdBQUcsSUFDckNDLG9CQUFvQkwsdUJBQXVCTSxhQUFhLElBQ3hEQyxxQkFBcUJOLHdCQUF3QkssYUFBYSxJQUFJLEdBQUc7UUFFdkUsT0FBTyxJQUFJLENBQUNFLE9BQU8sQ0FBQ0gsbUJBQW1CRSx1QkFBdUJMLG9CQUFvQkM7SUFDcEY7QUFDRiJ9
|
package/lib/process/unify.js
CHANGED
|
@@ -353,35 +353,35 @@ class IntrinsicMetavariablePass extends _continuationZip.default {
|
|
|
353
353
|
const metaLevelPass = new MetaLevelPass(), propertyPass = new PropertyPass(), generatorPass = new GeneratorPass(), combinatorPass = new CombinatorPass(), constructorPass = new ConstructorPass(), metavariablePass = new MetavariablePass(), intrinsicTermPass = new IntrinsicTermPass(), intrinsicMetavariablePass = new IntrinsicMetavariablePass();
|
|
354
354
|
function unifyStatement(generalStatement, specificStatement, generalContext, specificContext, continuation) {
|
|
355
355
|
const generalStatementNode = generalStatement.getNode(), specificStatementNode = specificStatement.getNode(), generalNode = generalStatementNode, specificNode = specificStatementNode; ///
|
|
356
|
-
metaLevelPass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
356
|
+
return metaLevelPass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
357
357
|
}
|
|
358
358
|
function unifyMetavariable(generalMetavariable, specificMetavariable, generalContext, specificContext, continuation) {
|
|
359
359
|
const generalMetavariableNode = generalMetavariable.getNode(), specificMetavariableNode = specificMetavariable.getNode();
|
|
360
|
-
metavariablePass.run(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext, continuation);
|
|
360
|
+
return metavariablePass.run(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext, continuation);
|
|
361
361
|
}
|
|
362
362
|
function unifyTermWithProperty(term, property, generalContext, specificContext, continuation) {
|
|
363
363
|
const termNode = term.getNode(), propertyTerm = property.getTerm(), propertyTermNode = propertyTerm.getNode();
|
|
364
|
-
propertyPass.run(propertyTermNode, termNode, generalContext, specificContext, continuation);
|
|
364
|
+
return propertyPass.run(propertyTermNode, termNode, generalContext, specificContext, continuation);
|
|
365
365
|
}
|
|
366
366
|
function unifyTermWithGenerator(term, generator, generalContext, specificContext, continuation) {
|
|
367
367
|
const termNode = term.getNode(), generatorTerm = generator.getTerm(), generatorTermNode = generatorTerm.getNode();
|
|
368
|
-
generatorPass.run(generatorTermNode, termNode, generalContext, specificContext, continuation);
|
|
368
|
+
return generatorPass.run(generatorTermNode, termNode, generalContext, specificContext, continuation);
|
|
369
369
|
}
|
|
370
370
|
function unifyTermWithConstructor(term, constructor, generalContext, specificContext, continuation) {
|
|
371
371
|
const termNode = term.getNode(), constructorTerm = constructor.getTerm(), constructorTermNode = constructorTerm.getNode();
|
|
372
|
-
constructorPass.run(constructorTermNode, termNode, generalContext, specificContext, continuation);
|
|
372
|
+
return constructorPass.run(constructorTermNode, termNode, generalContext, specificContext, continuation);
|
|
373
373
|
}
|
|
374
374
|
function unifyStatementWithCombinator(statement, combinator, generalContext, specificContext, continuation) {
|
|
375
375
|
const statementNode = statement.getNode(), combinatorStatement = combinator.getStatement(), combinatorStatementNode = combinatorStatement.getNode();
|
|
376
|
-
combinatorPass.run(combinatorStatementNode, statementNode, generalContext, specificContext, continuation);
|
|
376
|
+
return combinatorPass.run(combinatorStatementNode, statementNode, generalContext, specificContext, continuation);
|
|
377
377
|
}
|
|
378
378
|
function unifyTermIntrinsically(generalTerm, specificTerm, generalContext, specificContext, continuation) {
|
|
379
379
|
const generalTermNode = generalTerm.getNode(), specificTermNode = specificTerm.getNode(), generalNode = generalTermNode, specificNode = specificTermNode; ///
|
|
380
|
-
intrinsicTermPass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
380
|
+
return intrinsicTermPass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
381
381
|
}
|
|
382
382
|
function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext, continuation) {
|
|
383
383
|
const generalMetavariableNode = generalMetavariable.getNode(), specificMetavariableNode = specificMetavariable.getNode(), generalNode = generalMetavariableNode, specificNode = specificMetavariableNode;
|
|
384
|
-
intrinsicMetavariablePass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
384
|
+
return intrinsicMetavariablePass.run(generalNode, specificNode, generalContext, specificContext, continuation);
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuaW1wb3J0IHsgQ29udGludWF0aW9uWmlwUGFzcyBhcyBDb250aW51YXRpb25aaXBQYXNzQmFzZSB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENvbnRpbnVhdGlvblppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvY29udGludWF0aW9uWmlwXCI7XG5cbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZVwiKSxcbiAgICAgIHNpZ25hdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zaWduYXR1cmVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXNzdW1wdGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RyaWN0LCBjb250ZXh0LCAodGVybSkgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIEdlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCwgKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCwgKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBNZXRhTGV2ZWxQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzc0Jhc2Uge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgY29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBjb250ZXh0LFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZTtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlID0gbWV0YXZhcmlhYmxlTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlOyAvLy9cblxuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJzdGl0dXRpb25Ob2RlKCksXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBmcmFtZSA9IGNvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlGcmFtZShmcmFtZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGZyYW1lVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cblxuICAgICAgICAgIGlmIChmcmFtZVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHNpZ25hdHVyZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzaWduYXR1cmVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsU2lnbmF0dXJlTm9kZSwgc3BlY2lmaWNTaWduYXR1cmVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKGdlbmVyYWxTaWduYXR1cmVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3Qgc3BlY2lmaWNTaWduYXR1cmUgPSBjb250ZXh0LmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc3BlY2lmaWNTaWduYXR1cmVOb2RlKTtcblxuICAgICAgICByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlLnVuaWZ5U2lnbmF0dXJlKHNwZWNpZmljU2lnbmF0dXJlLCBjb250ZXh0LCAoc2lnbmF0dXJlVW5pZmllcykgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGNvbnRleHQpXG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBDb21iaW5hdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YVR5cGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBtZXRhVHlwZU5vZGUgPSBnZW5lcmFsTWV0YVR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lID0gbWV0YVR5cGVOb2RlLmdldE1ldGFUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWVTdGF0ZW1lbnRNZXRhVHlwZU5hbWUgPSAobWV0YVR5cGVOYW1lID09PSBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUpO1xuXG4gICAgICAgIGlmIChtZXRhVHlwZU5hbWVTdGF0ZW1lbnRNZXRhVHlwZU5hbWUpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG1ldGFUeXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBtZXRhVHlwZU5vZGUgPSBnZW5lcmFsTWV0YVR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lID0gbWV0YVR5cGVOb2RlLmdldE1ldGFUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSA9IChtZXRhVHlwZU5hbWUgPT09IEZSQU1FX01FVEFfVFlQRV9OQU1FKTtcblxuICAgICAgICBpZiAobWV0YVR5cGVOYW1lRnJhbWVNZXRhVHlwZU5hbWUpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgICAgZnJhbWVOb2RlID0gc3BlY2lmaWNGcmFtZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgZnJhbWUudmFsaWRhdGUoY29udGV4dCwgKGZyYW1lKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHR5cGUsIGNvbnRleHQsICh0ZXJtKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIE1ldGF2YXJpYWJsZVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBJbnRyaW5zaWNUZXJtUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3NCYXNlIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIEludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IG1ldGFMZXZlbFBhc3MgPSBuZXcgTWV0YUxldmVsUGFzcygpLFxuICAgICAgcHJvcGVydHlQYXNzID0gbmV3IFByb3BlcnR5UGFzcygpLFxuICAgICAgZ2VuZXJhdG9yUGFzcyA9IG5ldyBHZW5lcmF0b3JQYXNzKCksXG4gICAgICBjb21iaW5hdG9yUGFzcyA9IG5ldyBDb21iaW5hdG9yUGFzcygpLFxuICAgICAgY29uc3RydWN0b3JQYXNzID0gbmV3IENvbnN0cnVjdG9yUGFzcygpLFxuICAgICAgbWV0YXZhcmlhYmxlUGFzcyA9IG5ldyBNZXRhdmFyaWFibGVQYXNzKCksXG4gICAgICBpbnRyaW5zaWNUZXJtUGFzcyA9IG5ldyBJbnRyaW5zaWNUZXJtUGFzcygpLFxuICAgICAgaW50cmluc2ljTWV0YXZhcmlhYmxlUGFzcyA9IG5ldyBJbnRyaW5zaWNNZXRhdmFyaWFibGVQYXNzKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVN0YXRlbWVudChnZW5lcmFsU3RhdGVtZW50LCBzcGVjaWZpY1N0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnROb2RlID0gZ2VuZXJhbFN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljU3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gIG1ldGFMZXZlbFBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeU1ldGF2YXJpYWJsZShnZW5lcmFsTWV0YXZhcmlhYmxlLCBzcGVjaWZpY01ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljTWV0YXZhcmlhYmxlLmdldE5vZGUoKTtcblxuICBtZXRhdmFyaWFibGVQYXNzLnJ1bihnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtV2l0aFByb3BlcnR5KHRlcm0sIHByb3BlcnR5LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgcHJvcGVydHlUZXJtID0gcHJvcGVydHkuZ2V0VGVybSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm1Ob2RlID0gcHJvcGVydHlUZXJtLmdldE5vZGUoKTtcblxuICBwcm9wZXJ0eVBhc3MucnVuKHByb3BlcnR5VGVybU5vZGUsIHRlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtV2l0aEdlbmVyYXRvcih0ZXJtLCBnZW5lcmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmF0b3JUZXJtID0gZ2VuZXJhdG9yLmdldFRlcm0oKSxcbiAgICAgICAgZ2VuZXJhdG9yVGVybU5vZGUgPSBnZW5lcmF0b3JUZXJtLmdldE5vZGUoKTtcblxuICBnZW5lcmF0b3JQYXNzLnJ1bihnZW5lcmF0b3JUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBjb25zdHJ1Y3RvclRlcm0gPSBjb25zdHJ1Y3Rvci5nZXRUZXJtKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3RvclRlcm0uZ2V0Tm9kZSgpO1xuXG4gIGNvbnN0cnVjdG9yUGFzcy5ydW4oY29uc3RydWN0b3JUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgY29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yU3RhdGVtZW50LmdldE5vZGUoKTtcblxuICBjb21iaW5hdG9yUGFzcy5ydW4oY29tYmluYXRvclN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1JbnRyaW5zaWNhbGx5KGdlbmVyYWxUZXJtLCBzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBnZW5lcmFsVGVybU5vZGUgPSBnZW5lcmFsVGVybS5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljVGVybU5vZGUgPSBzcGVjaWZpY1Rlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxUZXJtTm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljVGVybU5vZGU7IC8vL1xuXG4gIGludHJpbnNpY1Rlcm1QYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlO1xuXG4gIGludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG4iXSwibmFtZXMiOlsidW5pZnlNZXRhdmFyaWFibGUiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ1bmlmeVRlcm1JbnRyaW5zaWNhbGx5IiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvciIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidHlwZU5vZGVRdWVyeSIsInRlcm1Ob2RlUXVlcnkiLCJmcmFtZU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic2lnbmF0dXJlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5IiwiZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiUHJvcGVydHlQYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJydW4iLCJnZW5lcmFsVHlwZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJjb250aW51YXRpb24iLCJ0eXBlTm9kZSIsInRlcm1Ob2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiY29udGV4dCIsInR5cGUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJzdHJpY3QiLCJ2YWxpZGF0ZUdpdmVuVHlwZSIsInN1Y2Nlc3MiLCJHZW5lcmF0b3JQYXNzIiwiQ29uc3RydWN0b3JQYXNzIiwiTWV0YUxldmVsUGFzcyIsIkNvbnRpbnVhdGlvblppcFBhc3NCYXNlIiwiZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwidW5pZnlSZWZlcmVuY2UiLCJyZWZlcmVuY2VVbmlmaWVzIiwiZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1N0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlIiwiZ2V0UGFyZW50Tm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJnZXRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN0YXRlbWVudCIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljRnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsInVuaWZ5RnJhbWUiLCJmcmFtZVVuaWZpZXMiLCJnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtVW5pZmllcyIsImdlbmVyYWxTaWduYXR1cmVOb2RlIiwic3BlY2lmaWNTaWduYXR1cmVOb2RlIiwiZ2VuZXJhbFNpZ25hdHVyZSIsImZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUiLCJzcGVjaWZpY1NpZ25hdHVyZSIsInJlY29uY2lsZSIsInVuaWZ5U2lnbmF0dXJlIiwic2lnbmF0dXJlVW5pZmllcyIsIkNvbWJpbmF0b3JQYXNzIiwiZ2VuZXJhbE1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTmFtZSIsImdldE1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwidmFsaWRhdGUiLCJtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwiZnJhbWVGcm9tRnJhbWVOb2RlIiwiTWV0YXZhcmlhYmxlUGFzcyIsInRlcm1UeXBlIiwiZ2V0VHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiSW50cmluc2ljVGVybVBhc3MiLCJJbnRyaW5zaWNNZXRhdmFyaWFibGVQYXNzIiwibWV0YUxldmVsUGFzcyIsInByb3BlcnR5UGFzcyIsImdlbmVyYXRvclBhc3MiLCJjb21iaW5hdG9yUGFzcyIsImNvbnN0cnVjdG9yUGFzcyIsIm1ldGF2YXJpYWJsZVBhc3MiLCJpbnRyaW5zaWNUZXJtUGFzcyIsImludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Tm9kZSIsImdldE5vZGUiLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsImdlbmVyYWxNZXRhdmFyaWFibGUiLCJzcGVjaWZpY01ldGF2YXJpYWJsZSIsImdlbmVyYWxNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlIiwicHJvcGVydHkiLCJwcm9wZXJ0eVRlcm0iLCJnZXRUZXJtIiwicHJvcGVydHlUZXJtTm9kZSIsImdlbmVyYXRvciIsImdlbmVyYXRvclRlcm0iLCJnZW5lcmF0b3JUZXJtTm9kZSIsImNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JUZXJtIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsImdlbmVyYWxUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBOGVnQkE7ZUFBQUE7O1FBZ0RBQztlQUFBQTs7UUF6REFDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOztRQVJBQztlQUFBQTs7OzRCQW5mZTtnQ0FDZ0M7d0VBRS9CO3lCQUVOOytCQUNxQzt5QkFDa0I7Ozs7OztBQUVqRixNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHQywwQkFBYztBQUVwQyxNQUFNQyxnQkFBZ0JGLFVBQVUsVUFDMUJHLGdCQUFnQkgsVUFBVSxVQUMxQkksaUJBQWlCSixVQUFVLFdBQzNCSyxvQkFBb0JMLFVBQVUsY0FDOUJNLHFCQUFxQk4sVUFBVSxlQUMvQk8scUJBQXFCUCxV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
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuaW1wb3J0IHsgQ29udGludWF0aW9uWmlwUGFzcyBhcyBDb250aW51YXRpb25aaXBQYXNzQmFzZSB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENvbnRpbnVhdGlvblppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvY29udGludWF0aW9uWmlwXCI7XG5cbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZVwiKSxcbiAgICAgIHNpZ25hdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zaWduYXR1cmVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXNzdW1wdGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RyaWN0LCBjb250ZXh0LCAodGVybSkgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIEdlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCwgKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCwgKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBNZXRhTGV2ZWxQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzc0Jhc2Uge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgY29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBjb250ZXh0LFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZTtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlID0gbWV0YXZhcmlhYmxlTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlOyAvLy9cblxuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJzdGl0dXRpb25Ob2RlKCksXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBmcmFtZSA9IGNvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgICAgICBtZXRhdmFyaWFibGUudW5pZnlGcmFtZShmcmFtZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGZyYW1lVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoZnJhbWVVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHRlcm1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzaWduYXR1cmVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc2lnbmF0dXJlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFNpZ25hdHVyZU5vZGUsIHNwZWNpZmljU2lnbmF0dXJlTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZSA9IGNvbnRleHQuZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZShnZW5lcmFsU2lnbmF0dXJlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHNwZWNpZmljU2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKHNwZWNpZmljU2lnbmF0dXJlTm9kZSk7XG5cbiAgICAgICAgcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgZ2VuZXJhbFNpZ25hdHVyZS51bmlmeVNpZ25hdHVyZShzcGVjaWZpY1NpZ25hdHVyZSwgY29udGV4dCwgKHNpZ25hdHVyZVVuaWZpZXMpID0+IHtcbiAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChzaWduYXR1cmVVbmlmaWVzKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBjb250ZXh0KVxuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgQ29tYmluYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbWV0YVR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgbWV0YVR5cGVOb2RlID0gZ2VuZXJhbE1ldGFUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTm9kZS5nZXRNZXRhVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FKTtcblxuICAgICAgICBpZiAobWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBmcmFtZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxNZXRhVHlwZU5vZGUsIHNwZWNpZmljRnJhbWVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgbWV0YVR5cGVOb2RlID0gZ2VuZXJhbE1ldGFUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTm9kZS5nZXRNZXRhVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lRnJhbWVNZXRhVHlwZU5hbWUgPSAobWV0YVR5cGVOYW1lID09PSBGUkFNRV9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGZyYW1lLnZhbGlkYXRlKGNvbnRleHQsIChmcmFtZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgdGVybS52YWxpZGF0ZUdpdmVuVHlwZSh0eXBlLCBjb250ZXh0LCAodGVybSkgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBNZXRhdmFyaWFibGVQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgSW50cmluc2ljVGVybVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzQmFzZSB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHRlcm1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBJbnRyaW5zaWNNZXRhdmFyaWFibGVQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHRlcm1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCBtZXRhTGV2ZWxQYXNzID0gbmV3IE1ldGFMZXZlbFBhc3MoKSxcbiAgICAgIHByb3BlcnR5UGFzcyA9IG5ldyBQcm9wZXJ0eVBhc3MoKSxcbiAgICAgIGdlbmVyYXRvclBhc3MgPSBuZXcgR2VuZXJhdG9yUGFzcygpLFxuICAgICAgY29tYmluYXRvclBhc3MgPSBuZXcgQ29tYmluYXRvclBhc3MoKSxcbiAgICAgIGNvbnN0cnVjdG9yUGFzcyA9IG5ldyBDb25zdHJ1Y3RvclBhc3MoKSxcbiAgICAgIG1ldGF2YXJpYWJsZVBhc3MgPSBuZXcgTWV0YXZhcmlhYmxlUGFzcygpLFxuICAgICAgaW50cmluc2ljVGVybVBhc3MgPSBuZXcgSW50cmluc2ljVGVybVBhc3MoKSxcbiAgICAgIGludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MgPSBuZXcgSW50cmluc2ljTWV0YXZhcmlhYmxlUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnQoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBnZW5lcmFsU3RhdGVtZW50Tm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY1N0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGU7ICAvLy9cblxuICByZXR1cm4gbWV0YUxldmVsUGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5TWV0YXZhcmlhYmxlKGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVQYXNzLnJ1bihnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtV2l0aFByb3BlcnR5KHRlcm0sIHByb3BlcnR5LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgcHJvcGVydHlUZXJtID0gcHJvcGVydHkuZ2V0VGVybSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm1Ob2RlID0gcHJvcGVydHlUZXJtLmdldE5vZGUoKTtcblxuICByZXR1cm4gcHJvcGVydHlQYXNzLnJ1bihwcm9wZXJ0eVRlcm1Ob2RlLCB0ZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhdG9yVGVybSA9IGdlbmVyYXRvci5nZXRUZXJtKCksXG4gICAgICAgIGdlbmVyYXRvclRlcm1Ob2RlID0gZ2VuZXJhdG9yVGVybS5nZXROb2RlKCk7XG5cbiAgcmV0dXJuIGdlbmVyYXRvclBhc3MucnVuKGdlbmVyYXRvclRlcm1Ob2RlLCB0ZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybSA9IGNvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yVGVybS5nZXROb2RlKCk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yUGFzcy5ydW4oY29uc3RydWN0b3JUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgY29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yU3RhdGVtZW50LmdldE5vZGUoKTtcblxuICByZXR1cm4gY29tYmluYXRvclBhc3MucnVuKGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtSW50cmluc2ljYWxseShnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgZ2VuZXJhbFRlcm1Ob2RlID0gZ2VuZXJhbFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY1Rlcm1Ob2RlID0gc3BlY2lmaWNUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsVGVybU5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICByZXR1cm4gaW50cmluc2ljVGVybVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkoZ2VuZXJhbE1ldGF2YXJpYWJsZSwgc3BlY2lmaWNNZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGU7XG5cbiAgcmV0dXJuIGludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG4iXSwibmFtZXMiOlsidW5pZnlNZXRhdmFyaWFibGUiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ1bmlmeVRlcm1JbnRyaW5zaWNhbGx5IiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvciIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidHlwZU5vZGVRdWVyeSIsInRlcm1Ob2RlUXVlcnkiLCJmcmFtZU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic2lnbmF0dXJlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5IiwiZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiUHJvcGVydHlQYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJydW4iLCJnZW5lcmFsVHlwZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJjb250aW51YXRpb24iLCJ0eXBlTm9kZSIsInRlcm1Ob2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiY29udGV4dCIsInR5cGUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJzdHJpY3QiLCJ2YWxpZGF0ZUdpdmVuVHlwZSIsInN1Y2Nlc3MiLCJHZW5lcmF0b3JQYXNzIiwiQ29uc3RydWN0b3JQYXNzIiwiTWV0YUxldmVsUGFzcyIsIkNvbnRpbnVhdGlvblppcFBhc3NCYXNlIiwiZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwidW5pZnlSZWZlcmVuY2UiLCJyZWZlcmVuY2VVbmlmaWVzIiwiZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1N0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlIiwiZ2V0UGFyZW50Tm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJnZXRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN0YXRlbWVudCIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljRnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsInVuaWZ5RnJhbWUiLCJmcmFtZVVuaWZpZXMiLCJnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtVW5pZmllcyIsImdlbmVyYWxTaWduYXR1cmVOb2RlIiwic3BlY2lmaWNTaWduYXR1cmVOb2RlIiwiZ2VuZXJhbFNpZ25hdHVyZSIsImZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUiLCJzcGVjaWZpY1NpZ25hdHVyZSIsInJlY29uY2lsZSIsInVuaWZ5U2lnbmF0dXJlIiwic2lnbmF0dXJlVW5pZmllcyIsIkNvbWJpbmF0b3JQYXNzIiwiZ2VuZXJhbE1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTmFtZSIsImdldE1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwidmFsaWRhdGUiLCJtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwiZnJhbWVGcm9tRnJhbWVOb2RlIiwiTWV0YXZhcmlhYmxlUGFzcyIsInRlcm1UeXBlIiwiZ2V0VHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiSW50cmluc2ljVGVybVBhc3MiLCJJbnRyaW5zaWNNZXRhdmFyaWFibGVQYXNzIiwibWV0YUxldmVsUGFzcyIsInByb3BlcnR5UGFzcyIsImdlbmVyYXRvclBhc3MiLCJjb21iaW5hdG9yUGFzcyIsImNvbnN0cnVjdG9yUGFzcyIsIm1ldGF2YXJpYWJsZVBhc3MiLCJpbnRyaW5zaWNUZXJtUGFzcyIsImludHJpbnNpY01ldGF2YXJpYWJsZVBhc3MiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Tm9kZSIsImdldE5vZGUiLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsImdlbmVyYWxNZXRhdmFyaWFibGUiLCJzcGVjaWZpY01ldGF2YXJpYWJsZSIsImdlbmVyYWxNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlIiwicHJvcGVydHkiLCJwcm9wZXJ0eVRlcm0iLCJnZXRUZXJtIiwicHJvcGVydHlUZXJtTm9kZSIsImdlbmVyYXRvciIsImdlbmVyYXRvclRlcm0iLCJnZW5lcmF0b3JUZXJtTm9kZSIsImNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JUZXJtIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsImdlbmVyYWxUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBNmVnQkE7ZUFBQUE7O1FBZ0RBQztlQUFBQTs7UUF6REFDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOztRQVJBQztlQUFBQTs7OzRCQWxmZTtnQ0FDZ0M7d0VBRS9CO3lCQUVOOytCQUNxQzt5QkFDa0I7Ozs7OztBQUVqRixNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHQywwQkFBYztBQUVwQyxNQUFNQyxnQkFBZ0JGLFVBQVUsVUFDMUJHLGdCQUFnQkgsVUFBVSxVQUMxQkksaUJBQWlCSixVQUFVLFdB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
|
package/lib/process/validate.js
CHANGED
|
@@ -31,7 +31,7 @@ const termNodeQuery = nodeQuery("/term"), typeNodeQuery = nodeQuery("/type"), st
|
|
|
31
31
|
class PropertyPass extends _occamlanguages.ContinuationPass {
|
|
32
32
|
run(termNode, context, continuation) {
|
|
33
33
|
const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
|
|
34
|
-
this.descend(childNodes, context, continuation);
|
|
34
|
+
return this.descend(childNodes, context, continuation);
|
|
35
35
|
}
|
|
36
36
|
static maps = [
|
|
37
37
|
{
|
|
@@ -63,7 +63,7 @@ class PropertyPass extends _occamlanguages.ContinuationPass {
|
|
|
63
63
|
class GeneratorPass extends _occamlanguages.ContinuationPass {
|
|
64
64
|
run(termNode, context, continuation) {
|
|
65
65
|
const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
|
|
66
|
-
this.descend(childNodes, context, continuation);
|
|
66
|
+
return this.descend(childNodes, context, continuation);
|
|
67
67
|
}
|
|
68
68
|
static maps = [
|
|
69
69
|
{
|
|
@@ -95,7 +95,7 @@ class GeneratorPass extends _occamlanguages.ContinuationPass {
|
|
|
95
95
|
class CombinatorPass extends _occamlanguages.ContinuationPass {
|
|
96
96
|
run(statementNode, context, continuation) {
|
|
97
97
|
const nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes();
|
|
98
|
-
this.descend(childNodes, context, continuation);
|
|
98
|
+
return this.descend(childNodes, context, continuation);
|
|
99
99
|
}
|
|
100
100
|
static maps = [
|
|
101
101
|
{
|
|
@@ -142,7 +142,7 @@ class CombinatorPass extends _occamlanguages.ContinuationPass {
|
|
|
142
142
|
class ConstructorPass extends _occamlanguages.ContinuationPass {
|
|
143
143
|
run(termNode, context, continuation) {
|
|
144
144
|
const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
|
|
145
|
-
this.descend(childNodes, context, continuation);
|
|
145
|
+
return this.descend(childNodes, context, continuation);
|
|
146
146
|
}
|
|
147
147
|
static maps = [
|
|
148
148
|
{
|
|
@@ -174,19 +174,19 @@ class ConstructorPass extends _occamlanguages.ContinuationPass {
|
|
|
174
174
|
const propertyPass = new PropertyPass(), generatorPass = new GeneratorPass(), combinatorPass = new CombinatorPass(), constructorPass = new ConstructorPass();
|
|
175
175
|
function validateTermAsProperty(term, context, continuation) {
|
|
176
176
|
const termNode = term.getNode();
|
|
177
|
-
propertyPass.run(termNode, context, continuation);
|
|
177
|
+
return propertyPass.run(termNode, context, continuation);
|
|
178
178
|
}
|
|
179
179
|
function validateTermAsGenerator(term, context, continuation) {
|
|
180
180
|
const termNode = term.getNode();
|
|
181
|
-
generatorPass.run(termNode, context, continuation);
|
|
181
|
+
return generatorPass.run(termNode, context, continuation);
|
|
182
182
|
}
|
|
183
183
|
function validateTermAsConstructor(term, context, continuation) {
|
|
184
184
|
const termNode = term.getNode();
|
|
185
|
-
constructorPass.run(termNode, context, continuation);
|
|
185
|
+
return constructorPass.run(termNode, context, continuation);
|
|
186
186
|
}
|
|
187
187
|
function validateStatementAsCombinator(statement, context, continuation) {
|
|
188
188
|
const statementNode = statement.getNode();
|
|
189
|
-
combinatorPass.run(statementNode, context, continuation);
|
|
189
|
+
return combinatorPass.run(statementNode, context, continuation);
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuaW1wb3J0IHsgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpO1xuXG5jbGFzcyBQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIEdlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbWJpbmF0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uUGFzcyB7XG4gIHJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc3RhdGVtZW50Tm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBzdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCwgKHN0YXRlbWVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbnN0cnVjdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblBhc3Mge1xuICBydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgcHJvcGVydHlQYXNzID0gbmV3IFByb3BlcnR5UGFzcygpLFxuICAgICAgZ2VuZXJhdG9yUGFzcyA9IG5ldyBHZW5lcmF0b3JQYXNzKCksXG4gICAgICBjb21iaW5hdG9yUGFzcyA9IG5ldyBDb21iaW5hdG9yUGFzcygpLFxuICAgICAgY29uc3RydWN0b3JQYXNzID0gbmV3IENvbnN0cnVjdG9yUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSh0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICBwcm9wZXJ0eVBhc3MucnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgZ2VuZXJhdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpO1xuXG4gIGNvbnN0cnVjdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKTtcblxuICBjb21iaW5hdG9yUGFzcy5ydW4oc3RhdGVtZW50Tm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKTtcbn1cbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IiLCJ2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvciIsInZhbGlkYXRlVGVybUFzUHJvcGVydHkiLCJub2RlUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInRlcm1Ob2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwiUHJvcGVydHlQYXNzIiwiQ29udGludWF0aW9uUGFzcyIsInJ1biIsInRlcm1Ob2RlIiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiZGVzY2VuZCIsIm1hcHMiLCJ0ZXJtIiwidGVybUZyb21UZXJtTm9kZSIsInZhbGlkYXRlIiwic3VjY2VzcyIsInR5cGVOb2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJHZW5lcmF0b3JQYXNzIiwiQ29tYmluYXRvclBhc3MiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJDb25zdHJ1Y3RvclBhc3MiLCJwcm9wZXJ0eVBhc3MiLCJnZW5lcmF0b3JQYXNzIiwiY29tYmluYXRvclBhc3MiLCJjb25zdHJ1Y3RvclBhc3MiLCJnZXROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtT2dCQTtlQUFBQTs7UUFOQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQU5BQztlQUFBQTs7OzRCQS9NZTtnQ0FDRTt5QkFFVDt5QkFDcUM7QUFFN0QsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxnQkFBZ0JILFVBQVUsVUFDMUJJLHFCQUFxQkosVUFBVTtBQUVyQyxNQUFNSyxxQkFBcUJDLGdDQUFnQjtJQUN6Q0MsSUFBSUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRTtRQUNuQyxNQUFNQyxrQkFBa0JILFVBQ2xCSSxhQUFhRCxnQkFBZ0JFLGFBQWE7UUFF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
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuaW1wb3J0IHsgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpO1xuXG5jbGFzcyBQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBHZW5lcmF0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uUGFzcyB7XG4gIHJ1bih0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgIHJldHVybiB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgQ29tYmluYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHN0YXRlbWVudE5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgIHJldHVybiB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc3RhdGVtZW50Tm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBzdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCwgKHN0YXRlbWVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbnN0cnVjdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblBhc3Mge1xuICBydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHByb3BlcnR5UGFzcyA9IG5ldyBQcm9wZXJ0eVBhc3MoKSxcbiAgICAgIGdlbmVyYXRvclBhc3MgPSBuZXcgR2VuZXJhdG9yUGFzcygpLFxuICAgICAgY29tYmluYXRvclBhc3MgPSBuZXcgQ29tYmluYXRvclBhc3MoKSxcbiAgICAgIGNvbnN0cnVjdG9yUGFzcyA9IG5ldyBDb25zdHJ1Y3RvclBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzUHJvcGVydHkodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvcih0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICByZXR1cm4gZ2VuZXJhdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvclBhc3MucnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JQYXNzLnJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuIl0sIm5hbWVzIjpbInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwidmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yIiwidmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidGVybU5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJQcm9wZXJ0eVBhc3MiLCJDb250aW51YXRpb25QYXNzIiwicnVuIiwidGVybU5vZGUiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwibm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJkZXNjZW5kIiwibWFwcyIsInRlcm0iLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidmFsaWRhdGUiLCJzdWNjZXNzIiwidHlwZU5vZGUiLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsIkdlbmVyYXRvclBhc3MiLCJDb21iaW5hdG9yUGFzcyIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsIkNvbnN0cnVjdG9yUGFzcyIsInByb3BlcnR5UGFzcyIsImdlbmVyYXRvclBhc3MiLCJjb21iaW5hdG9yUGFzcyIsImNvbnN0cnVjdG9yUGFzcyIsImdldE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQW1PZ0JBO2VBQUFBOztRQU5BQztlQUFBQTs7UUFOQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOzs7NEJBL01lO2dDQUNFO3lCQUVUO3lCQUNxQztBQUU3RCxNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHQywwQkFBYztBQUVwQyxNQUFNQyxnQkFBZ0JGLFVBQVUsVUFDMUJHLGdCQUFnQkgsVUFBVSxVQUMxQkkscUJBQXFCSixVQUFVO0FBRXJDLE1BQU1LLHFCQUFxQkMsZ0NBQWdCO0lBQ3pDQyxJQUFJQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsWUFB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
|