occam-nominal 1.0.614 → 1.0.618
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/element/constructor.js +4 -5
- package/lib/element/derivation.js +2 -3
- package/lib/element/fact/premise.js +2 -3
- package/lib/element/generator.js +4 -5
- package/lib/element/hypothesis.js +2 -3
- package/lib/element/property.js +4 -5
- package/lib/element/resolution/conclusion.js +32 -3
- package/lib/element/resolution/deduction.js +32 -3
- package/lib/element/resolution.js +1 -35
- package/lib/process/instantiate.js +6 -4
- package/package.json +5 -5
- package/src/element/constructor.js +5 -6
- package/src/element/derivation.js +0 -1
- package/src/element/fact/premise.js +0 -1
- package/src/element/generator.js +4 -5
- package/src/element/hypothesis.js +1 -2
- package/src/element/property.js +4 -5
- package/src/element/resolution/conclusion.js +53 -3
- package/src/element/resolution/deduction.js +53 -3
- package/src/element/resolution.js +1 -57
- package/src/process/instantiate.js +7 -2
|
@@ -47,11 +47,10 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
47
47
|
}
|
|
48
48
|
getString(includeType = true) {
|
|
49
49
|
let string;
|
|
50
|
+
string = super.getString();
|
|
50
51
|
if (includeType) {
|
|
51
|
-
const
|
|
52
|
-
string = `${
|
|
53
|
-
} else {
|
|
54
|
-
string = super.getString();
|
|
52
|
+
const typeString = this.type.getString();
|
|
53
|
+
string = `${string}.${typeString}`;
|
|
55
54
|
}
|
|
56
55
|
return string;
|
|
57
56
|
}
|
|
@@ -213,4 +212,4 @@ function termFromConstructorNode(constructorNode, context) {
|
|
|
213
212
|
return term;
|
|
214
213
|
}
|
|
215
214
|
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnksIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5oeXBvdGhlc2VzO1xuICB9XG5cbiAgc2V0SHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGlzSHlwb3RoZXRpY2FsKCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXNMZW5ndGggPSB0aGlzLmh5cG90aGVzZXMubGVuZ3RoLFxuICAgICAgICAgIGh5cG90aGV0aWNhbCA9IChoeXBvdGhlc2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXRpY2FsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3Rvck5vZGUgPSB0aGlzLmdldENvbnN0cnVjdG9yTm9kZSgpLFxuICAgICAgbWFsZm9ybWVkID0gY29uc3RydWN0b3JOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uc3RydWN0b3IsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cnVjdG9yLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGVTdHJpbmcgPSBiYXNlVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgb2YgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGlzIG5vdCB0aGUgJyR7YmFzZVR5cGVTdHJpbmd9JyBiYXNlIHR5cGUuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRUZXJtKHRoaXMudGVybSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciA9IHRoaXMudW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yLmJpbmQodGhpcyksXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yXG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCAoaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpcy5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB0eXBlLFxuICAgICAgICBoeXBvdGhlc2VzXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yID0gbmV3IENvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGNvbnN0cnVjdG9yTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldENvbnN0cnVjdG9yTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInRlcm1TdHJpbmciLCJ0eXBlU3RyaW5nIiwic2V0VHlwZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJjb25zdHJ1Y3RvclN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwiYmluZCIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IiLCJjb21taXQiLCJ2YWxpZGF0ZUFzVmFyaWFibGUiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJiYXNlVHlwZVN0cmluZyIsImFkZFRlcm0iLCJ1bmlmeVRlcm0iLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJoeXBvdGhlc2lzIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ1M7c0JBQ0k7NkJBQ0c7dUJBQ0U7MEJBQ0M7eUJBQzRCO3NCQUN1QjtBQUU3RixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFB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
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnksIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5oeXBvdGhlc2VzO1xuICB9XG5cbiAgc2V0SHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGlzSHlwb3RoZXRpY2FsKCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXNMZW5ndGggPSB0aGlzLmh5cG90aGVzZXMubGVuZ3RoLFxuICAgICAgICAgIGh5cG90aGV0aWNhbCA9IChoeXBvdGhlc2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXRpY2FsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7c3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gY29uc3RydWN0b3JOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uc3RydWN0b3IsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cnVjdG9yLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGVTdHJpbmcgPSBiYXNlVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgb2YgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGlzIG5vdCB0aGUgJyR7YmFzZVR5cGVTdHJpbmd9JyBiYXNlIHR5cGUuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRUZXJtKHRoaXMudGVybSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciA9IHRoaXMudW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yLmJpbmQodGhpcyksXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yXG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCAoaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpcy5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB0eXBlLFxuICAgICAgICBoeXBvdGhlc2VzXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yID0gbmV3IENvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGNvbnN0cnVjdG9yTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldENvbnN0cnVjdG9yTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsImNvbnN0cnVjdG9yIiwiZGVidWciLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJiaW5kIiwidmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciIsImNvbW1pdCIsInZhbGlkYXRlQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImJhc2VUeXBlU3RyaW5nIiwiYWRkVGVybSIsInVuaWZ5VGVybSIsInRlcm1TdHJpbmciLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJoeXBvdGhlc2lzIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ1M7c0JBQ0k7NkJBQ0c7dUJBQ0U7MEJBQ0M7eUJBQzRCO3NCQUN1QjtBQUU3RixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVB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
|
|
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _necessary = require("necessary");
|
|
12
12
|
const _occamlanguages = require("occam-languages");
|
|
13
13
|
const _elements = require("../elements");
|
|
14
|
-
const _breakPoint = require("occam-languages/lib/utilities/breakPoint");
|
|
15
14
|
const { last } = _necessary.arrayUtilities, { every } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
|
|
16
15
|
const _default = (0, _elements.define)(class Derivation extends _occamlanguages.Element {
|
|
17
16
|
constructor(context, string, node, breakPoint, factOrSubproofs){
|
|
@@ -29,7 +28,7 @@ const _default = (0, _elements.define)(class Derivation extends _occamlanguages.
|
|
|
29
28
|
const lastFactOrSubproof = last(this.factOrSubproofs), lastFact = lastFactOrSubproof, lastStep = lastFact; ///
|
|
30
29
|
return lastStep;
|
|
31
30
|
}
|
|
32
|
-
verify =
|
|
31
|
+
verify = unbreakable(function(context, forward, back) {
|
|
33
32
|
return every(this.factOrSubproofs, (factOrSubproof, context, forward, back)=>{
|
|
34
33
|
return factOrSubproof.verify(context, (context, back)=>{
|
|
35
34
|
context.addFactOrSubproof(factOrSubproof);
|
|
@@ -41,4 +40,4 @@ const _default = (0, _elements.define)(class Derivation extends _occamlanguages.
|
|
|
41
40
|
static name = "Derivation";
|
|
42
41
|
});
|
|
43
42
|
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Rlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZXJpdmF0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgZmFjdE9yU3VicHJvb2ZzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuZmFjdE9yU3VicHJvb2ZzID0gZmFjdE9yU3VicHJvb2ZzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIHJldHVybiB0aGlzLmZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlcml2YXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZXJpdmF0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZXJpdmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGNvbnN0IGxhc3RGYWN0T3JTdWJwcm9vZiA9IGxhc3QodGhpcy5mYWN0T3JTdWJwcm9vZnMpLFxuICAgICAgICAgIGxhc3RGYWN0ID0gbGFzdEZhY3RPclN1YnByb29mLCAgLy8vXG4gICAgICAgICAgbGFzdFN0ZXAgPSBsYXN0RmFjdDsgIC8vL1xuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXZlcnkodGhpcy5mYWN0T3JTdWJwcm9vZnMsIChmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZhY3RPclN1YnByb29mLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJEZXJpdmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkRlcml2YXRpb24iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwiZmFjdE9yU3VicHJvb2ZzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZ2V0RGVyaXZhdGlvbk5vZGUiLCJnZXROb2RlIiwiZGVyaXZhdGlvbk5vZGUiLCJnZXRMYXN0U3RlcCIsImxhc3RGYWN0T3JTdWJwcm9vZiIsImxhc3RGYWN0IiwibGFzdFN0ZXAiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7OzJCQVQrQjtnQ0FDcUM7MEJBRTdDO0FBRXZCLE1BQU0sRUFBRUEsSUFBSSxFQUFFLEdBQUdDLHlCQUFjLEVBQ3pCLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxxQ0FBcUIsRUFDakMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxlQUFlLENBQUU7UUFDOUQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLGVBQWUsR0FBR0E7SUFDekI7SUFFQUMscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDRCxlQUFlO0lBQzdCO0lBRUFFLG9CQUFvQjtRQUNsQixNQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMsaUJBQWlCTixNQUFPLEdBQUc7UUFFakMsT0FBT007SUFDVDtJQUVBQyxjQUFjO1FBQ1osTUFBTUMscUJBQXFCbkIsS0FBSyxJQUFJLENBQUNhLGVBQWUsR0FDOUNPLFdBQVdELG9CQUNYRSxXQUFXRCxVQUFXLEdBQUc7UUFFL0IsT0FBT0M7SUFDVDtJQUVBQyxTQUFTbEIsWUFBWSxTQUFVSyxPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSTtRQUNuRCxPQUFPdEIsTUFBTSxJQUFJLENBQUNXLGVBQWUsRUFBRSxDQUFDWSxnQkFBZ0JoQixTQUFTYyxTQUFTQztZQUNwRSxPQUFPQyxlQUFlSCxNQUFNLENBQUNiLFNBQVMsQ0FBQ0EsU0FBVWU7Z0JBQy9DZixRQUFRaUIsaUJBQWlCLENBQUNEO2dCQUUxQmhCLFFBQVFrQixpQkFBaUI7Z0JBRXpCLE9BQU9KLFFBQVFkLFNBQVNlO1lBQzFCLEdBQUdBO1FBQ0wsR0FBR2YsU0FBU2MsU0FBU0M7SUFDdkIsR0FBRztJQUVILE9BQU9JLE9BQU8sYUFBYTtBQUM3QiJ9
|
|
@@ -14,7 +14,6 @@ const _elements = require("../../elements");
|
|
|
14
14
|
const _state = require("../../utilities/state");
|
|
15
15
|
const _instantiate = require("../../process/instantiate");
|
|
16
16
|
const _context = require("../../utilities/context");
|
|
17
|
-
const _breakPoint = require("occam-languages/lib/utilities/breakPoint");
|
|
18
17
|
function _interop_require_default(obj) {
|
|
19
18
|
return obj && obj.__esModule ? obj : {
|
|
20
19
|
default: obj
|
|
@@ -87,7 +86,7 @@ const _default = (0, _elements.define)(class Premise extends _fact.default {
|
|
|
87
86
|
return back();
|
|
88
87
|
});
|
|
89
88
|
});
|
|
90
|
-
validate =
|
|
89
|
+
validate = unbreakable(function(state, context, forward, back) {
|
|
91
90
|
const premiseString = this.getString(); ///
|
|
92
91
|
context.trace(`Validating the '${premiseString}' premise...`);
|
|
93
92
|
return (0, _context.isolate)((state, context, forward, back)=>{
|
|
@@ -205,4 +204,4 @@ function procedureReferenceFromPremiseNode(premiseNode, context) {
|
|
|
205
204
|
return procedureReference;
|
|
206
205
|
}
|
|
207
206
|
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3QvcHJlbWlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRmFjdCBmcm9tIFwiLi4vZmFjdFwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByZW1pc2UgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHt1bmJyZWFrYWJsZX0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlcy9saWIvdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcblxuY29uc3QgeyBjdXQsIGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIHVuYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUHJlbWlzZSBleHRlbmRzIEZhY3Qge1xuICBnZXRQcmVtaXNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJlbWlzZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgY29uc3QgcHJlbWlzZU5vZGUgPSB0aGlzLmdldFByZW1pc2VOb2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb2RlLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKCkge1xuICAgIGxldCBzdWJwcm9vZkFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBwcmVtaXNlTm9kZSA9IHRoaXMuZ2V0UHJlbWlzZU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBwcmVtaXNlTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHByZW1pc2UsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSBicmVha2FibGUoZnVuY3Rpb24gKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZTdHJpbmcgPSBmYWN0T3JTdWJwcm9vZi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSB0byB0aGUgdGhlICcke2ZhY3RPclN1YnByb29mU3RyaW5nfScgZmFjdCBvciBzdWJwcm9vZi4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlGYWN0ID0gdGhpcy51bmlmeUZhY3QuYmluZCh0aGlzKSxcbiAgICAgICAgICB1bmlmeVN1YnByb29mID0gdGhpcy51bmlmeVN1YnByb29mLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHVuaWZ5RmFjdCxcbiAgICAgIHVuaWZ5U3VicHJvb2ZcbiAgICBdLCBmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSB0byB0aGUgdGhlICcke2ZhY3RPclN1YnByb29mU3RyaW5nfScgZmFjdCBvciBzdWJwcm9vZi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIHRvIHRoZSB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVByb2NlZHVyZVJlZmVyZW5jZVxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcmVtaXNlID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByZW1pc2UsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICBhcHBseUluZGVwZW5kZW50bHkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgYXBwbHlTdGF0ZW1lbnRJbmRlcGVuZGVudGx5ID0gdGhpcy5hcHBseVN0YXRlbWVudEluZGVwZW5kZW50bHkuYmluZCh0aGlzKSxcbiAgICAgICAgICBhcHBseVByb2NlZHVyZVJlZmVyZW5jZUluZGVwZW5kZW50bHkgPSB0aGlzLmFwcGx5UHJvY2VkdXJlUmVmZXJlbmNlSW5kZXBlbmRlbnRseS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICBhcHBseVN0YXRlbWVudEluZGVwZW5kZW50bHksXG4gICAgICBhcHBseVByb2NlZHVyZVJlZmVyZW5jZUluZGVwZW5kZW50bHlcbiAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHVuaWZ5RmFjdChmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGZhY3RPclN1YnByb29mRmFjdCA9IGZhY3RPclN1YnByb29mLmlzRmFjdCgpO1xuXG4gICAgaWYgKCFmYWN0T3JTdWJwcm9vZkZhY3QpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWN0ID0gZmFjdE9yU3VicHJvb2YsICAvLy9cbiAgICAgICAgICBmYWN0U3RyaW5nID0gZmFjdC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3Qgd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIGNvbnN0IGZhY3RDb250ZXh0ID0gZmFjdC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJlbWlzZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcmVtaXNlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gZmFjdENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0IHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZTdWJwcm9vZiA9IGZhY3RPclN1YnByb29mLmlzQnVicHJvb2YoKTtcblxuICAgIGlmICghZmFjdE9yU3VicHJvb2ZTdWJwcm9vZikge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YnByb29mID0gZmFjdE9yU3VicHJvb2YsICAvLy9cbiAgICAgICAgICBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBzdWJwcm9vZi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbiA9IHRoaXMuZmluZFN1YnByb29mQXNzZXJ0aW9uKCk7XG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlbWlzZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcmVtaXNlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByZW1pc2VcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcmVtaXNlO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBwcmVtaXNlTm9kZSA9IGluc3RhbnRpYXRlUHJlbWlzZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gcHJlbWlzZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBwcmVtaXNlID0gbmV3IFByZW1pc2UoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHN0YXRlbWVudCwgcHJvY2VkdXJlUmVmZXJlbmNlKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlID0gbnVsbDtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gcHJlbWlzZU5vZGUuZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVSZWZlcmVuY2VCeVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbn1cbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByZW1pc2UiLCJGYWN0IiwiZ2V0UHJlbWlzZU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsInByZW1pc2VOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJmaW5kU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJwcmVtaXNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInByZW1pc2UiLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5IiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZlN0cmluZyIsInVuaWZ5RmFjdCIsImJpbmQiLCJ1bmlmeVN1YnByb29mIiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiY29tbWl0IiwiYXBwbHlJbmRlcGVuZGVudGx5IiwiYXBwbHlTdGF0ZW1lbnRJbmRlcGVuZGVudGx5IiwiYXBwbHlQcm9jZWR1cmVSZWZlcmVuY2VJbmRlcGVuZGVudGx5IiwiZmFjdE9yU3VicHJvb2ZGYWN0IiwiaXNGYWN0IiwiZmFjdCIsImZhY3RTdHJpbmciLCJmYWN0Q29udGV4dCIsInByZW1pc2VDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImZhY3RPclN1YnByb29mU3VicHJvb2YiLCJpc0J1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlN0cmluZyIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJzdHJpbmciLCJicmVha1BvaW50IiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlUHJlbWlzZSIsInJlZmVyZW5jZSIsInJlZmVyZW5jZUZyb21QcmVtaXNlTm9kZSIsInN0YXRlbWVudEZyb21QcmVtaXNlTm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21QcmVtaXNlTm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2VCeVByb2NlZHVyZVJlZmVyZW5jZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWIyRDs2REFFMUM7MEJBRU07dUJBQ0M7NkJBQ1c7eUJBQzhDOzRCQUN2RDs7Ozs7O0FBRTFCLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BDLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXRHLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsZ0JBQWdCQyxhQUFJO0lBQzlDQyxpQkFBaUI7UUFDZixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsY0FBY0YsTUFBTSxHQUFHO1FBRTdCLE9BQU9FO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1ELGNBQWMsSUFBSSxDQUFDSCxjQUFjLElBQ2pDSyxnQkFBZ0JGLFlBQVlDLGdCQUFnQjtRQUVsRCxPQUFPQztJQUNUO0lBRUFDLHdCQUF3QjtRQUN0QixJQUFJQyxvQkFBb0I7UUFFeEIsTUFBTUYsZ0JBQWdCLElBQUksQ0FBQ0QsZ0JBQWdCO1FBRTNDLElBQUlDLGtCQUFrQixNQUFNO1lBQzFCLE1BQU1HLHdCQUF3QkgsY0FBY0ksd0JBQXdCO1lBRXBFLElBQUlELDBCQUEwQixNQUFNO2dCQUNsQyxNQUFNRSxVQUFVLElBQUksQ0FBQ0MsVUFBVTtnQkFFL0JKLG9CQUFvQkcsUUFBUUUsNEJBQTRCLENBQUNKO1lBQzNEO1FBQ0Y7UUFFQSxPQUFPRDtJQUNUO0lBRUFNLGNBQWM7UUFDWixNQUFNVixjQUFjLElB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
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3QvcHJlbWlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRmFjdCBmcm9tIFwiLi4vZmFjdFwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByZW1pc2UgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgdW5icmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcmVtaXNlIGV4dGVuZHMgRmFjdCB7XG4gIGdldFByZW1pc2VOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBwcmVtaXNlTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VOb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICBjb25zdCBwcmVtaXNlTm9kZSA9IHRoaXMuZ2V0UHJlbWlzZU5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gcHJlbWlzZU5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBmaW5kU3VicHJvb2ZBc3NlcnRpb24oKSB7XG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSB0aGlzLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpO1xuXG4gICAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShzdWJwcm9vZkFzc2VydGlvbk5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbjtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IHByZW1pc2VOb2RlID0gdGhpcy5nZXRQcmVtaXNlTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IHByZW1pc2VOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICBjb25zdCBtYWxmb3JtZWQgPSB0aGlzLmlzTWFsZm9ybWVkKCk7XG5cbiAgICBpZiAobWFsZm9ybWVkKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJlbWlzZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZlN0cmluZyA9IGZhY3RPclN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIHRvIHRoZSB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mLi4uYCk7XG5cbiAgICBjb25zdCB1bmlmeUZhY3QgPSB0aGlzLnVuaWZ5RmFjdC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVuaWZ5U3VicHJvb2YgPSB0aGlzLnVuaWZ5U3VicHJvb2YuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdW5pZnlGYWN0LFxuICAgICAgdW5pZnlTdWJwcm9vZlxuICAgIF0sIGZhY3RPclN1YnByb29mLCBjb250ZXh0LCAoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIHRvIHRoZSB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgdG8gdGhlIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVByb2NlZHVyZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByZW1pc2UgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQocHJlbWlzZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIGFwcGx5SW5kZXBlbmRlbnRseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCBhcHBseVN0YXRlbWVudEluZGVwZW5kZW50bHkgPSB0aGlzLmFwcGx5U3RhdGVtZW50SW5kZXBlbmRlbnRseS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFwcGx5UHJvY2VkdXJlUmVmZXJlbmNlSW5kZXBlbmRlbnRseSA9IHRoaXMuYXBwbHlQcm9jZWR1cmVSZWZlcmVuY2VJbmRlcGVuZGVudGx5LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIGFwcGx5U3RhdGVtZW50SW5kZXBlbmRlbnRseSxcbiAgICAgIGFwcGx5UHJvY2VkdXJlUmVmZXJlbmNlSW5kZXBlbmRlbnRseVxuICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdW5pZnlGYWN0KGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZGYWN0ID0gZmFjdE9yU3VicHJvb2YuaXNGYWN0KCk7XG5cbiAgICBpZiAoIWZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3QgPSBmYWN0T3JTdWJwcm9vZiwgIC8vL1xuICAgICAgICAgIGZhY3RTdHJpbmcgPSBmYWN0LmdldFN0cmluZygpLFxuICAgICAgICAgIHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCB3aXRoIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgY29uc3QgZmFjdENvbnRleHQgPSBmYWN0LmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcmVtaXNlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHByZW1pc2VDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBmYWN0Q29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3Qgd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZlN1YnByb29mID0gZmFjdE9yU3VicHJvb2YuaXNCdWJwcm9vZigpO1xuXG4gICAgaWYgKCFmYWN0T3JTdWJwcm9vZlN1YnByb29mKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VicHJvb2YgPSBmYWN0T3JTdWJwcm9vZiwgIC8vL1xuICAgICAgICAgIHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uID0gdGhpcy5maW5kU3VicHJvb2ZBc3NlcnRpb24oKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVtaXNlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHByZW1pc2VDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUHJlbWlzZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHByZW1pc2U7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHByZW1pc2VOb2RlID0gaW5zdGFudGlhdGVQcmVtaXNlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBwcmVtaXNlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBwcm9jZWR1cmVSZWZlcmVuY2VGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHByZW1pc2UgPSBuZXcgUHJlbWlzZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50LCBwcm9jZWR1cmVSZWZlcmVuY2UpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHJlZmVyZW5jZUZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2UgPSBudWxsO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gcHJlbWlzZU5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUgPSBwcmVtaXNlTm9kZS5nZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlO1xufVxuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJlbWlzZSIsIkZhY3QiLCJnZXRQcmVtaXNlTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwicHJlbWlzZU5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRTdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiY29udGV4dCIsImdldENvbnRleHQiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInByZW1pc2VTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHJlbWlzZSIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJmYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mU3RyaW5nIiwidW5pZnlGYWN0IiwiYmluZCIsInVuaWZ5U3VicHJvb2YiLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwidmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2UiLCJjb21taXQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJhcHBseVN0YXRlbWVudEluZGVwZW5kZW50bHkiLCJhcHBseVByb2NlZHVyZVJlZmVyZW5jZUluZGVwZW5kZW50bHkiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJmYWN0IiwiZmFjdFN0cmluZyIsImZhY3RDb250ZXh0IiwicHJlbWlzZUNvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwiZmFjdE9yU3VicHJvb2ZTdWJwcm9vZiIsImlzQnVicHJvb2YiLCJzdWJwcm9vZiIsInN1YnByb29mU3RyaW5nIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsInN0cmluZyIsImJyZWFrUG9pbnQiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVQcmVtaXNlIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlIiwic3RhdGVtZW50RnJvbVByZW1pc2VOb2RlIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJnZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEOzZEQUUxQzswQkFFTTt1QkFDQzs2QkFDVzt5QkFDOEM7Ozs7OztBQUVqRixNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUV0RyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGdCQUFnQkMsYUFBSTtJQUM5Q0MsaUJBQWlCO1FBQ2YsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLGNBQWNGLE1BQU0sR0FBRztRQUU3QixPQUFPRTtJQUNUO0lBRUFDLG1CQUFtQjtRQUNqQixNQUFNRCxjQUFjLElBQUksQ0FBQ0gsY0FBYyxJQUNqQ0ssZ0JBQWdCRixZQUFZQyxnQkFBZ0I7UUFFbEQsT0FBT0M7SUFDVDtJQUVBQyx3QkFBd0I7UUFDdEIsSUFBSUMsb0JBQW9CO1FBRXhCLE1BQU1GLGdCQUFnQixJQUFJLENBQUNELGdCQUFnQjtRQUUzQyxJQUFJQyxrQkFBa0IsTUFBTTtZQUMxQixNQUFNRyx3QkFBd0JILGNBQWNJLHdCQUF3QjtZQUVwRSxJQUFJRCwwQkFBMEIsTUFBTTtnQkFDbEMsTUFBTUUsVUFBVSxJQUFJLENBQUNDLFVBQVU7Z0JBRS9CSixvQkFBb0JHLFFBQVFFLDRCQUE0QixDQUFDSjtZQUMzRDtRQUNGO1FBRUEsT0FBT0Q7SUFDVDtJQUVBTSxjQUFjO1FBQ1osTUFBTVYsY0FBYyxJQUFJLENBQUNILGNBQWMsSUFDakNjLFlBQVlYLFlBQVlVLFdBQVc7UUFFekMsT0FBT0M7SUFDVDtJQUVBQyxTQUFTdkIsVUFBVSxTQUFVa0Is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
|
package/lib/element/generator.js
CHANGED
|
@@ -47,11 +47,10 @@ const _default = (0, _elements.define)(class Generator extends _occamlanguages.E
|
|
|
47
47
|
}
|
|
48
48
|
getString(includeType = true) {
|
|
49
49
|
let string;
|
|
50
|
+
string = super.getString();
|
|
50
51
|
if (includeType) {
|
|
51
|
-
const
|
|
52
|
-
string = `${
|
|
53
|
-
} else {
|
|
54
|
-
string = super.getString();
|
|
52
|
+
const typeString = this.type.getString();
|
|
53
|
+
string = `${string}.${typeString}`;
|
|
55
54
|
}
|
|
56
55
|
return string;
|
|
57
56
|
}
|
|
@@ -213,4 +212,4 @@ function termFromGeneratorNode(generatorNode, context) {
|
|
|
213
212
|
return term;
|
|
214
213
|
}
|
|
215
214
|
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2dlbmVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlR2VuZXJhdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgR2VuZXJhdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvck5vZGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGluY2x1ZGVUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGVybVN0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZyA9IHN1cGVyLmdldFN0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgZ2VuZWFydG9hck5vZGUgPSB0aGlzLmdldEdlbmVyYXRvck5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBnZW5lYXJ0b2FyTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZ2VuZXJhdG9yLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IgPSB0aGlzLnZhbGlkYXRlVGVybUFzR2VuZXJhdG9yLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvclxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBnZW5lcmF0b3IgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYXRvciwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgICBpZiAodHlwZSAhPT0gYmFzZVR5cGUpIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgIGJhc2VUeXBlU3RyaW5nID0gYmFzZVR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIG9mIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtIGlzIG5vdCB0aGUgJyR7YmFzZVR5cGVTdHJpbmd9JyBiYXNlIHR5cGUuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybUFzR2VuZXJhdG9yKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzR2VuZXJhdG9yKHRoaXMudGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkVGVybSh0aGlzLnRlcm0pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IgPSB0aGlzLnVuaWZ5VGVybVdpdGhHZW5lcmF0b3IuYmluZCh0aGlzKSxcbiAgICAgICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0sXG4gICAgICB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yXG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmF0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gdW5pZnlUZXJtV2l0aEdlbmVyYXRvcih0ZXJtLCBnZW5lcmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCAoaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgaHlwb3RoZXNlcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OOyAgLy8vXG5cbiAgICAgIGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgfTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkdlbmVyYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGdlbmVyYXRvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yTm9kZSA9IGluc3RhbnRpYXRlR2VuZXJhdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBnZW5lcmF0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUdlbmVyYXRvck5vZGUoZ2VuZXJhdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgZ2VuZXJhdG9yID0gbmV3IEdlbmVyYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdGVybUZyb21HZW5lcmF0b3JOb2RlKGdlbmVyYXRvck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSBnZW5lcmF0b3JOb2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiR2VuZXJhdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRHZW5lcmF0b3JOb2RlIiwiZ2V0Tm9kZSIsImdlbmVyYXRvck5vZGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInRlcm1TdHJpbmciLCJ0eXBlU3RyaW5nIiwic2V0VHlwZSIsImlzTWFsZm9ybWVkIiwiZ2VuZWFydG9hck5vZGUiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImdlbmVyYXRvclN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJnZW5lcmF0b3IiLCJkZWJ1ZyIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvciIsImNvbW1pdCIsInZhbGlkYXRlQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImJhc2VUeXBlU3RyaW5nIiwiYWRkVGVybSIsInVuaWZ5VGVybSIsInVuaWZ5VGVybVdpdGhHZW5lcmF0b3IiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJldmVyeSIsImh5cG90aGVzaXMiLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUdlbmVyYXRvciIsInRlcm1Gcm9tR2VuZXJhdG9yTm9kZSIsInR5cGVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkb0U7MEJBRTdDO3VCQUNTO3NCQUNJOzZCQUNDO3VCQUNFOzBCQUNDO3lCQUM4QjtzQkFDdUI7QUFFN0YsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLENBQUU7UUFDckUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENB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
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2dlbmVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlR2VuZXJhdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgR2VuZXJhdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvck5vZGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3N0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBnZW5lYXJ0b2FyTm9kZSA9IHRoaXMuZ2V0R2VuZXJhdG9yTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGdlbmVhcnRvYXJOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChnZW5lcmF0b3IsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSA9IHRoaXMudmFsaWRhdGVUZXJtQXNWYXJpYWJsZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgICAgIHZhbGlkYXRlVGVybUFzR2VuZXJhdG9yXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGdlbmVyYXRvciA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhdG9yLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGVTdHJpbmcgPSBiYXNlVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgb2YgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIHRlcm0gaXMgbm90IHRoZSAnJHtiYXNlVHlwZVN0cmluZ30nIGJhc2UgdHlwZS5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3Ioc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRUZXJtKHRoaXMudGVybSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlUZXJtV2l0aEdlbmVyYXRvciA9IHRoaXMudW5pZnlUZXJtV2l0aEdlbmVyYXRvci5iaW5kKHRoaXMpLFxuICAgICAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0gPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSxcbiAgICAgIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3JcbiAgICBdLCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLnR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgdGVybS5zZXRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yKHRlcm0sIGdlbmVyYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYoIWh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgaHlwb3RoZXNlcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLmh5cG90aGVzZXMsIChoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIHRlcm0sIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyBoeXBvdGhlc2VzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGh5cG90aGVzaXMuZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB0eXBlLFxuICAgICAgICBoeXBvdGhlc2VzXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZ2VuZXJhdG9yO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBnZW5lcmF0b3JOb2RlID0gaW5zdGFudGlhdGVHZW5lcmF0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGdlbmVyYXRvck5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tR2VuZXJhdG9yTm9kZShnZW5lcmF0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBnZW5lcmF0b3IgPSBuZXcgR2VuZXJhdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtRnJvbUdlbmVyYXRvck5vZGUoZ2VuZXJhdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGdlbmVyYXRvck5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJHZW5lcmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldEdlbmVyYXRvck5vZGUiLCJnZXROb2RlIiwiZ2VuZXJhdG9yTm9kZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJpc01hbGZvcm1lZCIsImdlbmVhcnRvYXJOb2RlIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJnZW5lcmF0b3JTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiZ2VuZXJhdG9yIiwiZGVidWciLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJiaW5kIiwidmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IiLCJjb21taXQiLCJ2YWxpZGF0ZUFzVmFyaWFibGUiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJiYXNlVHlwZVN0cmluZyIsImFkZFRlcm0iLCJ1bmlmeVRlcm0iLCJ0ZXJtU3RyaW5nIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvciIsImRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0iLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRQcm92aXNpb25hbCIsImdlbmVyYWxDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImV2ZXJ5IiwiaHlwb3RoZXNpcyIsImRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0iLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlR2VuZXJhdG9yIiwidGVybUZyb21HZW5lcmF0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ1M7c0JBQ0k7NkJBQ0M7dUJBQ0U7MEJBQ0M7eUJBQzhCO3NCQUN1QjtBQUU3RixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUNyRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFH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
|
|
@@ -13,7 +13,6 @@ const _elements = require("../elements");
|
|
|
13
13
|
const _state = require("../utilities/state");
|
|
14
14
|
const _instantiate = require("../process/instantiate");
|
|
15
15
|
const _context = require("../utilities/context");
|
|
16
|
-
const _breakPoint = require("occam-languages/lib/utilities/breakPoint");
|
|
17
16
|
const { cut, all } = _occamlanguages.continuationUtilities, { breakable, unbreakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
18
17
|
const _default = (0, _elements.define)(class Hypothesis extends _occamlanguages.Element {
|
|
19
18
|
constructor(context, string, node, breakPoint, statement, procedureReference){
|
|
@@ -69,7 +68,7 @@ const _default = (0, _elements.define)(class Hypothesis extends _occamlanguages.
|
|
|
69
68
|
return forward(context, back);
|
|
70
69
|
}, back);
|
|
71
70
|
});
|
|
72
|
-
validate =
|
|
71
|
+
validate = unbreakable(function(state, context, forward, back) {
|
|
73
72
|
const hypothesisString = this.getString(); ///
|
|
74
73
|
context.trace(`Validating the '${hypothesisString}' hypothesis...`);
|
|
75
74
|
return (0, _context.isolate)((state, context, forward, back)=>{
|
|
@@ -185,4 +184,4 @@ function procedureReferenceFromHypothesisNode(hypothesisNode, context) {
|
|
|
185
184
|
return procedureReference;
|
|
186
185
|
}
|
|
187
186
|
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2h5cG90aGVzaXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVIeXBvdGhlc2lzIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQge3VuYnJlYWthYmxlfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzL2xpYi91dGlsaXRpZXMvYnJlYWtQb2ludFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgdW5icmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBIeXBvdGhlc2lzIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCBwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gICAgdGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPSBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlUmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzaXNOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBoeXBvdGhlc2lzTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2lzTm9kZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGh5cG90aGVzaXNOb2RlID0gdGhpcy5nZXRIeXBvdGhlc2lzTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGh5cG90aGVzaXNOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnR4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGh5cG90aGVzaXMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udHh0OyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkaXNjaGFyZ2UgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZVN0YXRlbWVudCA9IHRoaXMuZGlzY2hhcmdlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIGRpc2NoYXJnZVN0YXRlbWVudFxuICAgIF0sIGNvbnRleHQsICgpID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVByb2NlZHVyZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGh5cG90aGVzaXMgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGh5cG90aGVzaXMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnN0YXRlbWVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzJyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgaWYgKHRoaXMucHJvY2VkdXJlUmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzJyBmdW5jdGlvbiByZWZlcmVuY2UuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHByb2NlZHVyZVJlZmVyZW5jZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPSBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMnIGZ1bmN0aW9uIHJlZmVyZW5jZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlU3RhdGVtZW50KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMnIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC5kaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJjYWspID0+IHtcbiAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMnIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmNhayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRoaXMuZGlzY2hhcmdlUHJvY2VkdXJlUmVmZXJlbmNlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlUHJvY2VkdXJlUmVmZXJlbmNlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UuZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJIeXBvdGhlc2lzXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgaHlwb3RoZXNpcztcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgaHlwb3RoZXNpc05vZGUgPSBpbnN0YW50aWF0ZUh5cG90aGVzaXMoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGh5cG90aGVzaXNOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21IeXBvdGhlc2lzTm9kZShoeXBvdGhlc2lzTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHByb2NlZHVyZVJlZmVyZW5jZUZyb21IeXBvdGhlc2lzTm9kZShoeXBvdGhlc2lzTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgaHlwb3RoZXNpcyA9IG5ldyBIeXBvdGhlc2lzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCBwcm9jZWR1cmVSZWZlcmVuY2UpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21IeXBvdGhlc2lzTm9kZShoeXBvdGhlc2lzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gaHlwb3RoZXNpc05vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUh5cG90aGVzaXNOb2RlKGh5cG90aGVzaXNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUgPSBoeXBvdGhlc2lzTm9kZS5nZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlO1xufSJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkh5cG90aGVzaXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwicHJvY2VkdXJlUmVmZXJlbmNlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlIiwiZ2V0SHlwb3RoZXNpc05vZGUiLCJnZXROb2RlIiwiaHlwb3RoZXNpc05vZGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic3BlY2lmaWNDb250eHQiLCJoeXBvdGhlc2lzU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImh5cG90aGVzaXMiLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImRpc2NoYXJnZSIsImRpc2NoYXJnZVN0YXRlbWVudCIsImJpbmQiLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwidmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2UiLCJjb21taXQiLCJzcGVjaWZpY0NvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJiY2FrIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwidGVybSIsInRlcm1TdHJpbmciLCJkaXNjaGFyZ2VQcm9jZWR1cmVSZWZlcmVuY2VHaXZlblRlcm0iLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlSHlwb3RoZXNpcyIsInN0YXRlbWVudEZyb21IeXBvdGhlc2lzTm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21IeXBvdGhlc2lzTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJnZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWG9FOzBCQUU3Qzt1QkFDQzs2QkFDYzt5QkFDZ0M7NEJBQzVDO0FBRTFCLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BDLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXRHLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1C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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2h5cG90aGVzaXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVIeXBvdGhlc2lzIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCB1bmJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEh5cG90aGVzaXMgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZSA9IHByb2NlZHVyZVJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlUmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNpc05vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGh5cG90aGVzaXNOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNOb2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNpc05vZGUgPSB0aGlzLmdldEh5cG90aGVzaXNOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gaHlwb3RoZXNpc05vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNwZWNpZmljQ29udHh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaHlwb3RoZXNpcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250eHQ7IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRpc2NoYXJnZSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgY29uc3QgZGlzY2hhcmdlU3RhdGVtZW50ID0gdGhpcy5kaXNjaGFyZ2VTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgZGlzY2hhcmdlU3RhdGVtZW50XG4gICAgXSwgY29udGV4dCwgKCkgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgICAgdmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2VcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaHlwb3RoZXNpcyA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoaHlwb3RoZXNpcywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzJyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMnIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVQcm9jZWR1cmVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMnIGZ1bmN0aW9uIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlUmVmZXJlbmNlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJvY2VkdXJlUmVmZXJlbmNlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZSA9IHByb2NlZHVyZVJlZmVyZW5jZTtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgZnVuY3Rpb24gcmVmZXJlbmNlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VTdGF0ZW1lbnQoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnN0YXRlbWVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmRpc2NoYXJnZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmNhaykgPT4ge1xuICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcycgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiY2FrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGhpcy5kaXNjaGFyZ2VQcm9jZWR1cmVSZWZlcmVuY2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VQcm9jZWR1cmVSZWZlcmVuY2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb2NlZHVyZVJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzJyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZS5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzJyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkh5cG90aGVzaXNcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBoeXBvdGhlc2lzO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBoeXBvdGhlc2lzTm9kZSA9IGluc3RhbnRpYXRlSHlwb3RoZXNpcyhzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gaHlwb3RoZXNpc05vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUh5cG90aGVzaXNOb2RlKGh5cG90aGVzaXNOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUh5cG90aGVzaXNOb2RlKGh5cG90aGVzaXNOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBoeXBvdGhlc2lzID0gbmV3IEh5cG90aGVzaXMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHByb2NlZHVyZVJlZmVyZW5jZSk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUh5cG90aGVzaXNOb2RlKGh5cG90aGVzaXNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBoeXBvdGhlc2lzTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5mdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VGcm9tSHlwb3RoZXNpc05vZGUoaHlwb3RoZXNpc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IGh5cG90aGVzaXNOb2RlLmdldFByb2NlZHVyZVJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gY29udGV4dC5maW5kUHJvY2VkdXJlUmVmZXJlbmNlQnlQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwidW5icmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJIeXBvdGhlc2lzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsInByb2NlZHVyZVJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldFByb2NlZHVyZVJlZmVyZW5jZSIsImdldEh5cG90aGVzaXNOb2RlIiwiZ2V0Tm9kZSIsImh5cG90aGVzaXNOb2RlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInNwZWNpZmljQ29udHh0IiwiaHlwb3RoZXNpc1N0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJoeXBvdGhlc2lzIiwiZGVidWciLCJleGNlcHRpb24iLCJkaXNjaGFyZ2UiLCJkaXNjaGFyZ2VTdGF0ZW1lbnQiLCJiaW5kIiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInZhbGlkYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiY29tbWl0Iiwic3BlY2lmaWNDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0IiwiYmNhayIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiZGlzY2hhcmdlUHJvY2VkdXJlUmVmZXJlbmNlR2l2ZW5UZXJtIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUh5cG90aGVzaXMiLCJzdGF0ZW1lbnRGcm9tSHlwb3RoZXNpc05vZGUiLCJwcm9jZWR1cmVSZWZlcmVuY2VGcm9tSHlwb3RoZXNpc05vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2VCeVByb2NlZHVyZVJlZmVyZW5jZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVZvRTswQkFFN0M7dUJBQ0M7NkJBQ2M7eUJBQ2dDO0FBRXRFLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BDLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXRHLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsa0JBQWtCLENBQUU7UUFDNUUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBR0E7SUFDNUI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQ0Ysa0JBQWtCO0lBQ2hDO0lBRUFHLG9CQUFvQjtRQUNsQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsaUJBQWlCUixNQUFPLEdBQUc7UUFFakMsT0FBT1E7SUFDVDtJQUVBQyxjQUFjO1FBQ1osTUFBTUQsaUJBQWlCLElBQUksQ0FBQ0YsaUJBQWlCLElBQ3ZDSSxZQUFZRixlQUFlQyxXQUFXO1FBRTVDLE9BQU9DO0lBQ1Q7SUFFQUMsU0FBU3JCLFVBQVUsU0FBVVEsT0FBTyxFQUFFYyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVV6QixJQUFJeUIsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLGlCQUFpQmhCLFNBQ2pCaUIsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFOUNsQixRQUFRbUIsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRWpFLE1BQU1MLFlBQVksSUFBSSxDQUFDRCxXQUFXO1FBRWxDLElBQUlDLFdBQVc7WUFDYlosUUFBUW1CLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFRixpQkFBaUIscUNBQXFDLENBQUM7WUFFOUYsT0FBT0Y7UUFDVDtRQUVBSyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDUCxPQUFPLElBQUksQ0FBQ0MsUUFBUSxDQUFDRCxPQUFPckIsU0FBUyxDQUFDdUIsWUFBWXZCLFNBQVNlO2dCQUN6RGYsVUFBVWdCLGdCQUFnQixHQUFHO2dCQUU3QmhCLFFBQVF3QixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVAsaUJBQWlCLGFBQWEsQ0FBQztnQkFFakUsT0FBT0gsUUFBUWQsU0FBU2U7WUFDMUIsR0FBRyxDQUFDVTtnQkFDRixJQUFJQSxXQUFXO29CQUNiLE9BQU9WLEtBQUtVO2dCQUNkO2dCQUVBekIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFRixpQkFBaUIsYUFBYSxDQUFDO2dCQUV0RSxPQUFPRjtZQUNUO1FBQ0Y7SUFDRixHQUFHO0lBRUhXLFlBQVlsQyxVQUFVLFNBQVVRLE9BQU8sRUFBRWMsT0FBTyxFQUFFQyxJQUFJO1FBQ3BELE1BQU1FLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTlDbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRW5FLE1BQU1VLHFCQUFxQixJQUFJLENBQUNBLGtCQUFrQixDQUFDQyxJQUFJLENBQUMsSUFBSTtRQUU1RCxPQUFPdEMsSUFBSTtZQUNUcUM7U0FDRCxFQUFFM0IsU0FBUztZQUNWQSxRQUFRd0IsS0FBSyxDQUFDLENBQUMsbUJBQW1CLEVBQUVQLGlCQUFpQixhQUFhLENBQUM7WUFFbkUsT0FBT0gsUUFBUWQsU0FBU2U7UUFDMUIsR0FBR0E7SUFDTCxHQUFHO0lBRUhPLFdBQVc3QixZQUFZLFNBQVU0QixLQUFLLEVBQUVyQixPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSTtRQUM1RCxNQUFNRSxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ2xCLFFBQVFtQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsaUJBQWlCLGVBQWUsQ0FBQztRQUVsRSxPQUFPWSxJQUFBQSxnQkFBTyxFQUFDLENBQUNSLE9BQU9yQixTQUFTYyxTQUFTQztZQUN2QyxPQUFPZSxJQUFBQSxnQkFBTyxFQUFDLENBQUM5QjtnQkFDZCxNQUFNK0Isb0JBQW9CLElBQUksQ0FBQ0EsaUJBQWlCLENBQUNILElBQUksQ0FBQyxJQUFJLEdBQ3BESSw2QkFBNkIsSUFBSSxDQUFDQSwwQkFBMEIsQ0FBQ0osSUFBSSxDQUFDLElBQUk7Z0JBRTVFLE9BQU90QyxJQUFJO29CQUNUeUM7b0JBQ0FDO2lCQUNELEVBQUVYLE9BQU9yQixTQUFTLENBQUNxQixPQUFPckIsU0FBU2U7b0JBQ2xDLElBQUksQ0FBQ2tCLE1BQU0sQ0FBQ2pDO29CQUVaLE9BQU9jLFFBQVFDO2dCQUNqQixHQUFHQTtZQUNMLEdBQUdmO1FBQ0wsR0FBR3FCLE9BQU9yQixTQUFTLENBQUNxQixPQUFPckIsU0FBU2U7WUFDbEMsTUFBTVEsYUFBYSxJQUFJLEVBQUcsR0FBRztZQUU3QnZCLFFBQVF3QixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVAsaUJBQWlCLGFBQWEsQ0FBQztZQUVsRSxPQUFPSCxRQUFRUyxZQUFZdkIsU0FBU2U7UUFDdEMsR0FBR0E7SUFDTCxHQUFHO0lBRUhnQixrQkFBa0JWLEtBQUssRUFBRXJCLE9BQU8sRUFBRWMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDL0MsSUFBSSxJQUFJLENBQUNYLFNBQVMsS0FBSyxNQUFNO1lBQzNCLE9BQU9VLFFBQVFPLE9BQU9yQixTQUFTZTtRQUNqQztRQUVBLE1BQU1FLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsMEJBQTBCLENBQUM7UUFFN0UsT0FBTyxJQUFJLENBQUNiLFNBQVMsQ0FBQ2tCLFFBQVEsQ0FBQ0QsT0FBT3JCLFNBQVMsQ0FBQ0ksV0FBV0osU0FBU2U7WUFDbEUsSUFBSSxDQUFDWCxTQUFTLEdBQUdBO1lBRWpCSixRQUFRbUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVGLGlCQUFpQix3QkFBd0IsQ0FBQztZQUU3RSxPQUFPSCxRQUFRTyxPQUFPckIsU0FBU2U7UUFDakMsR0FBR0E7SUFDTDtJQUVBaUIsMkJBQTJCWCxLQUFLLEVBQUVyQixPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3hELElBQUksSUFBSSxDQUFDVixrQkFBa0IsS0FBSyxNQUFNO1lBQ3BDLE9BQU9TLFFBQVFPLE9BQU9yQixTQUFTZTtRQUNqQztRQUVBLE1BQU1FLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsbUNBQW1DLENBQUM7UUFFdEYsT0FBTyxJQUFJLENBQUNaLGtCQUFrQixDQUFDaUIsUUFBUSxDQUFDRCxPQUFPckIsU0FBUyxDQUFDSyxvQkFBb0JMLFNBQVNlO1lBQ3BGLElBQUksQ0FBQ1Ysa0JBQWtCLEdBQUdBO1lBRTFCTCxRQUFRbUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVGLGlCQUFpQixpQ0FBaUMsQ0FBQztZQUV0RixPQUFPSCxRQUFRTyxPQUFPckIsU0FBU2U7UUFDakMsR0FBR0E7SUFDTDtJQUVBWSxtQkFBbUIzQixPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3pDLElBQUksSUFBSSxDQUFDWCxTQUFTLEtBQUssTUFBTTtZQUMzQixPQUFPVSxRQUFRZCxTQUFTZTtRQUMxQjtRQUVBLE1BQU1FLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFRixpQkFBaUIsMEJBQTBCLENBQUM7UUFFOUUsTUFBTWlCLGtCQUFrQmxDLFNBQVUsR0FBRztRQUVyQ0EsVUFBVSxJQUFJLENBQUNtQyxVQUFVO1FBRXpCLE1BQU1DLGlCQUFpQnBDLFNBQVMsR0FBRztRQUVuQyxPQUFPLElBQUksQ0FBQ0ksU0FBUyxDQUFDc0IsU0FBUyxDQUFDVSxnQkFBZ0JGLGlCQUFpQixDQUFDRSxnQkFBZ0JGLGlCQUFpQkc7WUFDakdyQyxVQUFVa0MsaUJBQWtCLEdBQUc7WUFFL0JsQyxRQUFRd0IsS0FBSyxDQUFDLENBQUMsbUJBQW1CLEVBQUVQLGlCQUFpQix3QkFBd0IsQ0FBQztZQUU5RSxPQUFPSCxRQUFRZCxTQUFTcUM7UUFDMUIsR0FBR3RCO0lBQ0w7SUFFQXVCLG1CQUFtQkMsSUFBSSxFQUFFdkMsT0FBTyxFQUFFYyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUMvQyxNQUFNeUIsYUFBYUQsS0FBS3JCLFNBQVMsSUFDM0JELG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTlDbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFRixpQkFBaUIsd0JBQXdCLEVBQUV1QixXQUFXLFNBQVMsQ0FBQztRQUVsRyxJQUFJLENBQUNDLG9DQUFvQyxDQUFDRixNQUFNdkMsU0FBUyxDQUFDQSxTQUFTZTtZQUNqRWYsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFUCxpQkFBaUIsd0JBQXdCLEVBQUV1QixXQUFXLE9BQU8sQ0FBQztZQUVsRyxPQUFPMUIsUUFBUWQsU0FBU2U7UUFDMUIsR0FBR0E7SUFDTDtJQUVBMEIscUNBQXFDRixJQUFJLEVBQUV2QyxPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pFLElBQUksSUFBSSxDQUFDVixrQkFBa0IsS0FBSyxNQUFNO1lBQ3BDLE9BQU9VO1FBQ1Q7UUFFQSxNQUFNeUIsYUFBYUQsS0FBS3JCLFNBQVMsSUFDM0JELG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DbEIsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFRixpQkFBaUIsNENBQTRDLEVBQUV1QixXQUFXLFNBQVMsQ0FBQztRQUV0SCxJQUFJLENBQUNuQyxrQkFBa0IsQ0FBQ2lDLGtCQUFrQixDQUFDQyxNQUFNdkMsU0FBUyxDQUFDZTtZQUN6RGYsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFUCxpQkFBaUIsNENBQTRDLEVBQUV1QixXQUFXLE9BQU8sQ0FBQztZQUV0SCxPQUFPMUIsUUFBUWQsU0FBU2U7UUFDMUIsR0FBR0E7SUFDTDtJQUVBMkIsU0FBUztRQUNQLElBQUlDO1FBRUosTUFBTTNDLFVBQVUsSUFBSSxDQUFDbUMsVUFBVTtRQUUvQlMsSUFBQUEsa0JBQVMsRUFBQyxDQUFDNUM7WUFDVCxNQUFNQyxTQUFTLElBQUksQ0FBQ2lCLFNBQVM7WUFFN0IsSUFBSWY7WUFFSkEsYUFBYSxJQUFJLENBQUMwQyxhQUFhO1lBRS9CLE1BQU1DLGlCQUFpQm5ELDJCQUEyQlE7WUFFbERBLGFBQWEyQyxnQkFBaUIsR0FBRztZQUVqQ0gsT0FBTztnQkFDTDNDO2dCQUNBQztnQkFDQUU7WUFDRjtRQUNGLEdBQUdIO1FBRUgsT0FBTzJDO0lBQ1Q7SUFFQSxPQUFPSSxPQUFPLGFBQWE7SUFFM0IsT0FBT0MsU0FBU0wsSUFBSSxFQUFFM0MsT0FBTyxFQUFFO1FBQzdCLElBQUl1QjtRQUVKMEIsSUFBQUEsb0JBQVcsRUFBQyxDQUFDakQ7WUFDWGtELElBQUFBLG9CQUFXLEVBQUMsQ0FBQ1AsTUFBTTNDO2dCQUNqQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHMEMsTUFDYmpDLGlCQUFpQnlDLElBQUFBLGtDQUFxQixFQUFDbEQsUUFBUUQsVUFDL0NFLE9BQU9RLGdCQUNQUCxhQUFhVCxtQkFBbUJpRCxPQUNoQ3ZDLFlBQVlnRCw0QkFBNEIxQyxnQkFBZ0JWLFVBQ3hESyxxQkFBcUJnRCxxQ0FBcUMzQyxnQkFBZ0JWO2dCQUVoRnVCLGFBQWEsSUFBSXpCLFdBQVdFLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDLFdBQVdDO1lBQzVFLEdBQUdzQyxNQUFNM0M7UUFDWCxHQUFHQTtRQUVILE9BQU91QjtJQUNUO0FBQ0Y7QUFFQSxTQUFTNkIsNEJBQTRCMUMsY0FBYyxFQUFFVixPQUFPO0lBQzFELE1BQU1zRCxnQkFBZ0I1QyxlQUFlNkMsZ0JBQWdCLElBQy9DbkQsWUFBWUosUUFBUXdELDRCQUE0QixDQUFDRjtJQUV2RCxPQUFPbEQ7QUFDVDtBQUVBLFNBQVNpRCxxQ0FBcUMzQyxjQUFjLEVBQUVWLE9BQU87SUFDbkUsTUFBTXlELHlCQUF5Qi9DLGVBQWVnRCx5QkFBeUIsSUFDakVyRCxxQkFBcUJMLFFBQVEyRCw4Q0FBOEMsQ0FBQ0Y7SUFFbEYsT0FBT3BEO0FBQ1QifQ==
|