@skyux/docs-tools 5.0.0-beta.4 → 5.0.0-beta.5

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.
@@ -113,30 +113,43 @@ export class SkyDocsTypeDocAdapterService {
113
113
  const definitions = entry.children
114
114
  .filter(child => child.kindString === 'Property' || child.kindString === 'Accessor')
115
115
  .map(child => {
116
- var _a, _b;
117
- let comment;
116
+ var _a, _b, _c;
117
+ let definition = {
118
+ isOptional: true,
119
+ name: this.getPropertyName(child),
120
+ type: this.getTypeDefinition(child)
121
+ };
122
+ let defaultValue;
118
123
  /* Ensure we are properly capturing definitions which use a getter/setter. Final check is a sanity check */
119
124
  if (child.kindString === 'Accessor' && !((_a = child.comment) === null || _a === void 0 ? void 0 : _a.shortText) && ((_b = child.getSignature) === null || _b === void 0 ? void 0 : _b.length) > 0) {
120
- comment = child.getSignature[0].comment;
125
+ const mainTags = this.getCommentTags(child.comment);
126
+ const getTags = this.getCommentTags(child.getSignature[0].comment);
127
+ this.applyCommentTagValues(definition, mainTags);
128
+ this.applyCommentTagValues(definition, getTags);
129
+ if (((_c = child.setSignature) === null || _c === void 0 ? void 0 : _c.length) > 0) {
130
+ const setTags = this.getCommentTags(child.setSignature[0].comment);
131
+ this.applyCommentTagValues(definition, setTags);
132
+ definition.isOptional = !setTags.extras.required;
133
+ defaultValue = this.getDefaultValue(child, setTags);
134
+ }
135
+ else {
136
+ definition.isOptional = !mainTags.extras.required;
137
+ defaultValue = this.getDefaultValue(child, mainTags);
138
+ }
121
139
  }
122
140
  else {
123
- comment = child.comment;
141
+ const tags = this.getCommentTags(child.comment);
142
+ definition.isOptional = !tags.extras.required;
143
+ this.applyCommentTagValues(definition, tags);
144
+ defaultValue = this.getDefaultValue(child, tags);
145
+ }
146
+ if (defaultValue) {
147
+ definition.defaultValue = defaultValue;
124
148
  }
125
- const tags = this.getCommentTags(comment);
126
- const definition = {
127
- isOptional: !tags.extras.required,
128
- name: this.getPropertyName(child),
129
- type: this.getTypeDefinition(child)
130
- };
131
- this.applyCommentTagValues(definition, tags);
132
149
  const decorator = this.getDecorator(child);
133
150
  if (decorator) {
134
151
  definition.decorator = decorator;
135
152
  }
136
- const defaultValue = this.getDefaultValue(child, tags);
137
- if (defaultValue) {
138
- definition.defaultValue = defaultValue;
139
- }
140
153
  return definition;
141
154
  });
142
155
  return orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);
