occam-nominal 1.0.610 → 1.0.614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/element/declaration/cotype.js +16 -19
- package/lib/element/declaration/type.js +14 -17
- package/lib/element/procedureReference.js +3 -3
- package/lib/element/type.js +7 -22
- package/package.json +5 -5
- package/src/element/declaration/cotype.js +17 -22
- package/src/element/declaration/type.js +15 -20
- package/src/element/procedureReference.js +2 -2
- package/src/element/type.js +6 -28
|
@@ -54,17 +54,18 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
54
54
|
forward = cut(forward, back); ///
|
|
55
55
|
const cotypeDeclarationString = this.getString(); ///
|
|
56
56
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration...`);
|
|
57
|
-
const verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this), verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
|
|
57
|
+
const superTypes = [], verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this), verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
|
|
58
58
|
return all([
|
|
59
59
|
verifyType,
|
|
60
60
|
verifySuperTypes,
|
|
61
61
|
verifyTypePrefix,
|
|
62
62
|
verifyPropertyDeclaratisons
|
|
63
|
-
], context, (context, back)=>{
|
|
63
|
+
], superTypes, context, (superTypes, context, back)=>{
|
|
64
64
|
const properties = this.getProperties(), typePrefix = context.getTypePrefix(), prefixName = typePrefix !== null ? typePrefix.getPrefixName() : null;
|
|
65
65
|
this.type.setProvisional(this.provisional);
|
|
66
66
|
this.type.setProperties(properties);
|
|
67
67
|
this.type.setPrefixName(prefixName);
|
|
68
|
+
this.type.setSuperTypes(superTypes);
|
|
68
69
|
context.addType(this.type);
|
|
69
70
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration.`);
|
|
70
71
|
return forward(context, back);
|
|
@@ -76,7 +77,7 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
76
77
|
return back();
|
|
77
78
|
});
|
|
78
79
|
});
|
|
79
|
-
verifyType(context, forward, back) {
|
|
80
|
+
verifyType(superTypes, context, forward, back) {
|
|
80
81
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
81
82
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type...`);
|
|
82
83
|
let typePresent;
|
|
@@ -92,11 +93,10 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
92
93
|
context.debug(`The '${typeString}' type is already present.`);
|
|
93
94
|
return back();
|
|
94
95
|
}
|
|
95
|
-
this.type.setProvisional(this.provisional);
|
|
96
96
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type`);
|
|
97
|
-
return forward(context, back);
|
|
97
|
+
return forward(superTypes, context, back);
|
|
98
98
|
}
|
|
99
|
-
verifyTypePrefix(context, forward, back) {
|
|
99
|
+
verifyTypePrefix(superTypes, context, forward, back) {
|
|
100
100
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
101
101
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix...`);
|
|
102
102
|
const typePrefixed = this.type.isPrefixed();
|
|
@@ -105,27 +105,24 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
105
105
|
return back();
|
|
106
106
|
}
|
|
107
107
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix.`);
|
|
108
|
-
return forward(context, back);
|
|
108
|
+
return forward(superTypes, context, back);
|
|
109
109
|
}
|
|
110
|
-
verifySuperTypes(context, forward, back) {
|
|
110
|
+
verifySuperTypes(superTypes, context, forward, back) {
|
|
111
111
|
const cotypeDeclarationString = this.getString(); ///
|
|
112
112
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's super-types...`);
|
|
113
113
|
const superTypesLength = this.superTypes.length;
|
|
114
114
|
if (superTypesLength === 0) {
|
|
115
|
-
const baseType = (0, _type.baseTypeFromNothing)(),
|
|
116
|
-
this.
|
|
117
|
-
return forward(context, back);
|
|
115
|
+
const baseType = (0, _type.baseTypeFromNothing)(), superType = baseType; ///
|
|
116
|
+
this.superTypes.push(superType);
|
|
118
117
|
}
|
|
119
|
-
const superTypes = []; ///
|
|
120
118
|
return every(this.superTypes, (superType, context, forward, back)=>{
|
|
121
|
-
return this.verifySuperType(
|
|
119
|
+
return this.verifySuperType(superTypes, superType, context, forward, back);
|
|
122
120
|
}, context, (context, back)=>{
|
|
123
|
-
this.type.setSuperTypes(superTypes);
|
|
124
121
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
|
|
125
|
-
return forward(context, back);
|
|
122
|
+
return forward(superTypes, context, back);
|
|
126
123
|
}, back);
|
|
127
124
|
}
|
|
128
|
-
verifySuperType(
|
|
125
|
+
verifySuperType(superTypes, superType, context, forward, back) {
|
|
129
126
|
const superTypeString = superType.getString(), cotypeDeclarationString = this.getString(); ///
|
|
130
127
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type...`);
|
|
131
128
|
const nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
|
|
@@ -142,7 +139,7 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
142
139
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type.`);
|
|
143
140
|
return forward(context, back);
|
|
144
141
|
}
|
|
145
|
-
verifyPropertyDeclaratisons(context, forward, back) {
|
|
142
|
+
verifyPropertyDeclaratisons(superTypes, context, forward, back) {
|
|
146
143
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
147
144
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations...`);
|
|
148
145
|
return (0, _context.isolate)((context, forward, back)=>{
|
|
@@ -155,10 +152,10 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
155
152
|
}, this.type, context);
|
|
156
153
|
}, context, (context, back)=>{
|
|
157
154
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations.`);
|
|
158
|
-
return forward(context, back);
|
|
155
|
+
return forward(superTypes, context, back);
|
|
159
156
|
}, back);
|
|
160
157
|
}
|
|
161
158
|
static name = "CotypeDeclaration";
|
|
162
159
|
});
|
|
163
160
|
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb3R5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCwgcHJvcGVydHlEZWNsYXJhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgICB0aGlzLnByb3BlcnR5RGVjbGFyYXRpb25zID0gcHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvdHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMubWFwKChwcm9wZXJ0eURlY2xhcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnR5RGVjbGFyYXRpb24uZ2V0UHJvcGVydHkoKTtcblxuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVN1cGVyVHlwZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlUeXBlUHJlZml4ID0gdGhpcy52ZXJpZnlUeXBlUHJlZml4LmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zID0gdGhpcy52ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeVN1cGVyVHlwZXMsXG4gICAgICB2ZXJpZnlUeXBlUHJlZml4LFxuICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSAodHlwZVByZWZpeCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVByZWZpeC5nZXRQcmVmaXhOYW1lKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcblxuICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBsZXQgdHlwZVByZXNlbnQ7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZTtcblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0eXBlTmFtZTsgLy8vXG5cbiAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguLi5gKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlZCA9IHRoaXMudHlwZS5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAodHlwZVByZWZpeGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgIHN1cGVyVHl1cGUgPSBiYXNlVHlwZTsgIC8vL1xuXG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlKHN1cGVyVHl1cGUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBlclR5cGVzID0gW107IC8vL1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgICAgICB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdGhpcy50eXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAoc3VwZXJUeXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJvcGVydHkgZGVjbGFyYXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGFudGljaXBhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZXJ5KHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMsIChwcm9wZXJ0eURlY2xhcmF0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByb3BlcnR5RGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHRoaXMudHlwZSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJvcGVydHkgZGVjbGFyYXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb3R5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ290eXBlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJzdXBlclR5cGVzIiwicHJvdmlzaW9uYWwiLCJwcm9wZXJ0eURlY2xhcmF0aW9ucyIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldFByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0Q290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwibWFwIiwicHJvcGVydHlEZWNsYXJhdGlvbiIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlIiwiYmluZCIsInZlcmlmeVN1cGVyVHlwZXMiLCJ2ZXJpZnlUeXBlUHJlZml4IiwidmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zIiwidHlwZVByZWZpeCIsImdldFR5cGVQcmVmaXgiLCJwcmVmaXhOYW1lIiwiZ2V0UHJlZml4TmFtZSIsInNldFByb3Zpc2lvbmFsIiwic2V0UHJvcGVydGllcyIsInNldFByZWZpeE5hbWUiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHl1cGUiLCJzZXRTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzZXRTdXBlclR5cGVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJwdXNoIiwiaXNvbGF0ZSIsImFudGljaXBhdGUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYMkQ7b0VBRW5DOzBCQUVEO3NCQUNhO3lCQUNBOzs7Ozs7QUFFcEMsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFL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
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb3R5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCwgcHJvcGVydHlEZWNsYXJhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgICB0aGlzLnByb3BlcnR5RGVjbGFyYXRpb25zID0gcHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvdHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMubWFwKChwcm9wZXJ0eURlY2xhcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnR5RGVjbGFyYXRpb24uZ2V0UHJvcGVydHkoKTtcblxuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlcyA9IFtdLFxuICAgICAgICAgIHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlTdXBlclR5cGVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5VHlwZVByZWZpeCA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucyA9IHRoaXMudmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZlcmlmeVR5cGUsXG4gICAgICB2ZXJpZnlTdXBlclR5cGVzLFxuICAgICAgdmVyaWZ5VHlwZVByZWZpeCxcbiAgICAgIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29uc1xuICAgIF0sIHN1cGVyVHlwZXMsIGNvbnRleHQsIChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4ID0gY29udGV4dC5nZXRUeXBlUHJlZml4KCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gKHR5cGVQcmVmaXggIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQcmVmaXguZ2V0UHJlZml4TmFtZSgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByZWZpeE5hbWUocHJlZml4TmFtZSk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGxldCB0eXBlUHJlc2VudDtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlO1xuXG4gICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lOyAvLy9cblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC4uLmApO1xuXG4gICAgY29uc3QgdHlwZVByZWZpeGVkID0gdGhpcy50eXBlLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3VwZXJUeXBlcywgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgIHRoaXMuc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGVzLCBzdXBlclR5cGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZU5hbWUgPSBub21pbmFsVHlwZU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSdzIG5hbWUgY29tcGFyZXMgdG8gdGhlICR7dHlwZU5hbWV9JyB0eXBlJ3MgbmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5cGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYW50aWNpcGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlcnkodGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucywgKHByb3BlcnR5RGVjbGFyYXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHlEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgdGhpcy50eXBlLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvdHlwZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb3R5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsInByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0VHlwZSIsImdldFN1cGVyVHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMiLCJnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJtYXAiLCJwcm9wZXJ0eURlY2xhcmF0aW9uIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiY290eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ2ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZSIsInB1c2giLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsImlzb2xhdGUiLCJhbnRpY2lwYXRlIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO29FQUVuQzswQkFFRDtzQkFDYTt5QkFDQTs7Ozs7O0FBRXBDLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFF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
|
|
@@ -46,16 +46,17 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
46
46
|
forward = cut(forward, back); ///
|
|
47
47
|
const typeDeclarationString = this.getString(); ///
|
|
48
48
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration...`);
|
|
49
|
-
const verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this);
|
|
49
|
+
const superTypes = [], verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this);
|
|
50
50
|
return all([
|
|
51
51
|
verifyType,
|
|
52
52
|
verifySuperTypes,
|
|
53
53
|
verifyTypePrefix
|
|
54
|
-
], context, (context, back)=>{
|
|
54
|
+
], superTypes, context, (superTypes, context, back)=>{
|
|
55
55
|
const properties = this.getProperties(), typePrefix = context.getTypePrefix(), prefixName = typePrefix !== null ? typePrefix.getPrefixName() : null;
|
|
56
56
|
this.type.setProvisional(this.provisional);
|
|
57
57
|
this.type.setProperties(properties);
|
|
58
58
|
this.type.setPrefixName(prefixName);
|
|
59
|
+
this.type.setSuperTypes(superTypes);
|
|
59
60
|
context.addType(this.type);
|
|
60
61
|
context.debug(`...verified the '${typeDeclarationString}' type declaration.`);
|
|
61
62
|
return forward(context, back);
|
|
@@ -67,7 +68,7 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
67
68
|
return back();
|
|
68
69
|
});
|
|
69
70
|
});
|
|
70
|
-
verifyType(context, forward, back) {
|
|
71
|
+
verifyType(superTypes, context, forward, back) {
|
|
71
72
|
const typeString = this.type.getString(), typeDeclarationString = this.getString(); ///
|
|
72
73
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${typeString}' type...`);
|
|
73
74
|
let typePresent;
|
|
@@ -83,11 +84,10 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
83
84
|
context.debug(`The '${typeString}' type is already present.`);
|
|
84
85
|
return back();
|
|
85
86
|
}
|
|
86
|
-
this.type.setProvisional(this.provisional);
|
|
87
87
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type`);
|
|
88
|
-
return forward(context, back);
|
|
88
|
+
return forward(superTypes, context, back);
|
|
89
89
|
}
|
|
90
|
-
verifyTypePrefix(context, forward, back) {
|
|
90
|
+
verifyTypePrefix(superTypes, context, forward, back) {
|
|
91
91
|
const typeString = this.type.getString(), typeDeclarationString = this.getString(); ///
|
|
92
92
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix...`);
|
|
93
93
|
const typePrefixed = this.type.isPrefixed();
|
|
@@ -96,27 +96,24 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
96
96
|
return back();
|
|
97
97
|
}
|
|
98
98
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix.`);
|
|
99
|
-
return forward(context, back);
|
|
99
|
+
return forward(superTypes, context, back);
|
|
100
100
|
}
|
|
101
|
-
verifySuperTypes(context, forward, back) {
|
|
101
|
+
verifySuperTypes(superTypes, context, forward, back) {
|
|
102
102
|
const typeDeclarationString = this.getString(); ///
|
|
103
103
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration's super-types...`);
|
|
104
104
|
const superTypesLength = this.superTypes.length;
|
|
105
105
|
if (superTypesLength === 0) {
|
|
106
|
-
const baseType = (0, _type.baseTypeFromNothing)(),
|
|
107
|
-
this.
|
|
108
|
-
return forward(context, back);
|
|
106
|
+
const baseType = (0, _type.baseTypeFromNothing)(), superType = baseType; ///
|
|
107
|
+
this.superTypes.push(superType);
|
|
109
108
|
}
|
|
110
|
-
const superTypes = []; ///
|
|
111
109
|
return every(this.superTypes, (superType, context, forward, back)=>{
|
|
112
|
-
return this.verifySuperType(
|
|
110
|
+
return this.verifySuperType(superTypes, superType, context, forward, back);
|
|
113
111
|
}, context, (context, back)=>{
|
|
114
|
-
this.type.setSuperTypes(superTypes);
|
|
115
112
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's super-types.`);
|
|
116
|
-
return forward(context, back);
|
|
113
|
+
return forward(superTypes, context, back);
|
|
117
114
|
}, back);
|
|
118
115
|
}
|
|
119
|
-
verifySuperType(
|
|
116
|
+
verifySuperType(superTypes, superType, context, forward, back) {
|
|
120
117
|
const superTypeString = superType.getString(), typeDeclarationString = this.getString(); ///
|
|
121
118
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${superTypeString}' super-type...`);
|
|
122
119
|
const nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
|
|
@@ -136,4 +133,4 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
136
133
|
static name = "TypeDeclaration";
|
|
137
134
|
});
|
|
138
135
|
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlTdXBlclR5cGVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5VHlwZVByZWZpeCA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2ZXJpZnlUeXBlLFxuICAgICAgdmVyaWZ5U3VwZXJUeXBlcyxcbiAgICAgIHZlcmlmeVR5cGVQcmVmaXhcbiAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgICAgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9ICh0eXBlUHJlZml4ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUHJlZml4LmdldFByZWZpeE5hbWUoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpO1xuXG4gICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBsZXQgdHlwZVByZXNlbnQ7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZTtcblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0eXBlTmFtZTsgLy8vXG5cbiAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC4uLmApO1xuXG4gICAgY29uc3QgdHlwZVByZWZpeGVkID0gdGhpcy50eXBlLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlZml4ZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICBzdXBlclR5dXBlID0gYmFzZVR5cGU7ICAvLy9cblxuICAgICAgdGhpcy50eXBlLnNldFN1cGVyVHlwZShzdXBlclR5dXBlKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VwZXJUeXBlcyA9IFtdOyAvLy9cblxuICAgIHJldHVybiBldmVyeSh0aGlzLnN1cGVyVHlwZXMsIChzdXBlclR5cGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgICAgICB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdGhpcy50eXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAoc3VwZXJUeXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlR5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZURlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwic3VwZXJUeXBlcyIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFN1cGVyVHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ0eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInR5cGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2ZXJpZnlTdXBlclR5cGVzIiwidmVyaWZ5VHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJnZXRUeXBlUHJlZml4IiwicHJlZml4TmFtZSIsImdldFByZWZpeE5hbWUiLCJzZXRQcm92aXNpb25hbCIsInNldFByb3BlcnRpZXMiLCJzZXRQcmVmaXhOYW1lIiwiYWRkVHlwZSIsImRlYnVnIiwiZXhjZXB0aW9uIiwidHlwZVN0cmluZyIsInR5cGVQcmVzZW50IiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwidHlwZVByZWZpeGVkIiwiaXNQcmVmaXhlZCIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5dXBlIiwic2V0U3VwZXJUeXBlIiwic3VwZXJUeXBlIiwidmVyaWZ5U3VwZXJUeXBlIiwic2V0U3VwZXJUeXBlcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIs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
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXMgPSBbXSxcbiAgICAgICAgICB2ZXJpZnlUeXBlID0gdGhpcy52ZXJpZnlUeXBlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5U3VwZXJUeXBlcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVR5cGVQcmVmaXggPSB0aGlzLnZlcmlmeVR5cGVQcmVmaXguYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeVN1cGVyVHlwZXMsXG4gICAgICB2ZXJpZnlUeXBlUHJlZml4XG4gICAgXSwgc3VwZXJUeXBlcywgY29udGV4dCwgKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSAodHlwZVByZWZpeCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVByZWZpeC5nZXRQcmVmaXhOYW1lKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcblxuICAgICAgdGhpcy50eXBlLnNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcyk7XG5cbiAgICAgIGNvbnRleHQuYWRkVHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGxldCB0eXBlUHJlc2VudDtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlO1xuXG4gICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lOyAvLy9cblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGVgKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5VHlwZVByZWZpeChzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4Li4uYCk7XG5cbiAgICBjb25zdCB0eXBlUHJlZml4ZWQgPSB0aGlzLnR5cGUuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHR5cGVQcmVmaXhlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3VwZXJUeXBlcywgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgIHRoaXMuc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3Mgc3VwZXItdHlwZXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cGVyVHlwZVN0cmluZyA9IHN1cGVyVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIHR5cGUncyBuYW1lLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHN1cGVyVHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldHR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZSIsInB1c2giLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlB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
|
|
@@ -105,7 +105,7 @@ const _default = (0, _elements.define)(class ProcedureReference extends _occamla
|
|
|
105
105
|
const context = specificContext, procedureReferenceString = this.getString(); ///
|
|
106
106
|
context.trace(`Applying the '${procedureReferenceString}' function reference independently...`);
|
|
107
107
|
const procedure = this.findProcecure(context), nominalValues = this.findNominalValues(context);
|
|
108
|
-
return procedure.
|
|
108
|
+
return procedure.evaluateNominally(nominalValues, (value, back)=>{
|
|
109
109
|
const boolean = value.isBoolean();
|
|
110
110
|
if (!boolean) {
|
|
111
111
|
context.info(`The '${procedureReferenceString}' function reference did not return a boolean.`);
|
|
@@ -130,7 +130,7 @@ const _default = (0, _elements.define)(class ProcedureReference extends _occamla
|
|
|
130
130
|
const procedureName = this.getProcedureName(), procedure = context.findProcedureByProcedureName(procedureName), node = term.getNode(), nominalValue = _occamfurtle.NominalValue.fromNode(node, context), nominalValues = [
|
|
131
131
|
nominalValue
|
|
132
132
|
];
|
|
133
|
-
return procedure.
|
|
133
|
+
return procedure.evaluateNominally(nominalValues, (value, back)=>{
|
|
134
134
|
const boolean = value.isBoolean();
|
|
135
135
|
if (!boolean) {
|
|
136
136
|
context.info(`The '${procedureReferenceString}' function reference did not return a boolean.`);
|
|
@@ -175,4 +175,4 @@ function parametersFromProcedureReferenceNode(procedureReferenceNode, context) {
|
|
|
175
175
|
return parameters;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZVJlZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9taW5hbFZhbHVlIH0gZnJvbSBcIm9jY2FtLWZ1cnRsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgY29udGludWF0aW9uVXRpbGl0aWVzLCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZVJlZmVyZW5jZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IG5vZGU7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMubmFtZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lO1xuICB9XG5cbiAgaXNVbmFyeSgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCxcbiAgICAgICAgICB1bmFyeSA9IChwYXJhbWV0ZXJzTGVuZ3RoID09PSAxKTtcblxuICAgIHJldHVybiB1bmFyeTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZFByb2NlY3VyZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTm9taW5hbFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSBjb250ZXh0LmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGRlcml2ZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gdGhpcy5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub21pbmFsVmFsdWUgPSBwYXJhbWV0ZXIuZmluZE5vbWluYWxWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5vbWluYWxWYWx1ZTtcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBub21pbmFsVmFsdWVzO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IHRoaXMuZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuLi5gKTtcblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXMuZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZWR1cmVSZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVSZWZlcmVuY2UsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVQYXJhbWV0ZXJzID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVQYXJhbWV0ZXJzXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRQcm9jZWR1cmVSZWZlcmVuY2UocHJvY2VkdXJlUmVmZXJlbmNlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByb2NlZHVyZVJlZmVyZW5jZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlUGFyYW1ldGVyKHBhcmFtZXRlciwgcGFyYW1ldGVycywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlJ3MgJyR7cGFyYW1ldGVyU3RyaW5nfScgcGFyYW1ldGVyLi4uYCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocGFyYW1ldGVyLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UncyAnJHtwYXJhbWV0ZXJTdHJpbmd9JyBwYXJhbWV0ZXIuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuLi5gKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBbXTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLnBhcmFtZXRlcnMsIChwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBwYXJhbWV0ZXJzLCBzdGF0ZSwgY29udGV4dCwgKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VjdXJlKGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSB0aGlzLmZpbmROb21pbmFsVmFsdWVzKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KG5vbWluYWxWYWx1ZXMsICh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYm9vbGVhbiA9IHZhbHVlLmlzQm9vbGVhbigpO1xuXG4gICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgY29udGV4dC5pbmZvKGBUaGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGRpZCBub3QgcmV0dXJuIGEgYm9vbGVhbi5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgLi4uYXBwbGllZCB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB1bmFyeSA9IHRoaXMuaXNVbmFyeSgpO1xuXG4gICAgaWYgKCF1bmFyeSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBpcyBub3QgdW5hcnkuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSxcbiAgICAgICAgICBub2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgICAgbm9taW5hbFZhbHVlID0gTm9taW5hbFZhbHVlLmZyb21Ob2RlKG5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSBbXG4gICAgICAgICAgICBub21pbmFsVmFsdWVcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KG5vbWluYWxWYWx1ZXMsICh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYm9vbGVhbiA9IHZhbHVlLmlzQm9vbGVhbigpO1xuXG4gICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgY29udGV4dC5pbmZvKGBUaGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGRpZCBub3QgcmV0dXJuIGEgYm9vbGVhbi5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9jZWR1cmVSZWZlcmVuY2VcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gaW5zdGFudGlhdGVQcm9jZWR1cmVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gbmV3IFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5hbWVGcm9tUHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyTm9kZXMgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLmdldFBhcmFtZXRlck5vZGVzKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJOb2Rlcy5tYXAoKHBhcmFtZXRlck5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBjb250ZXh0LmZpbmRQYXJhbWV0ZXJCeVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuYW1lIiwicGFyYW1ldGVycyIsImdldE5hbWUiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImdldE5vZGUiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJpc1VuYXJ5IiwicGFyYW1ldGVyc0xlbmd0aCIsImxlbmd0aCIsInVuYXJ5IiwiaXNFcXVhbFRvIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlTm9kZU1hdGNoZXMiLCJtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kUHJvY2VjdXJlIiwicHJvY2VkdXJlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsImZpbmROb21pbmFsVmFsdWVzIiwiZGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJnZXREZXJpdmVkU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJub21pbmFsVmFsdWVzIiwibWFwIiwicGFyYW1ldGVyIiwibm9taW5hbFZhbHVlIiwiZmluZE5vbWluYWxWYWx1ZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2UiLCJmaW5kUHJvY2VkdXJlUmVmZXJlbmNlQnlQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwicHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlUGFyYW1ldGVycyIsImJpbmQiLCJhZGRQcm9jZWR1cmVSZWZlcmVuY2UiLCJ2YWxpZGF0ZVBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsInB1c2giLCJhcHBseUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImNhbGxOb21pbmFsbHkiLCJ2YWx1ZSIsImJvb2xlYW4iLCJpc0Jvb2xlYW4iLCJpbmZvIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiTm9taW5hbFZhbHVlIiwiZnJvbU5vZGUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwibmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyTm9kZXMiLCJnZXRQYXJhbWV0ZXJOb2RlcyIsInBhcmFtZXRlck5vZGUiLCJmaW5kUGFyYW1ldGVyQnlQYXJhbWV0ZXJOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozs2QkFWNkI7Z0NBQ3VDOzBCQUU3Qzt5QkFDSzs2QkFDa0I7QUFFOUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdEMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsdUJBQU87SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSO1FBRS9CLE9BQU9RO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNSLElBQUk7UUFFL0IsT0FBT1E7SUFDVDtJQUVBQyxVQUFVO1FBQ1IsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1QsVUFBVSxDQUFDVSxNQUFNLEVBQ3pDQyxRQUFTRixxQkFBcUI7UUFFcEMsT0FBT0U7SUFDVDtJQUVBQyxVQUFVQyxrQkFBa0IsRUFBRTtRQUM1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
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZVJlZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9taW5hbFZhbHVlIH0gZnJvbSBcIm9jY2FtLWZ1cnRsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgY29udGludWF0aW9uVXRpbGl0aWVzLCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZVJlZmVyZW5jZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IG5vZGU7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMubmFtZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lO1xuICB9XG5cbiAgaXNVbmFyeSgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCxcbiAgICAgICAgICB1bmFyeSA9IChwYXJhbWV0ZXJzTGVuZ3RoID09PSAxKTtcblxuICAgIHJldHVybiB1bmFyeTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZFByb2NlY3VyZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTm9taW5hbFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSBjb250ZXh0LmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGRlcml2ZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gdGhpcy5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub21pbmFsVmFsdWUgPSBwYXJhbWV0ZXIuZmluZE5vbWluYWxWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5vbWluYWxWYWx1ZTtcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBub21pbmFsVmFsdWVzO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IHRoaXMuZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuLi5gKTtcblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXMuZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZWR1cmVSZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVSZWZlcmVuY2UsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVQYXJhbWV0ZXJzID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVQYXJhbWV0ZXJzXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRQcm9jZWR1cmVSZWZlcmVuY2UocHJvY2VkdXJlUmVmZXJlbmNlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByb2NlZHVyZVJlZmVyZW5jZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlUGFyYW1ldGVyKHBhcmFtZXRlciwgcGFyYW1ldGVycywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlJ3MgJyR7cGFyYW1ldGVyU3RyaW5nfScgcGFyYW1ldGVyLi4uYCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocGFyYW1ldGVyLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UncyAnJHtwYXJhbWV0ZXJTdHJpbmd9JyBwYXJhbWV0ZXIuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuLi5gKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBbXTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLnBhcmFtZXRlcnMsIChwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBwYXJhbWV0ZXJzLCBzdGF0ZSwgY29udGV4dCwgKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VjdXJlKGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSB0aGlzLmZpbmROb21pbmFsVmFsdWVzKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5ldmFsdWF0ZU5vbWluYWxseShub21pbmFsVmFsdWVzLCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGJvb2xlYW4gPSB2YWx1ZS5pc0Jvb2xlYW4oKTtcblxuICAgICAgaWYgKCFib29sZWFuKSB7XG4gICAgICAgIGNvbnRleHQuaW5mbyhgVGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBkaWQgbm90IHJldHVybiBhIGJvb2xlYW4uYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS5nZXRQcmltaXRpdmVWYWx1ZSgpO1xuXG4gICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmFwcGxpZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdW5hcnkgPSB0aGlzLmlzVW5hcnkoKTtcblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgbm90IHVuYXJ5LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2NlZHVyZU5hbWUgPSB0aGlzLmdldFByb2NlZHVyZU5hbWUoKSxcbiAgICAgICAgICBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgbm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZSA9IE5vbWluYWxWYWx1ZS5mcm9tTm9kZShub2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gW1xuICAgICAgICAgICAgbm9taW5hbFZhbHVlXG4gICAgICAgICAgXTtcblxuICAgIHJldHVybiBwcm9jZWR1cmUuZXZhbHVhdGVOb21pbmFsbHkobm9taW5hbFZhbHVlcywgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBib29sZWFuID0gdmFsdWUuaXNCb29sZWFuKCk7XG5cbiAgICAgIGlmICghYm9vbGVhbikge1xuICAgICAgICBjb250ZXh0LmluZm8oYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZGlkIG5vdCByZXR1cm4gYSBib29sZWFuLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUuZ2V0UHJpbWl0aXZlVmFsdWUoKTtcblxuICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb2NlZHVyZVJlZmVyZW5jZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHByb2NlZHVyZVJlZmVyZW5jZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGUgPSBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgbmFtZSA9IG5hbWVGcm9tUHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBuZXcgUHJvY2VkdXJlUmVmZXJlbmNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcGFyYW1ldGVycyk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5mdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBwYXJhbWV0ZXJOb2RlcyA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUuZ2V0UGFyYW1ldGVyTm9kZXMoKSxcbiAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlck5vZGVzLm1hcCgocGFyYW1ldGVyTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGNvbnRleHQuZmluZFBhcmFtZXRlckJ5UGFyYW1ldGVyTm9kZShwYXJhbWV0ZXJOb2RlKTtcblxuICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvY2VkdXJlUmVmZXJlbmNlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5hbWUiLCJwYXJhbWV0ZXJzIiwiZ2V0TmFtZSIsImdldFBhcmFtZXRlcnMiLCJnZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0Tm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJnZXRQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsImlzVW5hcnkiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwibGVuZ3RoIiwidW5hcnkiLCJpc0VxdWFsVG8iLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyIsIm1hdGNoUHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRQcm9jZWN1cmUiLCJwcm9jZWR1cmUiLCJmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lIiwiZmluZE5vbWluYWxWYWx1ZXMiLCJkZXJpdmVkU3Vic3RpdHV0aW9ucyIsImdldERlcml2ZWRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsIm5vbWluYWxWYWx1ZXMiLCJtYXAiLCJwYXJhbWV0ZXIiLCJub21pbmFsVmFsdWUiLCJmaW5kTm9taW5hbFZhbHVlIiwiZmluZFByb2NlZHVyZVJlZmVyZW5jZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2VCeVByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVQYXJhbWV0ZXJzIiwiYmluZCIsImFkZFByb2NlZHVyZVJlZmVyZW5jZSIsInZhbGlkYXRlUGFyYW1ldGVyIiwicGFyYW1ldGVyU3RyaW5nIiwicHVzaCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZXZhbHVhdGVOb21pbmFsbHkiLCJ2YWx1ZSIsImJvb2xlYW4iLCJpc0Jvb2xlYW4iLCJpbmZvIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiTm9taW5hbFZhbHVlIiwiZnJvbU5vZGUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwibmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyTm9kZXMiLCJnZXRQYXJhbWV0ZXJOb2RlcyIsInBhcmFtZXRlck5vZGUiLCJmaW5kUGFyYW1ldGVyQnlQYXJhbWV0ZXJOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozs2QkFWNkI7Z0NBQ3VDOzBCQUU3Qzt5QkFDSzs2QkFDa0I7QUFFOUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdEMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsdUJBQU87SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSO1FBRS9CLE9BQU9RO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNSLElBQUk7UUFFL0IsT0FBT1E7SUFDVDtJQUVBQyxVQUFVO1FBQ1IsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1QsVUFBVSxDQUFDVSxNQUFNLEVBQ3pDQyxRQUFTRixxQkFBcUI7UUFFcEMsT0FBT0U7SUFDVDtJQUVBQyxVQUFVQyxrQkFB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
|
package/lib/element/type.js
CHANGED
|
@@ -48,19 +48,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
|
|
|
48
48
|
});
|
|
49
49
|
return properties;
|
|
50
50
|
}
|
|
51
|
-
isProvisional(
|
|
52
|
-
|
|
53
|
-
if (includeSuperTypes) {
|
|
54
|
-
if (!provisional) {
|
|
55
|
-
provisional = this.superTypes.some((superType)=>{
|
|
56
|
-
const superTypeProvisional = superType.isProvisional();
|
|
57
|
-
if (superTypeProvisional) {
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return provisional;
|
|
51
|
+
isProvisional() {
|
|
52
|
+
return this.provisional;
|
|
64
53
|
}
|
|
65
54
|
setName(name) {
|
|
66
55
|
this.name = name;
|
|
@@ -89,8 +78,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
|
|
|
89
78
|
}
|
|
90
79
|
return baseType;
|
|
91
80
|
}
|
|
92
|
-
isEstablished(
|
|
93
|
-
const provisional = this.isProvisional(
|
|
81
|
+
isEstablished() {
|
|
82
|
+
const provisional = this.isProvisional(), established = !provisional;
|
|
94
83
|
return established;
|
|
95
84
|
}
|
|
96
85
|
retrieveAncestorTypes(ancestorTypes = []) {
|
|
@@ -203,12 +192,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
|
|
|
203
192
|
const nameTypeName = this.name === typeName, comparesToTypeName = nameTypeName; ///
|
|
204
193
|
return comparesToTypeName;
|
|
205
194
|
}
|
|
206
|
-
compareProvisional(provisional
|
|
207
|
-
|
|
208
|
-
const provisionalA = provisional; ///
|
|
209
|
-
provisional = this.isProvisional(includeSupertypes);
|
|
210
|
-
const provisionalB = provisional; ///
|
|
211
|
-
comparesToProvisional = provisionalA === provisionalB;
|
|
195
|
+
compareProvisional(provisional) {
|
|
196
|
+
const comparesToProvisional = provisional === this.provisional;
|
|
212
197
|
return comparesToProvisional;
|
|
213
198
|
}
|
|
214
199
|
compareNominalTypeName(nominalTypeName) {
|
|
@@ -272,4 +257,4 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
|
|
|
272
257
|
}
|
|
273
258
|
});
|
|
274
259
|
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBpbnRlcnNlY3Rpb24gfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJUeXBlcyA9IHRydWUpIHtcbiAgICBsZXQgcHJvdmlzaW9uYWwgPSB0aGlzLnByb3Zpc2lvbmFsO1xuXG4gICAgaWYgKGluY2x1ZGVTdXBlclR5cGVzKSB7XG4gICAgICBpZiAoIXByb3Zpc2lvbmFsKSB7XG4gICAgICAgIHByb3Zpc2lvbmFsID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3Zpc2lvbmFsID0gc3VwZXJUeXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICAgIGlmIChzdXBlclR5cGVQcm92aXNpb25hbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXROYW1lKG5hbWUpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKSB7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXRTdXBlclR5cGUoc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gW1xuICAgICAgc3VwZXJUeXBlXG4gICAgXTtcbiAgfVxuXG4gIGlzQmFzZVR5cGUoKSB7XG4gICAgbGV0IGJhc2VUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBCQVNFX1RZUEVfU1lNQk9MKSB7XG4gICAgICBiYXNlVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VUeXBlO1xuICB9XG5cbiAgaXNFc3RhYmxpc2hlZChpbmNsdWRlU3VwZXJUeXBlcyA9IHRydWUpIHtcbiAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJUeXBlcyksXG4gICAgICAgICAgZXN0YWJsaXNoZWQgPSAhcHJvdmlzaW9uYWw7XG5cbiAgICByZXR1cm4gZXN0YWJsaXNoZWQ7XG4gIH1cblxuICByZXRyaWV2ZUFuY2VzdG9yVHlwZXMoYW5jZXN0b3JUeXBlcyA9IFtdKSB7XG4gICAgY29uc3QgYmFzZVR5cGUgPSB0aGlzLmlzQmFzZVR5cGUoKTtcblxuICAgIGlmICghYmFzZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yVHlwZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIGFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlID0gYW5jZXN0b3JUeXBlcy5pbmNsdWRlcyhhbmNlc3RvclR5cGUpO1xuXG4gICAgICBpZiAoIWFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlKSB7XG4gICAgICAgIGFuY2VzdG9yVHlwZXMucHVzaChhbmNlc3RvclR5cGUpO1xuXG4gICAgICAgIHRoaXMuc3VwZXJUeXBlcy5mb3JFYWNoKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBzdXBlclR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JUeXBlcztcbiAgfVxuXG4gIGlzQ290eXBlKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgsXG4gICAgICAgICAgY290eXBlID0gKHByb3BlcnRpZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb3R5cGU7XG4gIH1cblxuICBpc1ByZWZpeGVkKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gKHRoaXMucHJlZml4TmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRQcmVmaXhlZE5hbWUoKSB7XG4gICAgbGV0IHByZWZpeGVkTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZE5hbWUgPSBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICB9XG5cbiAgZ2V0Tm9taW5hbFR5cGVOYW1lKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJlZml4ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZTtcblxuICAgIHJldHVybiBub21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBpc0Jhc2ljKCkge1xuICAgIGxldCBiYXNpYyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgIGJhc2ljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmFzaWM7XG4gIH1cblxuICBpc1JlZmluZWQoKSB7XG4gICAgbGV0IHJlZmluZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlTmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgIHJlZmluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZpbmVkO1xuICB9XG5cbiAgaXNKb2luZWRUbyh0eXBlKSB7XG4gICAgbGV0IGpvaW5lZFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBhbmNlc3RvclR5cGVzID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICB0eXBlQW5jZXN0b3JUeXBlcyA9IHR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKCksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyA9IGludGVyc2VjdGlvbihhbmNlc3RvclR5cGVzLCB0eXBlQW5jZXN0b3JUeXBlcywgKGFuY2VzdG9yVHlwZSwgdHlwZUFuY2VzdG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUgPSBhbmNlc3RvclR5cGUuaXNFcXVhbFRvKHR5cGVBbmNlc3RvclR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA9IGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGggPiAwKSB7XG4gICAgICBqb2luZWRUbyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW5lZFRvO1xuICB9XG5cbiAgaXNFcXVhbFRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1N1YlR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1YlR5cGVPZjtcblxuICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgaWYgKHRoaXMgPT09IGJhc2VUeXBlKSB7XG4gICAgICBzdWJUeXBlT2YgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViVHlwZU9mID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4geyAvLy9cbiAgICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSA9IHN1cGVyVHlwZS5pc1N1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2Y7XG4gIH1cblxuICBpc1N1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBzdWJUeXBlT2YgPSB0eXBlLmlzU3ViVHlwZU9mKHRoaXMpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gc3ViVHlwZU9mOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3ViVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdWJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBjb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lVHlwZU5hbWUgPSAodGhpcy5uYW1lID09PSB0eXBlTmFtZSksXG4gICAgICAgICAgY29tcGFyZXNUb1R5cGVOYW1lID0gbmFtZVR5cGVOYW1lOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1R5cGVOYW1lO1xuICB9XG5cbiAgY29tcGFyZVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsLCBpbmNsdWRlU3VwZXJ0eXBlcyA9IHRydWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1Byb3Zpc2lvbmFsO1xuXG4gICAgY29uc3QgcHJvdmlzaW9uYWxBID0gcHJvdmlzaW9uYWw7IC8vL1xuXG4gICAgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVydHlwZXMpO1xuXG4gICAgY29uc3QgcHJvdmlzaW9uYWxCID0gcHJvdmlzaW9uYWw7IC8vL1xuXG4gICAgY29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gKHByb3Zpc2lvbmFsQSA9PT0gcHJvdmlzaW9uYWxCKTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG4gIH1cblxuICBjb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBuYW1lTm9taW5hbFR5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gbm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChuYW1lTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICAgIHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhlZE5hbWUgPT09IG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgcHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSA9IChwcmVmaXhlZFR5cGVOYW1lID09PSBwcmVmaXhlZE5hbWUpO1xuXG4gICAgICBpZiAocHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSkge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICBpZiAoIWFicmlkZ2VkKSB7XG4gICAgICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTiwgIC8vL1xuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpbm9hbEpTT007ICAvLy9cblxuICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB7XG4gICAgICAgIHByZWZpeE5hbWUsXG4gICAgICAgIHN1cGVyVHlwZXMsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIHByb3Zpc2lvbmFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHR5cGVOb2RlID0gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJwdXNoIiwiZmlyc3QiLCJpbnRlcnNlY3Rpb24iLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmFtZSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwiZ2V0TmFtZSIsImdldFByZWZpeE5hbWUiLCJnZXRTdXBlclR5cGVzIiwiZ2V0VHlwZU5vZGUiLCJnZXROb2RlIiwidHlwZU5vZGUiLCJnZXRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwiaW5jbHVkZVN1cGVyVHlwZXMiLCJzb21lIiwic3VwZXJUeXBlUHJvdmlzaW9uYWwiLCJzZXROYW1lIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRTdXBlclR5cGUiLCJpc0Jhc2VUeXBlIiwiYmFzZVR5cGUiLCJCQVNFX1RZUEVfU1lNQk9MIiwiaXNFc3RhYmxpc2hlZCIsImVzdGFibGlzaGVkIiwicmV0cmlldmVBbmNlc3RvclR5cGVzIiwiYW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZSIsImFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlIiwiaW5jbHVkZXMiLCJpc0NvdHlwZSIsInByb3BlcnRpZXNMZW5ndGgiLCJsZW5ndGgiLCJjb3R5cGUiLCJpc1ByZWZpeGVkIiwicHJlZml4ZWQiLCJnZXRQcmVmaXhlZE5hbWUiLCJwcmVmaXhlZE5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJpc0Jhc2ljIiwiYmFzaWMiLCJzdXBlclR5cGVzTGVuZ3RoIiwiZmlyc3RTdXBlclR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwiaXNSZWZpbmVkIiwicmVmaW5lZCIsInN1cGVyVHlwZU5hbWUiLCJpc0pvaW5lZFRvIiwidHlwZSIsImpvaW5lZFRvIiwidHlwZUFuY2VzdG9yVHlwZXMiLCJpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzIiwidHlwZUFuY2VzdG9yVHlwZSIsImFuY2VzdG9yVHlwZUVxdWFsVG9BVHlwZW5jZXN0b3JUeXBlIiwiaXNFcXVhbFRvIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCIsImVxdWFsVG8iLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZiIsInN1cGVyVHlwZVN1YlR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwic3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsImVxdWFsVG9PclN1YlR5cGVPZiIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJlcXVhbFRvT3JTdXBlclR5cGVPZiIsImlzRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mIiwiZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mIiwiY29tcGFyZVR5cGVOYW1lIiwidHlwZU5hbWUiLCJuYW1lVHlwZU5hbWUiLCJjb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlUHJvdmlzaW9uYWwiLCJpbmNsdWRlU3VwZXJ0eXBlcyIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsQSIsInByb3Zpc2lvbmFsQiIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwibmFtZU5vbWluYWxUeXBlTmFtZSIsInByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSIsInRvSlNPTiIsImFicmlkZ2VkIiwiZ2V0U3RyaW5nIiwianNvbiIsInByZWZpeE5hbWVKU09OIiwicHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lub2FsSlNPTSIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsInByZWZpeE5hbWVGcm9tSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJmcm9tTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2dDQXBCd0I7MkJBQ087MEJBRVI7eUJBQ0s7NkJBQ0k7MkJBQ0M7eUJBQ0E7c0JBQ0c7c0JBUVM7QUFFN0MsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlCQUFjO01BRXBELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUNwRyxLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNMLElBQUk7SUFDbEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFF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
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBpbnRlcnNlY3Rpb24gfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpIHtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICB9XG5cbiAgc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICBzZXRQcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBbXG4gICAgICBzdXBlclR5cGVcbiAgICBdO1xuICB9XG5cbiAgaXNCYXNlVHlwZSgpIHtcbiAgICBsZXQgYmFzZVR5cGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IEJBU0VfVFlQRV9TWU1CT0wpIHtcbiAgICAgIGJhc2VUeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVR5cGU7XG4gIH1cblxuICBpc0VzdGFibGlzaGVkKCkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKCksXG4gICAgICAgICAgZXN0YWJsaXNoZWQgPSAhcHJvdmlzaW9uYWw7XG5cbiAgICByZXR1cm4gZXN0YWJsaXNoZWQ7XG4gIH1cblxuICByZXRyaWV2ZUFuY2VzdG9yVHlwZXMoYW5jZXN0b3JUeXBlcyA9IFtdKSB7XG4gICAgY29uc3QgYmFzZVR5cGUgPSB0aGlzLmlzQmFzZVR5cGUoKTtcblxuICAgIGlmICghYmFzZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yVHlwZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIGFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlID0gYW5jZXN0b3JUeXBlcy5pbmNsdWRlcyhhbmNlc3RvclR5cGUpO1xuXG4gICAgICBpZiAoIWFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlKSB7XG4gICAgICAgIGFuY2VzdG9yVHlwZXMucHVzaChhbmNlc3RvclR5cGUpO1xuXG4gICAgICAgIHRoaXMuc3VwZXJUeXBlcy5mb3JFYWNoKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBzdXBlclR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JUeXBlcztcbiAgfVxuXG4gIGlzQ290eXBlKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgsXG4gICAgICAgICAgY290eXBlID0gKHByb3BlcnRpZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb3R5cGU7XG4gIH1cblxuICBpc1ByZWZpeGVkKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gKHRoaXMucHJlZml4TmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRQcmVmaXhlZE5hbWUoKSB7XG4gICAgbGV0IHByZWZpeGVkTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZE5hbWUgPSBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICB9XG5cbiAgZ2V0Tm9taW5hbFR5cGVOYW1lKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJlZml4ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZTtcblxuICAgIHJldHVybiBub21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBpc0Jhc2ljKCkge1xuICAgIGxldCBiYXNpYyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgIGJhc2ljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmFzaWM7XG4gIH1cblxuICBpc1JlZmluZWQoKSB7XG4gICAgbGV0IHJlZmluZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlTmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgIHJlZmluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZpbmVkO1xuICB9XG5cbiAgaXNKb2luZWRUbyh0eXBlKSB7XG4gICAgbGV0IGpvaW5lZFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBhbmNlc3RvclR5cGVzID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICB0eXBlQW5jZXN0b3JUeXBlcyA9IHR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKCksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyA9IGludGVyc2VjdGlvbihhbmNlc3RvclR5cGVzLCB0eXBlQW5jZXN0b3JUeXBlcywgKGFuY2VzdG9yVHlwZSwgdHlwZUFuY2VzdG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUgPSBhbmNlc3RvclR5cGUuaXNFcXVhbFRvKHR5cGVBbmNlc3RvclR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA9IGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGggPiAwKSB7XG4gICAgICBqb2luZWRUbyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW5lZFRvO1xuICB9XG5cbiAgaXNFcXVhbFRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1N1YlR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1YlR5cGVPZjtcblxuICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgaWYgKHRoaXMgPT09IGJhc2VUeXBlKSB7XG4gICAgICBzdWJUeXBlT2YgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViVHlwZU9mID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4geyAvLy9cbiAgICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSA9IHN1cGVyVHlwZS5pc1N1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2Y7XG4gIH1cblxuICBpc1N1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBzdWJUeXBlT2YgPSB0eXBlLmlzU3ViVHlwZU9mKHRoaXMpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gc3ViVHlwZU9mOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3ViVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdWJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBjb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lVHlwZU5hbWUgPSAodGhpcy5uYW1lID09PSB0eXBlTmFtZSksXG4gICAgICAgICAgY29tcGFyZXNUb1R5cGVOYW1lID0gbmFtZVR5cGVOYW1lOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1R5cGVOYW1lO1xuICB9XG5cbiAgY29tcGFyZVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gKHByb3Zpc2lvbmFsID09PSB0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG4gIH1cblxuICBjb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBuYW1lTm9taW5hbFR5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gbm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChuYW1lTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICAgIHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhlZE5hbWUgPT09IG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgcHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSA9IChwcmVmaXhlZFR5cGVOYW1lID09PSBwcmVmaXhlZE5hbWUpO1xuXG4gICAgICBpZiAocHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSkge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICBpZiAoIWFicmlkZ2VkKSB7XG4gICAgICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTiwgIC8vL1xuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpbm9hbEpTT007ICAvLy9cblxuICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB7XG4gICAgICAgIHByZWZpeE5hbWUsXG4gICAgICAgIHN1cGVyVHlwZXMsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIHByb3Zpc2lvbmFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHR5cGVOb2RlID0gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJwdXNoIiwiZmlyc3QiLCJpbnRlcnNlY3Rpb24iLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmFtZSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwiZ2V0TmFtZSIsImdldFByZWZpeE5hbWUiLCJnZXRTdXBlclR5cGVzIiwiZ2V0VHlwZU5vZGUiLCJnZXROb2RlIiwidHlwZU5vZGUiLCJnZXRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwic2V0TmFtZSIsInNldFByZWZpeE5hbWUiLCJzZXRTdXBlclR5cGVzIiwic2V0UHJvcGVydGllcyIsInNldFByb3Zpc2lvbmFsIiwic2V0U3VwZXJUeXBlIiwiaXNCYXNlVHlwZSIsImJhc2VUeXBlIiwiQkFTRV9UWVBFX1NZTUJPTCIsImlzRXN0YWJsaXNoZWQiLCJlc3RhYmxpc2hlZCIsInJldHJpZXZlQW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSIsImluY2x1ZGVzIiwiaXNDb3R5cGUiLCJwcm9wZXJ0aWVzTGVuZ3RoIiwibGVuZ3RoIiwiY290eXBlIiwiaXNQcmVmaXhlZCIsInByZWZpeGVkIiwiZ2V0UHJlZml4ZWROYW1lIiwicHJlZml4ZWROYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiaXNCYXNpYyIsImJhc2ljIiwic3VwZXJUeXBlc0xlbmd0aCIsImZpcnN0U3VwZXJUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImlzUmVmaW5lZCIsInJlZmluZWQiLCJzdXBlclR5cGVOYW1lIiwiaXNKb2luZWRUbyIsInR5cGUiLCJqb2luZWRUbyIsInR5cGVBbmNlc3RvclR5cGVzIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyIsInR5cGVBbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSIsImlzRXF1YWxUbyIsImludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGgiLCJlcXVhbFRvIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2YiLCJzb21lIiwic3VwZXJUeXBlU3ViVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJzdXBlclR5cGVPZiIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb09yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9PclN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJjb21wYXJlVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm5hbWVUeXBlTmFtZSIsImNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVQcm92aXNpb25hbCIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwibmFtZU5vbWluYWxUeXBlTmFtZSIsInByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSIsInRvSlNPTiIsImFicmlkZ2VkIiwiZ2V0U3RyaW5nIiwianNvbiIsInByZWZpeE5hbWVKU09OIiwicHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lub2FsSlNPTSIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsInByZWZpeE5hbWVGcm9tSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJmcm9tTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2dDQXBCd0I7MkJBQ087MEJBRVI7eUJBQ0s7NkJBQ0k7MkJBQ0M7eUJBQ0E7c0JBQ0c7c0JBUVM7QUFFN0MsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlCQUFjO01BRXBELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUNwRyxLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.614",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.7.2",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.544",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.27",
|
|
16
|
-
"occam-languages": "^3.0.
|
|
16
|
+
"occam-languages": "^3.0.92",
|
|
17
17
|
"occam-query": "^4.1.210"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"juxtapose": "^4.0.143",
|
|
28
28
|
"lively-cli": "^3.0.3",
|
|
29
29
|
"occam-lexers": "^23.2.12",
|
|
30
|
-
"occam-model": "^1.0.
|
|
30
|
+
"occam-model": "^1.0.598",
|
|
31
31
|
"occam-parsers": "^23.2.17",
|
|
32
|
-
"occam-server": "^7.0.
|
|
32
|
+
"occam-server": "^7.0.97",
|
|
33
33
|
"watchful-cli": "^1.7.102"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
@@ -61,7 +61,8 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
61
61
|
|
|
62
62
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration...`);
|
|
63
63
|
|
|
64
|
-
const
|
|
64
|
+
const superTypes = [],
|
|
65
|
+
verifyType = this.verifyType.bind(this),
|
|
65
66
|
verifySuperTypes = this.verifySuperTypes.bind(this),
|
|
66
67
|
verifyTypePrefix = this.verifyTypePrefix.bind(this),
|
|
67
68
|
verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
|
|
@@ -71,7 +72,7 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
71
72
|
verifySuperTypes,
|
|
72
73
|
verifyTypePrefix,
|
|
73
74
|
verifyPropertyDeclaratisons
|
|
74
|
-
], context, (context, back) => {
|
|
75
|
+
], superTypes, context, (superTypes, context, back) => {
|
|
75
76
|
const properties = this.getProperties(),
|
|
76
77
|
typePrefix = context.getTypePrefix(),
|
|
77
78
|
prefixName = (typePrefix !== null) ?
|
|
@@ -84,6 +85,8 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
84
85
|
|
|
85
86
|
this.type.setPrefixName(prefixName);
|
|
86
87
|
|
|
88
|
+
this.type.setSuperTypes(superTypes);
|
|
89
|
+
|
|
87
90
|
context.addType(this.type);
|
|
88
91
|
|
|
89
92
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration.`);
|
|
@@ -100,7 +103,7 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
100
103
|
});
|
|
101
104
|
});
|
|
102
105
|
|
|
103
|
-
verifyType(context, forward, back) {
|
|
106
|
+
verifyType(superTypes, context, forward, back) {
|
|
104
107
|
const typeString = this.type.getString(),
|
|
105
108
|
cotypeDeclarationString = this.getString(); ///
|
|
106
109
|
|
|
@@ -129,14 +132,12 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
129
132
|
return back();
|
|
130
133
|
}
|
|
131
134
|
|
|
132
|
-
this.type.setProvisional(this.provisional);
|
|
133
|
-
|
|
134
135
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type`);
|
|
135
136
|
|
|
136
|
-
return forward(context, back);
|
|
137
|
+
return forward(superTypes, context, back);
|
|
137
138
|
}
|
|
138
139
|
|
|
139
|
-
verifyTypePrefix(context, forward, back) {
|
|
140
|
+
verifyTypePrefix(superTypes, context, forward, back) {
|
|
140
141
|
const typeString = this.type.getString(),
|
|
141
142
|
cotypeDeclarationString = this.getString(); ///
|
|
142
143
|
|
|
@@ -152,10 +153,10 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
152
153
|
|
|
153
154
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix.`);
|
|
154
155
|
|
|
155
|
-
return forward(context, back);
|
|
156
|
+
return forward(superTypes, context, back);
|
|
156
157
|
}
|
|
157
158
|
|
|
158
|
-
verifySuperTypes(context, forward, back) {
|
|
159
|
+
verifySuperTypes(superTypes, context, forward, back) {
|
|
159
160
|
const cotypeDeclarationString = this.getString(); ///
|
|
160
161
|
|
|
161
162
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's super-types...`);
|
|
@@ -164,27 +165,21 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
164
165
|
|
|
165
166
|
if (superTypesLength === 0) {
|
|
166
167
|
const baseType = baseTypeFromNothing(),
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
this.type.setSuperType(superTyupe);
|
|
168
|
+
superType = baseType; ///
|
|
170
169
|
|
|
171
|
-
|
|
170
|
+
this.superTypes.push(superType);
|
|
172
171
|
}
|
|
173
172
|
|
|
174
|
-
const superTypes = []; ///
|
|
175
|
-
|
|
176
173
|
return every(this.superTypes, (superType, context, forward, back) => {
|
|
177
|
-
return this.verifySuperType(
|
|
174
|
+
return this.verifySuperType(superTypes, superType, context, forward, back);
|
|
178
175
|
}, context, (context, back) => {
|
|
179
|
-
this.type.setSuperTypes(superTypes);
|
|
180
|
-
|
|
181
176
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
|
|
182
177
|
|
|
183
|
-
return forward(context, back);
|
|
178
|
+
return forward(superTypes, context, back);
|
|
184
179
|
}, back);
|
|
185
180
|
}
|
|
186
181
|
|
|
187
|
-
verifySuperType(
|
|
182
|
+
verifySuperType(superTypes, superType, context, forward, back) {
|
|
188
183
|
const superTypeString = superType.getString(),
|
|
189
184
|
cotypeDeclarationString = this.getString(); ///
|
|
190
185
|
|
|
@@ -215,7 +210,7 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
215
210
|
return forward(context, back);
|
|
216
211
|
}
|
|
217
212
|
|
|
218
|
-
verifyPropertyDeclaratisons(context, forward, back) {
|
|
213
|
+
verifyPropertyDeclaratisons(superTypes, context, forward, back) {
|
|
219
214
|
const typeString = this.type.getString(),
|
|
220
215
|
cotypeDeclarationString = this.getString(); ///
|
|
221
216
|
|
|
@@ -232,7 +227,7 @@ export default define(class CotypeDeclaration extends Declaration {
|
|
|
232
227
|
}, context, (context, back) => {
|
|
233
228
|
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations.`);
|
|
234
229
|
|
|
235
|
-
return forward(context, back);
|
|
230
|
+
return forward(superTypes, context, back);
|
|
236
231
|
}, back);
|
|
237
232
|
}
|
|
238
233
|
|
|
@@ -51,7 +51,8 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
51
51
|
|
|
52
52
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration...`);
|
|
53
53
|
|
|
54
|
-
const
|
|
54
|
+
const superTypes = [],
|
|
55
|
+
verifyType = this.verifyType.bind(this),
|
|
55
56
|
verifySuperTypes = this.verifySuperTypes.bind(this),
|
|
56
57
|
verifyTypePrefix = this.verifyTypePrefix.bind(this);
|
|
57
58
|
|
|
@@ -59,7 +60,7 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
59
60
|
verifyType,
|
|
60
61
|
verifySuperTypes,
|
|
61
62
|
verifyTypePrefix
|
|
62
|
-
], context, (context, back) => {
|
|
63
|
+
], superTypes, context, (superTypes, context, back) => {
|
|
63
64
|
const properties = this.getProperties(),
|
|
64
65
|
typePrefix = context.getTypePrefix(),
|
|
65
66
|
prefixName = (typePrefix !== null) ?
|
|
@@ -72,6 +73,8 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
72
73
|
|
|
73
74
|
this.type.setPrefixName(prefixName);
|
|
74
75
|
|
|
76
|
+
this.type.setSuperTypes(superTypes);
|
|
77
|
+
|
|
75
78
|
context.addType(this.type);
|
|
76
79
|
|
|
77
80
|
context.debug(`...verified the '${typeDeclarationString}' type declaration.`);
|
|
@@ -88,7 +91,7 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
88
91
|
});
|
|
89
92
|
});
|
|
90
93
|
|
|
91
|
-
verifyType(context, forward, back) {
|
|
94
|
+
verifyType(superTypes, context, forward, back) {
|
|
92
95
|
const typeString = this.type.getString(),
|
|
93
96
|
typeDeclarationString = this.getString(); ///
|
|
94
97
|
|
|
@@ -117,14 +120,12 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
117
120
|
return back();
|
|
118
121
|
}
|
|
119
122
|
|
|
120
|
-
this.type.setProvisional(this.provisional);
|
|
121
|
-
|
|
122
123
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type`);
|
|
123
124
|
|
|
124
|
-
return forward(context, back);
|
|
125
|
+
return forward(superTypes, context, back);
|
|
125
126
|
}
|
|
126
127
|
|
|
127
|
-
verifyTypePrefix(context, forward, back) {
|
|
128
|
+
verifyTypePrefix(superTypes, context, forward, back) {
|
|
128
129
|
const typeString = this.type.getString(),
|
|
129
130
|
typeDeclarationString = this.getString(); ///
|
|
130
131
|
|
|
@@ -140,10 +141,10 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
140
141
|
|
|
141
142
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix.`);
|
|
142
143
|
|
|
143
|
-
return forward(context, back);
|
|
144
|
+
return forward(superTypes, context, back);
|
|
144
145
|
}
|
|
145
146
|
|
|
146
|
-
verifySuperTypes(context, forward, back) {
|
|
147
|
+
verifySuperTypes(superTypes, context, forward, back) {
|
|
147
148
|
const typeDeclarationString = this.getString(); ///
|
|
148
149
|
|
|
149
150
|
context.trace(`Verifying the '${typeDeclarationString}' type declaration's super-types...`);
|
|
@@ -152,27 +153,21 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
152
153
|
|
|
153
154
|
if (superTypesLength === 0) {
|
|
154
155
|
const baseType = baseTypeFromNothing(),
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
this.type.setSuperType(superTyupe);
|
|
156
|
+
superType = baseType; ///
|
|
158
157
|
|
|
159
|
-
|
|
158
|
+
this.superTypes.push(superType);
|
|
160
159
|
}
|
|
161
160
|
|
|
162
|
-
const superTypes = []; ///
|
|
163
|
-
|
|
164
161
|
return every(this.superTypes, (superType, context, forward, back) => {
|
|
165
|
-
return this.verifySuperType(
|
|
162
|
+
return this.verifySuperType(superTypes, superType, context, forward, back);
|
|
166
163
|
}, context, (context, back) => {
|
|
167
|
-
this.type.setSuperTypes(superTypes);
|
|
168
|
-
|
|
169
164
|
context.debug(`...verified the '${typeDeclarationString}' type declaration's super-types.`);
|
|
170
165
|
|
|
171
|
-
return forward(context, back);
|
|
166
|
+
return forward(superTypes, context, back);
|
|
172
167
|
}, back);
|
|
173
168
|
}
|
|
174
169
|
|
|
175
|
-
verifySuperType(
|
|
170
|
+
verifySuperType(superTypes, superType, context, forward, back) {
|
|
176
171
|
const superTypeString = superType.getString(),
|
|
177
172
|
typeDeclarationString = this.getString(); ///
|
|
178
173
|
|
|
@@ -160,7 +160,7 @@ export default define(class ProcedureReference extends Element {
|
|
|
160
160
|
const procedure = this.findProcecure(context),
|
|
161
161
|
nominalValues = this.findNominalValues(context);
|
|
162
162
|
|
|
163
|
-
return procedure.
|
|
163
|
+
return procedure.evaluateNominally(nominalValues, (value, back) => {
|
|
164
164
|
const boolean = value.isBoolean();
|
|
165
165
|
|
|
166
166
|
if (!boolean) {
|
|
@@ -203,7 +203,7 @@ export default define(class ProcedureReference extends Element {
|
|
|
203
203
|
nominalValue
|
|
204
204
|
];
|
|
205
205
|
|
|
206
|
-
return procedure.
|
|
206
|
+
return procedure.evaluateNominally(nominalValues, (value, back) => {
|
|
207
207
|
const boolean = value.isBoolean();
|
|
208
208
|
|
|
209
209
|
if (!boolean) {
|
package/src/element/type.js
CHANGED
|
@@ -62,22 +62,8 @@ export default define(class Type extends Element {
|
|
|
62
62
|
return properties;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
isProvisional(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (includeSuperTypes) {
|
|
69
|
-
if (!provisional) {
|
|
70
|
-
provisional = this.superTypes.some((superType) => {
|
|
71
|
-
const superTypeProvisional = superType.isProvisional();
|
|
72
|
-
|
|
73
|
-
if (superTypeProvisional) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return provisional;
|
|
65
|
+
isProvisional() {
|
|
66
|
+
return this.provisional;
|
|
81
67
|
}
|
|
82
68
|
|
|
83
69
|
setName(name) {
|
|
@@ -116,8 +102,8 @@ export default define(class Type extends Element {
|
|
|
116
102
|
return baseType;
|
|
117
103
|
}
|
|
118
104
|
|
|
119
|
-
isEstablished(
|
|
120
|
-
const provisional = this.isProvisional(
|
|
105
|
+
isEstablished() {
|
|
106
|
+
const provisional = this.isProvisional(),
|
|
121
107
|
established = !provisional;
|
|
122
108
|
|
|
123
109
|
return established;
|
|
@@ -303,16 +289,8 @@ export default define(class Type extends Element {
|
|
|
303
289
|
return comparesToTypeName;
|
|
304
290
|
}
|
|
305
291
|
|
|
306
|
-
compareProvisional(provisional
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
const provisionalA = provisional; ///
|
|
310
|
-
|
|
311
|
-
provisional = this.isProvisional(includeSupertypes);
|
|
312
|
-
|
|
313
|
-
const provisionalB = provisional; ///
|
|
314
|
-
|
|
315
|
-
comparesToProvisional = (provisionalA === provisionalB);
|
|
292
|
+
compareProvisional(provisional) {
|
|
293
|
+
const comparesToProvisional = (provisional === this.provisional);
|
|
316
294
|
|
|
317
295
|
return comparesToProvisional;
|
|
318
296
|
}
|