occam-verify-cli 1.0.702 → 1.0.704

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.
@@ -31,15 +31,13 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
31
31
  getType() {
32
32
  return this.term.getType();
33
33
  }
34
- getString() {
34
+ getString(includeType = true) {
35
35
  let string;
36
- const type = this.getType();
37
- if (type === null) {
38
- const termString = this.term.getString();
39
- string = termString; ///
40
- } else {
41
- const typeString = type.getString(), termString = this.term.getString();
36
+ if (includeType) {
37
+ const type = this.getType(), typeString = type.getString(), termString = this.term.getString();
42
38
  string = `${termString}.${typeString}`;
39
+ } else {
40
+ string = super.getString();
43
41
  }
44
42
  return string;
45
43
  }
@@ -48,7 +46,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
48
46
  }
49
47
  verify(context) {
50
48
  let verifies = false;
51
- const constructorString = this.getString(); ///
49
+ const includeType = false, constructorString = this.getString(includeType);
52
50
  context.trace(`Verifying the '${constructorString}' constructor...`);
53
51
  (0, _context.attempt)((context)=>{
54
52
  const termVerifiesAsConstructor = (0, _verify.verifyTermAsConstructor)(this.term, context);
@@ -88,9 +86,10 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
88
86
  context = this.getContext();
89
87
  const contextJSON = context.toJSON();
90
88
  context = contextJSON; ///
91
- const string = this.getString(), json = {
89
+ const includeType = false, termJSON = (0, _json.termToTermJSON)(this.term), string = this.getString(includeType), term = termJSON, json = {
92
90
  context,
93
- string
91
+ string,
92
+ term
94
93
  };
95
94
  return json;
96
95
  }
@@ -106,4 +105,4 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
106
105
  }
107
106
  });
108
107
 
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGF0dGVtcHQsIGxpdGVyYWxseSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgdGVybUZyb21Db25zdHJ1Y3Rvck5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cnVjdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdGVybSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0Q29uY2x1c2lvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICBnZXRUeXBlKCkgeyByZXR1cm4gdGhpcy50ZXJtLmdldFR5cGUoKTsgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IHRlcm1TdHJpbmc7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7IHRoaXMudGVybS5zZXRUeXBlKHR5cGUpOyB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WZXJpZmllc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaUNvbnRleHQ7IC8vL1xuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlKCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0eXBlKTtcblxuICAgICAgdmFsaWRhdGVzRm9yd2FyZHMgPSB2YWxpZGF0ZUZvcndhcmRzKCk7XG5cbiAgICAgIHRlcm1VbmlmaWVzID0gdmFsaWRhdGVzRm9yd2FyZHM7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBjb250ZXh0O1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgY29udGV4dEpTT04gPSBjb250ZXh0LnRvSlNPTigpO1xuXG4gICAgY29udGV4dCA9IGNvbnRleHRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgZXBoZW1lcmFsQ29udGV4dCA9IGVwaGVtZXJhbENvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IGVwaGVtZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IG5ldyBDb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHRlcm0pO1xuXG4gICAgICByZXR1cm4gY29uc3RydWN0b3I7XG5cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0ZXJtIiwiZ2V0VGVybSIsImdldENvbmNsdXNpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yTm9kZSIsImdldFR5cGUiLCJnZXRTdHJpbmciLCJ0eXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJjb25zdHJ1Y3RvclN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInRlcm1WZXJpZmllc0FzQ29uc3RydWN0b3IiLCJ2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciIsInNldENvbnRleHQiLCJkZWJ1ZyIsInVuaWZ5VGVybSIsInZhbGlkYXRlRm9yd2FyZHMiLCJ0ZXJtVW5pZmllcyIsInNwZWNpZmlDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0IiwiY29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsInZhbGlkYXRlc0ZvcndhcmRzIiwidG9KU09OIiwiY29udGV4dEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwibGl0ZXJhbGx5IiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0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
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGF0dGVtcHQsIGxpdGVyYWxseSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgdGVybUZyb21Db25zdHJ1Y3Rvck5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB0ZXJtVG9UZXJtSlNPTiwgZXBoZW1lcmFsQ29udGV4dEZyb21KU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldENvbmNsdXNpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIHRoaXMudGVybS5nZXRUeXBlKCk7IH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkgeyB0aGlzLnRlcm0uc2V0VHlwZSh0eXBlKTsgfVxuXG4gIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WZXJpZmllc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaUNvbnRleHQ7IC8vL1xuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlKCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0eXBlKTtcblxuICAgICAgdmFsaWRhdGVzRm9yd2FyZHMgPSB2YWxpZGF0ZUZvcndhcmRzKCk7XG5cbiAgICAgIHRlcm1VbmlmaWVzID0gdmFsaWRhdGVzRm9yd2FyZHM7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBjb250ZXh0O1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgY29udGV4dEpTT04gPSBjb250ZXh0LnRvSlNPTigpO1xuXG4gICAgY29udGV4dCA9IGNvbnRleHRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHRlcm1KU09OID0gdGVybVRvVGVybUpTT04odGhpcy50ZXJtKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSksXG4gICAgICAgICAgdGVybSA9IHRlcm1KU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICB0ZXJtXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgZXBoZW1lcmFsQ29udGV4dCA9IGVwaGVtZXJhbENvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IGVwaGVtZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IG5ldyBDb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHRlcm0pO1xuXG4gICAgICByZXR1cm4gY29uc3RydWN0b3I7XG5cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0ZXJtIiwiZ2V0VGVybSIsImdldENvbmNsdXNpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yTm9kZSIsImdldFR5cGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInR5cGUiLCJ0eXBlU3RyaW5nIiwidGVybVN0cmluZyIsInNldFR5cGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidGVybVZlcmlmaWVzQXNDb25zdHJ1Y3RvciIsInZlcmlmeVRlcm1Bc0NvbnN0cnVjdG9yIiwic2V0Q29udGV4dCIsImRlYnVnIiwidW5pZnlUZXJtIiwidmFsaWRhdGVGb3J3YXJkcyIsInRlcm1VbmlmaWVzIiwic3BlY2lmaUNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0b0pTT04iLCJjb250ZXh0SlNPTiIsInRlcm1KU09OIiwidGVybVRvVGVybUpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwibGl0ZXJhbGx5IiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwiZXBoZW1lcmFsQ29udGV4dCIsImVwaGVtZXJhbENvbnRleHRGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFBOzs7Z0NBVndCOzBCQUVEO3lCQUNZOzZCQUNJO3dCQUNDO3lCQUNBO3VCQUNDO3NCQUNnQjtNQUV6RCxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3ZDLEtBQUssQ0FBQ0gsU0FBU0MsUUFBUUM7UUFFdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO0lBQ2xCO0lBRUFFLG9CQUFvQjtRQUNsQixNQUFNSCxPQUFPLElBQUksQ0FBQ0ksT0FBTyxJQUNuQkMsa0JBQWtCTCxNQUFPLEdBQUc7UUFFbEMsT0FBT0s7SUFDVDtJQUVBQyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUNMLElBQUksQ0FBQ0ssT0FBTztJQUFJO0lBRXhDQyxVQUFVQyxjQUFjLElBQUksRUFBRTtRQUM1QixJQUFJVDtRQUVKLElBQUlTLGFBQWE7WUFDZixNQUFNQyxPQUFPLElBQUksQ0FBQ0gsT0FBTyxJQUNuQkksYUFBYUQsS0FBS0YsU0FBUyxJQUMzQkksYUFBYSxJQUFJLENBQUNWLElBQUksQ0FBQ00sU0FBUztZQUV0Q1IsU0FBUyxHQUFHWSxXQUFXLENBQUMsRUFBRUQsWUFBWTtRQUN4QyxPQUFPO1lB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
@@ -78,7 +78,7 @@ const _default = (0, _elements.define)(class ConstructorDeclaration extends _dec
78
78
  }
79
79
  verifyConstructor() {
80
80
  let constructorVerifies;
81
- const context = this.getContext(), constructorString = this.constructor.getString(), constructorDeclarationString = this.getString(); ///
81
+ const context = this.getContext(), includeType = false, constructorString = this.constructor.getString(includeType), constructorDeclarationString = this.getString(); ///
82
82
  context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration's '${constructorString}' constructor...`);
83
83
  constructorVerifies = this.constructor.verify(context);
84
84
  if (constructorVerifies) {
@@ -89,4 +89,4 @@ const _default = (0, _elements.define)(class ConstructorDeclaration extends _dec
89
89
  static name = "ConstructorDeclaration";
90
90
  });
91
91
 
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBwcm92aXNpb25hbCwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgIGlmICh0eXBlVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yVmVyaWZpZXMgPSB0aGlzLnZlcmlmeUNvbnN0cnVjdG9yKCk7XG5cbiAgICAgIGlmIChjb25zdHJ1Y3RvclZlcmlmaWVzKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkQ29uc3RydWN0b3IodGhpcy5jb25zdHJ1Y3Rvcik7XG5cbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKCksXG4gICAgICAgICAgICB0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gdHlwZS5jb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgcHJvdmlzaW9uYWwgP1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBub3QgcHJvdmlzaW9uYWwuYCkgOlxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IHByb3Zpc2lvbmFsLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlDb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgY29uc3RydWN0b3JWZXJpZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3RydWN0b3JWZXJpZmllcyA9IHRoaXMuY29uc3RydWN0b3IudmVyaWZ5KGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbnN0cnVjdG9yVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvclZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsInByb3Zpc2lvbmFsIiwiY29uc3RydWN0b3IiLCJnZXRUeXBlIiwiaXNQcm92aXNpb25hbCIsImdldENvbnN0cnVjdG9yIiwiZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImdldENvbnRleHQiLCJicmVhayIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInR5cGVWZXJpZmllZCIsInZlcmlmeVR5cGUiLCJjb25zdHJ1Y3RvclZlcmlmaWVzIiwidmVyaWZ5Q29uc3RydWN0b3IiLCJzZXRUeXBlIiwiYWRkQ29uc3RydWN0b3IiLCJkZWJ1ZyIsInR5cGVWZXJpZmllcyIsInR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsImNvbnN0cnVjdG9yU3RyaW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7b0VBSndCOzBCQUVEOzs7Ozs7TUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywrQkFBK0JDLG9CQUFXO0lBQ3BFLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsV0FBVyxFQUFFQyxXQUFXLENBQUU7UUFDakUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQztRQUV2QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBR0M7SUFDckI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDSCxXQUFXO0lBQ3pCO0lBRUFJLGlCQUFpQjtR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
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBwcm92aXNpb25hbCwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgIGlmICh0eXBlVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yVmVyaWZpZXMgPSB0aGlzLnZlcmlmeUNvbnN0cnVjdG9yKCk7XG5cbiAgICAgIGlmIChjb25zdHJ1Y3RvclZlcmlmaWVzKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkQ29uc3RydWN0b3IodGhpcy5jb25zdHJ1Y3Rvcik7XG5cbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKCksXG4gICAgICAgICAgICB0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gdHlwZS5jb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgcHJvdmlzaW9uYWwgP1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBub3QgcHJvdmlzaW9uYWwuYCkgOlxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IHByb3Zpc2lvbmFsLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlDb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgY29uc3RydWN0b3JWZXJpZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5jb25zdHJ1Y3Rvci5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0cnVjdG9yVmVyaWZpZXMgPSB0aGlzLmNvbnN0cnVjdG9yLnZlcmlmeShjb250ZXh0KTtcblxuICAgIGlmIChjb25zdHJ1Y3RvclZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInR5cGUiLCJwcm92aXNpb25hbCIsImNvbnN0cnVjdG9yIiwiZ2V0VHlwZSIsImlzUHJvdmlzaW9uYWwiLCJnZXRDb25zdHJ1Y3RvciIsImdldENvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJnZXRDb250ZXh0IiwiYnJlYWsiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0eXBlVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlIiwiY29uc3RydWN0b3JWZXJpZmllcyIsInZlcmlmeUNvbnN0cnVjdG9yIiwic2V0VHlwZSIsImFkZENvbnN0cnVjdG9yIiwiZGVidWciLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwiLCJjb21wYXJlUHJvdmlzaW9uYWwiLCJpbmNsdWRlVHlwZSIsImNvbnN0cnVjdG9yU3RyaW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7b0VBSndCOzBCQUVEOzs7Ozs7TUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywrQkFBK0JDLG9CQUFXO0lBQ3BFLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsV0FBVyxFQUFFQyxXQUFXLENBQUU7UUFDakUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQztRQUV2QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBR0M7SUFDckI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lB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
@@ -49,8 +49,11 @@ const _default = (0, _elements.define)(class SimpleTypeDeclaration extends _decl
49
49
  if (superTypesVerify) {
50
50
  const typePrefixVerifies = this.verifyTypePrefix();
51
51
  if (typePrefixVerifies) {
52
- context.addType(this.type);
53
- verifies = true;
52
+ const propertiesVerifies = this.verifyProperties();
53
+ if (propertiesVerifies) {
54
+ context.addType(this.type);
55
+ verifies = true;
56
+ }
54
57
  }
55
58
  }
56
59
  }
@@ -130,14 +133,25 @@ const _default = (0, _elements.define)(class SimpleTypeDeclaration extends _decl
130
133
  if (!typePrefixed) {
131
134
  typePrefixVerifies = true;
132
135
  } else {
133
- context.debug(`...verified the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type is prefixed.`);
136
+ context.debug(`The '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type is prefixed.`);
134
137
  }
135
138
  if (typePrefixVerifies) {
136
139
  context.debug(`...verified the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's prefix.`);
137
140
  }
138
141
  return typePrefixVerifies;
139
142
  }
143
+ verifyProperties() {
144
+ let propertiesVerify = true; ///
145
+ const context = this.getContext(), typeString = this.type.getString(), simpleTypeDeclarationString = this.getString(); ///;
146
+ context.trace(`Verifying the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's properties...`);
147
+ const properties = [];
148
+ this.type.setProperties(properties);
149
+ if (propertiesVerify) {
150
+ context.debug(`...verified the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's properties.`);
151
+ }
152
+ return propertiesVerify;
153
+ }
140
154
  static name = "SimpleTypeDeclaration";
141
155
  });