@@ -461,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
461
474
  }], ctorParameters: function () { return [{ type: i1.SkyDocsTypeDefinitionsProvider, decorators: [{
462
475
  type: Optional
463
476
  }] }]; } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL3R5cGUtZGVmaW5pdGlvbnMvdHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFvRnZCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDOzs7QUFFckM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQ3NCLHVCQUF3RDtRQUF4RCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO0lBQzNFLENBQUM7SUFFRyxpQkFBaUIsQ0FBQyxLQUFtQjtRQUMxQyxNQUFNLFVBQVUsR0FBMkI7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixVQUFVLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckIsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7U0FDcEM7UUFFRCxPQUFPLFVBQVUs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SSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBd0IsRUFBRSxJQUF3QjtRQUN4RSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFCO1FBRUQsb0ZBQW9GO1FBQ3BGLDJFQUEyRTtRQUMzRSx5REFBeUQ7UUFDekQsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtZQUNoQyxPQUFPO1NBQ1I7UUFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDNUIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFtQjs7UUFDckMsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFJLE1BQUEsSUFBSSxDQUFDLHVCQUF1QiwwQ0FBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLElBQUksRUFBRSxDQUFDO0lBQ3JGLENBQUM7OzBIQTlqQlUsNEJBQTRCOzhIQUE1Qiw0QkFBNEIsY0FGM0IsS0FBSzs0RkFFTiw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFJSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvblxufSBmcm9tICcuL2NhbGwtc2lnbmF0dXJlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uXG59IGZyb20gJy4vY2xhc3MtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDbGFzc1Byb3BlcnR5RGVmaW5pdGlvblxufSBmcm9tICcuL3Byb3BlcnR5LWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ29tbWVudFRhZ3Ncbn0gZnJvbSAnLi9jb21tZW50LXRhZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzRGlyZWN0aXZlRGVmaW5pdGlvblxufSBmcm9tICcuL2RpcmVjdGl2ZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvblxufSBmcm9tICcuL2VudW1lcmF0aW9uLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzRW51bWVyYXRpb25NZW1iZXJEZWZpbml0aW9uXG59IGZyb20gJy4vZW51bWVyYXRpb24tbWVtYmVyLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzSW5kZXhTaWduYXR1cmVEZWZpbml0aW9uXG59IGZyb20gJy4vaW5kZXgtc2lnbmF0dXJlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvblxufSBmcm9tICcuL2ludGVyZmFjZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvblxufSBmcm9tICcuL2ludGVyZmFjZS1wcm9wZXJ0eS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NsYXNzTWV0aG9kRGVmaW5pdGlvblxufSBmcm9tICcuL21ldGhvZC1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb25cbn0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQaXBlRGVmaW5pdGlvblxufSBmcm9tICcuL3BpcGUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb25cbn0gZnJvbSAnLi9wcm9wZXJ0eS1kZWNvcmF0b3InO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvblxufSBmcm9tICcuL3R5cGUtYWxpYXMtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NUeXBlRGVmaW5pdGlvblxufSBmcm9tICcuL3R5cGUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NUeXBlRGVmaW5pdGlvbnNQcm92aWRlclxufSBmcm9tICcuL3R5cGUtZGVmaW5pdGlvbnMtcHJvdmlkZXInO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZVBhcmFtZXRlckRlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLXBhcmFtZXRlci1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgVHlwZURvY0NvbW1lbnQsXG4gIFR5cGVEb2NFbnRyeSxcbiAgVHlwZURvY0VudHJ5Q2hpbGQsXG4gIFR5cGVEb2NQYXJhbWV0ZXIsXG4gIFR5cGVEb2NTaWduYXR1cmUsXG4gIFR5cGVEb2NUeXBlLFxuICBUeXBlRG9jVHlwZVBhcmFtZXRlclxufSBmcm9tICcuL3R5cGVkb2MtdHlwZXMnO1xuXG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbi8qKlxuICogQ29udmVydHMgVHlwZURvYyB0eXBlcyBpbnRvIFNLWSBVWCBkb2NzLXRvb2xzIHR5cGVzLCB0byBiZSBzdXBwbGllZCB0byB0aGUgdmFyaW91cyBkZWZpbml0aW9ucyBjb21wb25lbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY3NUeXBlRG9jQWRhcHRlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdHlwZURlZmluaXRpb25zUHJvdmlkZXI/OiBTa3lEb2NzVHlwZURlZmluaXRpb25zUHJvdmlkZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyB0b0NsYXNzRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0NsYXNzRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0NsYXNzRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWVcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICBjb25zdCBtZXRob2RzID0gdGhpcy5nZXRDbGFzc01ldGhvZHMoZW50cnkpO1xuICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgZGVmaW5pdGlvbi5tZXRob2RzID0gbWV0aG9kcztcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRDbGFzc1Byb3BlcnRpZXMoZW50cnkpO1xuICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgZGVmaW5pdGlvbi5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0RpcmVjdGl2ZURlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NEaXJlY3RpdmVEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzRGlyZWN0aXZlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICBzZWxlY3RvcjogdGhpcy5nZXRTZWxlY3RvcihlbnRyeSlcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRDbGFzc1Byb3BlcnRpZXMoZW50cnkpO1xuXG4gICAgY29uc3QgZXZlbnRQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIocCA9PiBwLmRlY29yYXRvcj8ubmFtZSA9PT0gJ091dHB1dCcpO1xuICAgIGlmIChldmVudFByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLmV2ZW50UHJvcGVydGllcyA9IGV2ZW50UHJvcGVydGllcztcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAuZGVjb3JhdG9yPy5uYW1lID09PSAnSW5wdXQnKTtcbiAgICBpZiAoaW5wdXRQcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgZGVmaW5pdGlvbi5pbnB1dFByb3BlcnRpZXMgPSBpbnB1dFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9FbnVtZXJhdGlvbkRlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NFbnVtZXJhdGlvbkRlZmluaXRpb24ge1xuICAgIGNvbnN0IG1lbWJlcnMgPSB0aGlzLmdldEVudW1lcmF0aW9uTWVtYmVycyhlbnRyeSk7XG4gICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG1lbWJlcnMsXG4gICAgICBuYW1lOiBlbnRyeS5uYW1lXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9JbnRlcmZhY2VEZWZpbml0aW9uKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0SW50ZXJmYWNlUHJvcGVydGllcyhlbnRyeSk7XG4gICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0ludGVyZmFjZURlZmluaXRpb24gPSB7XG4gICAgICBhbmNob3JJZDogdGhpcy5nZXRBbmNob3JJZChlbnRyeSksXG4gICAgICBuYW1lOiBlbnRyeS5uYW1lLFxuICAgICAgcHJvcGVydGllc1xuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IHR5cGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbnMoZW50cnkudHlwZVBhcmFtZXRlcik7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgZGVmaW5pdGlvbi50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHVibGljIHRvUGlwZURlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NQaXBlRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbWV0aG9kcyA9IHRoaXMuZ2V0Q2xhc3NNZXRob2RzKGVudHJ5KTtcbiAgICBjb25zdCB0cmFuc2Zvcm1NZXRob2QgPSBtZXRob2RzLmZpbmQobSA9PiBtLm5hbWUgPT09ICd0cmFuc2Zvcm0nKTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzUGlwZURlZmluaXRpb24gPSB7XG4gICAgICBhbmNob3JJZDogdGhpcy5nZXRBbmNob3JJZChlbnRyeSksXG4gICAgICBuYW1lOiBlbnRyeS5uYW1lLFxuICAgICAgdHJhbnNmb3JtTWV0aG9kXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9UeXBlQWxpYXNEZWZpbml0aW9uKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc1R5cGVBbGlhc0RlZmluaXRpb24gPSB7XG4gICAgICBhbmNob3JJZDogdGhpcy5nZXRBbmNob3JJZChlbnRyeSksXG4gICAgICBuYW1lOiBlbnRyeS5uYW1lLFxuICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbih7XG4gICAgICAgIGNvbW1lbnQ6IGVudHJ5LmNvbW1lbnQsXG4gICAgICAgIHR5cGU6IGVudHJ5LnR5cGVcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgY29uc3QgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLmdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyhlbnRyeS50eXBlUGFyYW1ldGVyKTtcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdG9yKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlY29yYXRvclNvdXJjZSA9IGVudHJ5LmRlY29yYXRvcnNbMF0uYXJndW1lbnRzLm9iajtcbiAgICByZXR1cm4gKGRlY29yYXRvclNvdXJjZS5pbmRleE9mKCdzZWxlY3RvcjogYCcpID4gLTEpXG4gICAgICA/IGRlY29yYXRvclNvdXJjZS5zcGxpdCgnc2VsZWN0b3I6IGAnKVsxXS5zcGxpdCgnYCcpWzBdLnJlcGxhY2UoL1xcc1xccysvZywgJyAnKVxuICAgICAgOiBkZWNvcmF0b3JTb3VyY2Uuc3BsaXQoJ3NlbGVjdG9yOiBcXCcnKVsxXS5zcGxpdCgnXFwnJylbMF07XG4gIH1cblxuICBwcml2YXRlIGdldENsYXNzUHJvcGVydGllcyhlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0NsYXNzUHJvcGVydHlEZWZpbml0aW9uW10ge1xuICAgIGlmICghZW50cnkuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbml0aW9ucyA9IGVudHJ5LmNoaWxkcmVuXG4gICAgICAuZmlsdGVyKGNoaWxkID0+IGNoaWxkLmtpbmRTdHJpbmcgPT09ICdQcm9wZXJ0eScgfHwgY2hpbGQua2luZFN0cmluZyA9PT0gJ0FjY2Vzc29yJylcbiAgICAgIC5tYXAoY2hpbGQgPT4ge1xuICAgICAgICBsZXQgY29tbWVudDogVHlwZURvY0NvbW1lbnQ7XG5cbiAgICAgICAgLyogRW5zdXJlIHdlIGFyZSBwcm9wZXJseSBjYXB0dXJpbmcgZGVmaW5pdGlvbnMgd2hpY2ggdXNlIGEgZ2V0dGVyL3NldHRlci4gRmluYWwgY2hlY2sgaXMgYSBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgaWYgKGNoaWxkLmtpbmRTdHJpbmcgPT09ICdBY2Nlc3NvcicgJiYgIWNoaWxkLmNvbW1lbnQ/LnNob3J0VGV4dCAmJiBjaGlsZC5nZXRTaWduYXR1cmU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb21tZW50ID0gY2hpbGQuZ2V0U2lnbmF0dXJlWzBdLmNvbW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWVudCA9IGNoaWxkLmNvbW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhjb21tZW50KTtcbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc0NsYXNzUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICAgICAgICAgIGlzT3B0aW9uYWw6ICF0YWdzLmV4dHJhcy5yZXF1aXJlZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmdldFByb3BlcnR5TmFtZShjaGlsZCksXG4gICAgICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICBjb25zdCBkZWNvcmF0b3IgPSB0aGlzLmdldERlY29yYXRvcihjaGlsZCk7XG4gICAgICAgIGlmIChkZWNvcmF0b3IpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLmRlY29yYXRvciA9IGRlY29yYXRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCB0YWdzKTtcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGRlZmluaXRpb24uZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgZGVmaW5pdGlvbnMsXG4gICAgICBbJ2lzT3B0aW9uYWwnLCAnbmFtZSddLFxuICAgICAgWydhc2MnLCAnYXNjJ11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGFzc01ldGhvZHMoZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZHMgPSBlbnRyeS5jaGlsZHJlblxuICAgICAgLmZpbHRlcihjaGlsZCA9PiBjaGlsZC5raW5kU3RyaW5nID09PSAnTWV0aG9kJyAmJiAvXm5nLy50ZXN0KGNoaWxkLm5hbWUpID09PSBmYWxzZSlcbiAgICAgIC5tYXAoY2hpbGQgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NNZXRob2REZWZpbml0aW9uID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0UHJvcGVydHlOYW1lKGNoaWxkKSxcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbW1lbnRzIGZvciBtZXRob2RzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uXG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSBjaGlsZC5zaWduYXR1cmVzWzBdLmNvbW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNvbW1lbnQpO1xuICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGNoaWxkLnNpZ25hdHVyZXNbMF0udHlwZVBhcmFtZXRlcik7XG4gICAgICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG9yZGVyQnkoXG4gICAgICBtZXRob2RzLFxuICAgICAgWyduYW1lJ10sXG4gICAgICBbJ2FzYyddXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW50ZXJmYWNlUHJvcGVydGllcyhlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWVudHJ5LmNoaWxkcmVuICYmICFlbnRyeS5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW4/Lm1hcChjaGlsZCA9PiB7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KTtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICh0YWdzLmV4dHJhcy5yZXF1aXJlZCkgPyBmYWxzZSA6ICEhKGNoaWxkLmZsYWdzPy5pc09wdGlvbmFsKSxcbiAgICAgICAgbmFtZTogdGhpcy5nZXRQcm9wZXJ0eU5hbWUoY2hpbGQpLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgfTtcblxuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgY29uc3Qgc29ydGVkID0gb3JkZXJCeShcbiAgICAgIGRlZmluaXRpb25zLFxuICAgICAgWydpc09wdGlvbmFsJywgJ25hbWUnXSxcbiAgICAgIFsnYXNjJywgJ2FzYyddXG4gICAgKTtcblxuICAgIC8vIEFkZCBhbnkgaW5kZXggc2lnbmF0dXJlcywgZS5nLiBgW186IHN0cmluZ106IGFueWBcbiAgICBpZiAoZW50cnkuaW5kZXhTaWduYXR1cmUpIHtcbiAgICAgIGNvbnN0IGluZGV4U2lnbmF0dXJlID0gZW50cnkuaW5kZXhTaWduYXR1cmU7XG4gICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICAgICAgICBpc09wdGlvbmFsOiB0cnVlLFxuICAgICAgICBuYW1lOiBpbmRleFNpZ25hdHVyZS5uYW1lLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgaW5kZXhTaWduYXR1cmU6IHRoaXMuZ2V0SW5kZXhTaWduYXR1cmVEZWZpbml0aW9uKGluZGV4U2lnbmF0dXJlKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhpbmRleFNpZ25hdHVyZS5jb21tZW50KTtcbiAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuICAgICAgc29ydGVkLnB1c2goZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzRW51bWVyYXRpb25NZW1iZXJEZWZpbml0aW9uW10ge1xuICAgIGlmICghZW50cnkuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnkuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NFbnVtZXJhdGlvbk1lbWJlckRlZmluaXRpb24gPSB7XG4gICAgICAgIG5hbWU6IGNoaWxkLm5hbWVcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlRGVmaW5pdGlvbihjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQpOiBTa3lEb2NzVHlwZURlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZURlZmluaXRpb247XG5cbiAgICBjb25zdCBraW5kU3RyaW5nID0gY2hpbGQua2luZFN0cmluZztcbiAgICBzd2l0Y2ggKGtpbmRTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ0FjY2Vzc29yJzpcbiAgICAgICAgaWYgKGNoaWxkLnNldFNpZ25hdHVyZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkLnNldFNpZ25hdHVyZVswXS5wYXJhbWV0ZXJzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZC5nZXRTaWduYXR1cmVbMF0pO1xuXG4gICAgICBjYXNlICdNZXRob2QnOlxuICAgICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICAgIGNhbGxTaWduYXR1cmU6IHRoaXMuZ2V0Q2FsbFNpZ25hdHVyZURlZmluaXRpb24oY2hpbGQuc2lnbmF0dXJlc1swXSwgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KSksXG4gICAgICAgICAgbmFtZTogY2hpbGQuc2lnbmF0dXJlc1swXS5uYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSBjaGlsZC50eXBlLm5hbWUgfHwgY2hpbGQudHlwZS5lbGVtZW50VHlwZT8ubmFtZSB8fCBjaGlsZC50eXBlLnZhbHVlO1xuXG4gICAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogY2hpbGQudHlwZS50eXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5pb24/XG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVzKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi51bmlvblR5cGVzID0gY2hpbGQudHlwZS50eXBlcy5tYXAodCA9PiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdCB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHJlZmxlY3Rpb24gdHlwZXMuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGUgPT09ICdyZWZsZWN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gY2hpbGQudHlwZS5kZWNsYXJhdGlvbjtcbiAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGVjbGFyYXRpb24uc2lnbmF0dXJlcykge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmNhbGxTaWduYXR1cmUgPSB0aGlzLmdldENhbGxTaWduYXR1cmVEZWZpbml0aW9uKFxuICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uLnNpZ25hdHVyZXNbMF0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNsYXJhdGlvbi5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleFNpZ25hdHVyZSA9IGRlY2xhcmF0aW9uLmluZGV4U2lnbmF0dXJlO1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmluZGV4U2lnbmF0dXJlID0gdGhpcy5nZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oaW5kZXhTaWduYXR1cmUpO1xuICAgICAgICAgICAgfSBlbHNlIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIGlmIChkZWNsYXJhdGlvbi5jaGlsZHJlbikge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLnR5cGVMaXRlcmFsID0ge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0SW50ZXJmYWNlUHJvcGVydGllcyh7XG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogZGVjbGFyYXRpb24uY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZSA9PT0gJ3R5cGVPcGVyYXRvcicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBgJHtjaGlsZC50eXBlLm9wZXJhdG9yfSAke2NoaWxkLnR5cGUudGFyZ2V0Lm5hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVBcmd1bWVudHMpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKGNoaWxkLnR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJEZWZpbml0aW9ucyhcbiAgICBjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLFxuICAgIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFnc1xuICApOiBTa3lEb2NzUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWNhbGxTaWduYXR1cmUucGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uW10gPSBjYWxsU2lnbmF0dXJlLnBhcmFtZXRlcnMubWFwKHAgPT4ge1xuICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0UGFyYW1ldGVyQ29tbWVudFRhZ3MocCwgcGFyZW50VGFncyk7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShwLCB0YWdzKTtcbiAgICAgIGNvbnN0IHR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKHAudHlwZSk7XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcjogU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICEhKGRlZmF1bHRWYWx1ZSB8fCAhIXAuZmxhZ3M/LmlzT3B0aW9uYWwpLFxuICAgICAgICBuYW1lOiBwLm5hbWUsXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24ocClcbiAgICAgIH07XG5cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbWV0ZXIuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgICBwYXJhbWV0ZXIuZGVzY3JpcHRpb24gPSB0YWdzLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZUFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcGFyYW1ldGVyLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlQXJndW1lbnREZWZpbml0aW9ucyh0eXBlQ29uZmlnOiBUeXBlRG9jVHlwZSk6IFNreURvY3NUeXBlRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVDb25maWcgfHwgIXR5cGVDb25maWcudHlwZUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQ29uZmlnLnR5cGVBcmd1bWVudHMubWFwKCh0eXBlQXJndW1lbnQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdHlwZUFyZ3VtZW50IH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbihjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLCB0YWdzOiBTa3lEb2NzQ29tbWVudFRhZ3MpOiBTa3lEb2NzQ2FsbFNpZ25hdHVyZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbiA9IHtcbiAgICAgIHJldHVyblR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2FsbFNpZ25hdHVyZSlcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZ2V0UGFyYW1ldGVyRGVmaW5pdGlvbnMoY2FsbFNpZ25hdHVyZSwgdGFncyk7XG4gICAgaWYgKHBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oc2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlKTogU2t5RG9jc0luZGV4U2lnbmF0dXJlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleToge1xuICAgICAgICBuYW1lOiBzaWduYXR1cmUucGFyYW1ldGVyc1swXS5uYW1lLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHNpZ25hdHVyZS5wYXJhbWV0ZXJzWzBdKVxuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oc2lnbmF0dXJlKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyh0eXBlUGFyYW1ldGVyczogVHlwZURvY1R5cGVQYXJhbWV0ZXJbXSk6IFNreURvY3NUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uID0ge1xuICAgICAgICBuYW1lOiB0eXBlUGFyYW0ubmFtZVxuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGVQYXJhbS50eXBlKSB7XG4gICAgICAgIGRlZmluaXRpb24udHlwZSA9IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oe1xuICAgICAgICAgIHR5cGU6IHR5cGVQYXJhbS50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudFRhZ3MoY29tbWVudDogVHlwZURvY0NvbW1lbnQpOiBTa3lEb2NzQ29tbWVudFRhZ3Mge1xuICAgIGxldCBjb2RlRXhhbXBsZTogc3RyaW5nO1xuICAgIGxldCBjb2RlRXhhbXBsZUxhbmd1YWdlOiBzdHJpbmcgPSAnbWFya3VwJztcbiAgICBsZXQgZGVwcmVjYXRpb25XYXJuaW5nOiBzdHJpbmc7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgICBsZXQgcGFyYW1ldGVyczoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIH1bXTtcblxuICAgIGNvbnN0IGV4dHJhczoge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgfSA9IHt9O1xuXG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgIGlmIChjb21tZW50LnRhZ3MpIHtcbiAgICAgICAgY29tbWVudC50YWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHRhZy50YWcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RlcHJlY2F0ZWQnOlxuICAgICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcgPSB0YWcudGV4dC50cmltKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRhZy50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4YW1wbGUnOlxuICAgICAgICAgICAgICBjb2RlRXhhbXBsZSA9IHRhZy50ZXh0LnRyaW0oKS5zcGxpdCgnYGBgJylbMV0udHJpbSgpO1xuICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IGNvZGVFeGFtcGxlLnNwbGl0KCdcXG4nKVswXTtcbiAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlID09PSAnbWFya3VwJyB8fCBsYW5ndWFnZSA9PT0gJ3R5cGVzY3JpcHQnKSB7XG4gICAgICAgICAgICAgICAgY29kZUV4YW1wbGUgPSBjb2RlRXhhbXBsZS5zbGljZShsYW5ndWFnZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBjb2RlRXhhbXBsZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BhcmFtJzpcbiAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgfHwgW107XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdGFnLnBhcmFtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0YWcudGV4dC50cmltKClcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBleHRyYXNbdGFnLnRhZ10gPSB0YWcudGV4dDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZGVzY3JpcHRpb24gPSAoY29tbWVudC5zaG9ydFRleHQgfHwgY29tbWVudC50ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVFeGFtcGxlLFxuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZXh0cmFzLFxuICAgICAgcGFyYW1ldGVyc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUGFyYW1ldGVyIGRlc2NyaXB0aW9ucyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBwYXJlbnQncyAoZnVuY3Rpb24vbWV0aG9kKSBjb21tZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJDb21tZW50VGFncyhwYXJhbWV0ZXI6IFR5cGVEb2NQYXJhbWV0ZXIsIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IFNreURvY3NDb21tZW50VGFncyB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MocGFyYW1ldGVyLmNvbW1lbnQpO1xuICAgIGNvbnN0IHBhcmFtVGFncyA9IHBhcmVudFRhZ3MucGFyYW1ldGVycztcbiAgICBjb25zdCB0YWdQYXJhbSA9IChwYXJhbVRhZ3MpID8gcGFyYW1UYWdzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBwYXJhbWV0ZXIubmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRhZ1BhcmFtIHx8ICF0YWdQYXJhbS5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRhZ3MsXG4gICAgICAuLi57XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0YWdQYXJhbS5kZXNjcmlwdGlvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBjb21tZW50IHRhZyAoZS5nLiBgQHBhcmFtYCkgdmFsdWVzIHRvIHRoZSBwcm92aWRlZCBkZWZpbml0aW9uLCBpZiB0aGUgdmFsdWUgaXMgZGVmaW5lZC5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlDb21tZW50VGFnVmFsdWVzKFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIGNvZGVFeGFtcGxlPzogc3RyaW5nO1xuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZT86IHN0cmluZztcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZz86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH0sXG4gICAgdGFnczogU2t5RG9jc0NvbW1lbnRUYWdzXG4gICk6IHZvaWQge1xuICAgIGlmICh0YWdzLmNvZGVFeGFtcGxlKSB7XG4gICAgICBkZWZpbml0aW9uLmNvZGVFeGFtcGxlID0gdGFncy5jb2RlRXhhbXBsZTtcbiAgICAgIGRlZmluaXRpb24uY29kZUV4YW1wbGVMYW5ndWFnZSA9IHRhZ3MuY29kZUV4YW1wbGVMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXByZWNhdGlvbldhcm5pbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5pdGlvbi5kZXByZWNhdGlvbldhcm5pbmcgPSB0YWdzLmRlcHJlY2F0aW9uV2FybmluZztcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgZGVmaW5pdGlvbi5kZXNjcmlwdGlvbiA9IHRhZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWNvcmF0b3IoY2hpbGQ6IFR5cGVEb2NFbnRyeUNoaWxkKTogU2t5RG9jc1Byb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbmFtZSA9IGNoaWxkLmRlY29yYXRvcnMgJiYgY2hpbGQuZGVjb3JhdG9yc1swXSAmJiBjaGlsZC5kZWNvcmF0b3JzWzBdLm5hbWU7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eTogVHlwZURvY0VudHJ5Q2hpbGQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlY29yYXRvcnMgPSBwcm9wZXJ0eS5kZWNvcmF0b3JzICYmIHByb3BlcnR5LmRlY29yYXRvcnNbMF07XG4gICAgLy8gVXNlIHRoZSBJbnB1dCdzIGJvdW5kIHByb3BlcnR5IG5hbWUsIGlmIGZvdW5kLlxuICAgIC8vIGUuZy4gQElucHV0KCdmb29iYXInKVxuICAgIHJldHVybiAoZGVjb3JhdG9ycz8uYXJndW1lbnRzPy5iaW5kaW5nUHJvcGVydHlOYW1lKVxuICAgICAgPyBkZWNvcmF0b3JzLmFyZ3VtZW50cy5iaW5kaW5nUHJvcGVydHlOYW1lLnJlcGxhY2UoLyhcXCd8XFxcIikvZywgJycpXG4gICAgICA6IHByb3BlcnR5Lm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQsIHRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRhZ3MuZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGFncy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHlwZURvYyB2ZXJzaW9uIDAuMjAueCBzdG9wcGVkIGF1dG8tZ2VuZXJhdGluZyBpbml0aWFsaXplcnMgZm9yIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgLy8gKGFuZCByZXBsYWNlZCB0aGVtIHdpdGggXCIuLi5cIikgZHVlIHRvIHRoZSBjb21wbGljYXRlZCBsb2dpYyBpdCByZXF1aXJlZC5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9UeXBlU3Ryb25nL3R5cGVkb2MvaXNzdWVzLzE1NTJcbiAgICBpZiAoY2hpbGQuZGVmYXVsdFZhbHVlID09PSAnLi4uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZC5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEFuY2hvcklkKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnRyeS5hbmNob3JJZCB8fCB0aGlzLnR5cGVEZWZpbml0aW9uc1Byb3ZpZGVyPy5hbmNob3JJZHNbZW50cnkubmFtZV0gfHwgJyc7XG4gIH1cblxufVxuIl19
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL3R5cGUtZGVmaW5pdGlvbnMvdHlwZWRvYy1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFvRnZCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDOzs7QUFFckM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQ3NCLHVCQUF3RDtRQUF4RCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO0lBQzFFLENBQUM7SUFFRSxpQkFBaUIsQ0FBQyxLQUFtQjtRQUMxQyxNQUFNLFVBQVUsR0FBMkI7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixVQUFVLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckIsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7U0FDcEM7UUFFRCxPQUFPLFVBQVUs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O1FBRUQsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBbUI7O1FBQ3JDLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSSxNQUFBLElBQUksQ0FBQyx1QkFBdUIsMENBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFJLEVBQUUsQ0FBQztJQUNyRixDQUFDOzswSEFobEJVLDRCQUE0Qjs4SEFBNUIsNEJBQTRCLGNBRjNCLEtBQUs7NEZBRU4sNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBSUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2FsbFNpZ25hdHVyZURlZmluaXRpb25cbn0gZnJvbSAnLi9jYWxsLXNpZ25hdHVyZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NsYXNzRGVmaW5pdGlvblxufSBmcm9tICcuL2NsYXNzLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb25cbn0gZnJvbSAnLi9wcm9wZXJ0eS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0NvbW1lbnRUYWdzXG59IGZyb20gJy4vY29tbWVudC10YWdzJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0RpcmVjdGl2ZURlZmluaXRpb25cbn0gZnJvbSAnLi9kaXJlY3RpdmUtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NFbnVtZXJhdGlvbkRlZmluaXRpb25cbn0gZnJvbSAnLi9lbnVtZXJhdGlvbi1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0VudW1lcmF0aW9uTWVtYmVyRGVmaW5pdGlvblxufSBmcm9tICcuL2VudW1lcmF0aW9uLW1lbWJlci1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0luZGV4U2lnbmF0dXJlRGVmaW5pdGlvblxufSBmcm9tICcuL2luZGV4LXNpZ25hdHVyZS1kZWZpbml0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc0ludGVyZmFjZURlZmluaXRpb25cbn0gZnJvbSAnLi9pbnRlcmZhY2UtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb25cbn0gZnJvbSAnLi9pbnRlcmZhY2UtcHJvcGVydHktZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb25cbn0gZnJvbSAnLi9tZXRob2QtZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uXG59IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzUGlwZURlZmluaXRpb25cbn0gZnJvbSAnLi9waXBlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG59IGZyb20gJy4vcHJvcGVydHktZGVjb3JhdG9yJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVBbGlhc0RlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLWFsaWFzLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25cbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb24nO1xuXG5pbXBvcnQge1xuICBTa3lEb2NzVHlwZURlZmluaXRpb25zUHJvdmlkZXJcbn0gZnJvbSAnLi90eXBlLWRlZmluaXRpb25zLXByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uXG59IGZyb20gJy4vdHlwZS1wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5cbmltcG9ydCB7XG4gIFR5cGVEb2NDb21tZW50LFxuICBUeXBlRG9jRW50cnksXG4gIFR5cGVEb2NFbnRyeUNoaWxkLFxuICBUeXBlRG9jUGFyYW1ldGVyLFxuICBUeXBlRG9jU2lnbmF0dXJlLFxuICBUeXBlRG9jVHlwZSxcbiAgVHlwZURvY1R5cGVQYXJhbWV0ZXJcbn0gZnJvbSAnLi90eXBlZG9jLXR5cGVzJztcblxuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG4vKipcbiAqIENvbnZlcnRzIFR5cGVEb2MgdHlwZXMgaW50byBTS1kgVVggZG9jcy10b29scyB0eXBlcywgdG8gYmUgc3VwcGxpZWQgdG8gdGhlIHZhcmlvdXMgZGVmaW5pdGlvbnMgY29tcG9uZW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55J1xufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzVHlwZURvY0FkYXB0ZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHR5cGVEZWZpbml0aW9uc1Byb3ZpZGVyPzogU2t5RG9jc1R5cGVEZWZpbml0aW9uc1Byb3ZpZGVyXG4gICkgeyB9XG5cbiAgcHVibGljIHRvQ2xhc3NEZWZpbml0aW9uKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmdldENsYXNzTWV0aG9kcyhlbnRyeSk7XG4gICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLm1ldGhvZHMgPSBtZXRob2RzO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG4gICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHVibGljIHRvRGlyZWN0aXZlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0RpcmVjdGl2ZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NEaXJlY3RpdmVEZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgIHNlbGVjdG9yOiB0aGlzLmdldFNlbGVjdG9yKGVudHJ5KVxuICAgIH07XG5cbiAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhlbnRyeS5jb21tZW50KTtcbiAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldENsYXNzUHJvcGVydGllcyhlbnRyeSk7XG5cbiAgICBjb25zdCBldmVudFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAuZGVjb3JhdG9yPy5uYW1lID09PSAnT3V0cHV0Jyk7XG4gICAgaWYgKGV2ZW50UHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24uZXZlbnRQcm9wZXJ0aWVzID0gZXZlbnRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0UHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKHAgPT4gcC5kZWNvcmF0b3I/Lm5hbWUgPT09ICdJbnB1dCcpO1xuICAgIGlmIChpbnB1dFByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLmlucHV0UHJvcGVydGllcyA9IGlucHV0UHJvcGVydGllcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0VudW1lcmF0aW9uRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0VudW1lcmF0aW9uRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbWVtYmVycyA9IHRoaXMuZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzRW51bWVyYXRpb25EZWZpbml0aW9uID0ge1xuICAgICAgYW5jaG9ySWQ6IHRoaXMuZ2V0QW5jaG9ySWQoZW50cnkpLFxuICAgICAgbWVtYmVycyxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWVcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b0ludGVyZmFjZURlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NJbnRlcmZhY2VEZWZpbml0aW9uIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRJbnRlcmZhY2VQcm9wZXJ0aWVzKGVudHJ5KTtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGVudHJ5LmNvbW1lbnQpO1xuICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuXG4gICAgY29uc3QgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLmdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyhlbnRyeS50eXBlUGFyYW1ldGVyKTtcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwdWJsaWMgdG9QaXBlRGVmaW5pdGlvbihlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc1BpcGVEZWZpbml0aW9uIHtcbiAgICBjb25zdCBtZXRob2RzID0gdGhpcy5nZXRDbGFzc01ldGhvZHMoZW50cnkpO1xuICAgIGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IG1ldGhvZHMuZmluZChtID0+IG0ubmFtZSA9PT0gJ3RyYW5zZm9ybScpO1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NQaXBlRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0cmFuc2Zvcm1NZXRob2RcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0b1R5cGVBbGlhc0RlZmluaXRpb24oZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NUeXBlQWxpYXNEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZUFsaWFzRGVmaW5pdGlvbiA9IHtcbiAgICAgIGFuY2hvcklkOiB0aGlzLmdldEFuY2hvcklkKGVudHJ5KSxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHtcbiAgICAgICAgY29tbWVudDogZW50cnkuY29tbWVudCxcbiAgICAgICAgdHlwZTogZW50cnkudHlwZVxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoZW50cnkuY29tbWVudCk7XG4gICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGVudHJ5LnR5cGVQYXJhbWV0ZXIpO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIGRlZmluaXRpb24udHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0b3IoZW50cnk6IFR5cGVEb2NFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVjb3JhdG9yU291cmNlID0gZW50cnkuZGVjb3JhdG9yc1swXS5hcmd1bWVudHMub2JqO1xuICAgIHJldHVybiAoZGVjb3JhdG9yU291cmNlLmluZGV4T2YoJ3NlbGVjdG9yOiBgJykgPiAtMSlcbiAgICAgID8gZGVjb3JhdG9yU291cmNlLnNwbGl0KCdzZWxlY3RvcjogYCcpWzFdLnNwbGl0KCdgJylbMF0ucmVwbGFjZSgvXFxzXFxzKy9nLCAnICcpXG4gICAgICA6IGRlY29yYXRvclNvdXJjZS5zcGxpdCgnc2VsZWN0b3I6IFxcJycpWzFdLnNwbGl0KCdcXCcnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xhc3NQcm9wZXJ0aWVzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW5cbiAgICAgIC5maWx0ZXIoY2hpbGQgPT4gY2hpbGQua2luZFN0cmluZyA9PT0gJ1Byb3BlcnR5JyB8fCBjaGlsZC5raW5kU3RyaW5nID09PSAnQWNjZXNzb3InKVxuICAgICAgLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIGxldCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgICAgaXNPcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLmdldFByb3BlcnR5TmFtZShjaGlsZCksXG4gICAgICAgICAgdHlwZTogdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZClcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuXG4gICAgICAgIC8qIEVuc3VyZSB3ZSBhcmUgcHJvcGVybHkgY2FwdHVyaW5nIGRlZmluaXRpb25zIHdoaWNoIHVzZSBhIGdldHRlci9zZXR0ZXIuIEZpbmFsIGNoZWNrIGlzIGEgc2FuaXR5IGNoZWNrICovXG4gICAgICAgIGlmIChjaGlsZC5raW5kU3RyaW5nID09PSAnQWNjZXNzb3InICYmICFjaGlsZC5jb21tZW50Py5zaG9ydFRleHQgJiYgY2hpbGQuZ2V0U2lnbmF0dXJlPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbWFpblRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGdldFRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmdldFNpZ25hdHVyZVswXS5jb21tZW50KTtcblxuICAgICAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIG1haW5UYWdzKTtcbiAgICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCBnZXRUYWdzKTtcblxuICAgICAgICAgIGlmIChjaGlsZC5zZXRTaWduYXR1cmU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNldFRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLnNldFNpZ25hdHVyZVswXS5jb21tZW50KTtcblxuICAgICAgICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgc2V0VGFncyk7XG5cbiAgICAgICAgICAgIGRlZmluaXRpb24uaXNPcHRpb25hbCA9ICFzZXRUYWdzLmV4dHJhcy5yZXF1aXJlZDtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCBzZXRUYWdzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVmaW5pdGlvbi5pc09wdGlvbmFsID0gIW1haW5UYWdzLmV4dHJhcy5yZXF1aXJlZDtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCBtYWluVGFncyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MoY2hpbGQuY29tbWVudCk7XG5cbiAgICAgICAgICBkZWZpbml0aW9uLmlzT3B0aW9uYWwgPSAhdGFncy5leHRyYXMucmVxdWlyZWQ7XG5cbiAgICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNoaWxkLCB0YWdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29yYXRvciA9IHRoaXMuZ2V0RGVjb3JhdG9yKGNoaWxkKTtcbiAgICAgICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgICAgIGRlZmluaXRpb24uZGVjb3JhdG9yID0gZGVjb3JhdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgZGVmaW5pdGlvbnMsXG4gICAgICBbJ2lzT3B0aW9uYWwnLCAnbmFtZSddLFxuICAgICAgWydhc2MnLCAnYXNjJ11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGFzc01ldGhvZHMoZW50cnk6IFR5cGVEb2NFbnRyeSk6IFNreURvY3NDbGFzc01ldGhvZERlZmluaXRpb25bXSB7XG4gICAgaWYgKCFlbnRyeS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZHMgPSBlbnRyeS5jaGlsZHJlblxuICAgICAgLmZpbHRlcihjaGlsZCA9PiBjaGlsZC5raW5kU3RyaW5nID09PSAnTWV0aG9kJyAmJiAvXm5nLy50ZXN0KGNoaWxkLm5hbWUpID09PSBmYWxzZSlcbiAgICAgIC5tYXAoY2hpbGQgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzQ2xhc3NNZXRob2REZWZpbml0aW9uID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0UHJvcGVydHlOYW1lKGNoaWxkKSxcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbW1lbnRzIGZvciBtZXRob2RzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uXG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSBjaGlsZC5zaWduYXR1cmVzWzBdLmNvbW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNvbW1lbnQpO1xuICAgICAgICB0aGlzLmFwcGx5Q29tbWVudFRhZ1ZhbHVlcyhkZWZpbml0aW9uLCB0YWdzKTtcblxuICAgICAgICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHRoaXMuZ2V0VHlwZVBhcmFtZXRlckRlZmluaXRpb25zKGNoaWxkLnNpZ25hdHVyZXNbMF0udHlwZVBhcmFtZXRlcik7XG4gICAgICAgIGlmICh0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG9yZGVyQnkoXG4gICAgICBtZXRob2RzLFxuICAgICAgWyduYW1lJ10sXG4gICAgICBbJ2FzYyddXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW50ZXJmYWNlUHJvcGVydGllcyhlbnRyeTogVHlwZURvY0VudHJ5KTogU2t5RG9jc0ludGVyZmFjZVByb3BlcnR5RGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWVudHJ5LmNoaWxkcmVuICYmICFlbnRyeS5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gZW50cnkuY2hpbGRyZW4/Lm1hcChjaGlsZCA9PiB7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KTtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NJbnRlcmZhY2VQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICh0YWdzLmV4dHJhcy5yZXF1aXJlZCkgPyBmYWxzZSA6ICEhKGNoaWxkLmZsYWdzPy5pc09wdGlvbmFsKSxcbiAgICAgICAgbmFtZTogdGhpcy5nZXRQcm9wZXJ0eU5hbWUoY2hpbGQpLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkKVxuICAgICAgfTtcblxuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgY29uc3Qgc29ydGVkID0gb3JkZXJCeShcbiAgICAgIGRlZmluaXRpb25zLFxuICAgICAgWydpc09wdGlvbmFsJywgJ25hbWUnXSxcbiAgICAgIFsnYXNjJywgJ2FzYyddXG4gICAgKTtcblxuICAgIC8vIEFkZCBhbnkgaW5kZXggc2lnbmF0dXJlcywgZS5nLiBgW186IHN0cmluZ106IGFueWBcbiAgICBpZiAoZW50cnkuaW5kZXhTaWduYXR1cmUpIHtcbiAgICAgIGNvbnN0IGluZGV4U2lnbmF0dXJlID0gZW50cnkuaW5kZXhTaWduYXR1cmU7XG4gICAgICBjb25zdCBkZWZpbml0aW9uOiBTa3lEb2NzSW50ZXJmYWNlUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICAgICAgICBpc09wdGlvbmFsOiB0cnVlLFxuICAgICAgICBuYW1lOiBpbmRleFNpZ25hdHVyZS5uYW1lLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgaW5kZXhTaWduYXR1cmU6IHRoaXMuZ2V0SW5kZXhTaWduYXR1cmVEZWZpbml0aW9uKGluZGV4U2lnbmF0dXJlKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YWdzID0gdGhpcy5nZXRDb21tZW50VGFncyhpbmRleFNpZ25hdHVyZS5jb21tZW50KTtcbiAgICAgIHRoaXMuYXBwbHlDb21tZW50VGFnVmFsdWVzKGRlZmluaXRpb24sIHRhZ3MpO1xuICAgICAgc29ydGVkLnB1c2goZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW51bWVyYXRpb25NZW1iZXJzKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBTa3lEb2NzRW51bWVyYXRpb25NZW1iZXJEZWZpbml0aW9uW10ge1xuICAgIGlmICghZW50cnkuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnkuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NFbnVtZXJhdGlvbk1lbWJlckRlZmluaXRpb24gPSB7XG4gICAgICAgIG5hbWU6IGNoaWxkLm5hbWVcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldENvbW1lbnRUYWdzKGNoaWxkLmNvbW1lbnQpO1xuICAgICAgdGhpcy5hcHBseUNvbW1lbnRUYWdWYWx1ZXMoZGVmaW5pdGlvbiwgdGFncyk7XG5cbiAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlRGVmaW5pdGlvbihjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQpOiBTa3lEb2NzVHlwZURlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uOiBTa3lEb2NzVHlwZURlZmluaXRpb247XG5cbiAgICBjb25zdCBraW5kU3RyaW5nID0gY2hpbGQua2luZFN0cmluZztcbiAgICBzd2l0Y2ggKGtpbmRTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ0FjY2Vzc29yJzpcbiAgICAgICAgaWYgKGNoaWxkLnNldFNpZ25hdHVyZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKGNoaWxkLnNldFNpZ25hdHVyZVswXS5wYXJhbWV0ZXJzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlRGVmaW5pdGlvbihjaGlsZC5nZXRTaWduYXR1cmVbMF0pO1xuXG4gICAgICBjYXNlICdNZXRob2QnOlxuICAgICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICAgIGNhbGxTaWduYXR1cmU6IHRoaXMuZ2V0Q2FsbFNpZ25hdHVyZURlZmluaXRpb24oY2hpbGQuc2lnbmF0dXJlc1swXSwgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KSksXG4gICAgICAgICAgbmFtZTogY2hpbGQuc2lnbmF0dXJlc1swXS5uYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSBjaGlsZC50eXBlLm5hbWUgfHwgY2hpbGQudHlwZS5lbGVtZW50VHlwZT8ubmFtZSB8fCBjaGlsZC50eXBlLnZhbHVlO1xuXG4gICAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogY2hpbGQudHlwZS50eXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5pb24/XG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVzKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi51bmlvblR5cGVzID0gY2hpbGQudHlwZS50eXBlcy5tYXAodCA9PiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdCB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHJlZmxlY3Rpb24gdHlwZXMuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGUgPT09ICdyZWZsZWN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gY2hpbGQudHlwZS5kZWNsYXJhdGlvbjtcbiAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGVjbGFyYXRpb24uc2lnbmF0dXJlcykge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmNhbGxTaWduYXR1cmUgPSB0aGlzLmdldENhbGxTaWduYXR1cmVEZWZpbml0aW9uKFxuICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uLnNpZ25hdHVyZXNbMF0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDb21tZW50VGFncyhjaGlsZC5jb21tZW50KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNsYXJhdGlvbi5pbmRleFNpZ25hdHVyZSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleFNpZ25hdHVyZSA9IGRlY2xhcmF0aW9uLmluZGV4U2lnbmF0dXJlO1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLmluZGV4U2lnbmF0dXJlID0gdGhpcy5nZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oaW5kZXhTaWduYXR1cmUpO1xuICAgICAgICAgICAgfSBlbHNlIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIGlmIChkZWNsYXJhdGlvbi5jaGlsZHJlbikge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uLnR5cGVMaXRlcmFsID0ge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0SW50ZXJmYWNlUHJvcGVydGllcyh7XG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogZGVjbGFyYXRpb24uY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUudHlwZSA9PT0gJ3R5cGVPcGVyYXRvcicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBgJHtjaGlsZC50eXBlLm9wZXJhdG9yfSAke2NoaWxkLnR5cGUudGFyZ2V0Lm5hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZC50eXBlLnR5cGVBcmd1bWVudHMpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLnR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKGNoaWxkLnR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJEZWZpbml0aW9ucyhcbiAgICBjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLFxuICAgIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFnc1xuICApOiBTa3lEb2NzUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWNhbGxTaWduYXR1cmUucGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFNreURvY3NQYXJhbWV0ZXJEZWZpbml0aW9uW10gPSBjYWxsU2lnbmF0dXJlLnBhcmFtZXRlcnMubWFwKHAgPT4ge1xuICAgICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0UGFyYW1ldGVyQ29tbWVudFRhZ3MocCwgcGFyZW50VGFncyk7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShwLCB0YWdzKTtcbiAgICAgIGNvbnN0IHR5cGVBcmd1bWVudHMgPSB0aGlzLmdldFR5cGVBcmd1bWVudERlZmluaXRpb25zKHAudHlwZSk7XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcjogU2t5RG9jc1BhcmFtZXRlckRlZmluaXRpb24gPSB7XG4gICAgICAgIGlzT3B0aW9uYWw6ICEhKGRlZmF1bHRWYWx1ZSB8fCAhIXAuZmxhZ3M/LmlzT3B0aW9uYWwpLFxuICAgICAgICBuYW1lOiBwLm5hbWUsXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24ocClcbiAgICAgIH07XG5cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbWV0ZXIuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgICBwYXJhbWV0ZXIuZGVzY3JpcHRpb24gPSB0YWdzLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZUFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcGFyYW1ldGVyLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlQXJndW1lbnREZWZpbml0aW9ucyh0eXBlQ29uZmlnOiBUeXBlRG9jVHlwZSk6IFNreURvY3NUeXBlRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVDb25maWcgfHwgIXR5cGVDb25maWcudHlwZUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQ29uZmlnLnR5cGVBcmd1bWVudHMubWFwKCh0eXBlQXJndW1lbnQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHsgdHlwZTogdHlwZUFyZ3VtZW50IH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbihjYWxsU2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlLCB0YWdzOiBTa3lEb2NzQ29tbWVudFRhZ3MpOiBTa3lEb2NzQ2FsbFNpZ25hdHVyZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb246IFNreURvY3NDYWxsU2lnbmF0dXJlRGVmaW5pdGlvbiA9IHtcbiAgICAgIHJldHVyblR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oY2FsbFNpZ25hdHVyZSlcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZ2V0UGFyYW1ldGVyRGVmaW5pdGlvbnMoY2FsbFNpZ25hdHVyZSwgdGFncyk7XG4gICAgaWYgKHBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICBkZWZpbml0aW9uLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleFNpZ25hdHVyZURlZmluaXRpb24oc2lnbmF0dXJlOiBUeXBlRG9jU2lnbmF0dXJlKTogU2t5RG9jc0luZGV4U2lnbmF0dXJlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleToge1xuICAgICAgICBuYW1lOiBzaWduYXR1cmUucGFyYW1ldGVyc1swXS5uYW1lLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVEZWZpbml0aW9uKHNpZ25hdHVyZS5wYXJhbWV0ZXJzWzBdKVxuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oc2lnbmF0dXJlKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVQYXJhbWV0ZXJEZWZpbml0aW9ucyh0eXBlUGFyYW1ldGVyczogVHlwZURvY1R5cGVQYXJhbWV0ZXJbXSk6IFNreURvY3NUeXBlUGFyYW1ldGVyRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIXR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbjogU2t5RG9jc1R5cGVQYXJhbWV0ZXJEZWZpbml0aW9uID0ge1xuICAgICAgICBuYW1lOiB0eXBlUGFyYW0ubmFtZVxuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGVQYXJhbS50eXBlKSB7XG4gICAgICAgIGRlZmluaXRpb24udHlwZSA9IHRoaXMuZ2V0VHlwZURlZmluaXRpb24oe1xuICAgICAgICAgIHR5cGU6IHR5cGVQYXJhbS50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudFRhZ3MoY29tbWVudDogVHlwZURvY0NvbW1lbnQpOiBTa3lEb2NzQ29tbWVudFRhZ3Mge1xuICAgIGxldCBjb2RlRXhhbXBsZTogc3RyaW5nO1xuICAgIGxldCBjb2RlRXhhbXBsZUxhbmd1YWdlOiBzdHJpbmcgPSAnbWFya3VwJztcbiAgICBsZXQgZGVwcmVjYXRpb25XYXJuaW5nOiBzdHJpbmc7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgICBsZXQgcGFyYW1ldGVyczoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIH1bXTtcblxuICAgIGNvbnN0IGV4dHJhczoge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgfSA9IHt9O1xuXG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgIGlmIChjb21tZW50LnRhZ3MpIHtcbiAgICAgICAgY29tbWVudC50YWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHRhZy50YWcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RlcHJlY2F0ZWQnOlxuICAgICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcgPSB0YWcudGV4dC50cmltKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRhZy50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4YW1wbGUnOlxuICAgICAgICAgICAgICBjb2RlRXhhbXBsZSA9IHRhZy50ZXh0LnRyaW0oKS5zcGxpdCgnYGBgJylbMV0udHJpbSgpO1xuICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IGNvZGVFeGFtcGxlLnNwbGl0KCdcXG4nKVswXTtcbiAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlID09PSAnbWFya3VwJyB8fCBsYW5ndWFnZSA9PT0gJ3R5cGVzY3JpcHQnKSB7XG4gICAgICAgICAgICAgICAgY29kZUV4YW1wbGUgPSBjb2RlRXhhbXBsZS5zbGljZShsYW5ndWFnZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBjb2RlRXhhbXBsZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BhcmFtJzpcbiAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgfHwgW107XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdGFnLnBhcmFtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0YWcudGV4dC50cmltKClcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBleHRyYXNbdGFnLnRhZ10gPSB0YWcudGV4dDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZGVzY3JpcHRpb24gPSAoY29tbWVudC5zaG9ydFRleHQgfHwgY29tbWVudC50ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVFeGFtcGxlLFxuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZXh0cmFzLFxuICAgICAgcGFyYW1ldGVyc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUGFyYW1ldGVyIGRlc2NyaXB0aW9ucyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBwYXJlbnQncyAoZnVuY3Rpb24vbWV0aG9kKSBjb21tZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJDb21tZW50VGFncyhwYXJhbWV0ZXI6IFR5cGVEb2NQYXJhbWV0ZXIsIHBhcmVudFRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IFNreURvY3NDb21tZW50VGFncyB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuZ2V0Q29tbWVudFRhZ3MocGFyYW1ldGVyLmNvbW1lbnQpO1xuICAgIGNvbnN0IHBhcmFtVGFncyA9IHBhcmVudFRhZ3MucGFyYW1ldGVycztcbiAgICBjb25zdCB0YWdQYXJhbSA9IChwYXJhbVRhZ3MpID8gcGFyYW1UYWdzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBwYXJhbWV0ZXIubmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRhZ1BhcmFtIHx8ICF0YWdQYXJhbS5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRhZ3MsXG4gICAgICAuLi57XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0YWdQYXJhbS5kZXNjcmlwdGlvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBjb21tZW50IHRhZyAoZS5nLiBgQHBhcmFtYCkgdmFsdWVzIHRvIHRoZSBwcm92aWRlZCBkZWZpbml0aW9uLCBpZiB0aGUgdmFsdWUgaXMgZGVmaW5lZC5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlDb21tZW50VGFnVmFsdWVzKFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIGNvZGVFeGFtcGxlPzogc3RyaW5nO1xuICAgICAgY29kZUV4YW1wbGVMYW5ndWFnZT86IHN0cmluZztcbiAgICAgIGRlcHJlY2F0aW9uV2FybmluZz86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH0sXG4gICAgdGFnczogU2t5RG9jc0NvbW1lbnRUYWdzXG4gICk6IHZvaWQge1xuICAgIGlmICh0YWdzLmNvZGVFeGFtcGxlKSB7XG4gICAgICBkZWZpbml0aW9uLmNvZGVFeGFtcGxlID0gdGFncy5jb2RlRXhhbXBsZTtcbiAgICAgIGRlZmluaXRpb24uY29kZUV4YW1wbGVMYW5ndWFnZSA9IHRhZ3MuY29kZUV4YW1wbGVMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXByZWNhdGlvbldhcm5pbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5pdGlvbi5kZXByZWNhdGlvbldhcm5pbmcgPSB0YWdzLmRlcHJlY2F0aW9uV2FybmluZztcbiAgICB9XG5cbiAgICBpZiAodGFncy5kZXNjcmlwdGlvbikge1xuICAgICAgZGVmaW5pdGlvbi5kZXNjcmlwdGlvbiA9IHRhZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWNvcmF0b3IoY2hpbGQ6IFR5cGVEb2NFbnRyeUNoaWxkKTogU2t5RG9jc1Byb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgbmFtZSA9IGNoaWxkLmRlY29yYXRvcnMgJiYgY2hpbGQuZGVjb3JhdG9yc1swXSAmJiBjaGlsZC5kZWNvcmF0b3JzWzBdLm5hbWU7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eTogVHlwZURvY0VudHJ5Q2hpbGQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlY29yYXRvcnMgPSBwcm9wZXJ0eS5kZWNvcmF0b3JzICYmIHByb3BlcnR5LmRlY29yYXRvcnNbMF07XG4gICAgLy8gVXNlIHRoZSBJbnB1dCdzIGJvdW5kIHByb3BlcnR5IG5hbWUsIGlmIGZvdW5kLlxuICAgIC8vIGUuZy4gQElucHV0KCdmb29iYXInKVxuICAgIHJldHVybiAoZGVjb3JhdG9ycz8uYXJndW1lbnRzPy5iaW5kaW5nUHJvcGVydHlOYW1lKVxuICAgICAgPyBkZWNvcmF0b3JzLmFyZ3VtZW50cy5iaW5kaW5nUHJvcGVydHlOYW1lLnJlcGxhY2UoLyhcXCd8XFxcIikvZywgJycpXG4gICAgICA6IHByb3BlcnR5Lm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjaGlsZDogVHlwZURvY0VudHJ5Q2hpbGQsIHRhZ3M6IFNreURvY3NDb21tZW50VGFncyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRhZ3MuZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGFncy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHlwZURvYyB2ZXJzaW9uIDAuMjAueCBzdG9wcGVkIGF1dG8tZ2VuZXJhdGluZyBpbml0aWFsaXplcnMgZm9yIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgLy8gKGFuZCByZXBsYWNlZCB0aGVtIHdpdGggXCIuLi5cIikgZHVlIHRvIHRoZSBjb21wbGljYXRlZCBsb2dpYyBpdCByZXF1aXJlZC5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9UeXBlU3Ryb25nL3R5cGVkb2MvaXNzdWVzLzE1NTJcbiAgICBpZiAoY2hpbGQuZGVmYXVsdFZhbHVlID09PSAnLi4uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZC5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEFuY2hvcklkKGVudHJ5OiBUeXBlRG9jRW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnRyeS5hbmNob3JJZCB8fCB0aGlzLnR5cGVEZWZpbml0aW9uc1Byb3ZpZGVyPy5hbmNob3JJZHNbZW50cnkubmFtZV0gfHwgJyc7XG4gIH1cblxufVxuIl19
@@ -2316,30 +2316,43 @@ class SkyDocsTypeDocAdapterService {
2316
2316
  const definitions = entry.children
2317
2317
  .filter(child => child.kindString === 'Property' || child.kindString === 'Accessor')
2318
2318
  .map(child => {
2319
- var _a, _b;
2320
- let comment;
2319
+ var _a, _b, _c;
2320
+ let definition = {
2321
+ isOptional: true,
2322
+ name: this.getPropertyName(child),
2323
+ type: this.getTypeDefinition(child)
2324
+ };
2325
+ let defaultValue;
2321
2326
  /* Ensure we are properly capturing definitions which use a getter/setter. Final check is a sanity check */
2322
2327
  if (child.kindString === 'Accessor' && !((_a = child.comment) === null || _a === void 0 ? void 0 : _a.shortText) && ((_b = child.getSignature) === null || _b === void 0 ? void 0 : _b.length) > 0) {
2323
- comment = child.getSignature[0].comment;
2328
+ const mainTags = this.getCommentTags(child.comment);
2329
+ const getTags = this.getCommentTags(child.getSignature[0].comment);
2330
+ this.applyCommentTagValues(definition, mainTags);
2331
+ this.applyCommentTagValues(definition, getTags);
2332
+ if (((_c = child.setSignature) === null || _c === void 0 ? void 0 : _c.length) > 0) {
2333
+ const setTags = this.getCommentTags(child.setSignature[0].comment);
2334
+ this.applyCommentTagValues(definition, setTags);
2335
+ definition.isOptional = !setTags.extras.required;
2336
+ defaultValue = this.getDefaultValue(child, setTags);
2337
+ }
2338
+ else {
2339
+ definition.isOptional = !mainTags.extras.required;
2340
+ defaultValue = this.getDefaultValue(child, mainTags);
2341
+ }
2324
2342
  }
2325
2343
  else {
2326
- comment = child.comment;
2344
+ const tags = this.getCommentTags(child.comment);
2345
+ definition.isOptional = !tags.extras.required;
2346
+ this.applyCommentTagValues(definition, tags);
2347
+ defaultValue = this.getDefaultValue(child, tags);
2348
+ }
2349
+ if (defaultValue) {
2350
+ definition.defaultValue = defaultValue;
2327
2351
  }
2328
- const tags = this.getCommentTags(comment);
2329
- const definition = {
2330
- isOptional: !tags.extras.required,
2331
- name: this.getPropertyName(child),
2332
- type: this.getTypeDefinition(child)
2333
- };
2334
- this.applyCommentTagValues(definition, tags);
2335
2352
  const decorator = this.getDecorator(child);
2336
2353
  if (decorator) {
2337
2354
  definition.decorator = decorator;
2338
2355
  }
2339
- const defaultValue = this.getDefaultValue(child, tags);
2340
- if (defaultValue) {
2341
- definition.defaultValue = defaultValue;
2342
- }
2343
2356
  return definition;
2344
2357
  });
2345
2358
  return orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);