142
156
 
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3NpbXBsZVR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHtiYXNlVHlwZUZyb21Ob3RoaW5nfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpbXBsZVR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZSgpO1xuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlc1ZlcmlmeSA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcygpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlc1ZlcmlmeSkge1xuICAgICAgICBjb25zdCB0eXBlUHJlZml4VmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGVQcmVmaXgoKTtcblxuICAgICAgICBpZiAodHlwZVByZWZpeFZlcmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgLy8vXG4gICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGVgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcykge1xuICAgIGxldCBzdXBlclR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1cGVyVHlwZVN0cmluZyA9IHN1cGVyVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy87XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgICAgICB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdGhpcy50eXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoIXR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5cGUpO1xuXG4gICAgICAgIHN1cGVyVHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSdzIG5hbWUgY29tcGFyZXMgdG8gdGhlICR7dHlwZU5hbWV9JyB0eXBlJ3MgbmFtZS5gKTtcbiAgICB9XG5cbiAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcygpIHtcbiAgICBsZXQgc3VwZXJUeXBlc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vLztcblxuICAgIChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlc1N0cmluZ30nIHN1cGVyLXR5cGVzLi4uYCkgOlxuICAgICAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3Mgc3VwZXItdHlwZXMuLi5gKTtcblxuICAgIHN1cGVyVHlwZXNWZXJpZnkgPSB0aGlzLnN1cGVyVHlwZXMuZXZlcnkoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3VwZXJUeXBlc1ZlcmlmeSkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICBzdXBlclR5dXBlID0gYmFzZVR5cGU7ICAvLy9cblxuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXVwZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICAoc3VwZXJUeXBlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVzU3RyaW5nfScgc3VwZXItdHlwZXMuYCkgOlxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5VHlwZVByZWZpeCgpIHtcbiAgICBsZXQgdHlwZVByZWZpeFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy87XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguLi5gKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlZCA9IHRoaXMudHlwZS5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhlZCkge1xuICAgICAgdHlwZVByZWZpeFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlZml4ZWQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVQcmVmaXhWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaW1wbGVUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlNpbXBsZVR5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwic3VwZXJUeXBlcyIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFN1cGVyVHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0U2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJnZXRDb250ZXh0IiwiYnJlYWsiLCJzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInR5cGVWZXJpZmllcyIsInZlcmlmeVR5cGUiLCJzdXBlclR5cGVzVmVyaWZ5IiwidmVyaWZ5U3VwZXJUeXBlcyIsInR5cGVQcmVmaXhWZXJpZmllcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJhZGRUeXBlIiwiZGVidWciLCJ0eXBlU3RyaW5nIiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJzdXBlclR5cGVWZXJpZmllcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIsInN1cGVyVHlwZXNTdHJpbmciLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJldmVyeSIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5dXBlIiwic2V0U3VwZXJUeXBlcyIsInR5cGVQcmVmaXhlZCIsImlzUHJlZml4ZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztvRUFOd0I7MEJBRUQ7d0JBQ3dCO3NCQUNiOzs7Ozs7TUFFbEMsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyw4QkFBOEJDLG9CQUFXO0lBQ25FLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDaEUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQztRQUV2QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsVUFBVTtJQUN4QjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsV0FBVztJQUN6QjtJQUVBSSwrQkFBK0I7UUFDN0IsTUFBTVAsT0FBTyxJQUFJLENBQUNRLE9BQU8sSUFDbkJDLDRCQUE0QlQsTUFBTSxHQUFHO1FBRTNDLE9BQU9TO0lBQ1Q7SUFFQSxNQUFNQyxTQUFTO1FBQ2IsSUFBSUMsV0FBVztRQUVmLE1BQU1iLFVBQVUsSUFBSSxDQUFDYyxVQUFVO1FBRS9CLE1BQU0sSUFBSSxDQUFDQyxLQUFLLENBQUNmO1FBRWpCLE1BQU1nQiw4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
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3NpbXBsZVR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHtiYXNlVHlwZUZyb21Ob3RoaW5nfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpbXBsZVR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZSgpO1xuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlc1ZlcmlmeSA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcygpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlc1ZlcmlmeSkge1xuICAgICAgICBjb25zdCB0eXBlUHJlZml4VmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGVQcmVmaXgoKTtcblxuICAgICAgICBpZiAodHlwZVByZWZpeFZlcmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgcHJvcGVydGllc1ZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgICBpZiAocHJvcGVydGllc1ZlcmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVR5cGUoKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IHRydWUsXG4gICAgICAgICAgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UsIGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lLCAvLy9cbiAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzKSB7XG4gICAgbGV0IHN1cGVyVHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vLztcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZU5hbWUgPSBub21pbmFsVHlwZU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG5cbiAgICAgICAgc3VwZXJUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIHR5cGUncyBuYW1lLmApO1xuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKCkge1xuICAgIGxldCBzdXBlclR5cGVzVmVyaWZ5O1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1cGVyVHlwZXMgPSBbXSxcbiAgICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vO1xuXG4gICAgKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVzU3RyaW5nfScgc3VwZXItdHlwZXMuLi5gKSA6XG4gICAgICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgc3VwZXJUeXBlc1ZlcmlmeSA9IHRoaXMuc3VwZXJUeXBlcy5ldmVyeSgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcyk7XG5cbiAgICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzdXBlclR5cGVzVmVyaWZ5KSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICAgICAgICBzdXBlclR5dXBlID0gYmFzZVR5cGU7ICAvLy9cblxuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXVwZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICAoc3VwZXJUeXBlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVzU3RyaW5nfScgc3VwZXItdHlwZXMuYCkgOlxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5VHlwZVByZWZpeCgpIHtcbiAgICBsZXQgdHlwZVByZWZpeFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4Li4uYCk7XG5cbiAgICBjb25zdCB0eXBlUHJlZml4ZWQgPSB0aGlzLnR5cGUuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKCF0eXBlUHJlZml4ZWQpIHtcbiAgICAgIHR5cGVQcmVmaXhWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlUHJlZml4VmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUHJlZml4VmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlQcm9wZXJ0aWVzKCkge1xuICAgIGxldCBwcm9wZXJ0aWVzVmVyaWZ5ID0gdHJ1ZTsgIC8vL1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJvcGVydGllcy4uLmApO1xuXG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdO1xuXG4gICAgdGhpcy50eXBlLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cbiAgICBpZiAocHJvcGVydGllc1ZlcmlmeSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0aWVzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0aWVzVmVyaWZ5O1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpbXBsZVR5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiU2ltcGxlVHlwZURlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInR5cGUiLCJzdXBlclR5cGVzIiwicHJvdmlzaW9uYWwiLCJnZXRUeXBlIiwiZ2V0U3VwZXJUeXBlcyIsImlzUHJvdmlzaW9uYWwiLCJnZXRTaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImdldENvbnRleHQiLCJicmVhayIsInNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidHlwZVZlcmlmaWVzIiwidmVyaWZ5VHlwZSIsInN1cGVyVHlwZXNWZXJpZnkiLCJ2ZXJpZnlTdXBlclR5cGVzIiwidHlwZVByZWZpeFZlcmlmaWVzIiwidmVyaWZ5VHlwZVByZWZpeCIsInByb3BlcnRpZXNWZXJpZmllcyIsInZlcmlmeVByb3BlcnRpZXMiLCJhZGRUeXBlIiwiZGVidWciLCJ0eXBlU3RyaW5nIiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJzdXBlclR5cGVWZXJpZmllcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIsInN1cGVyVHlwZXNTdHJpbmciLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJldmVyeSIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5dXBlIiwic2V0U3VwZXJUeXBlcyIsInR5cGVQcmVmaXhlZCIsImlzUHJlZml4ZWQiLCJwcm9wZXJ0aWVzVmVyaWZ5IiwicHJvcGVydGllcyIsInNldFByb3BlcnRpZXMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztvRUFOd0I7MEJBRUQ7d0JBQ3dCO3NCQUNiOzs7Ozs7TUFFbEMsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyw4QkFBOEJDLG9CQUFXO0lBQ25FLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDaEUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQztRQUV2QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsVUFBVTtJQUN4QjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsV0FBVztJQUN6QjtJQUVBSSwrQkFBK0I7UUFDN0IsTUFBTVAsT0FBTyxJQUFJLENBQUNRLE9BQU8sSUFDbkJDLDRCQUE0QlQsTUFBTSxHQUFHO1FBRTNDLE9BQU9TO0lBQ1Q7SUFFQSxNQUFNQyxTQUFTO1FBQ2IsSUFBSUMsV0FBVztRQUVmLE1BQU1iLFVBQVUsSUFBSSxDQUFDYyxVQUFVO1FBRS9CLE1BQU0sSUFBSSxDQUFDQyxLQUFLLENBQUNmO1FBRWpCLE1BQU1nQiw4QkFBOEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUxRGpCLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVG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
@@ -149,8 +149,8 @@ const _default = (0, _elements.define)(class Term extends _occamlanguages.Elemen
149
149
  }
150
150
  toJSON() {
151
151
  const typeJSON = (0, _json.typeToTypeJSON)(this.type), string = this.getString(), type = typeJSON, json = {
152
- type,
153
- string
152
+ string,
153
+ type
154
154
  };
155
155
  return json;
156
156
  }
@@ -166,4 +166,4 @@ const _default = (0, _elements.define)(class Term extends _occamlanguages.Elemen
166
166
  }
167
167
  });
168
168
 
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVJZGVudGlmaWVyO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlQSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpO1xuXG4gICAgY29uc3QgdGVybU5vZGVCID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlQUFNYXRjaGVzVGVybUJOb2RlQiA9IHRlcm1Ob2RlQS5tYXRjaCh0ZXJtTm9kZUIpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZUFBTWF0Y2hlc1Rlcm1CTm9kZUI7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXJBID0gdmFyaWFibGVJZGVudGlmaWVyOyAvLy9cblxuICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyQiA9IHZhcmlhYmxlSWRlbnRpZmllcjtcblxuICAgICAgY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9ICh2YXJpYWJsZUlkZW50aWZpZXJBID09PSB2YXJpYWJsZUlkZW50aWZpZXJCKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGZpbmRWYWxpZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgdmFsaWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRUZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtICA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgZmlsdGVyKHZhcmlhYmxlcywgKHZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1ZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdW5kZWZpbmVkVmFyaWFibGVzID0gdmFyaWFibGVzLCAvLy9cbiAgICAgICAgICB1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSB1bmRlZmluZWRWYXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGdyb3VuZGVkID0gKHVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA8PSAxKTtcblxuICAgIHJldHVybiBncm91bmRlZDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgc2luZ3VsYXIgPSB0ZXJtTm9kZS5pc1Npbmd1bGFyKCk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTsgfVxuXG4gIGlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm0gID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGVzTGVuZ3RoID0gdmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZCA9ICh2YXJpYWJsZXNMZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGdyb3VuZGVkID0gdGhpcy5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IGdyb3VuZGVkOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJJZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBpZiAocGFyYW1ldGVySWRlbnRpZmllciA9PT0gdmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKSB7XG4gICAgbGV0IHRlcm0gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZFRlcm0gPSB0aGlzLmZpbmRWYWxpZFRlcm0oY29udGV4dCksXG4gICAgICAgICAgdmFsaWQgPSAodmFsaWRUZXJtICE9PSBudWxsKTtcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZCA9IHZhbGlkYXRlRm9yd2FyZHMoKTtcblxuICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgICAgICAgdGVybSA9IHZhbGlkVGVybTsgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybXMuc29tZSgodmFsaWRhdGVUZXJtKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgdGVybSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0ZXJtID0gdGhpczsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkVGVybSh0ZXJtKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgdmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHRlcm1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCwgKCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0ZvcndhcmRzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0ZvcndhcmRzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUZXJtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtID0gbGl0ZXJhbGx5KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBjb25zdCB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlKTtcblxuICAgICAgcmV0dXJuIHRlcm07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJUZXJtIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImdldFR5cGUiLCJzZXRUeXBlIiwiZ2V0VGVybU5vZGUiLCJnZXROb2RlIiwidGVybU5vZGUiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJtYXRjaFRlcm1Ob2RlIiwidGVybU5vZGVBIiwidGVybU5vZGVCIiwidGVybU5vZGVBQU1hdGNoZXNUZXJtQk5vZGVCIiwibWF0Y2giLCJlcXVhbFRvIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YXJpYWJsZUlkZW50aWZpZXJBIiwidmFyaWFibGVJZGVudGlmaWVyQiIsImZpbmRWYWxpZFRlcm0iLCJ0ZXJtIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidmFsaWRUZXJtIiwiaXNFcXVhbFRvIiwidGVybU5vZGVNYXRjaGVzIiwiaXNHcm91bmRlZCIsImRlZmluZWRWYXJpYWJsZXMiLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUiLCJpbmNsdWRlcyIsInVuZGVmaW5lZFZhcmlhYmxlcyIsInVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImxlbmd0aCIsImdyb3VuZGVkIiwiaXNQcm92aXNpb25hbCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJ2YXJpYWJsZXNMZW5ndGgiLCJpbml0aWFsbHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkIiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbXRlciIsInBhcmFtZXRlcklkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZUZvcndhcmRzIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWQiLCJ2YWxpZGF0ZXNGb3J3YXJkIiwiZGVidWciLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm1zIiwic29tZSIsInZhbGlkYXRlVGVybSIsInRlcm1WYWxpZGF0ZXMiLCJhZGRUZXJtIiwidmFsaWRhdGVHaXZlblR5cGUiLCJ2YWxpZGF0ZXNHaXZlblR5cGUiLCJ0eXBlU3RyaW5nIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidG9KU09OIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsaXRlcmFsbHkiLCJpbnN0YW50aWF0ZVRlcm0iLCJ0eXBlRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVp3QjsyQkFDTzswQkFFUjt5QkFDRzs0QkFDSTs2QkFDRTs2QkFDRTtzQkFDVztBQUU3QyxNQUFNLEVBQUVBLE1BQU0sRUFBRSxHQUFHQyx5QkFBYztNQUVqQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN2QyxLQUFLLENBQUNILFNBQVNDLFFBQVFDO1FBRXZCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxRQUFRRixJQUFJLEVBQUU7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
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVJZGVudGlmaWVyO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlQSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpO1xuXG4gICAgY29uc3QgdGVybU5vZGVCID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlQUFNYXRjaGVzVGVybUJOb2RlQiA9IHRlcm1Ob2RlQS5tYXRjaCh0ZXJtTm9kZUIpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZUFBTWF0Y2hlc1Rlcm1CTm9kZUI7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXJBID0gdmFyaWFibGVJZGVudGlmaWVyOyAvLy9cblxuICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyQiA9IHZhcmlhYmxlSWRlbnRpZmllcjtcblxuICAgICAgY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9ICh2YXJpYWJsZUlkZW50aWZpZXJBID09PSB2YXJpYWJsZUlkZW50aWZpZXJCKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGZpbmRWYWxpZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgdmFsaWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRUZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtICA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgZmlsdGVyKHZhcmlhYmxlcywgKHZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1ZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdW5kZWZpbmVkVmFyaWFibGVzID0gdmFyaWFibGVzLCAvLy9cbiAgICAgICAgICB1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSB1bmRlZmluZWRWYXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGdyb3VuZGVkID0gKHVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA8PSAxKTtcblxuICAgIHJldHVybiBncm91bmRlZDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgc2luZ3VsYXIgPSB0ZXJtTm9kZS5pc1Npbmd1bGFyKCk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTsgfVxuXG4gIGlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm0gID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGVzTGVuZ3RoID0gdmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZCA9ICh2YXJpYWJsZXNMZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGdyb3VuZGVkID0gdGhpcy5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IGdyb3VuZGVkOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJJZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBpZiAocGFyYW1ldGVySWRlbnRpZmllciA9PT0gdmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKSB7XG4gICAgbGV0IHRlcm0gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZFRlcm0gPSB0aGlzLmZpbmRWYWxpZFRlcm0oY29udGV4dCksXG4gICAgICAgICAgdmFsaWQgPSAodmFsaWRUZXJtICE9PSBudWxsKTtcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZCA9IHZhbGlkYXRlRm9yd2FyZHMoKTtcblxuICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgICAgICAgdGVybSA9IHZhbGlkVGVybTsgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybXMuc29tZSgodmFsaWRhdGVUZXJtKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgdGVybSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0ZXJtID0gdGhpczsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkVGVybSh0ZXJtKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgdmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHRlcm1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCwgKCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0ZvcndhcmRzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0ZvcndhcmRzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUZXJtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtID0gbGl0ZXJhbGx5KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBjb25zdCB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlKTtcblxuICAgICAgcmV0dXJuIHRlcm07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJUZXJtIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImdldFR5cGUiLCJzZXRUeXBlIiwiZ2V0VGVybU5vZGUiLCJnZXROb2RlIiwidGVybU5vZGUiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJtYXRjaFRlcm1Ob2RlIiwidGVybU5vZGVBIiwidGVybU5vZGVCIiwidGVybU5vZGVBQU1hdGNoZXNUZXJtQk5vZGVCIiwibWF0Y2giLCJlcXVhbFRvIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YXJpYWJsZUlkZW50aWZpZXJBIiwidmFyaWFibGVJZGVudGlmaWVyQiIsImZpbmRWYWxpZFRlcm0iLCJ0ZXJtIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidmFsaWRUZXJtIiwiaXNFcXVhbFRvIiwidGVybU5vZGVNYXRjaGVzIiwiaXNHcm91bmRlZCIsImRlZmluZWRWYXJpYWJsZXMiLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUiLCJpbmNsdWRlcyIsInVuZGVmaW5lZFZhcmlhYmxlcyIsInVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImxlbmd0aCIsImdyb3VuZGVkIiwiaXNQcm92aXNpb25hbCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJ2YXJpYWJsZXNMZW5ndGgiLCJpbml0aWFsbHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkIiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbXRlciIsInBhcmFtZXRlcklkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZUZvcndhcmRzIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWQiLCJ2YWxpZGF0ZXNGb3J3YXJkIiwiZGVidWciLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm1zIiwic29tZSIsInZhbGlkYXRlVGVybSIsInRlcm1WYWxpZGF0ZXMiLCJhZGRUZXJtIiwidmFsaWRhdGVHaXZlblR5cGUiLCJ2YWxpZGF0ZXNHaXZlblR5cGUiLCJ0eXBlU3RyaW5nIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidG9KU09OIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsaXRlcmFsbHkiLCJpbnN0YW50aWF0ZVRlcm0iLCJ0eXBlRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVp3QjsyQkFDTzswQkFFUjt5QkFDRzs0QkFDSTs2QkFDRTs2QkFDRTtzQkFDVztBQUU3QyxNQUFNLEVBQUVBLE1BQU0sRUFBRSxHQUFHQyx5QkFBYztNQUVqQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN2QyxLQUFLLENBQUNILFNBQVNDLFFBQVFDO1FBRXZCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxRQUFRRixJQUFJLEVBQUU7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
@@ -14,8 +14,8 @@ const _elements = require("../elements");
14
14
  const _context = require("../utilities/context");
15
15
  const _instantiate = require("../process/instantiate");
16
16
  const _type = require("../utilities/type");
17
- const _json = require("../utilities/json");
18
17
  const _element = require("../utilities/element");
18
+ const _json = require("../utilities/json");
19
19
  const { push, first } = _necessary.arrayUtilities;
20
20
  const _default = (0, _elements.define)(class Type extends _occamlanguages.Element {
21
21
  constructor(context, string, node, name, prefixName, superTypes, properties, provisional){
@@ -202,16 +202,18 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
202
202
  return comparesToNominalTypeName;
203
203
  }
204
204
  toJSON() {
205
- const superTypesJSON = (0, _json.superTypesToSuperTypesJSON)(this.superTypes), superTypes = superTypesJSON, string = this.getString(), json = {
205
+ const superTypesJSON = (0, _json.superTypesToSuperTypesJSON)(this.superTypes), propertiesJSON = (0, _json.propertiesToPropertiesJSON)(this.properties), provisinoalJSOM = (0, _json.provisionalToProvisionalJSON)(this.provisional), superTypes = superTypesJSON, properties = propertiesJSON, provisional = provisinoalJSOM, string = this.getString(), json = {
206
206
  string,
207
- superTypes
207
+ superTypes,
208
+ properties,
209
+ provisional
208
210
  };
209
211
  return json;
210
212
  }
211
213
  static name = "Type";
212
214
  static fromJSON(json, context) {
213
215
  const type = (0, _context.literally)((context)=>{
214
- const { string } = json, typeNode = (0, _instantiate.instantiateType)(string, context), node = typeNode, name = (0, _element.nameFromTypeNode)(typeNode, context), prefixName = (0, _element.prefixNameFromTypeNode)(typeNode, context), superTypes = (0, _json.superTypesFromJSON)(json, context), properties = (0, _element.propertiesFromTypeNode)(typeNode, context), provisional = (0, _element.provisionalFromTypeNode)(typeNode, context);
216
+ const { string } = json, typeNode = (0, _instantiate.instantiateType)(string, context), node = typeNode, name = (0, _element.nameFromTypeNode)(typeNode, context), prefixName = (0, _element.prefixNameFromTypeNode)(typeNode, context), superTypes = (0, _json.superTypesFromJSON)(json, context), properties = (0, _json.propertiesFromJSON)(json, context), provisional = (0, _json.provisionalFromJSON)(json);
215
217
  context = null; ///
216
218
  const type = new Type(context, string, node, name, prefixName, superTypes, properties, provisional);
217
219
  return type;
@@ -226,4 +228,4 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
226
228
  }
227
229
  });
228
230
 
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVHlwZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBzdXBlclR5cGVzRnJvbUpTT04sIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlLCBwcmVmaXhOYW1lRnJvbVR5cGVOb2RlLCBwcm9wZXJ0aWVzRnJvbVR5cGVOb2RlLCBwcm92aXNpb25hbEZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRQcmVmaXhOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnByZWZpeE5hbWU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBnZXRUeXBlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdHlwZU5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKGluY2x1ZGVTdXBlclR5cGVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcblxuICAgIHB1c2gocHJvcGVydGllcywgdGhpcy5wcm9wZXJ0aWVzKTtcblxuICAgIGlmIChpbmNsdWRlU3VwZXJUeXBlcykge1xuICAgICAgdGhpcy5zdXBlclR5cGVzLmZvckVhY2goKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgICBwdXNoKHByb3BlcnRpZXMsIHN1cGVyVHlwZVByb3BlcnRpZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlclR5cGVzID0gdHJ1ZSkge1xuICAgIGxldCBwcm92aXNpb25hbCA9IHRoaXMucHJvdmlzaW9uYWw7XG5cbiAgICBpZiAoaW5jbHVkZVN1cGVyVHlwZXMpIHtcbiAgICAgIGlmICghcHJvdmlzaW9uYWwpIHtcbiAgICAgICAgcHJvdmlzaW9uYWwgPSB0aGlzLnN1cGVyVHlwZXMuc29tZSgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VwZXJUeXBlUHJvdmlzaW9uYWwgPSBzdXBlclR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgICAgaWYgKHN1cGVyVHlwZVByb3Zpc2lvbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpIHtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICB9XG5cbiAgc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICBzZXRQcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHJlcGxhY2VTdXBlclR5cGUoc3VwZXJUeXBlLCBpbmRleCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgdGhpcy5zdXBlclR5cGVzLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIHN1cGVyVHlwZSk7XG4gIH1cblxuICBpc1ByZWZpeGVkKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gKHRoaXMucHJlZml4TmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRQcmVmaXhlZE5hbWUoKSB7XG4gICAgbGV0IHByZWZpeGVkTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZE5hbWUgPSBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICB9XG5cbiAgZ2V0Tm9taW5hbFR5cGVOYW1lKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJlZml4ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZTtcblxuICAgIHJldHVybiBub21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBpc0Jhc2ljKCkge1xuICAgIGxldCBiYXNpYyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgIGJhc2ljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmFzaWM7XG4gIH1cblxuICBpc1JlZmluZWQoKSB7XG4gICAgbGV0IHJlZmluZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlTmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgIHJlZmluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZpbmVkO1xuICB9XG5cbiAgaXNFcXVhbFRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1N1YlR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1YlR5cGVPZjtcblxuICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgaWYgKHRoaXMgPT09IGJhc2VUeXBlKSB7XG4gICAgICBzdWJUeXBlT2YgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViVHlwZU9mID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4geyAvLy9cbiAgICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSA9IHN1cGVyVHlwZS5pc1N1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2Y7XG4gIH1cblxuICBpc1N1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBzdWJUeXBlT2YgPSB0eXBlLmlzU3ViVHlwZU9mKHRoaXMpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gc3ViVHlwZU9mOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0NvbXBhcmFibGVUbyh0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgY29tcGFyYWJsZVRvID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBjb21wYXJhYmxlVG87XG4gIH1cblxuICBpc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3ViVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdWJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBjb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgbmFtZVR5cGVOYW1lID0gKG5hbWUgPT09IHR5cGVOYW1lKSxcbiAgICAgICAgICBjb21wYXJlc1RvVHlwZU5hbWUgPSBuYW1lVHlwZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwsIGluY2x1ZGVTdXBlcnR5cGVzID0gdHJ1ZSkge1xuICAgIGxldCBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG5cbiAgICBjb25zdCBwcm92aXNpb25hbEEgPSBwcm92aXNpb25hbDsgLy8vXG5cbiAgICBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJ0eXBlcyk7XG5cbiAgICBjb25zdCBwcm92aXNpb25hbEIgPSBwcm92aXNpb25hbDsgLy8vXG5cbiAgICBjb21wYXJlc1RvUHJvdmlzaW9uYWwgPSAocHJvdmlzaW9uYWxBID09PSBwcm92aXNpb25hbEIpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICBwcmVmaXhlZFR5cGVOYW1lUHJlZml4ZWROYW1lID0gKHByZWZpeGVkVHlwZU5hbWUgPT09IHByZWZpeGVkTmFtZSk7XG5cbiAgICAgIGlmIChwcmVmaXhlZFR5cGVOYW1lUHJlZml4ZWROYW1lKSB7XG4gICAgICAgIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBpZiAoIWNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZU5hbWUgPSAobm9taW5hbFR5cGVOYW1lID09PSBuYW1lKTtcblxuICAgICAgaWYgKG5vbWluYWxUeXBlTmFtZU5hbWUpIHtcbiAgICAgICAgY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWROYW1lID0gdGhpcy5nZXRQcmVmaXhlZE5hbWUoKSxcbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lUHJlZml4ZWROYW1lID0gKG5vbWluYWxUeXBlTmFtZSA9PT0gcHJlZml4ZWROYW1lKTtcblxuICAgICAgICBpZiAobm9taW5hbFR5cGVOYW1lUHJlZml4ZWROYW1lKSB7XG4gICAgICAgICAgY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHN1cGVyVHlwZXNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdHlwZSA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0eXBlTm9kZSA9IGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSBwcmVmaXhOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0Zyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7IC8vL1xuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG5cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJwdXNoIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJuYW1lIiwicHJlZml4TmFtZSIsInN1cGVyVHlwZXMiLCJwcm9wZXJ0aWVzIiwicHJvdmlzaW9uYWwiLCJnZXROYW1lIiwiZ2V0UHJlZml4TmFtZSIsImdldFN1cGVyVHlwZXMiLCJnZXRUeXBlTm9kZSIsImdldE5vZGUiLCJ0eXBlTm9kZSIsImdldFByb3BlcnRpZXMiLCJpbmNsdWRlU3VwZXJUeXBlcyIsImZvckVhY2giLCJzdXBlclR5cGUiLCJzdXBlclR5cGVQcm9wZXJ0aWVzIiwiaXNQcm92aXNpb25hbCIsInNvbWUiLCJzdXBlclR5cGVQcm92aXNpb25hbCIsInNldE5hbWUiLCJzZXRQcmVmaXhOYW1lIiwic2V0U3VwZXJUeXBlcyIsInNldFByb3BlcnRpZXMiLCJzZXRQcm92aXNpb25hbCIsInJlcGxhY2VTdXBlclR5cGUiLCJpbmRleCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJpc1ByZWZpeGVkIiwicHJlZml4ZWQiLCJnZXRQcmVmaXhlZE5hbWUiLCJwcmVmaXhlZE5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJpc0Jhc2ljIiwiYmFzaWMiLCJzdXBlclR5cGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RTdXBlclR5cGUiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJpc1JlZmluZWQiLCJyZWZpbmVkIiwic3VwZXJUeXBlTmFtZSIsImlzRXF1YWxUbyIsInR5cGUiLCJlcXVhbFRvIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2YiLCJzdXBlclR5cGVTdWJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mIiwiaXNDb21wYXJhYmxlVG8iLCJjb21wYXJhYmxlVG8iLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsImVxdWFsVG9PclN1YlR5cGVPZiIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJlcXVhbFRvT3JTdXBlclR5cGVPZiIsImNvbXBhcmVUeXBlTmFtZSIsInR5cGVOYW1lIiwibmFtZVR5cGVOYW1lIiwiY29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwiaW5jbHVkZVN1cGVydHlwZXMiLCJjb21wYXJlc1RvUHJvdmlzaW9uYWwiLCJwcm92aXNpb25hbEEiLCJwcm92aXNpb25hbEIiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUiLCJjb21wYXJlTm9taW5hbFR5cGVOYW1lIiwiY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsIm5vbWluYWxUeXBlTmFtZU5hbWUiLCJub21pbmFsVHlwZU5hbWVQcmVmaXhlZE5hbWUiLCJ0b0pTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwiZ2V0U3RyaW5nIiwianNvbiIsImZyb21KU09OIiwibGl0ZXJhbGx5IiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsInByZWZpeE5hbWVGcm9tVHlwZU5vZGUiLCJzdXBlclR5cGVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzRnJvbVR5cGVOb2RlIiwicHJvdmlzaW9uYWxGcm9tVHlwZU5vZGUiLCJmcm9tTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWndCOzJCQUNPOzBCQUVSO3lCQUNHOzZCQUNNO3NCQUNJO3NCQUMyQjt5QkFDMkM7QUFFMUcsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztNQUV0QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxDQUFFO1FBQ3hGLEtBQUssQ0FBQ1AsU0FBU0MsUUFBUUM7UUFDdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0wsSUFBSTtJQUNsQjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxjQUFjO1FBQ1osTUFBTVQsT0FBTyxJQUFJLENBQUNVLE9BQU8sSUFDbkJDLFdBQVdYLE1BQU8sR0FBRztRQUUzQixPQUFPVztJQUNUO0lBRUFDLGNBQWNDLG9CQUFvQixJQUFJLEVBQUU7UUFDdEMsTUFBTVQs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
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVHlwZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlLCBwcmVmaXhOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBzdXBlclR5cGVzRnJvbUpTT04sIHByb3Zpc2lvbmFsRnJvbUpTT04sIHByb3BlcnRpZXNGcm9tSlNPTiwgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiwgc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04sIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCwgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucHJlZml4TmFtZSA9IHByZWZpeE5hbWU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFByZWZpeE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4TmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwZXJUeXBlcztcbiAgfVxuXG4gIGdldFR5cGVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiB0eXBlTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoaW5jbHVkZVN1cGVyVHlwZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdO1xuXG4gICAgcHVzaChwcm9wZXJ0aWVzLCB0aGlzLnByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGluY2x1ZGVTdXBlclR5cGVzKSB7XG4gICAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3BlcnRpZXMgPSBzdXBlclR5cGUuZ2V0UHJvcGVydGllcygpO1xuXG4gICAgICAgIHB1c2gocHJvcGVydGllcywgc3VwZXJUeXBlUHJvcGVydGllcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVyVHlwZXMgPSB0cnVlKSB7XG4gICAgbGV0IHByb3Zpc2lvbmFsID0gdGhpcy5wcm92aXNpb25hbDtcblxuICAgIGlmIChpbmNsdWRlU3VwZXJUeXBlcykge1xuICAgICAgaWYgKCFwcm92aXNpb25hbCkge1xuICAgICAgICBwcm92aXNpb25hbCA9IHRoaXMuc3VwZXJUeXBlcy5zb21lKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdXBlclR5cGVQcm92aXNpb25hbCA9IHN1cGVyVHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgICAgICBpZiAoc3VwZXJUeXBlUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgc2V0TmFtZShuYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIHNldFByZWZpeE5hbWUocHJlZml4TmFtZSkge1xuICAgIHRoaXMucHJlZml4TmFtZSA9IHByZWZpeE5hbWU7XG4gIH1cblxuICBzZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIHNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgcmVwbGFjZVN1cGVyVHlwZShzdXBlclR5cGUsIGluZGV4KSB7XG4gICAgY29uc3Qgc3RhcnQgPSBpbmRleCxcbiAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgc3VwZXJUeXBlKTtcbiAgfVxuXG4gIGlzUHJlZml4ZWQoKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSAodGhpcy5wcmVmaXhOYW1lICE9PSBudWxsKTtcblxuICAgIHJldHVybiBwcmVmaXhlZDtcbiAgfVxuXG4gIGdldFByZWZpeGVkTmFtZSgpIHtcbiAgICBsZXQgcHJlZml4ZWROYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIHByZWZpeGVkTmFtZSA9IGAke3RoaXMucHJlZml4TmFtZX0ke3RoaXMubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBwcmVmaXhlZE5hbWU7XG4gIH1cblxuICBnZXROb21pbmFsVHlwZU5hbWUoKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKSxcbiAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSBwcmVmaXhlZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMucHJlZml4TmFtZX0ke3RoaXMubmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lO1xuXG4gICAgcmV0dXJuIG5vbWluYWxUeXBlTmFtZTtcbiAgfVxuXG4gIGlzQmFzaWMoKSB7XG4gICAgbGV0IGJhc2ljID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdFN1cGVyVHlwZSA9IGZpcnN0KHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBzdXBlclR5cGUgPSBmaXJzdFN1cGVyVHlwZSwgLy8vXG4gICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgYmFzaWMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiYXNpYztcbiAgfVxuXG4gIGlzUmVmaW5lZCgpIHtcbiAgICBsZXQgcmVmaW5lZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgc3VwZXJUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGVOYW1lID09PSB0aGlzLm5hbWUpIHtcbiAgICAgICAgcmVmaW5lZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmluZWQ7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gdHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBsZXQgc3ViVHlwZU9mO1xuXG4gICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICBpZiAodGhpcyA9PT0gYmFzZVR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJUeXBlT2YgPSB0aGlzLnN1cGVyVHlwZXMuc29tZSgoc3VwZXJUeXBlKSA9PiB7IC8vL1xuICAgICAgICBpZiAoc3VwZXJUeXBlID09PSB0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdXBlclR5cGVTdWJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IHN1YlR5cGVPZiA9IHR5cGUuaXNTdWJUeXBlT2YodGhpcyksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSBzdWJUeXBlT2Y7ICAvLy9cblxuICAgIHJldHVybiBzdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzQ29tcGFyYWJsZVRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBjb21wYXJhYmxlVG8gPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YgfHwgc3VwZXJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmFibGVUbztcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdWJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9PclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBuYW1lVHlwZU5hbWUgPSAobmFtZSA9PT0gdHlwZU5hbWUpLFxuICAgICAgICAgIGNvbXBhcmVzVG9UeXBlTmFtZSA9IG5hbWVUeXBlTmFtZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9UeXBlTmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVQcm92aXNpb25hbChwcm92aXNpb25hbCwgaW5jbHVkZVN1cGVydHlwZXMgPSB0cnVlKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcblxuICAgIGNvbnN0IHByb3Zpc2lvbmFsQSA9IHByb3Zpc2lvbmFsOyAvLy9cblxuICAgIHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlcnR5cGVzKTtcblxuICAgIGNvbnN0IHByb3Zpc2lvbmFsQiA9IHByb3Zpc2lvbmFsOyAvLy9cblxuICAgIGNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IChwcm92aXNpb25hbEEgPT09IHByb3Zpc2lvbmFsQik7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1Byb3Zpc2lvbmFsO1xuICB9XG5cbiAgY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmIChwcmVmaXhlZCkge1xuICAgICAgY29uc3QgcHJlZml4ZWROYW1lID0gdGhpcy5nZXRQcmVmaXhlZE5hbWUoKSxcbiAgICAgICAgICAgIHByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUgPSAocHJlZml4ZWRUeXBlTmFtZSA9PT0gcHJlZml4ZWROYW1lKTtcblxuICAgICAgaWYgKHByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUpIHtcbiAgICAgICAgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGlmICghY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSkge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lTmFtZSA9IChub21pbmFsVHlwZU5hbWUgPT09IG5hbWUpO1xuXG4gICAgICBpZiAobm9taW5hbFR5cGVOYW1lTmFtZSkge1xuICAgICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICAgIGlmIChwcmVmaXhlZCkge1xuICAgICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWVQcmVmaXhlZE5hbWUgPSAobm9taW5hbFR5cGVOYW1lID09PSBwcmVmaXhlZE5hbWUpO1xuXG4gICAgICAgIGlmIChub21pbmFsVHlwZU5hbWVQcmVmaXhlZE5hbWUpIHtcbiAgICAgICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04odGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgcHJvdmlzaW5vYWxKU09NID0gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTih0aGlzLnByb3Zpc2lvbmFsKSxcbiAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04sICAvLy9cbiAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lub2FsSlNPTSwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHN1cGVyVHlwZXMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgcHJvdmlzaW9uYWxcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdHlwZSA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0eXBlTm9kZSA9IGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSBwcmVmaXhOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbEZyb21KU09OKGpzb24pO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDsgLy8vXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RyaW5nID0gbmFtZSwgIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIHByZWZpeE5hbWUgPSBudWxsLFxuICAgICAgICAgIHN1cGVyVHlwZXMgPSBbXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gW10sXG4gICAgICAgICAgcHJvdmlzaW9uYWwgPSBmYWxzZTtcblxuICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgY29uc3QgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbInB1c2giLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsIm5hbWUiLCJwcmVmaXhOYW1lIiwic3VwZXJUeXBlcyIsInByb3BlcnRpZXMiLCJwcm92aXNpb25hbCIsImdldE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwiZ2V0U3VwZXJUeXBlcyIsImdldFR5cGVOb2RlIiwiZ2V0Tm9kZSIsInR5cGVOb2RlIiwiZ2V0UHJvcGVydGllcyIsImluY2x1ZGVTdXBlclR5cGVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwic29tZSIsInN1cGVyVHlwZVByb3Zpc2lvbmFsIiwic2V0TmFtZSIsInNldFByZWZpeE5hbWUiLCJzZXRTdXBlclR5cGVzIiwic2V0UHJvcGVydGllcyIsInNldFByb3Zpc2lvbmFsIiwicmVwbGFjZVN1cGVyVHlwZSIsImluZGV4Iiwic3RhcnQiLCJkZWxldGVDb3VudCIsInNwbGljZSIsImlzUHJlZml4ZWQiLCJwcmVmaXhlZCIsImdldFByZWZpeGVkTmFtZSIsInByZWZpeGVkTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsImlzQmFzaWMiLCJiYXNpYyIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFN1cGVyVHlwZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImlzUmVmaW5lZCIsInJlZmluZWQiLCJzdXBlclR5cGVOYW1lIiwiaXNFcXVhbFRvIiwidHlwZSIsImVxdWFsVG8iLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZiIsInN1cGVyVHlwZVN1YlR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwic3VwZXJUeXBlT2YiLCJpc0NvbXBhcmFibGVUbyIsImNvbXBhcmFibGVUbyIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb09yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9PclN1cGVyVHlwZU9mIiwiY29tcGFyZVR5cGVOYW1lIiwidHlwZU5hbWUiLCJuYW1lVHlwZU5hbWUiLCJjb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlUHJvdmlzaW9uYWwiLCJpbmNsdWRlU3VwZXJ0eXBlcyIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsQSIsInByb3Zpc2lvbmFsQiIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lTmFtZSIsIm5vbWluYWxUeXBlTmFtZVByZWZpeGVkTmFtZSIsInRvSlNPTiIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwicHJvdmlzaW5vYWxKU09NIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsImdldFN0cmluZyIsImpzb24iLCJmcm9tSlNPTiIsImxpdGVyYWxseSIsImluc3RhbnRpYXRlVHlwZSIsIm5hbWVGcm9tVHlwZU5vZGUiLCJwcmVmaXhOYW1lRnJvbVR5cGVOb2RlIiwic3VwZXJUeXBlc0Zyb21KU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsImZyb21OYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fad0I7MkJBQ087MEJBRVI7eUJBQ0c7NkJBQ007c0JBQ0k7eUJBQ3FCO3NCQUN5RztBQUVsSyxNQUFNLEVBQUVBLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO01BRXRDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDeEYsS0FBSyxDQUFDUCxTQUFTQyxRQUFRQztRQUN2QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDTCxJQUFJO0lBQ2xCO0lBRUFNLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDTCxVQUFVO0lBQ3hCO0lBRUFNLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDTCxVQUFVO0lBQ3hCO0lBRUFNLGNBQWM7UUFDWixNQUFNVCxPQUFPLElBQUksQ0FBQ1UsT0FBTyxJQUNuQkMsV0FBV1gsTUFBTyxHQUFHO1FBRTNCLE9BQU9XO0lBQ1Q7SUFFQUMsY0FBY0Msb0JBQW9CLElBQUksRUFBRTtRQUN0QyxNQUFNVCxhQUFhLEVBQUU7UUFFckJaLEtBQUtZLFlBQVksSUFBSSxDQUFDQSxVQUFVO1FBRWhDLElBQUlTLG1CQUFtQjtZQUNyQixJQUFJLENBQUNWLFVBQVUsQ0FBQ1csT0FBTyxDQUFDLENBQUNDO2dCQUN2QixNQUFNQyxzQkFBc0JELFVBQVVILGFBQWE7Z0JBRW5EcEIsS0FBS1ksWUFBWVk7WUFDbkI7UUFDRjtRQUVBLE9BQU9aO0lBQ1Q7SUFFQWEsY0FBY0osb0JBQW9CLElBQUksRUFBRTtRQUN0QyxJQUFJUixjQUFjLElBQUksQ0FBQ0EsV0FBVztRQUVsQyxJQUFJUSxtQkFBbUI7WUFDckIsSUFBSSxDQUFDUixhQUFhO2dCQUNoQkEsY0FBYyxJQUFJLENBQUNGLFVBQVUsQ0FBQ2UsSUFBSSxDQUFDLENBQUNIO29CQUNsQyxNQUFNSSx1QkFBdUJKLFVBQVVFLGFBQWE7b0JBRXBELElBQUlFLHNCQUFzQjt3QkFDeEIsT0FBTztvQkFDVDtnQkFDRjtZQUNGO1FBQ0Y7UUFFQSxPQUFPZDtJQUNUO0lBRUFlLFFBQVFuQixJQUFJLEVBQUU7UUFDWixJQUFJLENBQUNBLElBQUksR0FBR0E7SUFDZDtJQUVBb0IsY0FBY25CLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQW9CLGNBQWNuQixVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDQSxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFvQixjQUFjbkIsVUFBVSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtJQUNwQjtJQUVBb0IsZUFBZW5CLFdBQVcsRUFBRTtRQUMxQixJQUFJLENBQUNBLFdBQVcsR0FBR0E7SUFDckI7SUFFQW9CLGlCQUFpQlYsU0FBUyxFQUFFVyxLQUFLLEVBQUU7UUFDakMsTUFBTUMsUUFBUUQsT0FDUkUsY0FBYztRQUVwQixJQUFJLENBQUN6QixVQUFVLENBQUMwQixNQUFNLENBQUNGLE9BQU9DLGFBQWFiO0lBQzdDO0lBRUFlLGFBQWE7UUFDWCxNQUFNQyxXQUFZLElBQUksQ0FBQzdCLFVBQVUsS0FBSztRQUV0QyxPQUFPNkI7SUFDVDtJQUVBQyxrQkFBa0I7UUFDaEIsSUFBSUMsZUFBZTtRQUVuQixNQUFNRixXQUFXLElBQUksQ0FBQ0QsVUFBVTtRQUVoQyxJQUFJQyxVQUFVO1lBQ1pFLGVBQWUsR0FBRyxJQUFJLENBQUMvQixVQUFVLEdBQUcsSUFBSSxDQUFDRCxJQUFJLEVBQUU7UUFDakQ7UUFFQSxPQUFPZ0M7SUFDVDtJQUVBQyxxQkFBcUI7UUFDbkIsTUFBTUgsV0FBVyxJQUFJLENBQUNELFVBQVUsSUFDMUJLLGtCQUFrQkosV0FDQyxHQUFHLElBQUksQ0FBQzdCLFVBQVUsR0FBRyxJQUFJLENBQUNELElBQUksRUFBRSxHQUM3QixJQUFJLENBQUNBLElBQUk7UUFFckMsT0FBT2tDO0lBQ1Q7SUFFQUMsVUFBVTtRQUNSLElBQUlDLFFBQVE7UUFFWixNQUFNQyxtQkFBbUIsSUFBSSxDQUFDbkMsVUFBVSxDQUFDb0MsTUFBTTtRQUUvQyxJQUFJRCxxQkFBcUIsR0FBRztZQUMxQixNQUFNRSxpQkFBaUIvQyxNQUFNLElBQUksQ0FBQ1UsVUFBVSxHQUN0Q1ksWUFBWXlCLGdCQUNaQyxXQUFXQyxJQUFBQSx5QkFBbUI7WUFFcEMsSUFBSTNCLGNBQWMwQixVQUFVO2dCQUMxQkosUUFBUTtZQUNWO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFNLFlBQVk7UUFDVixJQUFJQyxVQUFVO1FBRWQsTUFBTU4sbUJBQW1CLElBQUksQ0FBQ25DLFVBQVUsQ0FBQ29DLE1BQU07UUFFL0MsSUFBSUQscUJBQXFCLEdBQUc7WUFDMUIsTUFBTUUsaUJBQWlCL0MsTUFBTSxJQUFJLENBQUNVLFVBQVUsR0FDdENZLFlBQVl5QixnQkFDWkssZ0JBQWdCOUIsVUFBVVQsT0FBTztZQUV2QyxJQUFJdUMsa0JBQWtCLElBQUksQ0FBQzVDLElBQUksRUFBRTtnQkFDL0IyQyxVQUFVO1lBQ1o7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUUsVUFBVUMsSUFBSSxFQUFFO1FBQ2QsTUFBTUMsVUFBVyxJQUFJLEtBQUtEO1FBRTFCLE9BQU9DO0lBQ1Q7SUFFQUMsWUFBWUYsSUFBSSxFQUFFO1FBQ2hCLElBQUlHO1FBRUosTUFBTVQsV0FBV0MsSUFBQUEseUJBQW1CO1FBRXBDLElBQUksSUFBSSxLQUFLRCxVQUFVO1lBQ3JCUyxZQUFZO1FBQ2QsT0FBTztZQUNMQSxZQUFZLElBQUksQ0FBQy9DLFVBQVUsQ0FBQ2UsSUFBSSxDQUFDLENBQUNIO2dCQUNoQyxJQUFJQSxjQUFjZ0MsTUFBTTtvQkFDdEIsT0FBTztnQkFDVDtnQkFFQSxNQUFNSSx5QkFBeUJwQyxVQUFVa0MsV0FBVyxDQUFDRjtnQkFFckQsSUFBSUksd0JBQXdCO29CQUMxQixPQUFPO2dCQUNUO1lBQ0Y7UUFDRjtRQUVBLE9BQU9EO0lBQ1Q7SUFFQUUsY0FBY0wsSUFBSSxFQUFFO1FBQ2xCLE1BQU1HLFlBQVlILEtBQUtFLFdBQVcsQ0FBQyxJQUFJLEdBQ2pDSSxjQUFjSCxXQUFZLEdBQUc7UUFFbkMsT0FBT0c7SUFDVDtJQUVBQyxlQUFlUCxJQUFJLEVBQUU7UUFDbkIsTUFBTUMsVUFBVSxJQUFJLENBQUNGLFNBQVMsQ0FBQ0MsT0FDekJHLFlBQVksSUFBSSxDQUFDRCxXQUFXLENBQUNGLE9BQzdCTSxjQUFjLElBQUksQ0FBQ0QsYUFBYSxDQUFDTCxPQUNqQ1EsZUFBZ0JQLFdBQVdFLGFBQWFHO1FBRTlDLE9BQU9FO0lBQ1Q7SUFFQUMscUJBQXFCVCxJQUFJLEVBQUU7UUFDekIsTUFBTUMsVUFBVSxJQUFJLENBQUNGLFNBQVMsQ0FBQ0MsT0FDekJHLFlBQVksSUFBSSxDQUFDRCxXQUFXLENBQUNGLE9BQzdCVSxxQkFBc0JULFdBQVdFO1FBRXZDLE9BQU9PO0lBQ1Q7SUFFQUMsdUJBQXVCWCxJQUFJLEVBQUU7UUFDM0IsTUFBTUMsVUFBVSxJQUFJLENBQUNGLFNBQVMsQ0FBQ0MsT0FDekJNLGNBQWMsSUFBSSxDQUFDRCxhQUFhLENBQUNMLE9BQ2pDWSx1QkFBd0JYLFdBQVdLO1FBRXpDLE9BQU9NO0lBQ1Q7SUFFQUMsZ0JBQWdCQyxRQUFRLEVBQUU7UUFDeEIsTUFBTTVELE9BQU8sSUFBSSxDQUFDSyxPQUFPLElBQ25Cd0QsZUFBZ0I3RCxTQUFTNEQsVUFDekJFLHFCQUFxQkQsY0FBZSxHQUFHO1FBRTdDLE9BQU9DO0lBQ1Q7SUFFQUMsbUJBQW1CM0QsV0FBVyxFQUFFNEQsb0JBQW9CLElBQUksRUFBRTtRQUN4RCxJQUFJQztRQUVKLE1BQU1DLGVBQWU5RCxhQUFhLEdBQUc7UUFFckNBLGNBQWMsSUFBSSxDQUFDWSxhQUFhLENBQUNnRDtRQUVqQyxNQUFNRyxlQUFlL0QsYUFBYSxHQUFHO1FBRXJDNkQsd0JBQXlCQyxpQkFBaUJDO1FBRTFDLE9BQU9GO0lBQ1Q7SUFFQUcsd0JBQXdCQyxnQkFBZ0IsRUFBRTtRQUN4QyxJQUFJQyw2QkFBNkI7UUFFakMsTUFBTXhDLFdBQVcsSUFBSSxDQUFDRCxVQUFVO1FBRWhDLElBQUlDLFVBQVU7WUFDWixNQUFNRSxlQUFlLElBQUksQ0FBQ0QsZUFBZSxJQUNuQ3dDLCtCQUFnQ0YscUJBQXFCckM7WUFFM0QsSUFBSXVDLDhCQUE4QjtnQkFDaENELDZCQUE2QjtZQUMvQjtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRSx1QkFBdUJ0QyxlQUFlLEVBQUU7UUFDdEMsSUFBSXVDLDRCQUE0QjtRQUVoQyxJQUFJLENBQUNBLDJCQUEyQjtZQUM5QixNQUFNekUsT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJxRSxzQkFBdUJ4QyxvQkFBb0JsQztZQUVqRCxJQUFJMEUscUJBQXFCO2dCQUN2QkQsNEJBQTRCO1lBQzlCO1FBQ0Y7UUFFQSxJQUFJLENBQUNBLDJCQUEyQjtZQUM5QixNQUFNM0MsV0FBVyxJQUFJLENBQUNELFVBQVU7WUFFaEMsSUFBSUMsVUFBVTtnQkFDWixNQUFNRSxlQUFlLElBQUksQ0FBQ0QsZUFBZSxJQUNuQzRDLDhCQUErQnpDLG9CQUFvQkY7Z0JBRXpELElBQUkyQyw2QkFBNkI7b0JBQy9CRiw0QkFBNEI7Z0JBQzlCO1lBQ0Y7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUcsU0FBUztRQUNQLE1BQU1DLGlCQUFpQkMsSUFBQUEsZ0NBQTBCLEVBQUMsSUFBSSxDQUFDNUUsVUFBVSxHQUMzRDZFLGlCQUFpQkMsSUFBQUEsZ0NBQTBCLEVBQUMsSUFBSSxDQUFDN0UsVUFBVSxHQUMzRDhFLGtCQUFrQkMsSUFBQUEsa0NBQTRCLEVBQUMsSUFBSSxDQUFDOUUsV0FBVyxHQUMvREYsYUFBYTJFLGdCQUNiMUUsYUFBYTRFLGdCQUNiM0UsY0FBYzZFLGlCQUNkbkYsU0FBUyxJQUFJLENBQUNxRixTQUFTLElBQ3ZCQyxPQUFPO1lBQ0x0RjtZQUNBSTtZQUNBQztZQUNBQztRQUNGO1FBRU4sT0FBT2dGO0lBQ1Q7SUFFQSxPQUFPcEYsT0FBTyxPQUFPO0lBRXJCLE9BQU9xRixTQUFTRCxJQUFJLEVBQUV2RixPQUFPLEVBQUU7UUFDN0IsTUFBTWlELE9BQU93QyxJQUFBQSxrQkFBUyxFQUFDLENBQUN6RjtZQUN0QixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHc0YsTUFDYjFFLFdBQVc2RSxJQUFBQSw0QkFBZSxFQUFDekYsUUFBUUQsVUFDbkNFLE9BQU9XLFVBQ1BWLE9BQU93RixJQUFBQSx5QkFBZ0IsRUFBQzlFLFVBQVViLFVBQ2xDSSxhQUFhd0YsSUFBQUEsK0JBQXNCLEVBQUMvRSxVQUFVYixVQUM5Q0ssYUFBYXdGLElBQUFBLHdCQUFrQixFQUFDTixNQUFNdkYsVUFDdENNLGFBQWF3RixJQUFBQSx3QkFBa0IsRUFBQ1AsTUFBTXZGLFVBQ3RDTyxjQUFjd0YsSUFBQUEseUJBQW1CLEVBQUNSO1lBRXhDdkYsVUFBVSxNQUFNLEdBQUc7WUFFbkIsTUFBTWlELE9BQU8sSUFBSW5ELEtBQUtFLFNBQVNDLFFBQVFDLE1BQU1DLE1BQU1DLFlBQVlDLFlBQVlDLFlBQVlDO1lBRXZGLE9BQU8wQztRQUNULEdBQUdqRDtRQUVILE9BQU9pRDtJQUNUO0lBRUEsT0FBTytDLFNBQVM3RixJQUFJLEVBQUVILE9BQU8sRUFBRTtRQUM3QixNQUFNQyxTQUFTRSxNQUNURCxPQUFPLE1BQ1BFLGFBQWEsTUFDYkMsYUFBYSxFQUFFLEVBQ2ZDLGFBQWEsRUFBRSxFQUNmQyxjQUFjO1FBRXBCUCxVQUFVO1FBRVYsTUFBTWlELE9BQU8sSUFBSW5ELEtBQUtFLFNBQVNDLFFBQVFDLE1BQU1DLE1BQU1DLFlBQVlDLFlBQVlDLFlBQVlDO1FBRXZGLE9BQU8wQztJQUNUO0FBQ0YifQ==
@@ -99,6 +99,9 @@ _export(exports, {
99
99
  get instantiateTermSubstitution () {
100
100
  return instantiateTermSubstitution;
101
101
  },
102
+ get instantiateType () {
103
+ return instantiateType;
104
+ },
102
105
  get instantiateTypePrefix () {
103
106
  return instantiateTypePrefix;
104
107
  },
@@ -108,7 +111,7 @@ _export(exports, {
108
111
  });
109
112
  const _bnf = require("../utilities/bnf");
110
113
  const _ruleNames = require("../ruleNames");
111
- const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RULE_NAME), judgementlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.JUDGEMENT_RULE_NAME), deductionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.HYPOTHESIS_RULE_NAME), assumptionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.ASSUMPTION_RULE_NAME), typePrefixPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), procedureCalllaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_CALL_RULE_NAME), propertyRelationlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RELATION_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), satisfiesAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SATISFIES_ASSERTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
114
+ const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), typePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RULE_NAME), judgementlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.JUDGEMENT_RULE_NAME), deductionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.HYPOTHESIS_RULE_NAME), assumptionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.ASSUMPTION_RULE_NAME), typePrefixPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), procedureCalllaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_CALL_RULE_NAME), propertyRelationlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RELATION_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), satisfiesAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SATISFIES_ASSERTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
112
115
  function instantiatePremise(string, context) {
113
116
  string = `${string}
114
117
  `; ///
@@ -132,6 +135,9 @@ function instantiateSupposition(string, context) {
132
135
  function instantiateTerm(string, context) {
133
136
  return instantiate(termPlaceholderRule, string, context);
134
137
  }
138
+ function instantiateType(string, context) {
139
+ return instantiate(typePlaceholderRule, string, context);
140
+ }
135
141
  function instantiateFrame(string, context) {
136
142
  return instantiate(framePlaceholderRule, string, context);
137
143
  }
@@ -228,4 +234,4 @@ function instantiate(placeholderRule, string, context) {
228
234
  return node;
229
235
  }
230
236
 
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgRlJBTUVfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgUFJFTUlTRV9SVUxFX05BTUUsXG4gICAgICAgICBWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBFUVVBTElUWV9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9SVUxFX05BTUUsXG4gICAgICAgICBKVURHRU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgREVEVUNUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFBBUkFNRVRFUl9SVUxFX05BTUUsXG4gICAgICAgICBTVEFURU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTUJJTkFUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgQ09OQ0xVU0lPTl9SVUxFX05BTUUsXG4gICAgICAgICBIWVBPVEhFU0lTX1JVTEVfTkFNRSxcbiAgICAgICAgIEFTU1VNUFRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9QUkVGSVhfUlVMRV9OQU1FLFxuICAgICAgICAgU1VQUE9TSVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgRVFVSVZBTEVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JFTEFUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdGVybVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVEVSTV9SVUxFX05BTUUpLFxuICAgICAgZnJhbWVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEZSQU1FX1JVTEVfTkFNRSksXG4gICAgICBsYWJlbFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoTEFCRUxfUlVMRV9OQU1FKSxcbiAgICAgIHByZW1pc2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBSRU1JU0VfUlVMRV9OQU1FKSxcbiAgICAgIHZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUFMSVRZX1JVTEVfTkFNRSksXG4gICAgICBwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfUlVMRV9OQU1FKSxcbiAgICAgIGp1ZGdlbWVudGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShKVURHRU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVEVUNUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBBUkFNRVRFUl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIHJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT01CSU5BVE9SX1JVTEVfTkFNRSksXG4gICAgICBjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05DTFVTSU9OX1JVTEVfTkFNRSksXG4gICAgICBoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShIWVBPVEhFU0lTX1JVTEVfTkFNRSksXG4gICAgICBhc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShBU1NVTVBUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1BSRUZJWF9SVUxFX05BTUUpLFxuICAgICAgc3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNVUFBPU0lUSU9OX1JVTEVfTkFNRSksXG4gICAgICBjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OU1RSVUNUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShFUVVJVkFMRU5DRV9SVUxFX05BTUUpLFxuICAgICAgbWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX0NBTExfUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5UmVsYXRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByZW1pc2Uoc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUocHJlbWlzZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdXBwb3NpdGlvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRnJhbWUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShmcmFtZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGxhYmVsUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUp1ZGdlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGp1ZGdlbWVudGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVBhcmFtZXRlcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdGF0ZW1lbnQoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUh5cG90aGVzaXMoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShhc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVR5cGVQcmVmaXgoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1aXZhbGVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVNZXRhdmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlQ2FsbChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eVJlbGF0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlSZWxhdGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTYXRpc2ZpZXNBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzYXRpc2ZpZXNBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShwbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCkge1xuICBsZXQgbm9kZTtcblxuICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgY29udGVudCA9IGAke3N0cmluZ31cbmAsXG4gICAgICAgIHRva2VucyA9IGxleGVyLnRva2VuaXNlKGNvbnRlbnQpO1xuXG4gIGNvbnRleHQuc2V0VG9rZW5zKHRva2Vucyk7XG5cbiAgY29uc3Qgc3RhcnRSdWxlID0gcGxhY2Vob2xkZXJSdWxlOyAgLy8vXG5cbiAgbm9kZSA9IHBhcnNlci5wYXJzZSh0b2tlbnMsIHN0YXJ0UnVsZSk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgbm9uVGVybWluYWxOb2RlLnNvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgIG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBub2RlO1xufVxuIl0sIm5hbWVzIjpbImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsImluc3RhbnRpYXRlQ29tYmluYXRvciIsImluc3RhbnRpYXRlQ29uY2x1c2lvbiIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVFcXVhbGl0eSIsImluc3RhbnRpYXRlRXF1aXZhbGVuY2UiLCJpbnN0YW50aWF0ZUZyYW1lIiwiaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlSHlwb3RoZXNpcyIsImluc3RhbnRpYXRlSnVkZ2VtZW50IiwiaW5zdGFudGlhdGVMYWJlbCIsImluc3RhbnRpYXRlTWV0YXZhcmlhYmxlIiwiaW5zdGFudGlhdGVQYXJhbWV0ZXIiLCJpbnN0YW50aWF0ZVByZW1pc2UiLCJpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwiLCJpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUHJvcGVydHkiLCJpbnN0YW50aWF0ZVByb3BlcnR5UmVsYXRpb24iLCJpbnN0YW50aWF0ZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTYXRpc2ZpZXNBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVN0YXRlbWVudCIsImluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTdWJwcm9vZkFzc2VydGlvbiIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJpbnN0YW50aWF0ZVRlcm0iLCJpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVR5cGVQcmVmaXgiLCJpbnN0YW50aWF0ZVZhcmlhYmxlIiwidGVybVBsYWNlaG9sZGVyUnVsZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJURVJNX1JVTEVfTkFNRSIsImZyYW1lUGxhY2Vob2xkZXJSdWxlIiwiRlJBTUVfUlVMRV9OQU1FIiwibGFiZWxQbGFjZWhvbGRlclJ1bGUiLCJMQUJFTF9SVUxFX05BTUUiLCJwcmVtaXNlUGxhY2Vob2xkZXJSdWxlIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJ2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSIsIlZBUklBQkxFX1JVTEVfTkFNRSIsImVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlIiwiRVFVQUxJVFlfUlVMRV9OQU1FIiwicHJvcGVydHlQbGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9SVUxFX05BTUUiLCJqdWRnZW1lbnRsYWNlaG9sZGVyUnVsZSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUiLCJERURVQ1RJT05fUlVMRV9OQU1FIiwicGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsInN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUiLCJSRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29tYmluYXRvclBsYWNlaG9sZGVyUnVsZSIsIkNPTUJJTkFUT1JfUlVMRV9OQU1FIiwiY29uY2x1c2lvblBsYWNlaG9sZGVyUnVsZSIsIkNPTkNMVVNJT05fUlVMRV9OQU1FIiwiaHlwb3RoZXNpc1BsYWNlaG9sZGVyUnVsZSIsIkhZUE9USEVTSVNfUlVMRV9OQU1FIiwiYXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSIsIkFTU1VNUFRJT05fUlVMRV9OQU1FIiwidHlwZVByZWZpeFBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUFJFRklYX1JVTEVfTkFNRSIsInN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU1VQUE9TSVRJT05fUlVMRV9OQU1FIiwiY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUiLCJDT05TVFJVQ1RPUl9SVUxFX05BTUUiLCJlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSIsIkVRVUlWQUxFTkNFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJwcm9jZWR1cmVDYWxsbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUiLCJwcm9wZXJ0eVJlbGF0aW9ubGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUiLCJkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwidGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwic2F0aXNmaWVzQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU0FUSVNGSUVTX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3RyaW5nIiwiY29udGV4dCIsImluc3RhbnRpYXRlIiwicGxhY2Vob2xkZXJSdWxlIiwibm9kZSIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJjb250ZW50IiwidG9rZW5zIiwidG9rZW5pc2UiLCJzZXRUb2tlbnMiLCJzdGFydFJ1bGUiLCJwYXJzZSIsIm5vblRlcm1pbmFsTm9kZSIsInNvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXlIZ0JBO2VBQUFBOztRQUpBQztlQUFBQTs7UUFsQ0FDO2VBQUFBOztRQTBDQUM7ZUFBQUE7O1FBb0JBQztlQUFBQTs7UUFyRUFDO2VBQUFBOztRQTJEQUM7ZUFBQUE7O1FBOUJBQztlQUFBQTs7UUFzQkFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQVZBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBNEJBQztlQUFBQTs7UUFsQkFDO2VBQUFBOztRQTFDQUM7ZUFBQUE7O1FBOERBQztlQUFBQTs7UUFZQUM7ZUFBQUE7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
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9SVUxFX05BTUUsXG4gICAgICAgICBMQUJFTF9SVUxFX05BTUUsXG4gICAgICAgICBQUkVNSVNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUFMSVRZX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JVTEVfTkFNRSxcbiAgICAgICAgIEpVREdFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBERURVQ1RJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgQ09NQklOQVRPUl9SVUxFX05BTUUsXG4gICAgICAgICBDT05DTFVTSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEhZUE9USEVTSVNfUlVMRV9OQU1FLFxuICAgICAgICAgQVNTVU1QVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBUWVBFX1BSRUZJWF9SVUxFX05BTUUsXG4gICAgICAgICBTVVBQT1NJVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJVQ1RPUl9SVUxFX05BTUUsXG4gICAgICAgICBFUVVJVkFMRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICAgUFJPQ0VEVVJFX0NBTExfUlVMRV9OQU1FLFxuICAgICAgICAgUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU0FUSVNGSUVTX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCB0ZXJtUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfUlVMRV9OQU1FKSxcbiAgICAgIGxhYmVsUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShMQUJFTF9SVUxFX05BTUUpLFxuICAgICAgcHJlbWlzZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJFTUlTRV9SVUxFX05BTUUpLFxuICAgICAgdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFZBUklBQkxFX1JVTEVfTkFNRSksXG4gICAgICBlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRVFVQUxJVFlfUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9QRVJUWV9SVUxFX05BTUUpLFxuICAgICAganVkZ2VtZW50bGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEpVREdFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShERURVQ1RJT05fUlVMRV9OQU1FKSxcbiAgICAgIHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUEFSQU1FVEVSX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEhZUE9USEVTSVNfUlVMRV9OQU1FKSxcbiAgICAgIGFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEFTU1VNUFRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRZUEVfUFJFRklYX1JVTEVfTkFNRSksXG4gICAgICBzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VQUE9TSVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgcHJvY2VkdXJlQ2FsbGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUpLFxuICAgICAgcHJvcGVydHlSZWxhdGlvbmxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUpLFxuICAgICAgZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHNhdGlzZmllc0Fzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU0FUSVNGSUVTX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJlbWlzZShzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShwcmVtaXNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUoZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25jbHVzaW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1cHBvc2l0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodGVybVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUxhYmVsKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobGFiZWxQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVhbGl0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb3BlcnR5KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSnVkZ2VtZW50KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoanVkZ2VtZW50bGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUGFyYW1ldGVyKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSHlwb3RoZXNpcyhzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVHlwZVByZWZpeChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uc3RydWN0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVpdmFsZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZU1ldGF2YXJpYWJsZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKG1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9jZWR1cmVDYWxsKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvY2VkdXJlQ2FsbGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb3BlcnR5UmVsYXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9wZXJ0eVJlbGF0aW9ubGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVNhdGlzZmllc0Fzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHNhdGlzZmllc0Fzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlKHBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KSB7XG4gIGxldCBub2RlO1xuXG4gIGNvbnN0IGxleGVyID0gY29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICBwYXJzZXIgPSBjb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICBjb250ZW50ID0gYCR7c3RyaW5nfVxuYCxcbiAgICAgICAgdG9rZW5zID0gbGV4ZXIudG9rZW5pc2UoY29udGVudCk7XG5cbiAgY29udGV4dC5zZXRUb2tlbnModG9rZW5zKTtcblxuICBjb25zdCBzdGFydFJ1bGUgPSBwbGFjZWhvbGRlclJ1bGU7ICAvLy9cblxuICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2Vucywgc3RhcnRSdWxlKTtcblxuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAvLy9cblxuICBub25UZXJtaW5hbE5vZGUuc29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG5vZGU7XG59XG4iXSwibmFtZXMiOlsiaW5zdGFudGlhdGVBc3N1bXB0aW9uIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwiaW5zdGFudGlhdGVDb25jbHVzaW9uIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZUVxdWFsaXR5IiwiaW5zdGFudGlhdGVFcXVpdmFsZW5jZSIsImluc3RhbnRpYXRlRnJhbWUiLCJpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVIeXBvdGhlc2lzIiwiaW5zdGFudGlhdGVKdWRnZW1lbnQiLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsImluc3RhbnRpYXRlUHJlbWlzZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlQ2FsbCIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eSIsImluc3RhbnRpYXRlUHJvcGVydHlSZWxhdGlvbiIsImluc3RhbnRpYXRlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVNhdGlzZmllc0Fzc2VydGlvbiIsImluc3RhbnRpYXRlU3RhdGVtZW50IiwiaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVTdXBwb3NpdGlvbiIsImluc3RhbnRpYXRlVGVybSIsImluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlVHlwZSIsImluc3RhbnRpYXRlVHlwZVByZWZpeCIsImluc3RhbnRpYXRlVmFyaWFibGUiLCJ0ZXJtUGxhY2Vob2xkZXJSdWxlIiwicnVsZUZyb21SdWxlTmFtZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZVBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUlVMRV9OQU1FIiwiZnJhbWVQbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9SVUxFX05BTUUiLCJsYWJlbFBsYWNlaG9sZGVyUnVsZSIsIkxBQkVMX1JVTEVfTkFNRSIsInByZW1pc2VQbGFjZWhvbGRlclJ1bGUiLCJQUkVNSVNFX1JVTEVfTkFNRSIsInZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX1JVTEVfTkFNRSIsImp1ZGdlbWVudGxhY2Vob2xkZXJSdWxlIiwiSlVER0VNRU5UX1JVTEVfTkFNRSIsImRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSIsIkRFRFVDVElPTl9SVUxFX05BTUUiLCJwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUiLCJQQVJBTUVURVJfUlVMRV9OQU1FIiwic3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsInJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlIiwiSFlQT1RIRVNJU19SVUxFX05BTUUiLCJhc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlIiwiQVNTVU1QVElPTl9SVUxFX05BTUUiLCJ0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwic3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVVBQT1NJVElPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSIsInByb3BlcnR5UmVsYXRpb25sYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX1JFTEFUSU9OX1JVTEVfTkFNRSIsImRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJ0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzYXRpc2ZpZXNBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJTQVRJU0ZJRVNfQVNTRVJUSU9OX1JVTEVfTkFNRSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJzdHJpbmciLCJjb250ZXh0IiwiaW5zdGFudGlhdGUiLCJwbGFjZWhvbGRlclJ1bGUiLCJub2RlIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsImNvbnRlbnQiLCJ0b2tlbnMiLCJ0b2tlbmlzZSIsInNldFRva2VucyIsInN0YXJ0UnVsZSIsInBhcnNlIiwibm9uVGVybWluYWxOb2RlIiwic29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FB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
@@ -192,6 +192,9 @@ _export(exports, {
192
192
  get propertyRelationsToPropertyRelationsJSON () {
193
193
  return propertyRelationsToPropertyRelationsJSON;
194
194
  },
195
+ get provisionalFromJSON () {
196
+ return provisionalFromJSON;
197
+ },
195
198
  get provisionalToProvisionalJSON () {
196
199
  return provisionalToProvisionalJSON;
197
200
  },
@@ -400,6 +403,10 @@ function conclusionFromJSON(json, context) {
400
403
  conclusion = Conclusion.fromJSON(json, context);
401
404
  return conclusion;
402
405
  }
406
+ function provisionalFromJSON(json, context) {
407
+ const { provisional } = json;
408
+ return provisional;
409
+ }
403
410
  function metavariableFromJSON(json, context) {
404
411
  let { metavariable } = json;
405
412
  const { Metavariable } = _elements.default, metavariableJSON = metavariable; ///
@@ -969,4 +976,4 @@ function findTypeByNameAndPrefixName(name, prefixName, context) {
969
976
  return type;
970
977
  }
971
978
 
972
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm07ICAvLy9cblxuICAgIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZUNhbGwgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFR5cGVOYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IG5vbWluYWxUeXBlTmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gbm9taW5hbFR5cGVOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHByb2NlZHVyZVJlZmVyZW5jZUpTT047ICAvLy9cblxuICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBQcm9jZWR1cmVSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyB0eXBlczogdHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHM7XG5cbiAgdHlwZXNKU09OLmZvckVhY2goKHR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbCB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXM7IC8vL1xuXG4gIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0pTT04ubWFwKCh2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvcGVydGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzOyAvLy9cblxuICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04ubWFwKChwcm9wZXJ0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvcGVydHlKU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHkgPSBQcm9wZXJ0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHN1cGVyVHlwZXM6IHN1cGVyVHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTi5tYXAoKHN1cGVyVHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gc3VwZXJUeXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbixcbiAgICAgICAgICAgICAgICB0eXBlID0gZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lKG5hbWUsIHByZWZpeE5hbWUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNhdGlzZmllc0Fzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlczsgLy8vXG5cbiAgcmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNKU09OLm1hcCgocmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSByZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVQcmVmaXhlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVQcmVmaXggfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zOyAvLy9cblxuICBtZXRhdGhlb3JlbXMgPSBtZXRhdGhlb3JlbXNKU09OLm1hcCgobWV0YXRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF0aGVvcmVtID0gTWV0YXRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyA9IFtdIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3QgeyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMsICAvLy9cbiAgICAgICAgU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0O1xuXG4gICh7Y29udGV4dH0gPSBqc29uKTtcblxuICBqc29uID0gY29udGV4dDsgLy8vXG5cbiAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICBjb25zdCBlbXBoZW1lcmFsQ29udGV4dCA9IEVwaGVtZXJhbENvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGVtcGhlbWVyYWxDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgY29uc3QgdHlwZUpTT04gPSAodHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gbWV0YVR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OKHJlZmVyZW5jZSkge1xuICBjb25zdCByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiByZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHN0YXRlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRKU09OID0gKHN0YXRlbWVudCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHN0YXRlbWVudEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04oZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04oc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZUpTT04gPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OKGlkZW50aWZpZXIpIHtcbiAgY29uc3QgaWRlbnRpZmllckpTT04gPSBpZGVudGlmaWVyOyAgLy8vXG5cbiAgcmV0dXJuIGlkZW50aWZpZXJKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTihwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpb25hbEpTT04gPSBwcm92aXNpb25hbDsgIC8vL1xuXG4gIHJldHVybiBwcm92aXNpb25hbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04obWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTihwcm9jZWR1cmVDYWxsKSB7XG4gIGNvbnN0IHByb2NlZHVyZUNhbGxKU09OID0gKHByb2NlZHVyZUNhbGwgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxUeXBlTmFtZVRvTm9taW5hbFR5cGVOYW1lSlNPTihub21pbmFsVHlwZU5hbWUpIHtcbiAgY29uc3Qgbm9taW5hbFR5cGVOYW1lSlNPTiA9IG5vbWluYWxUeXBlTmFtZTsgIC8vL1xuXG4gIHJldHVybiBub21pbmFsVHlwZU5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OKHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlci50b0pTT04oKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJKU09OO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lKG5hbWUsIHByZWZpeE5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ByZWZpeE5hbWV9JHtuYW1lfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lRnJvbUpTT04iLCJmcmFtZVRvRnJhbWVKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImlkZW50aWZpZXJGcm9tSlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwianVkZ2VtZW50c0Zyb21KU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm5hbWVGcm9tSlNPTiIsIm5hbWVUb05hbWVKU09OIiwibmVnYXRlZEZyb21KU09OIiwibmVnYXRlZFRvTmVnYXRlZEpTT04iLCJub21pbmFsVHlwZU5hbWVGcm9tSlNPTiIsIm5vbWluYWxUeXBlTmFtZVRvTm9taW5hbFR5cGVOYW1lSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImxlbW1hcyIsIm1ldGFMZW1tYXMiLCJqc29uIiwiY29udGV4dCIsIm5hbWUiLCJuYW1lSlNPTiIsInRlcm0iLCJ0ZXJtSlNPTiIsIlRlcm0iLCJlbGVtZW50cyIsImZyb21KU09OIiwidHlwZSIsInByZWZpeE5hbWUiLCJmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUiLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsIm5vbWluYWxUeXBlTmFtZSIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWVzIiwiZnJhbWVzSlNPTiIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwiU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsInJlbGVhc2VDb250ZXh0IiwiZW1waGVtZXJhbENvbnRleHQiLCJFcGhlbWVyYWxDb250ZXh0IiwicHJvcGVydHlSZWxhdGlvbnMiLCJQcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbkpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uIiwidG9KU09OIiwibmVnYXRlZEpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbCIsInByb3Zpc2lvbmFsSlNPTiIsIm5vbWluYWxUeXBlTmFtZUpTT04iLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQW9lZ0JBO2VBQUFBOztRQThlQUM7ZUFBQUE7O1FBemFBQztlQUFBQTs7UUFpZEFDO2VBQUFBOztRQXJzQkFDO2VBQUFBOztRQStpQkFDO2VBQUFBOztRQTNVQUM7ZUFBQUE7O1FBdWRBQztlQUFBQTs7UUFqMUJBQztlQUFBQTs7UUE2bUJBQztlQUFBQTs7UUFuUUFDO2VBQUFBOztRQTZkQUM7ZUFBQUE7O1FBN1pBQztlQUFBQTs7UUFxY0FDO2VBQUFBOztRQWw2QkFDO2VBQUFBOztRQTRvQkFDO2VBQUFBOztRQTlGQUM7ZUFBQUE7O1FBclNBQztlQUFBQTs7UUF5a0JBQztlQUFBQTs7UUFyNEJBQztlQUFBQTs7UUFxcEJBQztlQUFBQTs7UUF6YkFDO2VBQUFBOztRQXFrQkFDO2VBQUFBOztRQXRiQUM7ZUFBQUE7O1FBd2VBQztlQUFBQTs7UUF2dkJBQztlQUFBQTs7UUFpbkJBQztlQUFBQTs7UUFsVUFDO2VBQUFBOztRQWdmQUM7ZUFBQUE7O1FBNXFCQUM7ZUFBQUE7O1FBOGNBQztlQUFBQTs7UUFqYkFDO2VBQUFBOztRQTJpQkFDO2VBQUFBOztRQTMwQkFDO2VBQUFBOztRQU1BQztlQUFBQTs7UUFvRUFDO2VBQUFBOztRQW1wQkFDO2VBQUFBOztRQXpJQUM7ZUFBQUE7O1FBK2JBQztlQUFBQTs7UUE1MkJBQztlQUFBQTs7UUE0bUJBQztlQUFBQTs7UUE5SUFDO2VBQUFBOztRQTRhQUM7ZUFBQUE7O1FBcmlDQUM7ZUFBQUE7O1FBdXFCQUM7ZUFBQUE7O1FBL21CQUM7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
979
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm07ICAvLy9cblxuICAgIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZUNhbGwgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFR5cGVOYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IG5vbWluYWxUeXBlTmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gbm9taW5hbFR5cGVOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHByb2NlZHVyZVJlZmVyZW5jZUpTT047ICAvLy9cblxuICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBQcm9jZWR1cmVSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyB0eXBlczogdHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHM7XG5cbiAgdHlwZXNKU09OLmZvckVhY2goKHR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbCB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXM7IC8vL1xuXG4gIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0pTT04ubWFwKCh2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvcGVydGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzOyAvLy9cblxuICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04ubWFwKChwcm9wZXJ0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvcGVydHlKU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHkgPSBQcm9wZXJ0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHN1cGVyVHlwZXM6IHN1cGVyVHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTi5tYXAoKHN1cGVyVHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gc3VwZXJUeXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbixcbiAgICAgICAgICAgICAgICB0eXBlID0gZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lKG5hbWUsIHByZWZpeE5hbWUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNhdGlzZmllc0Fzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlczsgLy8vXG5cbiAgcmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNKU09OLm1hcCgocmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSByZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVQcmVmaXhlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVQcmVmaXggfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zOyAvLy9cblxuICBtZXRhdGhlb3JlbXMgPSBtZXRhdGhlb3JlbXNKU09OLm1hcCgobWV0YXRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF0aGVvcmVtID0gTWV0YXRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyA9IFtdIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3QgeyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMsICAvLy9cbiAgICAgICAgU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0O1xuXG4gICh7Y29udGV4dH0gPSBqc29uKTtcblxuICBqc29uID0gY29udGV4dDsgLy8vXG5cbiAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICBjb25zdCBlbXBoZW1lcmFsQ29udGV4dCA9IEVwaGVtZXJhbENvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGVtcGhlbWVyYWxDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgY29uc3QgdHlwZUpTT04gPSAodHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gbWV0YVR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OKHJlZmVyZW5jZSkge1xuICBjb25zdCByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiByZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHN0YXRlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRKU09OID0gKHN0YXRlbWVudCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHN0YXRlbWVudEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04oZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04oc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZUpTT04gPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OKGlkZW50aWZpZXIpIHtcbiAgY29uc3QgaWRlbnRpZmllckpTT04gPSBpZGVudGlmaWVyOyAgLy8vXG5cbiAgcmV0dXJuIGlkZW50aWZpZXJKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTihwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpb25hbEpTT04gPSBwcm92aXNpb25hbDsgIC8vL1xuXG4gIHJldHVybiBwcm92aXNpb25hbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04obWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTihwcm9jZWR1cmVDYWxsKSB7XG4gIGNvbnN0IHByb2NlZHVyZUNhbGxKU09OID0gKHByb2NlZHVyZUNhbGwgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxUeXBlTmFtZVRvTm9taW5hbFR5cGVOYW1lSlNPTihub21pbmFsVHlwZU5hbWUpIHtcbiAgY29uc3Qgbm9taW5hbFR5cGVOYW1lSlNPTiA9IG5vbWluYWxUeXBlTmFtZTsgIC8vL1xuXG4gIHJldHVybiBub21pbmFsVHlwZU5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OKHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlci50b0pTT04oKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJKU09OO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lKG5hbWUsIHByZWZpeE5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ByZWZpeE5hbWV9JHtuYW1lfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lRnJvbUpTT04iLCJmcmFtZVRvRnJhbWVKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImlkZW50aWZpZXJGcm9tSlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwianVkZ2VtZW50c0Zyb21KU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm5hbWVGcm9tSlNPTiIsIm5hbWVUb05hbWVKU09OIiwibmVnYXRlZEZyb21KU09OIiwibmVnYXRlZFRvTmVnYXRlZEpTT04iLCJub21pbmFsVHlwZU5hbWVGcm9tSlNPTiIsIm5vbWluYWxUeXBlTmFtZVRvTm9taW5hbFR5cGVOYW1lSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJyZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJyZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN0YXRlbWVudHNGcm9tSlNPTiIsInN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OIiwic3Vic3RpdHV0aW9uc0Zyb21KU09OIiwic3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04iLCJzdXBlclR5cGVzRnJvbUpTT04iLCJzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwidGVybUZyb21KU09OIiwidGVybVRvVGVybUpTT04iLCJ0ZXJtc0Zyb21KU09OIiwidGVybXNUb1Rlcm1zSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwidHlwZUZyb21KU09OIiwidHlwZVByZWZpeGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidmFyaWFibGVzRnJvbUpTT04iLCJ2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04iLCJsZW1tYXMiLCJtZXRhTGVtbWFzIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJwcmVmaXhOYW1lIiwiZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lIiwiZnJhbWUiLCJmcmFtZUpTT04iLCJGcmFtZSIsIm5lZ2F0ZWQiLCJtZXRhVHlwZSIsImZpbmRNZXRhVHlwZUJ5TmFtZSIsInN0YXRlbWVudCIsIlN0YXRlbWVudCIsInN0YXRlbWVudEpTT04iLCJkZWR1Y3Rpb24iLCJEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25KU09OIiwic2lnbmF0dXJlIiwiU2lnbmF0dXJlIiwic2lnbmF0dXJlSlNPTiIsInJlZmVyZW5jZSIsIlJlZmVyZW5jZSIsInJlZmVyZW5jZUpTT04iLCJpZGVudGlmaWVyIiwiaWRlbnRpZmllckpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwicHJvdmlzaW9uYWwiLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsIm5vbWluYWxUeXBlTmFtZSIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWVzIiwiZnJhbWVzSlNPTiIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwiU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsInJlbGVhc2VDb250ZXh0IiwiZW1waGVtZXJhbENvbnRleHQiLCJFcGhlbWVyYWxDb250ZXh0IiwicHJvcGVydHlSZWxhdGlvbnMiLCJQcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbkpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uIiwidG9KU09OIiwibmVnYXRlZEpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJub21pbmFsVHlwZU5hbWVKU09OIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEwZWdCQTtlQUFBQTs7UUE4ZUFDO2VBQUFBOztRQXphQUM7ZUFBQUE7O1FBaWRBQztlQUFBQTs7UUFyc0JBQztlQUFBQTs7UUEraUJBQztlQUFBQTs7UUEzVUFDO2VBQUFBOztRQXVkQUM7ZUFBQUE7O1FBdjFCQUM7ZUFBQUE7O1FBbW5CQUM7ZUFBQUE7O1FBblFBQztlQUFBQTs7UUE2ZEFDO2VBQUFBOztRQTdaQUM7ZUFBQUE7O1FBcWNBQztlQUFBQTs7UUF4NkJBQztlQUFBQTs7UUFrcEJBQztlQUFBQTs7UUE5RkFDO2VBQUFBOztRQXJTQUM7ZUFBQUE7O1FBeWtCQUM7ZUFBQUE7O1FBMzRCQUM7ZUFBQUE7O1FBMnBCQUM7ZUFBQUE7O1FBemJBQztlQUFBQTs7UUFxa0JBQztlQUFBQTs7UUF0YkFDO2VBQUFBOztRQXdlQUM7ZUFBQUE7O1FBN3ZCQUM7ZUFBQUE7O1FBdW5CQUM7ZUFBQUE7O1FBbFVBQztlQUFBQTs7UUFnZkFDO2VBQUFBOztRQTVxQkFDO2VBQUFBOztRQThjQUM7ZUFBQUE7O1FBamJBQztlQUFBQTs7UUEyaUJBQztlQUFBQTs7UUFqMUJBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBb0VBQztlQUFBQTs7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.702",
4
+ "version": "1.0.704",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -8,7 +8,7 @@ import { instantiateConstructor } from "../process/instantiate";
8
8
  import { verifyTermAsConstructor } from "../process/verify";
9
9
  import { termFromConstructorNode } from "../utilities/element";
10
10
  import { unifyTermWithConstructor } from "../process/unify";
11
- import { ephemeralContextFromJSON } from "../utilities/json";
11
+ import { termToTermJSON, ephemeralContextFromJSON } from "../utilities/json";
12
12
 
13
13
  export default define(class Constructor extends Element {
14
14
  constructor(context, string, node, term) {
@@ -30,20 +30,17 @@ export default define(class Constructor extends Element {
30
30
 
31
31
  getType() { return this.term.getType(); }
32
32
 
33
- getString() {
33
+ getString(includeType = true) {
34
34
  let string;
35
35
 
36
- const type = this.getType();
37
-
38
- if (type === null) {
39
- const termString = this.term.getString();
40
-
41
- string = termString; ///
42
- } else {
43
- const typeString = type.getString(),
36
+ if (includeType) {
37
+ const type = this.getType(),
38
+ typeString = type.getString(),
44
39
  termString = this.term.getString();
45
40
 
46
41
  string = `${termString}.${typeString}`;
42
+ } else {
43
+ string = super.getString();
47
44
  }
48
45
 
49
46
  return string;
@@ -54,7 +51,8 @@ export default define(class Constructor extends Element {
54
51
  verify(context) {
55
52
  let verifies = false;
56
53
 
57
- const constructorString = this.getString(); ///
54
+ const includeType = false,
55
+ constructorString = this.getString(includeType);
58
56
 
59
57
  context.trace(`Verifying the '${constructorString}' constructor...`);
60
58
 
@@ -122,10 +120,14 @@ export default define(class Constructor extends Element {
122
120
 
123
121
  context = contextJSON; ///
124
122
 
125
- const string = this.getString(),
123
+ const includeType = false,
124
+ termJSON = termToTermJSON(this.term),
125
+ string = this.getString(includeType),
126
+ term = termJSON, ///
126
127
  json = {
127
128
  context,
128
- string
129
+ string,
130
+ term
129
131
  };
130
132
 
131
133
  return json;
@@ -104,7 +104,8 @@ export default define(class ConstructorDeclaration extends Declaration {
104
104
  let constructorVerifies;
105
105
 
106
106
  const context = this.getContext(),
107
- constructorString = this.constructor.getString(),
107
+ includeType = false,
108
+ constructorString = this.constructor.getString(includeType),
108
109
  constructorDeclarationString = this.getString(); ///
109
110
 
110
111
  context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration's '${constructorString}' constructor...`);
@@ -54,9 +54,13 @@ export default define(class SimpleTypeDeclaration extends Declaration {
54
54
  const typePrefixVerifies = this.verifyTypePrefix();
55
55
 
56
56
  if (typePrefixVerifies) {
57
- context.addType(this.type);
57
+ const propertiesVerifies = this.verifyProperties();
58
58
 
59
- verifies = true;
59
+ if (propertiesVerifies) {
60
+ context.addType(this.type);
61
+
62
+ verifies = true;
63
+ }
60
64
  }
61
65
  }
62
66
  }
@@ -163,7 +167,7 @@ export default define(class SimpleTypeDeclaration extends Declaration {
163
167
 
164
168
  if (superTypesLength === 0) {
165
169
  const baseType = baseTypeFromNothing(),
166
- superTyupe = baseType; ///
170
+ superTyupe = baseType; ///
167
171
 
168
172
  superTypes.push(superTyupe);
169
173
  }
@@ -182,8 +186,8 @@ export default define(class SimpleTypeDeclaration extends Declaration {
182
186
  let typePrefixVerifies = false;
183
187
 
184
188
  const context = this.getContext(),
185
- typeString = this.type.getString(),
186
- simpleTypeDeclarationString = this.getString(); ///;
189
+ typeString = this.type.getString(),
190
+ simpleTypeDeclarationString = this.getString(); ///;
187
191
 
188
192
  context.trace(`Verifying the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's prefix...`);
189
193
 
@@ -192,7 +196,7 @@ export default define(class SimpleTypeDeclaration extends Declaration {
192
196
  if (!typePrefixed) {
193
197
  typePrefixVerifies = true;
194
198
  } else {
195
- context.debug(`...verified the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type is prefixed.`);
199
+ context.debug(`The '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type is prefixed.`);
196
200
  }
197
201
 
198
202
  if (typePrefixVerifies) {
@@ -202,5 +206,25 @@ export default define(class SimpleTypeDeclaration extends Declaration {
202
206
  return typePrefixVerifies;
203
207
  }
204
208
 
209
+ verifyProperties() {
210
+ let propertiesVerify = true; ///
211
+
212
+ const context = this.getContext(),
213
+ typeString = this.type.getString(),
214
+ simpleTypeDeclarationString = this.getString(); ///;
215
+
216
+ context.trace(`Verifying the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's properties...`);
217
+
218
+ const properties = [];
219
+
220
+ this.type.setProperties(properties);
221
+
222
+ if (propertiesVerify) {
223
+ context.debug(`...verified the '${simpleTypeDeclarationString}' simple type declaration's '${typeString}' type's properties.`);
224
+ }
225
+
226
+ return propertiesVerify;
227
+ }
228
+
205
229
  static name = "SimpleTypeDeclaration";
206
230
  });
@@ -227,8 +227,8 @@ export default define(class Term extends Element {
227
227
  string = this.getString(), ///
228
228
  type = typeJSON, ///
229
229
  json = {
230
- type,
231
- string
230
+ string,
231
+ type
232
232
  };
233
233
 
234
234
  return json;
@@ -7,8 +7,8 @@ import { define } from "../elements";
7
7
  import { literally } from "../utilities/context";
8
8
  import { instantiateType } from "../process/instantiate";
9
9
  import { baseTypeFromNothing } from "../utilities/type";
10
- import { superTypesFromJSON, superTypesToSuperTypesJSON } from "../utilities/json";
11
- import { nameFromTypeNode, prefixNameFromTypeNode, propertiesFromTypeNode, provisionalFromTypeNode } from "../utilities/element";
10
+ import { nameFromTypeNode, prefixNameFromTypeNode } from "../utilities/element";
11
+ import { superTypesFromJSON, provisionalFromJSON, propertiesFromJSON, provisionalToProvisionalJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
12
12
 
13
13
  const { push, first } = arrayUtilities;
14
14
 
@@ -296,11 +296,17 @@ export default define(class Type extends Element {
296
296
 
297
297
  toJSON() {
298
298
  const superTypesJSON = superTypesToSuperTypesJSON(this.superTypes),
299
- superTypes = superTypesJSON,
299
+ propertiesJSON = propertiesToPropertiesJSON(this.properties),
300
+ provisinoalJSOM = provisionalToProvisionalJSON(this.provisional),
301
+ superTypes = superTypesJSON, ///
302
+ properties = propertiesJSON, ///
303
+ provisional = provisinoalJSOM, ///
300
304
  string = this.getString(),
301
305
  json = {
302
306
  string,
303
- superTypes
307
+ superTypes,
308
+ properties,
309
+ provisional
304
310
  };
305
311
 
306
312
  return json;
@@ -316,8 +322,8 @@ export default define(class Type extends Element {
316
322
  name = nameFromTypeNode(typeNode, context),
317
323
  prefixName = prefixNameFromTypeNode(typeNode, context),
318
324
  superTypes = superTypesFromJSON(json, context),
319
- properties = propertiesFromTypeNode(typeNode, context),
320
- provisional = provisionalFromTypeNode(typeNode, context);
325
+ properties = propertiesFromJSON(json, context),
326
+ provisional = provisionalFromJSON(json);
321
327
 
322
328
  context = null; ///
323
329
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { ruleFromRuleName } from "../utilities/bnf";
4
4
  import { TERM_RULE_NAME,
5
+ TYPE_RULE_NAME,
5
6
  FRAME_RULE_NAME,
6
7
  LABEL_RULE_NAME,
7
8
  PREMISE_RULE_NAME,
@@ -35,6 +36,7 @@ import { TERM_RULE_NAME,
35
36
  REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
36
37
 
37
38
  const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
39
+ typePlaceholderRule = ruleFromRuleName(TYPE_RULE_NAME),
38
40
  framePlaceholderRule = ruleFromRuleName(FRAME_RULE_NAME),
39
41
  labelPlaceholderRule = ruleFromRuleName(LABEL_RULE_NAME),
40
42
  premisePlaceholderRule = ruleFromRuleName(PREMISE_RULE_NAME),
@@ -97,6 +99,8 @@ export function instantiateSupposition(string, context) {
97
99
 
98
100
  export function instantiateTerm(string, context) { return instantiate(termPlaceholderRule, string, context); }
99
101
 
102
+ export function instantiateType(string, context) { return instantiate(typePlaceholderRule, string, context); }
103
+
100
104
  export function instantiateFrame(string, context) { return instantiate(framePlaceholderRule, string, context); }
101
105
 
102
106
  export function instantiateLabel(string, context) { return instantiate(labelPlaceholderRule, string, context); }
@@ -170,6 +170,12 @@ export function conclusionFromJSON(json, context) {
170
170
  return conclusion;
171
171
  }
172
172
 
173
+ export function provisionalFromJSON(json, context) {
174
+ const { provisional } = json;
175
+
176
+ return provisional;
177
+ }
178
+
173
179
  export function metavariableFromJSON(json, context) {
174
180
  let { metavariable } = json;
175
181