@firestitch/html-editor 12.4.2 → 12.5.1

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.
@@ -142,6 +142,9 @@ export class FsHtmlEditorComponent {
142
142
  }
143
143
  writeValue(html) {
144
144
  this._html = html || '';
145
+ if (Array.isArray(this._html)) {
146
+ this._html = this._html.pop();
147
+ }
145
148
  this._html = this._html
146
149
  .replace(/<(li)>\s?<(div)>/g, '<li>')
147
150
  .replace(/<\/(div)><\/(li)>/g, '</li>');
@@ -501,4 +504,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
501
504
  }], config: [{
502
505
  type: Input
503
506
  }] } });
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSWxDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENB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QXFCLGtCQWtCVixxQkFBcUI7dUdBbEJoQyxxQkFBcUIsK0tBZHJCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDcEQsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEhDMURILHlwQkF1QkE7NEZEc0NhLHFCQUFxQjtrQkFsQmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDRCQUE0QjtvQkFDekMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3pDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQW1CSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjtnSEFoQmIsWUFBWTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQUNHLGFBQWE7c0JBQTNDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUVGLEtBQUs7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTztnQkFFRixNQUFNO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGaWxlUHJvY2Vzc29yLCBGc0ZpbGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnRQYXR0ZXJuLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQbHVnaW5CdXR0b24gfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvcGx1Z2luLWJ1dHRvbic7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBSaWNoQnV0dG9ucyB9IGZyb20gJy4vLi4vLi4vY29uc3RzL3JpY2gtYnV0dG9ucy5jb25zdCc7XG5pbXBvcnQgeyBUZXh0QnV0dG9ucyB9IGZyb20gJy4vLi4vLi4vY29uc3RzL3RleHQtYnV0dG9ucy5jb25zdCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvcGFyYWdyYXBoLWJ1dHRvbnMuY29uc3QnO1xuXG5pbXBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcgfSBmcm9tICcuLi8uLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IEZzRnJvYWxhTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtaHRtbC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJ2h0bWwtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2h0bWwtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKSBjbGFzc0ZvY3VzZWQgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpIGNsYXNzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdlbFJlZicpIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcgPSB7fTtcblxuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplJCA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Zyb2FsYVJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0hUTUxfRURJVE9SX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZyxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZnI6IEZzRnJvYWxhTG9hZGVyU2VydmljZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgb25DaGFuZ2UgPSAoZGF0YTogYW55KSA9PiB7fVxuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge31cblxuICBwdWJsaWMgZ2V0IGVsKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaHRtbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9odG1sO1xuICB9XG5cbiAgcHVibGljIGdldCBlZGl0b3IoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdG9yO1xuICB9XG5cbiAgcHVibGljIGdldCBmcm9hbGFMb2FkZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9mci5sb2FkZWQkO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgfHwge307XG4gICAgdGhpcy5jb25maWcuYXV0b2ZvY3VzID0gdGhpcy5jb25maWcuYXV0b2ZvY3VzICE9PSBmYWxzZSAmJiAhdGhpcy5jb25maWcuZGlzYWJsZWQ7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9ICF0aGlzLmNvbmZpZy5pbml0T25DbGljaztcbiAgICB0aGlzLl9saXN0ZW5MYXp5SW5pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmluaXRPbkNsaWNrIHx8ICF0aGlzLmhhc0NvbnRlbnQoKSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB0aGlzLl9pbml0aWFsaXplJC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0NvbnRlbnQoKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChlbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZWwuaW5uZXJIVE1MID0gdGhpcy5faHRtbDtcbiAgICByZXR1cm4gISFlbC5pbm5lclRleHQubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUob3B0aW9uczogYW55ID0ge30pIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jcmVhdGVDb25maWcoKTtcbiAgICB0aGlzLl9pbml0UGx1Z2lucyhjb25maWcpO1xuICAgIHRoaXMuX2luaXRCdXR0b25zKGNvbmZpZyk7XG4gICAgdGhpcy5fZWRpdG9yID0gbmV3IHRoaXMuX2ZyLkZyb2FsYUVkaXRvcih0aGlzLmVsLCB0aGlzLl9jcmVhdGVPcHRpb25zKCksICgpID0+IHtcbiAgICAgIHRoaXMuX2Zyb2FsYVJlYWR5JC5uZXh0KHsgY29uZmlnLCBvcHRpb25zIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2IpIHtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgRmlsZVByb2Nlc3NvcigpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRnNGaWxlKGJsb2IpO1xuXG4gICAgcmV0dXJuIHByb2Nlc3Nvci5wcm9jZXNzKFtmaWxlXSwgdGhpcy5jb25maWcuaW1hZ2UpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChbZl06IEZzRmlsZVtdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmltYWdlLnVwbG9hZChmLmZpbGUpXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB1bmluaXRpYWxpemVkQ2xpY2soZXZlbnQ6IFVJRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGNvbnN0IHRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZU5hbWUgPT09ICdBJyAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0VGFyZ2V0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRhcmdldFRhcmdldCkge1xuICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgdGFyZ2V0VGFyZ2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pbml0Q2xpY2spIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5pbml0Q2xpY2soZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNpemUoKSB7XG4gICAgLy8gSGFjazogVG8gdHJpZ2dlciB0aGUgdG9vbGJhciBidXR0b24gc2l6ZSBtb2Rlc1xuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcblxuICAgIGNvbnN0IGVycjogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY29uZmlnLm1heExlbmd0aCAmJiB0aGlzLl9odG1sKSB7XG4gICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmNvbmZpZy5tYXhMZW5ndGg7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLl9odG1sLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgZXJyLm1heExlbmd0aEVycm9yID0gYE11c3QgYmUgJHttYXhMZW5ndGh9IGNoYXJhY3RlcnMgb3IgZmV3ZXIuIFlvdSBlbnRlcmVkICR7bGVuZ3RofSBjaGFyYWN0ZXJzLmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycikubGVuZ3RoID8gZXJyIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogeyBjdXJzb3JQb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJyB9KSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5jdXJzb3JQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZXRBdEVuZCh0aGlzLmVkaXRvci4kZWwuZ2V0KDApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnNldEF0U3RhcnQodGhpcy5lZGl0b3IuJGVsLmdldCgwKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnJlc3RvcmUoKTtcblxuICAgIGNvbnN0IGVsU2VsZWN0aW9uID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmVsZW1lbnQoKTtcbiAgICBpZiAoZWxTZWxlY3Rpb24pIHtcbiAgICAgIGVsU2VsZWN0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoJycpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5jbGFzc0Rpc2FibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIdG1sKGh0bWwpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoaHRtbCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShodG1sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9odG1sID0gaHRtbCB8fCAnJztcbiAgICB0aGlzLl9odG1sID0gdGhpcy5faHRtbFxuICAgICAgLnJlcGxhY2UoLzwobGkpPlxccz88KGRpdik+L2csICc8bGk+JylcbiAgICAgIC5yZXBsYWNlKC88XFwvKGRpdik+PFxcLyhsaSk+L2csICc8L2xpPicpO1xuXG4gICAgaWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuZWRpdG9yLmh0bWwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmh0bWwuc2V0KHRoaXMuX2h0bWwpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChkYXRhOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2luaXRpYWxpemUkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVDb25maWcoKTogRnNIdG1sRWRpdG9yQ29uZmlnIHtcbiAgICByZXR1cm4gbWVyZ2UoeyBmcm9hbGFDb25maWc6IHt9IH0sIHRoaXMuX2RlZmF1bHRDb25maWcsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoYW5nZShodG1sKTogdm9pZCB7XG4gICAgdGhpcy5faHRtbCA9IGh0bWw7XG4gICAgdGhpcy5vbkNoYW5nZShodG1sKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRCdXR0b25zKGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnKSB7XG4gICAgKGNvbmZpZy5idXR0b25zIHx8IFtdKVxuICAgIC5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgIC8qXG4gICAgICAgIFN2ZyBLZXlzOlxuICAgICAgICBbXCJhZGRcIiwgXCJhZHZhbmNlZEltYWdlRWRpdG9yXCIsIFwiYWxpZ25DZW50ZXJcIiwgXCJhbGlnbkp1c3RpZnlcIiwgXCJhbGlnbkxlZnRcIiwgXCJhbGlnblJpZ2h0XCIsIFxuICAgICAgICBcImFuY2hvcnNcIiwgXCJiYWNrXCIsIFwiYmFja2dyb3VuZENvbG9yXCIsIFwiYmxvY2txdW90ZVwiLCBcImJvbGRcIiwgXCJjZWxsQmFja2dyb3VuZFwiLCBcbiAgICAgICAgXCJjZWxsQm9yZGVyQ29sb3JcIiwgXCJjZWxsT3B0aW9uc1wiLCBcImNlbGxTdHlsZVwiLCBcImNsZWFyRm9ybWF0dGluZ1wiLCBcImNsb3NlXCIsIFwiY29kZVZpZXdcIiwgXG4gICAgICAgIFwiY29nc1wiLCBcImNvbHVtbnNcIiwgXCJlZGl0TGlua1wiLCBcImV4aXRGdWxsc2NyZWVuXCIsIFwiZm9udEF3ZXNvbWVcIiwgXCJmb250RmFtaWx5XCIsIFxuICAgICAgICBcImZvbnRTaXplXCIsIFwiZnVsbHNjcmVlblwiLCBcImhlbHBcIiwgXCJob3Jpem9udGFsTGluZVwiLCBcImltYWdlQWx0VGV4dFwiLCBcImltYWdlQ2FwdGlvblwiLCBcbiAgICAgICAgXCJpbWFnZUNsYXNzXCIsIFwiaW1hZ2VEaXNwbGF5XCIsIFwiaW1hZ2VNYW5hZ2VyXCIsIFwiaW1hZ2VTaXplXCIsIFwiaW5kZW50XCIsIFwiaW5saW5lQ2xhc3NcIiwgXG4gICAgICAgIFwiaW5saW5lU3R5bGVcIiwgXCJpbnNlcnRFbWJlZFwiLCBcImluc2VydEZpbGVcIiwgXCJpbnNlcnRJbWFnZVwiLCBcImluc2VydExpbmtcIiwgXCJpbnNlcnRNb3JlXCIsIFxuICAgICAgICBcImluc2VydFRhYmxlXCIsIFwiaW5zZXJ0VmlkZW9cIiwgXCJ1cGxvYWRcIiwgXCJpdGFsaWNcIiwgXCJzZWFyY2hcIiwgXCJsaW5lSGVpZ2h0XCIsIFwibGlua1N0eWxlc1wiLCBcbiAgICAgICAgXCJtZW50aW9uXCIsIFwibW9yZVwiLCBcIm9wZW5MaW5rXCIsIFwib3JkZXJlZExpc3RcIiwgXCJvdXRkZW50XCIsIFwicGFnZUJyZWFrZXJcIiwgXG4gICAgICAgIFwicGFyYWdyYXBoRm9ybWF0XCIsIFwicGFyYWdyYXBoTW9yZVwiLCBcInBhcmFncmFwaFN0eWxlXCIsIFwicGRmRXhwb3J0XCIsIFwicHJpbnRcIiwgXG4gICAgICAgIFwicmVkb1wiLCBcInJlbW92ZVRhYmxlXCIsIFwicmVtb3ZlXCIsIFwicmVwbGFjZUltYWdlXCIsIFwicm93XCIsIFwic2VsZWN0QWxsXCIsIFwic21pbGVcIixcbiAgICAgICAgXCJzcGVsbGNoZWNrXCIsIFwic3RhclwiLCBcInN0cmlrZVRocm91Z2hcIiwgXCJzdWJzY3JpcHRcIiwgXCJzdXBlcnNjcmlwdFwiLCBcInN5bWJvbHNcIiwgXCJ0YWdzXCIsXG4gICAgICAgIFwidGFibGVIZWFkZXJcIiwgXCJ0YWJsZVN0eWxlXCIsIFwidGV4dENvbG9yXCIsIFwidGV4dE1vcmVcIiwgXCJ1bmRlcmxpbmVcIiwgXCJ1bmRvXCIsIFwidW5saW5rXCIsIFxuICAgICAgICBcInVub3JkZXJlZExpc3RcIiwgXCJ2ZXJ0aWNhbEFsaWduQm90dG9tXCIsIFwidmVydGljYWxBbGlnbk1pZGRsZVwiLCBcInZlcnRpY2FsQWxpZ25Ub3BcIl1cbiAgICAgICovXG5cbiAgICAgIGlmKGJ1dHRvbi5zdmdLZXkpIHtcbiAgICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLkRlZmluZUljb24oYnV0dG9uLm5hbWUsIHsgU1ZHX0tFWTogYnV0dG9uLnN2Z0tleSB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgICB0aXRsZTogYnV0dG9uLnRpdGxlLFxuICAgICAgICBmb2N1czogYnV0dG9uLmZvY3VzID8/IHRydWUsXG4gICAgICAgIHVuZG86IGJ1dHRvbi51bmRvID8/IHRydWUsXG4gICAgICAgIHJlZnJlc2hBZnRlckNhbGxiYWNrOiBidXR0b24ucmVmcmVzaEFmdGVyQ2FsbGJhY2sgPz8gdHJ1ZSxcbiAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBsdWdpbnMoY29uZmlnKSB7XG4gICAgKGNvbmZpZy5wbHVnaW5zIHx8IFtdKS5mb3JFYWNoKChwbHVnaW46IFBsdWdpbikgPT4ge1xuICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlBMVUdJTlNbcGx1Z2luLmNvbmZpZy5uYW1lXSA9IGZ1bmN0aW9uIChlZGl0b3IpIHtcbiAgICAgICAgcGx1Z2luLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgcGx1Z2luLmluaXRpYWxpemUoKTtcbiAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgIH07XG5cbiAgICAgIChwbHVnaW4uY29uZmlnLmJ1dHRvbnMgfHwgW10pLmZvckVhY2goKGJ1dHRvbjogUGx1Z2luQnV0dG9uKSA9PiB7XG4gICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5EZWZpbmVJY29uKGJ1dHRvbi5uYW1lLCB7XG4gICAgICAgICAgTkFNRTogYnV0dG9uLm5hbWUsXG4gICAgICAgICAgUEFUSDogYnV0dG9uLnN2Z1BhdGgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoYnV0dG9uLm5hbWUsIHtcbiAgICAgICAgICBpY29uOiBidXR0b24ubmFtZSxcbiAgICAgICAgICB0aXRsZTogYnV0dG9uLnRvb2x0aXAsXG4gICAgICAgICAgdW5kbzogYnV0dG9uLnVuZG8sXG4gICAgICAgICAgZm9jdXM6IGJ1dHRvbi5mb2N1cyxcbiAgICAgICAgICBzaG93T25Nb2JpbGU6IGJ1dHRvbi5zaG93T25Nb2JpbGUsXG4gICAgICAgICAgcmVmcmVzaEFmdGVyQ2FsbGJhY2s6IGJ1dHRvbi5yZWZyZXNoQWZ0ZXJDYWxsYmFjayxcbiAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jbGljaykge1xuICAgICAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWZyZXNoOiBmdW5jdGlvbiAoYnV0dG9uKSB7XG4gICAgICAgICAgICBpZiAoYnV0dG9uLnJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgYnV0dG9uLnJlZnJlc2godGhpcywgYnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU9wdGlvbnMoKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY3JlYXRlQ29uZmlnKCk7XG5cbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAvLyBGb3Igc29tZSByZWFzb24gZWRpdG9yIHN0b3JlIHNvbWV3aGVyZSBwb2ludGVyIG9uIGRlZmF1bHQgY29uZmlnIG9iamVjdCBhbmQgZHVibGljYXRlIG9wdGlvbnMgZWFjaCB0aW1lIG9uIGluaXRcbiAgICAgIC8vIEV4dHJhIG1lcmdlIGxldmVsIGZpeGVkIHRoaXMgcHJvYmxlbSBhbmQgYWxsb3cgdG8gaW5pdCBjb25maWcgcHJvcGVybHkgd2l0aG91dCBsZWdhY3kgZGF0YVxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIHNob3J0Y3V0c0VuYWJsZWQ6IFsnc2hvdycsICdib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnaW5kZW50JywgJ291dGRlbnQnLCAndW5kbycsICdyZWRvJywgJ2luc2VydEltYWdlJywgJ2NyZWF0ZUxpbmsnXSxcbiAgICAgICAga2V5OiBjb25maWcuYWN0aXZhdGlvbktleSxcbiAgICAgICAgcGxhY2Vob2xkZXJUZXh0OiBjb25maWcucGxhY2Vob2xkZXIsXG4gICAgICAgIGxpbmtBbHdheXNCbGFuazogdHJ1ZSxcbiAgICAgICAgdGFiU3BhY2VzOiAyLFxuICAgICAgICB0eXBpbmdUaW1lcjogMjUwLFxuICAgICAgICB0b29sdGlwczogZmFsc2UsXG4gICAgICAgIHdvcmRQYXN0ZU1vZGFsOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VEZWZhdWx0V2lkdGg6IDAsXG4gICAgICAgIGltYWdlRGVmYXVsdEFsaWduOiAnbGVmdCcsXG4gICAgICAgIHF1aWNrSW5zZXJ0RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHBhcmFncmFwaERlZmF1bHRTZWxlY3Rpb246ICdGb3JtYXQnLFxuICAgICAgICB2aWRlb1VwbG9hZDogZmFsc2UsXG4gICAgICAgIGltYWdlUGFzdGU6ICEhY29uZmlnLmltYWdlPy51cGxvYWQsXG4gICAgICAgIGltYWdlVXBsb2FkOiAhIWNvbmZpZy5pbWFnZT8udXBsb2FkLFxuICAgICAgICBwYXJhZ3JhcGhGb3JtYXQ6IHtcbiAgICAgICAgICBOOiAnTm9ybWFsJyxcbiAgICAgICAgICBIMTogJ0hlYWRpbmcgMScsXG4gICAgICAgICAgSDI6ICdIZWFkaW5nIDInLFxuICAgICAgICAgIEgzOiAnSGVhZGluZyAzJyxcbiAgICAgICAgICBINDogJ0hlYWRpbmcgNCcsXG4gICAgICAgICAgQkxPQ0tRVU9URTogJ1F1b3RlJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGluZUhlaWdodHM6IHtcbiAgICAgICAgICBEZWZhdWx0OiAnJyxcbiAgICAgICAgICAnMC41JzogJzAuNScsXG4gICAgICAgICAgJ1NpbmdsZSc6ICcxJyxcbiAgICAgICAgICAnMS4xNSc6ICcxLjE1JyxcbiAgICAgICAgICAnMS41JzogJzEuNScsXG4gICAgICAgICAgJ0RvdWJsZSc6ICcyJ1xuICAgICAgICB9LFxuICAgICAgICBwYXJhZ3JhcGhGb3JtYXRTZWxlY3Rpb246IHRydWUsXG4gICAgICAgIHRvb2xiYXJCdXR0b25zWFM6IHtcbiAgICAgICAgICBtb3JlVGV4dDoge1xuICAgICAgICAgICAgYnV0dG9uczogVGV4dEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogMSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVQYXJhZ3JhcGg6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFBhcmFncmFwaEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogMixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVSaWNoOiB7XG4gICAgICAgICAgICBidXR0b25zOiBSaWNoQnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2xiYXJCdXR0b25zOiB7XG4gICAgICAgICAgbW9yZVRleHQ6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFRleHRCdXR0b25zLFxuICAgICAgICAgICAgYnV0dG9uc1Zpc2libGU6IDMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb3JlUGFyYWdyYXBoOiB7XG4gICAgICAgICAgICBidXR0b25zOiBQYXJhZ3JhcGhCdXR0b25zLFxuICAgICAgICAgICAgYnV0dG9uc1Zpc2libGU6IDUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb3JlUmljaDoge1xuICAgICAgICAgICAgYnV0dG9uczogUmljaEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogMyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbmZpZy5mcm9hbGFDb25maWcsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkxhenlJbml0KCkge1xuICAgIHRoaXMuZnJvYWxhTG9hZGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigocmVhZHkpID0+IHJlYWR5KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2luaXRpYWxpemUkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb246IGFueSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7fTtcbiAgICAgICAgICBpZiAoc2VsZWN0aW9uLmJhc2VOb2RlKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbiA9IHtcbiAgICAgICAgICAgICAgbm9kZTogc2VsZWN0aW9uLmJhc2VOb2RlLm5vZGVWYWx1ZSxcbiAgICAgICAgICAgICAgb2Zmc2V0OiBzZWxlY3Rpb24uYmFzZU9mZnNldCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShvcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9mcm9hbGFSZWFkeSQpLFxuICAgICAgICBmaWx0ZXIoKGRhdGEpID0+ICEhZGF0YSksXG4gICAgICAgIHRhcCgoeyBjb25maWcsIG9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3NldHVwRnJvYWxhKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZW50Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3JIVE1MID0gdGhpcy5fZWRpdG9yLmh0bWwuZ2V0KCk7XG5cbiAgICBpZiAodGhpcy5odG1sICE9PSBlZGl0b3JIVE1MKSB7XG4gICAgICB0aGlzLl9jaGFuZ2UoZWRpdG9ySFRNTCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBGcm9hbGEoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcsIG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5zZXRIdG1sKHRoaXMuX2h0bWwpO1xuXG4gICAgaWYgKGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5mcm9hbGFDb25maWcuZXZlbnRzKSB7XG4gICAgICBpZiAoY29uZmlnLmZyb2FsYUNvbmZpZy5ldmVudHMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgY29uZmlnLmZyb2FsYUNvbmZpZy5ldmVudHMuaW5pdGlhbGl6ZWQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHRoaXMuY2xhc3NGb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignYmx1cicsICgpID0+IHtcbiAgICAgIHRoaXMuY2xhc3NGb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuXG4gICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgIChoYW5kbGVyKSA9PiB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2NvbnRlbnRDaGFuZ2VkJywgaGFuZGxlcik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge31cbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2h0bWwpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5lZGl0b3IuaHRtbC5nZXQoKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY29udGVudENoYW5nZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignY29udGVudENoYW5nZWQnLCAoKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZygndGVzdCcpO1xuICAgIC8vICAgaWYgKCF0aGlzLl9maXJzdENoYW5nZSkge1xuICAgIC8vICAgICB0aGlzLl9jb250ZW50Q2hhbmdlZCgpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbigncGFzdGUuYWZ0ZXJDbGVhbnVwJywgKGh0bWwpID0+IHtcbiAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGRpdi5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKVxuICAgICAgICAuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBlbC5hdHRyaWJ1dGVzWzBdLm5hbWU7XG4gICAgICAgICAgICBpZiAobmFtZSAhPT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKCkgPT4ge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5pbWFnZSAmJiB0aGlzLmNvbmZpZy5pbWFnZS51cGxvYWQpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ltYWdlLmJlZm9yZVBhc3RlVXBsb2FkJywgKGltYWdlKSA9PiB7XG5cbiAgICAgICAgZmV0Y2goaW1hZ2UuZ2V0QXR0cmlidXRlKCdzcmMnKSlcbiAgICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXMuYmxvYigpXG4gICAgICAgICAgICAgIC50aGVuKChibG9iKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2IpXG4gICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1mci1pbWFnZS1wYXN0ZWQnKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50Q2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdpbWFnZS5iZWZvcmVVcGxvYWQnLCAoYmxvYnMpID0+IHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2JzWzBdKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5pbWFnZS5pbnNlcnQodXJsLCBudWxsLCBudWxsLCB0aGlzLmVkaXRvci5pbWFnZS5nZXQoKSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWwucXVlcnlTZWxlY3RvcignLmZyLXNlY29uZC10b29sYmFyJykpIHtcbiAgICAgIHRoaXMuZWwucXVlcnlTZWxlY3RvcignLmZyLXNlY29uZC10b29sYmFyJykucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gb3B0aW9ucy5zZWxlY3Rpb247XG5cbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCBub2RlOiBhbnkgPSBBcnJheS5mcm9tKHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnLmZyLWVsZW1lbnQgKicpKS5maW5kKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5ub2RlID09PSBub2RlLnRleHRDb250ZW50O1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuX2dldFRleHROb2RlKG5vZGUpLCBzZWxlY3Rpb24ub2Zmc2V0KTtcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcblxuICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmF1dG9mb2N1cykge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRUZXh0Tm9kZShub2RlKSB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRleHROb2RlKG5vZGUuY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZnMtbGFiZWwtZmllbGQ+XG4gIDxmcy1sYWJlbCAqbmdJZj1cImNvbmZpZy5sYWJlbFwiPnt7Y29uZmlnLmxhYmVsfX08L2ZzLWxhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZnMtaHRtbC1lZGl0b3ItZGVmYXVsdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsaXplZFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqZnNTa2VsZXRvbj1cIihmcm9hbGFMb2FkZWQkIHwgYXN5bmMpICE9PSBmYWxzZVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIFxuICAgIDxkaXYgI2VsUmVmPjwvZGl2PlxuICBcbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWxpbmVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWQtbGluZVwiPjwvZGl2PlxuICAgIDxmcy1odG1sLXJlbmRlcmVyXG4gICAgICAqbmdJZj1cIiFpbml0aWFsaXplZFwiXG4gICAgICBbaHRtbF09XCJodG1sXCJcbiAgICAgIChjbGljayk9XCJ1bmluaXRpYWxpemVkQ2xpY2soJGV2ZW50KVwiPlxuICAgIDwvZnMtaHRtbC1yZW5kZXJlcj5cbiAgPC9kaXY+XG4gIFxuICA8ZnMtbGFiZWwtbWVzc2FnZT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+PC9kaXY+XG4gIDwvZnMtbGFiZWwtbWVzc2FnZT5cbjwvZnMtbGFiZWwtZmllbGQ+XG4iXX0=
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSWxDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENB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QkFBL0IsU0FBUzt1QkFBQyxPQUFPO2dCQUVGLE1BQU07c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZpbGVQcm9jZXNzb3IsIEZzRmlsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudFBhdHRlcm4sIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IFBsdWdpbkJ1dHRvbiB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tYnV0dG9uJztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcbmltcG9ydCB7IFJpY2hCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvcmljaC1idXR0b25zLmNvbnN0JztcbmltcG9ydCB7IFRleHRCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvdGV4dC1idXR0b25zLmNvbnN0JztcbmltcG9ydCB7IFBhcmFncmFwaEJ1dHRvbnMgfSBmcm9tICcuLy4uLy4uL2NvbnN0cy9wYXJhZ3JhcGgtYnV0dG9ucy5jb25zdCc7XG5cbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRyB9IGZyb20gJy4uLy4uL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLy4uLy4uL2NsYXNzZXMvcGx1Z2luJztcblxuaW1wb3J0IHsgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJvYWxhLWxvYWRlci5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1odG1sLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnaHRtbC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0h0bWxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0h0bWxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJykgY2xhc3NEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2VsUmVmJykgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyA9IHt9O1xuXG4gIHB1YmxpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VkaXRvcjogYW55O1xuICBwcml2YXRlIF9odG1sOiBzdHJpbmc7XG4gIHByaXZhdGUgX2luaXRpYWxpemUkID0gbmV3IFJlcGxheVN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZnJvYWxhUmVhZHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfSFRNTF9FRElUT1JfQ09ORklHKSBwcml2YXRlIF9kZWZhdWx0Q29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mcjogRnNGcm9hbGFMb2FkZXJTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZSA9IChkYXRhOiBhbnkpID0+IHt9XG4gIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fVxuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBodG1sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2h0bWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZyb2FsYUxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZyLmxvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyB8fCB7fTtcbiAgICB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgPSB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgIT09IGZhbHNlICYmICF0aGlzLmNvbmZpZy5kaXNhYmxlZDtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gIXRoaXMuY29uZmlnLmluaXRPbkNsaWNrO1xuICAgIHRoaXMuX2xpc3RlbkxhenlJbml0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWcuaW5pdE9uQ2xpY2sgfHwgIXRoaXMuaGFzQ29udGVudCgpKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemUkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzQ29udGVudCgpIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgaWYgKGVsLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBlbC5pbm5lckhUTUwgPSB0aGlzLl9odG1sO1xuICAgIHJldHVybiAhIWVsLmlubmVyVGV4dC5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZShvcHRpb25zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2NyZWF0ZUNvbmZpZygpO1xuICAgIHRoaXMuX2luaXRQbHVnaW5zKGNvbmZpZyk7XG4gICAgdGhpcy5faW5pdEJ1dHRvbnMoY29uZmlnKTtcbiAgICB0aGlzLl9lZGl0b3IgPSBuZXcgdGhpcy5fZnIuRnJvYWxhRWRpdG9yKHRoaXMuZWwsIHRoaXMuX2NyZWF0ZU9wdGlvbnMoKSwgKCkgPT4ge1xuICAgICAgdGhpcy5fZnJvYWxhUmVhZHkkLm5leHQoeyBjb25maWcsIG9wdGlvbnMgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9jZXNzSW1hZ2VVcGxvYWQoYmxvYikge1xuICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBGaWxlUHJvY2Vzc29yKCk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGc0ZpbGUoYmxvYik7XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yLnByb2Nlc3MoW2ZpbGVdLCB0aGlzLmNvbmZpZy5pbWFnZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKFtmXTogRnNGaWxlW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuaW1hZ2UudXBsb2FkKGYuZmlsZSlcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHVuaW5pdGlhbGl6ZWRDbGljayhldmVudDogVUlFdmVudCk6IHZvaWQge1xuICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQ7XG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5ub2RlTmFtZSA9PT0gJ0EnICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkge1xuICAgICAgICBjb25zdCB0YXJnZXRUYXJnZXQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGFyZ2V0VGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCB0YXJnZXRUYXJnZXQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluaXRDbGljaykge1xuICAgICAgICAgIHRoaXMuY29uZmlnLmluaXRDbGljayhldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSQubmV4dCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2l6ZSgpIHtcbiAgICAvLyBIYWNrOiBUbyB0cmlnZ2VyIHRoZSB0b29sYmFyIGJ1dHRvbiBzaXplIG1vZGVzXG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuXG4gICAgY29uc3QgZXJyOiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5jb25maWcubWF4TGVuZ3RoICYmIHRoaXMuX2h0bWwpIHtcbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuY29uZmlnLm1heExlbmd0aDtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuX2h0bWwubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBlcnIubWF4TGVuZ3RoRXJyb3IgPSBgTXVzdCBiZSAke21heExlbmd0aH0gY2hhcmFjdGVycyBvciBmZXdlci4gWW91IGVudGVyZWQgJHtsZW5ndGh9IGNoYXJhY3RlcnMuYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyKS5sZW5ndGggPyBlcnIgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM/OiB7IGN1cnNvclBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnIH0pIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyA/IG9wdGlvbnMgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmN1cnNvclBvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnNldEF0RW5kKHRoaXMuZWRpdG9yLiRlbC5nZXQoMCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvci5zZWxlY3Rpb24uc2V0QXRTdGFydCh0aGlzLmVkaXRvci4kZWwuZ2V0KDApKTtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRvci5zZWxlY3Rpb24ucmVzdG9yZSgpO1xuXG4gICAgY29uc3QgZWxTZWxlY3Rpb24gPSB0aGlzLmVkaXRvci5zZWxlY3Rpb24uZWxlbWVudCgpO1xuICAgIGlmIChlbFNlbGVjdGlvbikge1xuICAgICAgZWxTZWxlY3Rpb24uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpIHtcbiAgICB0aGlzLmNsYXNzRGlzYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNldEh0bWwoaHRtbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShodG1sKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKGh0bWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2h0bWwgPSBodG1sIHx8ICcnO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5faHRtbCkpIHtcbiAgICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sXG4gICAgICAucmVwbGFjZSgvPChsaSk+XFxzPzwoZGl2KT4vZywgJzxsaT4nKVxuICAgICAgLnJlcGxhY2UoLzxcXC8oZGl2KT48XFwvKGxpKT4vZywgJzwvbGk+Jyk7XG5cbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuaHRtbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5lZGl0b3IuaHRtbC5zZXQodGhpcy5faHRtbCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGRhdGE6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5lbC5pbm5lckhUTUwgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNvbmZpZygpOiBGc0h0bWxFZGl0b3JDb25maWcge1xuICAgIHJldHVybiBtZXJnZSh7IGZyb2FsYUNvbmZpZzoge30gfSwgdGhpcy5fZGVmYXVsdENvbmZpZywgdGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlKGh0bWwpOiB2b2lkIHtcbiAgICB0aGlzLl9odG1sID0gaHRtbDtcbiAgICB0aGlzLm9uQ2hhbmdlKGh0bWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEJ1dHRvbnMoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgICAoY29uZmlnLmJ1dHRvbnMgfHwgW10pXG4gICAgLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgLypcbiAgICAgICAgU3ZnIEtleXM6XG4gICAgICAgIFtcImFkZFwiLCBcImFkdmFuY2VkSW1hZ2VFZGl0b3JcIiwgXCJhbGlnbkNlbnRlclwiLCBcImFsaWduSnVzdGlmeVwiLCBcImFsaWduTGVmdFwiLCBcImFsaWduUmlnaHRcIiwgXG4gICAgICAgIFwiYW5jaG9yc1wiLCBcImJhY2tcIiwgXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCJibG9ja3F1b3RlXCIsIFwiYm9sZFwiLCBcImNlbGxCYWNrZ3JvdW5kXCIsIFxuICAgICAgICBcImNlbGxCb3JkZXJDb2xvclwiLCBcImNlbGxPcHRpb25zXCIsIFwiY2VsbFN0eWxlXCIsIFwiY2xlYXJGb3JtYXR0aW5nXCIsIFwiY2xvc2VcIiwgXCJjb2RlVmlld1wiLCBcbiAgICAgICAgXCJjb2dzXCIsIFwiY29sdW1uc1wiLCBcImVkaXRMaW5rXCIsIFwiZXhpdEZ1bGxzY3JlZW5cIiwgXCJmb250QXdlc29tZVwiLCBcImZvbnRGYW1pbHlcIiwgXG4gICAgICAgIFwiZm9udFNpemVcIiwgXCJmdWxsc2NyZWVuXCIsIFwiaGVscFwiLCBcImhvcml6b250YWxMaW5lXCIsIFwiaW1hZ2VBbHRUZXh0XCIsIFwiaW1hZ2VDYXB0aW9uXCIsIFxuICAgICAgICBcImltYWdlQ2xhc3NcIiwgXCJpbWFnZURpc3BsYXlcIiwgXCJpbWFnZU1hbmFnZXJcIiwgXCJpbWFnZVNpemVcIiwgXCJpbmRlbnRcIiwgXCJpbmxpbmVDbGFzc1wiLCBcbiAgICAgICAgXCJpbmxpbmVTdHlsZVwiLCBcImluc2VydEVtYmVkXCIsIFwiaW5zZXJ0RmlsZVwiLCBcImluc2VydEltYWdlXCIsIFwiaW5zZXJ0TGlua1wiLCBcImluc2VydE1vcmVcIiwgXG4gICAgICAgIFwiaW5zZXJ0VGFibGVcIiwgXCJpbnNlcnRWaWRlb1wiLCBcInVwbG9hZFwiLCBcIml0YWxpY1wiLCBcInNlYXJjaFwiLCBcImxpbmVIZWlnaHRcIiwgXCJsaW5rU3R5bGVzXCIsIFxuICAgICAgICBcIm1lbnRpb25cIiwgXCJtb3JlXCIsIFwib3BlbkxpbmtcIiwgXCJvcmRlcmVkTGlzdFwiLCBcIm91dGRlbnRcIiwgXCJwYWdlQnJlYWtlclwiLCBcbiAgICAgICAgXCJwYXJhZ3JhcGhGb3JtYXRcIiwgXCJwYXJhZ3JhcGhNb3JlXCIsIFwicGFyYWdyYXBoU3R5bGVcIiwgXCJwZGZFeHBvcnRcIiwgXCJwcmludFwiLCBcbiAgICAgICAgXCJyZWRvXCIsIFwicmVtb3ZlVGFibGVcIiwgXCJyZW1vdmVcIiwgXCJyZXBsYWNlSW1hZ2VcIiwgXCJyb3dcIiwgXCJzZWxlY3RBbGxcIiwgXCJzbWlsZVwiLFxuICAgICAgICBcInNwZWxsY2hlY2tcIiwgXCJzdGFyXCIsIFwic3RyaWtlVGhyb3VnaFwiLCBcInN1YnNjcmlwdFwiLCBcInN1cGVyc2NyaXB0XCIsIFwic3ltYm9sc1wiLCBcInRhZ3NcIixcbiAgICAgICAgXCJ0YWJsZUhlYWRlclwiLCBcInRhYmxlU3R5bGVcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJ0ZXh0TW9yZVwiLCBcInVuZGVybGluZVwiLCBcInVuZG9cIiwgXCJ1bmxpbmtcIiwgXG4gICAgICAgIFwidW5vcmRlcmVkTGlzdFwiLCBcInZlcnRpY2FsQWxpZ25Cb3R0b21cIiwgXCJ2ZXJ0aWNhbEFsaWduTWlkZGxlXCIsIFwidmVydGljYWxBbGlnblRvcFwiXVxuICAgICAgKi9cblxuICAgICAgaWYoYnV0dG9uLnN2Z0tleSkge1xuICAgICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuRGVmaW5lSWNvbihidXR0b24ubmFtZSwgeyBTVkdfS0VZOiBidXR0b24uc3ZnS2V5IH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKGJ1dHRvbi5uYW1lLCB7XG4gICAgICAgIHRpdGxlOiBidXR0b24udGl0bGUsXG4gICAgICAgIGZvY3VzOiBidXR0b24uZm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgdW5kbzogYnV0dG9uLnVuZG8gPz8gdHJ1ZSxcbiAgICAgICAgcmVmcmVzaEFmdGVyQ2FsbGJhY2s6IGJ1dHRvbi5yZWZyZXNoQWZ0ZXJDYWxsYmFjayA/PyB0cnVlLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGJ1dHRvbi5jbGljayh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UGx1Z2lucyhjb25maWcpIHtcbiAgICAoY29uZmlnLnBsdWdpbnMgfHwgW10pLmZvckVhY2goKHBsdWdpbjogUGx1Z2luKSA9PiB7XG4gICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuUExVR0lOU1twbHVnaW4uY29uZmlnLm5hbWVdID0gZnVuY3Rpb24gKGVkaXRvcikge1xuICAgICAgICBwbHVnaW4uZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICBwbHVnaW4uaW5pdGlhbGl6ZSgpO1xuICAgICAgICByZXR1cm4gcGx1Z2luO1xuICAgICAgfTtcblxuICAgICAgKHBsdWdpbi5jb25maWcuYnV0dG9ucyB8fCBbXSkuZm9yRWFjaCgoYnV0dG9uOiBQbHVnaW5CdXR0b24pID0+IHtcbiAgICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLkRlZmluZUljb24oYnV0dG9uLm5hbWUsIHtcbiAgICAgICAgICBOQU1FOiBidXR0b24ubmFtZSxcbiAgICAgICAgICBQQVRIOiBidXR0b24uc3ZnUGF0aCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgICAgIGljb246IGJ1dHRvbi5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBidXR0b24udG9vbHRpcCxcbiAgICAgICAgICB1bmRvOiBidXR0b24udW5kbyxcbiAgICAgICAgICBmb2N1czogYnV0dG9uLmZvY3VzLFxuICAgICAgICAgIHNob3dPbk1vYmlsZTogYnV0dG9uLnNob3dPbk1vYmlsZSxcbiAgICAgICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrLFxuICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNsaWNrKSB7XG4gICAgICAgICAgICAgIGJ1dHRvbi5jbGljayh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlZnJlc2g6IGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgICAgICAgIGlmIChidXR0b24ucmVmcmVzaCkge1xuICAgICAgICAgICAgICBidXR0b24ucmVmcmVzaCh0aGlzLCBidXR0b24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlT3B0aW9ucygpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jcmVhdGVDb25maWcoKTtcblxuICAgIHJldHVybiBtZXJnZShcbiAgICAgIC8vIEZvciBzb21lIHJlYXNvbiBlZGl0b3Igc3RvcmUgc29tZXdoZXJlIHBvaW50ZXIgb24gZGVmYXVsdCBjb25maWcgb2JqZWN0IGFuZCBkdWJsaWNhdGUgb3B0aW9ucyBlYWNoIHRpbWUgb24gaW5pdFxuICAgICAgLy8gRXh0cmEgbWVyZ2UgbGV2ZWwgZml4ZWQgdGhpcyBwcm9ibGVtIGFuZCBhbGxvdyB0byBpbml0IGNvbmZpZyBwcm9wZXJseSB3aXRob3V0IGxlZ2FjeSBkYXRhXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgc2hvcnRjdXRzRW5hYmxlZDogWydzaG93JywgJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdpbmRlbnQnLCAnb3V0ZGVudCcsICd1bmRvJywgJ3JlZG8nLCAnaW5zZXJ0SW1hZ2UnLCAnY3JlYXRlTGluayddLFxuICAgICAgICBrZXk6IGNvbmZpZy5hY3RpdmF0aW9uS2V5LFxuICAgICAgICBwbGFjZWhvbGRlclRleHQ6IGNvbmZpZy5wbGFjZWhvbGRlcixcbiAgICAgICAgbGlua0Fsd2F5c0JsYW5rOiB0cnVlLFxuICAgICAgICB0YWJTcGFjZXM6IDIsXG4gICAgICAgIHR5cGluZ1RpbWVyOiAyNTAsXG4gICAgICAgIHRvb2x0aXBzOiBmYWxzZSxcbiAgICAgICAgd29yZFBhc3RlTW9kYWw6IGZhbHNlLFxuICAgICAgICBpbWFnZURlZmF1bHRXaWR0aDogMCxcbiAgICAgICAgaW1hZ2VEZWZhdWx0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgcXVpY2tJbnNlcnRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgcGFyYWdyYXBoRGVmYXVsdFNlbGVjdGlvbjogJ0Zvcm1hdCcsXG4gICAgICAgIHZpZGVvVXBsb2FkOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VQYXN0ZTogISFjb25maWcuaW1hZ2U/LnVwbG9hZCxcbiAgICAgICAgaW1hZ2VVcGxvYWQ6ICEhY29uZmlnLmltYWdlPy51cGxvYWQsXG4gICAgICAgIHBhcmFncmFwaEZvcm1hdDoge1xuICAgICAgICAgIE46ICdOb3JtYWwnLFxuICAgICAgICAgIEgxOiAnSGVhZGluZyAxJyxcbiAgICAgICAgICBIMjogJ0hlYWRpbmcgMicsXG4gICAgICAgICAgSDM6ICdIZWFkaW5nIDMnLFxuICAgICAgICAgIEg0OiAnSGVhZGluZyA0JyxcbiAgICAgICAgICBCTE9DS1FVT1RFOiAnUXVvdGUnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5lSGVpZ2h0czoge1xuICAgICAgICAgIERlZmF1bHQ6ICcnLFxuICAgICAgICAgICcwLjUnOiAnMC41JyxcbiAgICAgICAgICAnU2luZ2xlJzogJzEnLFxuICAgICAgICAgICcxLjE1JzogJzEuMTUnLFxuICAgICAgICAgICcxLjUnOiAnMS41JyxcbiAgICAgICAgICAnRG91YmxlJzogJzInXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFncmFwaEZvcm1hdFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgdG9vbGJhckJ1dHRvbnNYUzoge1xuICAgICAgICAgIG1vcmVUZXh0OiB7XG4gICAgICAgICAgICBidXR0b25zOiBUZXh0QnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9yZVBhcmFncmFwaDoge1xuICAgICAgICAgICAgYnV0dG9uczogUGFyYWdyYXBoQnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9yZVJpY2g6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFJpY2hCdXR0b25zLFxuICAgICAgICAgICAgYnV0dG9uc1Zpc2libGU6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbGJhckJ1dHRvbnM6IHtcbiAgICAgICAgICBtb3JlVGV4dDoge1xuICAgICAgICAgICAgYnV0dG9uczogVGV4dEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVQYXJhZ3JhcGg6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFBhcmFncmFwaEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogNSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVSaWNoOiB7XG4gICAgICAgICAgICBidXR0b25zOiBSaWNoQnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29uZmlnLmZyb2FsYUNvbmZpZyxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTGF6eUluaXQoKSB7XG4gICAgdGhpcy5mcm9hbGFMb2FkZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZSQpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogYW55ID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgIGlmIChzZWxlY3Rpb24uYmFzZU5vZGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgICBub2RlOiBzZWxlY3Rpb24uYmFzZU5vZGUubm9kZVZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXQ6IHNlbGVjdGlvbi5iYXNlT2Zmc2V0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplKG9wdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2Zyb2FsYVJlYWR5JCksXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcbiAgICAgICAgdGFwKCh7IGNvbmZpZywgb3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2V0dXBGcm9hbGEoY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRlbnRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvckhUTUwgPSB0aGlzLl9lZGl0b3IuaHRtbC5nZXQoKTtcblxuICAgIGlmICh0aGlzLmh0bWwgIT09IGVkaXRvckhUTUwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZShlZGl0b3JIVE1MKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEZyb2FsYShjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZywgb3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnNldEh0bWwodGhpcy5faHRtbCk7XG5cbiAgICBpZiAoY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmZyb2FsYUNvbmZpZy5ldmVudHMpIHtcbiAgICAgIGlmIChjb25maWcuZnJvYWxhQ29uZmlnLmV2ZW50cy5pbml0aWFsaXplZCkge1xuICAgICAgICBjb25maWcuZnJvYWxhQ29uZmlnLmV2ZW50cy5pbml0aWFsaXplZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdibHVyJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG5cbiAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgKGhhbmRsZXIpID0+IHtcbiAgICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignY29udGVudENoYW5nZWQnLCBoYW5kbGVyKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7fVxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5faHRtbCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmVkaXRvci5odG1sLmdldCgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jb250ZW50Q2hhbmdlZCgpO1xuICAgICAgfSk7XG5cbiAgICAvLyB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdjb250ZW50Q2hhbmdlZCcsICgpID0+IHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCd0ZXN0Jyk7XG4gICAgLy8gICBpZiAoIXRoaXMuX2ZpcnN0Q2hhbmdlKSB7XG4gICAgLy8gICAgIHRoaXMuX2NvbnRlbnRDaGFuZ2VkKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdwYXN0ZS5hZnRlckNsZWFudXAnLCAoaHRtbCkgPT4ge1xuICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZGl2LmlubmVySFRNTCA9IGh0bWw7XG4gICAgICBkaXYucXVlcnlTZWxlY3RvckFsbCgnKicpXG4gICAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGVsLmF0dHJpYnV0ZXNbMF0ubmFtZTtcbiAgICAgICAgICAgIGlmIChuYW1lICE9PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2tleWRvd24nLCAoKSA9PiB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmltYWdlICYmIHRoaXMuY29uZmlnLmltYWdlLnVwbG9hZCkge1xuICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignaW1hZ2UuYmVmb3JlUGFzdGVVcGxvYWQnLCAoaW1hZ2UpID0+IHtcblxuICAgICAgICBmZXRjaChpbWFnZS5nZXRBdHRyaWJ1dGUoJ3NyYycpKVxuICAgICAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIHJlcy5ibG9iKClcbiAgICAgICAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzSW1hZ2VVcGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZSgnc3JjJywgdXJsKTtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWZyLWltYWdlLXBhc3RlZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRDaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ltYWdlLmJlZm9yZVVwbG9hZCcsIChibG9icykgPT4ge1xuICAgICAgICB0aGlzLl9wcm9jZXNzSW1hZ2VVcGxvYWQoYmxvYnNbMF0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmltYWdlLmluc2VydCh1cmwsIG51bGwsIG51bGwsIHRoaXMuZWRpdG9yLmltYWdlLmdldCgpKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcuZnItc2Vjb25kLXRvb2xiYXInKSkge1xuICAgICAgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcuZnItc2Vjb25kLXRvb2xiYXInKS5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSBvcHRpb25zLnNlbGVjdGlvbjtcblxuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IG5vZGU6IGFueSA9IEFycmF5LmZyb20odGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCcuZnItZWxlbWVudCAqJykpLmZpbmQoKG5vZGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uLm5vZGUgPT09IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGhpcy5fZ2V0VGV4dE5vZGUobm9kZSksIHNlbGVjdGlvbi5vZmZzZXQpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuXG4gICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFRleHROb2RlKG5vZGUpIHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuY2hpbGROb2Rlcykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGV4dE5vZGUobm9kZS5jaGlsZE5vZGVzWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxmcy1sYWJlbC1maWVsZD5cbiAgPGZzLWxhYmVsICpuZ0lmPVwiY29uZmlnLmxhYmVsXCI+e3tjb25maWcubGFiZWx9fTwvZnMtbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJmcy1odG1sLWVkaXRvci1kZWZhdWx0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxpemVkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpmc1NrZWxldG9uPVwiKGZyb2FsYUxvYWRlZCQgfCBhc3luYykgIT09IGZhbHNlXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgPGRpdiAjZWxSZWY+PC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbGluZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkaXNhYmxlZC1saW5lXCI+PC9kaXY+XG4gICAgPGZzLWh0bWwtcmVuZGVyZXJcbiAgICAgICpuZ0lmPVwiIWluaXRpYWxpemVkXCJcbiAgICAgIFtodG1sXT1cImh0bWxcIlxuICAgICAgKGNsaWNrKT1cInVuaW5pdGlhbGl6ZWRDbGljaygkZXZlbnQpXCI+XG4gICAgPC9mcy1odG1sLXJlbmRlcmVyPlxuICA8L2Rpdj5cbiAgXG4gIDxmcy1sYWJlbC1tZXNzYWdlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj48L2Rpdj5cbiAgPC9mcy1sYWJlbC1tZXNzYWdlPlxuPC9mcy1sYWJlbC1maWVsZD5cbiJdfQ==
@@ -1,6 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Plugin } from '../classes/plugin';
3
- import { resourceLoaderFactory } from '../utils/loader';
4
3
  export class ScreenRecordPlugin extends Plugin {
5
4
  constructor(config = {}) {
6
5
  super();
@@ -43,8 +42,6 @@ export class ScreenRecordPlugin extends Plugin {
43
42
  }
44
43
  initialize() {
45
44
  return __awaiter(this, void 0, void 0, function* () {
46
- yield resourceLoaderFactory(document).loadStyles('froala')
47
- .toPromise();
48
45
  const FroalaEditor = window.FroalaEditor;
49
46
  this.editor.events.on('mouseup', (e) => {
50
47
  const el = this._getEl(e.target);
@@ -91,4 +88,4 @@ export class ScreenRecordPlugin extends Plugin {
91
88
  }
92
89
  }
93
90
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3hELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxNQUFNO0lBSTVDLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxF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Q0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sVUFBVSxDQUFFLEVBQUU7UUFDcEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxFQUFFO1FBQ2YsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3Mvc2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IHJlc291cmNlTG9hZGVyRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL2xvYWRlcic7XG5cblxuZGVjbGFyZSB2YXIgTWVkaWFSZWNvcmRlcjogYW55O1xuXG5leHBvcnQgY2xhc3MgU2NyZWVuUmVjb3JkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIF9hY3RpdmVFbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiBjb25maWcubmFtZSB8fCAnc2NyZWVuUmVjb3JkJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgICAgIHN2Z1BhdGg6IGBNMTQuNyw3Ljd2Ni4xSDcuMVY3LjdIMTQuNyBNMTYuMyw5LjZWNi45YzAtMC40LTAuMy0wLjgtMC44LTAuOEg2LjRjLTAuNCwwLTAuOCwwLjMtMC44LDAuOHY3LjZjMCwwLjQsMC4zLDAuOCwwLjgsMC44aDkuMWMwLjQsMCwwLjgtMC4zLDAuOC0wLjh2LTIuN2wxLjcsMS43YzAuMywwLjMsMC44LDAuMywxLjEsMGMwLjEtMC4xLDAuMi0wLjMsMC4yLTAuNVY4LjRjMC0wLjQtMC4zLTAuOC0wLjgtMC44XG5cdGMtMC4yLDAtMC40LDAuMS0wLjUsMC4yTDE2LjMsOS42eiBNMjEuNSwxLjZIMi45Yy0wLjcsMC0xLjMsMC43LTEuMywxLjZ2MTQuNmMwLDAuOSwwLjYsMS42LDEuMywxLjZoNy42djEuMWwtNSwxYy0wLjIsMC0wLjQsMC4zLTAuNCwwLjZjMCwwLjMsMC4yLDAuNCwwLjQsMC40YzAsMCwwLDAsMC4xLDBsNS4zLTFoMi42bDUuMywxYzAsMCwwLDAsMC4xLDBjMC4yLDAsMC40LTAuMiwwLjQtMC40XG4gIGMwLTAuMy0wLjEtMC42LTAuNC0wLjZsLTUtMXYtMS4xaDcuNmMwLjcsMCwxLjMtMC43LDEuMy0xLjZWMy4yQzIyLjksMi4zLDIyLjMsMS42LDIxLjUsMS42eiBNMjEuMSwxNy4zSDMuM1YzLjdoMTcuOEwyMS4xLDE3LjNMMjEuMSwxNy4zemAsXG4gICAgICAgICAgdG9vbHRpcDogJ1NjcmVlbiBSZWNvcmQnLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG5cbiAgICAgICAgICAgICg8YW55Pm5hdmlnYXRvcikubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0pXG4gICAgICAgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0geyBtaW1lVHlwZTogJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknIH07XG4gICAgICAgICAgICAgICAgbGV0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgc3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoJ2luYWN0aXZlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoY2h1bmtzLCB7IHR5cGU6ICd2aWRlby93ZWJtJyB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy51cGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydChgPHNwYW4gY2xhc3M9XCJmci1zY3JlZW4tcmVjb3JkIGZyLWRlbGV0YWJsZSBmci1kcmFnZ2FibGVcIj48dmlkZW8gY29udHJvbHMgc3R5bGU9XCJtYXgtd2lkdGg6JHtjb25maWcubWF4V2lkdGh9XCI+PHNvdXJjZSBzcmM9XCIke3VybH1cIiB0eXBlPVwidmlkZW8vd2VibVwiPjwvdmlkZW8+PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0YXJ0KDEwKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBhd2FpdCByZXNvdXJjZUxvYWRlckZhY3RvcnkoZG9jdW1lbnQpLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCBGcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdtb3VzZXVwJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fZ2V0RWwoZS50YXJnZXQpO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IucG9wdXBzLmhpZGVBbGwoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWwgPSBlbDtcbiAgICAgICAgdGhpcy5fc2hvd1BvcHVwKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEZyb2FsYUVkaXRvci5QT1BVUF9URU1QTEFURVNbXCJzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXBcIl0gPSAnW19CVVRUT05TX10nO1xuXG4gICAgRnJvYWxhRWRpdG9yLkRlZmluZUljb24oJ3BvcHVwQ2xvc2UnLCB7IE5BTUU6ICd0cmFzaCcsIFNWR19LRVk6ICdyZW1vdmUnIH0pO1xuICAgIEZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoJ3BvcHVwQ2xvc2UnLCB7XG4gICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICB1bmRvOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbCkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQb3B1cCgpIHtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgICAgYnV0dG9uczogYDxkaXYgY2xhc3M9XCJmci1idXR0b25zXCI+JHt0aGlzLmVkaXRvci5idXR0b24uYnVpbGRMaXN0KFsncG9wdXBDbG9zZSddKX08L2Rpdj5gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IucG9wdXBzLmNyZWF0ZSgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvd1BvcHVwIChlbCkge1xuICAgIHZhciAkcG9wdXAgPSB0aGlzLmVkaXRvci5wb3B1cHMuZ2V0KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnKTtcblxuICAgIGlmICghJHBvcHVwKSB7XG4gICAgICAkcG9wdXAgPSB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zZXRDb250YWluZXIoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRoaXMuZWRpdG9yLiQoZWwpKTtcblxuICAgIGNvbnN0IGxlZnQgPSBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNob3coJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIGxlZnQsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWwoZWwpIHtcbiAgICBpZiAoZWwgJiYgZWwuY2xhc3NMaXN0KSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdmci1zY3JlZW4tcmVjb3JkJykpXG4gICAgICAgIHJldHVybiBlbDtcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldEVsKGVsLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxNQUFNO0lBSTVDLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3JCLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0NBQ3JCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dDQUNwRCxNQUFNLEdBQUcsSUFBSSxDQUFDO2dDQUVkLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dDQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztxQ0FDaEIsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0NBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLDZGQUE2RixNQUFNLENBQUMsUUFBUSxrQkFBa0IsR0FBRyxxQ0FBcUMsQ0FBQyxDQUFDO2dDQUM3TCxDQUFDLENBQUMsQ0FBQzs0QkFDTCxDQUFDLENBQUMsQ0FBQzs0QkFFSCxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0NBQ3hELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7b0NBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lDQUN6Qjs0QkFDSCxDQUFDLENBQUMsQ0FBQzs0QkFFSCxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMxQixDQUFDLENBQUM7NkJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQztpQkFDRjthQUNGLEdBQ0YsQ0FBQztJQUNKLENBQUM7SUFFWSxVQUFVOztZQUNyQixNQUFNLFlBQVksR0FBSSxNQUFjLENBQUMsWUFBWSxDQUFDO1lBRWxELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRWpDLElBQUksRUFBRSxFQUFFO29CQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDckI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQUMsR0FBRyxhQUFhLENBQUM7WUFFekUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLFlBQVksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO2dCQUN6QyxLQUFLLEVBQUUsUUFBUTtnQkFDZixJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsS0FBSztnQkFDWixRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztxQkFDekI7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVPLFlBQVk7UUFFbEIsTUFBTSxRQUFRLEdBQUc7WUFDZixPQUFPLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVE7U0FDekYsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxVQUFVLENBQUUsRUFBRTtRQUNwQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9FLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sTUFBTSxDQUFDLEVBQUU7UUFDZixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3RCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDO1lBRVosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcmVlblJlY29yZFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY29uZmlncy9zY3JlZW4tcmVjb3JkLXBsdWdpbi5jb25maWcnO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmRlY2xhcmUgdmFyIE1lZGlhUmVjb3JkZXI6IGFueTtcblxuZXhwb3J0IGNsYXNzIFNjcmVlblJlY29yZFBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRWw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFNjcmVlblJlY29yZFBsdWdpbkNvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbmFtZTogY29uZmlnLm5hbWUgfHwgJ3NjcmVlblJlY29yZCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc2NyZWVuUmVjb3JkJyxcbiAgICAgICAgICBzdmdQYXRoOiBgTTE0LjcsNy43djYuMUg3LjFWNy43SDE0LjcgTTE2LjMsOS42VjYuOWMwLTAuNC0wLjMtMC44LTAuOC0wLjhINi40Yy0wLjQsMC0wLjgsMC4zLTAuOCwwLjh2Ny42YzAsMC40LDAuMywwLjgsMC44LDAuOGg5LjFjMC40LDAsMC44LTAuMywwLjgtMC44di0yLjdsMS43LDEuN2MwLjMsMC4zLDAuOCwwLjMsMS4xLDBjMC4xLTAuMSwwLjItMC4zLDAuMi0wLjVWOC40YzAtMC40LTAuMy0wLjgtMC44LTAuOFxuXHRjLTAuMiwwLTAuNCwwLjEtMC41LDAuMkwxNi4zLDkuNnogTTIxLjUsMS42SDIuOWMtMC43LDAtMS4zLDAuNy0xLjMsMS42djE0LjZjMCwwLjksMC42LDEuNiwxLjMsMS42aDcuNnYxLjFsLTUsMWMtMC4yLDAtMC40LDAuMy0wLjQsMC42YzAsMC4zLDAuMiwwLjQsMC40LDAuNGMwLDAsMCwwLDAuMSwwbDUuMy0xaDIuNmw1LjMsMWMwLDAsMCwwLDAuMSwwYzAuMiwwLDAuNC0wLjIsMC40LTAuNFxuICBjMC0wLjMtMC4xLTAuNi0wLjQtMC42bC01LTF2LTEuMWg3LjZjMC43LDAsMS4zLTAuNywxLjMtMS42VjMuMkMyMi45LDIuMywyMi4zLDEuNiwyMS41LDEuNnogTTIxLjEsMTcuM0gzLjNWMy43aDE3LjhMMjEuMSwxNy4zTDIxLjEsMTcuM3pgLFxuICAgICAgICAgIHRvb2x0aXA6ICdTY3JlZW4gUmVjb3JkJyxcbiAgICAgICAgICBjbGljazogKGVkaXRvcikgPT4ge1xuXG4gICAgICAgICAgICAoPGFueT5uYXZpZ2F0b3IpLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoeyB2aWRlbzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAudGhlbigoc3RyZWFtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgbWltZVR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9dnA5JyB9O1xuICAgICAgICAgICAgICAgIGxldCBtZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHN0cmVhbS5hZGRFdmVudExpc3RlbmVyKCdpbmFjdGl2ZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICAgICAgICAgICAgc3RyZWFtID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKGNodW5rcywgeyB0eXBlOiAndmlkZW8vd2VibScgfSk7XG4gICAgICAgICAgICAgICAgICBjb25maWcudXBsb2FkKGJsb2IpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuaHRtbC5pbnNlcnQoYDxzcGFuIGNsYXNzPVwiZnItc2NyZWVuLXJlY29yZCBmci1kZWxldGFibGUgZnItZHJhZ2dhYmxlXCI+PHZpZGVvIGNvbnRyb2xzIHN0eWxlPVwibWF4LXdpZHRoOiR7Y29uZmlnLm1heFdpZHRofVwiPjxzb3VyY2Ugc3JjPVwiJHt1cmx9XCIgdHlwZT1cInZpZGVvL3dlYm1cIj48L3ZpZGVvPjwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rcy5wdXNoKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5zdGFydCgxMCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4geyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgY29uc3QgRnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcblxuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbignbW91c2V1cCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuX2dldEVsKGUudGFyZ2V0KTtcblxuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5oaWRlQWxsKCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUVsID0gZWw7XG4gICAgICAgIHRoaXMuX3Nob3dQb3B1cChlbCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBGcm9hbGFFZGl0b3IuUE9QVVBfVEVNUExBVEVTW1wic2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwXCJdID0gJ1tfQlVUVE9OU19dJztcblxuICAgIEZyb2FsYUVkaXRvci5EZWZpbmVJY29uKCdwb3B1cENsb3NlJywgeyBOQU1FOiAndHJhc2gnLCBTVkdfS0VZOiAncmVtb3ZlJyB9KTtcbiAgICBGcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKCdwb3B1cENsb3NlJywge1xuICAgICAgdGl0bGU6ICdSZW1vdmUnLFxuICAgICAgdW5kbzogZmFsc2UsXG4gICAgICBmb2N1czogZmFsc2UsXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRWwpIHtcbiAgICAgICAgICB0aGlzLl9hY3RpdmVFbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUG9wdXAoKSB7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHtcbiAgICAgIGJ1dHRvbnM6IGA8ZGl2IGNsYXNzPVwiZnItYnV0dG9uc1wiPiR7dGhpcy5lZGl0b3IuYnV0dG9uLmJ1aWxkTGlzdChbJ3BvcHVwQ2xvc2UnXSl9PC9kaXY+YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnBvcHVwcy5jcmVhdGUoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3dQb3B1cCAoZWwpIHtcbiAgICB2YXIgJHBvcHVwID0gdGhpcy5lZGl0b3IucG9wdXBzLmdldCgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJyk7XG5cbiAgICBpZiAoISRwb3B1cCkge1xuICAgICAgJHBvcHVwID0gdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRvci5wb3B1cHMuc2V0Q29udGFpbmVyKCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCB0aGlzLmVkaXRvci4kKGVsKSk7XG5cbiAgICBjb25zdCBsZWZ0ID0gZWwub2Zmc2V0TGVmdCArIGVsLm9mZnNldFdpZHRoIC8gMjtcblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zaG93KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCBsZWZ0LCBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsKGVsKSB7XG4gICAgaWYgKGVsICYmIGVsLmNsYXNzTGlzdCkge1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnZnItc2NyZWVuLXJlY29yZCcpKVxuICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgIHJldHVybiB0aGlzLl9nZXRFbChlbC5wYXJlbnROb2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { Inject, Injectable, Optional } from '@angular/core';
2
2
  import { DOCUMENT } from '@angular/common';
3
+ import { fsSourceLoader } from '@firestitch/common';
3
4
  import { BehaviorSubject, combineLatest } from 'rxjs';
4
5
  import { concatMap, map, shareReplay, tap } from 'rxjs/operators';
5
6
  import { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';
6
- import { resourceLoaderFactory } from '../utils/loader';
7
7
  import * as i0 from "@angular/core";
8
8
  export class FsFroalaLoaderService {
9
9
  constructor(_defaultConfig, _document) {
@@ -11,35 +11,42 @@ export class FsFroalaLoaderService {
11
11
  this._document = _document;
12
12
  this._froalaLoaded = new BehaviorSubject(false);
13
13
  this._froalaPluginsLoaded = new BehaviorSubject(false);
14
- this._resourceLoader = resourceLoaderFactory(this._document);
14
+ this._sourceLoader = fsSourceLoader;
15
15
  this._loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
16
16
  .pipe(map(([FroalaReady, pluginsRead]) => {
17
17
  return pluginsRead && FroalaReady;
18
18
  }), shareReplay(1));
19
- if (this._defaultConfig) {
20
- if (this._defaultConfig.assetsJSPath) {
21
- this._resourceLoader.setResourceBase(this._defaultConfig.assetsJSPath);
22
- }
23
- if (this._defaultConfig.assetsCSSPath) {
24
- this._resourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath);
25
- }
26
- }
19
+ this._sourceLoader.setDocument(this._document);
27
20
  this._load();
28
21
  }
29
22
  get loaded$() {
30
23
  return this._loaded$;
31
24
  }
32
- get ready() {
33
- return this._froalaLoaded.getValue() && this._froalaPluginsLoaded.getValue();
34
- }
35
25
  get FroalaEditor() {
36
26
  return this._FroalaEditor;
37
27
  }
38
28
  _load() {
39
- combineLatest([
40
- this._resourceLoader.loadResource('froala'),
41
- this._resourceLoader.loadStyles('froala')
42
- ])
29
+ this._sourceLoader.registerResources({
30
+ froala: [
31
+ '/assets/js/froala/froala_editor.min.js',
32
+ '/assets/css/froala_editor.pkgd.min.css',
33
+ ],
34
+ froala_align: '/assets/js/froala/plugins/align.min.js',
35
+ froala_colors: '/assets/js/froala/plugins/colors.min.js',
36
+ froala_image: '/assets/js/froala/plugins/image.min.js',
37
+ froala_link: '/assets/js/froala/plugins/link.min.js',
38
+ froala_lists: '/assets/js/froala/plugins/lists.min.js',
39
+ froala_paragraph_format: '/assets/js/froala/plugins/paragraph_format.min.js',
40
+ froala_table: '/assets/js/froala/plugins/table.min.js',
41
+ froala_url: '/assets/js/froala/plugins/url.min.js',
42
+ froala_video: '/assets/js/froala/plugins/video.min.js',
43
+ froala_quote: '/assets/js/froala/plugins/quote.min.js',
44
+ froala_draggable: '/assets/js/froala/plugins/draggable.min.js',
45
+ froala_font_size: '/assets/js/froala/plugins/font_size.min.js',
46
+ froala_quick_insert: '/assets/js/froala/plugins/quick_insert.min.js',
47
+ froala_line_height: '/assets/js/froala/plugins/line_height.min.js'
48
+ });
49
+ this._sourceLoader.loadResource('froala')
43
50
  .pipe(tap(() => {
44
51
  this._FroalaEditor = window.FroalaEditor;
45
52
  this._froalaDone();
@@ -51,14 +58,10 @@ export class FsFroalaLoaderService {
51
58
  .subscribe();
52
59
  }
53
60
  _loadPlugins() {
54
- const imports = this._defaultConfig
61
+ const resources = this._defaultConfig
55
62
  .froalaPlugins
56
- .reduce((acc, pluginName) => {
57
- const import$ = this._resourceLoader.loadResource(pluginName);
58
- acc.push(import$);
59
- return acc;
60
- }, []);
61
- return combineLatest(imports);
63
+ .map((pluginName) => `froala_${pluginName}`);
64
+ return this._sourceLoader.loadResources(resources);
62
65
  }
63
66
  _froalaDone() {
64
67
  this._froalaLoaded.next(true);
@@ -83,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
83
86
  type: Inject,
84
87
  args: [DOCUMENT]
85
88
  }] }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLHFCQUFxQjtJQWdCaEMsWUFFVSxjQUFrQyxFQUVsQyxTQUFtQjtRQUZuQixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFFbEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQWhCckIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxhQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM5RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUM7UUFDcEMsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFRRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTthQUN2RTtZQUVELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7YUFDdEU7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxLQUFLO1FBQ1gsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUMxQyxDQUFDO2FBQ0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsYUFBYSxHQUFJLE1BQWMsQ0FBQyxZQUFZLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYzthQUNoQyxhQUFhO2FBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTlELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7bUhBdkZVLHFCQUFxQixrQkFpQlYscUJBQXFCLDZCQUVqQyxRQUFRO3VIQW5CUCxxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7OEJBR3RCLFFBQVE7MEJBRDFCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHIH0gZnJvbSAnLi4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuaW1wb3J0IHsgcmVzb3VyY2VMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMvbG9hZGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9Gcm9hbGFFZGl0b3I6IHVua25vd247XG5cbiAgcHJpdmF0ZSBfZnJvYWxhTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfcmVzb3VyY2VMb2FkZXIgPSByZXNvdXJjZUxvYWRlckZhY3RvcnkodGhpcy5fZG9jdW1lbnQpO1xuXG4gIHByaXZhdGUgX2xvYWRlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9mcm9hbGFMb2FkZWQsIHRoaXMuX2Zyb2FsYVBsdWdpbnNMb2FkZWRdKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChbRnJvYWxhUmVhZHksIHBsdWdpbnNSZWFkXSkgPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luc1JlYWQgJiYgRnJvYWxhUmVhZHk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19IVE1MX0VESVRPUl9DT05GSUcpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHtcbiAgICBpZiAodGhpcy5fZGVmYXVsdENvbmZpZykge1xuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzSlNQYXRoKSB7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGVyLnNldFJlc291cmNlQmFzZSh0aGlzLl9kZWZhdWx0Q29uZmlnLmFzc2V0c0pTUGF0aClcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzQ1NTUGF0aCkge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZUxvYWRlci5zZXRTdHlsZXNCYXNlKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzQ1NTUGF0aClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mcm9hbGFMb2FkZWQuZ2V0VmFsdWUoKSAmJiB0aGlzLl9mcm9hbGFQbHVnaW5zTG9hZGVkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZyb2FsYUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9Gcm9hbGFFZGl0b3I7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5fcmVzb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKCdmcm9hbGEnKSxcbiAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGVyLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX0Zyb2FsYUVkaXRvciA9ICh3aW5kb3cgYXMgYW55KS5Gcm9hbGFFZGl0b3I7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhRG9uZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFBsdWdpbnMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhUGx1Z2luc0RvbmUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2lucygpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5fZGVmYXVsdENvbmZpZ1xuICAgICAgLmZyb2FsYVBsdWdpbnNcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGx1Z2luTmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBpbXBvcnQkID0gdGhpcy5fcmVzb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKHBsdWdpbk5hbWUpO1xuXG4gICAgICAgIGFjYy5wdXNoKGltcG9ydCQpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChpbXBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Zyb2FsYURvbmUoKSB7XG4gICAgdGhpcy5fZnJvYWxhTG9hZGVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9mcm9hbGFQbHVnaW5zRG9uZSgpIHtcbiAgICB0aGlzLl9mcm9hbGFQbHVnaW5zTG9hZGVkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFnQmhDLFlBR1UsY0FBa0MsRUFFbEMsU0FBbUI7UUFGbkIsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBRWxDLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFqQnJCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0IsYUFBUSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDOUUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDakMsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBU0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztZQUNuQyxNQUFNLEVBQUU7Z0JBQ04sd0NBQXdDO2dCQUN4Qyx3Q0FBd0M7YUFDekM7WUFDRCxZQUFZLEVBQUUsd0NBQXdDO1lBQ3RELGFBQWEsRUFBRSx5Q0FBeUM7WUFDeEQsWUFBWSxFQUFFLHdDQUF3QztZQUN0RCxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELFlBQVksRUFBRSx3Q0FBd0M7WUFDdEQsdUJBQXVCLEVBQUUsbURBQW1EO1lBQzVFLFlBQVksRUFBRSx3Q0FBd0M7WUFDdEQsVUFBVSxFQUFFLHNDQUFzQztZQUNsRCxZQUFZLEVBQUUsd0NBQXdDO1lBQ3RELFlBQVksRUFBRSx3Q0FBd0M7WUFDdEQsZ0JBQWdCLEVBQUUsNENBQTRDO1lBQzlELGdCQUFnQixFQUFFLDRDQUE0QztZQUM5RCxtQkFBbUIsRUFBRSwrQ0FBK0M7WUFDcEUsa0JBQWtCLEVBQUUsOENBQThDO1NBQ25FLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzthQUN0QyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxhQUFhLEdBQUksTUFBYyxDQUFDLFlBQVksQ0FBQztZQUNsRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjO2FBQ2xDLGFBQWE7YUFDYixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDOzttSEF2RlUscUJBQXFCLGtCQWtCdEIscUJBQXFCLDZCQUVyQixRQUFRO3VIQXBCUCxxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQkksUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7OEJBR1YsUUFBUTswQkFEMUIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBmc1NvdXJjZUxvYWRlciB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbidcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHIH0gZnJvbSAnLi4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9Gcm9hbGFFZGl0b3I6IHVua25vd247XG5cbiAgcHJpdmF0ZSBfZnJvYWxhTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfc291cmNlTG9hZGVyID0gZnNTb3VyY2VMb2FkZXI7XG5cbiAgcHJpdmF0ZSBfbG9hZGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Zyb2FsYUxvYWRlZCwgdGhpcy5fZnJvYWxhUGx1Z2luc0xvYWRlZF0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKFtGcm9hbGFSZWFkeSwgcGx1Z2luc1JlYWRdKSA9PiB7XG4gICAgICAgIHJldHVybiBwbHVnaW5zUmVhZCAmJiBGcm9hbGFSZWFkeTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRlNfSFRNTF9FRElUT1JfQ09ORklHKVxuICAgIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgKSB7XG4gICAgdGhpcy5fc291cmNlTG9hZGVyLnNldERvY3VtZW50KHRoaXMuX2RvY3VtZW50KTtcbiAgICB0aGlzLl9sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZyb2FsYUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9Gcm9hbGFFZGl0b3I7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIHRoaXMuX3NvdXJjZUxvYWRlci5yZWdpc3RlclJlc291cmNlcyh7XG4gICAgICBmcm9hbGE6IFtcbiAgICAgICAgJy9hc3NldHMvanMvZnJvYWxhL2Zyb2FsYV9lZGl0b3IubWluLmpzJyxcbiAgICAgICAgJy9hc3NldHMvY3NzL2Zyb2FsYV9lZGl0b3IucGtnZC5taW4uY3NzJyxcbiAgICAgIF0sXG4gICAgICBmcm9hbGFfYWxpZ246ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL2FsaWduLm1pbi5qcycsXG4gICAgICBmcm9hbGFfY29sb3JzOiAnL2Fzc2V0cy9qcy9mcm9hbGEvcGx1Z2lucy9jb2xvcnMubWluLmpzJyxcbiAgICAgIGZyb2FsYV9pbWFnZTogJy9hc3NldHMvanMvZnJvYWxhL3BsdWdpbnMvaW1hZ2UubWluLmpzJyxcbiAgICAgIGZyb2FsYV9saW5rOiAnL2Fzc2V0cy9qcy9mcm9hbGEvcGx1Z2lucy9saW5rLm1pbi5qcycsXG4gICAgICBmcm9hbGFfbGlzdHM6ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL2xpc3RzLm1pbi5qcycsXG4gICAgICBmcm9hbGFfcGFyYWdyYXBoX2Zvcm1hdDogJy9hc3NldHMvanMvZnJvYWxhL3BsdWdpbnMvcGFyYWdyYXBoX2Zvcm1hdC5taW4uanMnLFxuICAgICAgZnJvYWxhX3RhYmxlOiAnL2Fzc2V0cy9qcy9mcm9hbGEvcGx1Z2lucy90YWJsZS5taW4uanMnLFxuICAgICAgZnJvYWxhX3VybDogJy9hc3NldHMvanMvZnJvYWxhL3BsdWdpbnMvdXJsLm1pbi5qcycsXG4gICAgICBmcm9hbGFfdmlkZW86ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL3ZpZGVvLm1pbi5qcycsXG4gICAgICBmcm9hbGFfcXVvdGU6ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL3F1b3RlLm1pbi5qcycsXG4gICAgICBmcm9hbGFfZHJhZ2dhYmxlOiAnL2Fzc2V0cy9qcy9mcm9hbGEvcGx1Z2lucy9kcmFnZ2FibGUubWluLmpzJyxcbiAgICAgIGZyb2FsYV9mb250X3NpemU6ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL2ZvbnRfc2l6ZS5taW4uanMnLFxuICAgICAgZnJvYWxhX3F1aWNrX2luc2VydDogJy9hc3NldHMvanMvZnJvYWxhL3BsdWdpbnMvcXVpY2tfaW5zZXJ0Lm1pbi5qcycsXG4gICAgICBmcm9hbGFfbGluZV9oZWlnaHQ6ICcvYXNzZXRzL2pzL2Zyb2FsYS9wbHVnaW5zL2xpbmVfaGVpZ2h0Lm1pbi5qcydcbiAgICB9KTtcblxuICAgIHRoaXMuX3NvdXJjZUxvYWRlci5sb2FkUmVzb3VyY2UoJ2Zyb2FsYScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9Gcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuICAgICAgICAgIHRoaXMuX2Zyb2FsYURvbmUoKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRQbHVnaW5zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2Zyb2FsYVBsdWdpbnNEb25lKCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFBsdWdpbnMoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5fZGVmYXVsdENvbmZpZ1xuICAgICAgLmZyb2FsYVBsdWdpbnNcbiAgICAgIC5tYXAoKHBsdWdpbk5hbWUpID0+IGBmcm9hbGFfJHtwbHVnaW5OYW1lfWApO1xuXG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZUxvYWRlci5sb2FkUmVzb3VyY2VzKHJlc291cmNlcyk7XG4gIH1cblxuICBwcml2YXRlIF9mcm9hbGFEb25lKCkge1xuICAgIHRoaXMuX2Zyb2FsYUxvYWRlZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnJvYWxhUGx1Z2luc0RvbmUoKSB7XG4gICAgdGhpcy5fZnJvYWxhUGx1Z2luc0xvYWRlZC5uZXh0KHRydWUpO1xuICB9XG59XG4iXX0=
@@ -8,12 +8,12 @@ import * as i5 from '@firestitch/skeleton';
8
8
  import { FsSkeletonModule } from '@firestitch/skeleton';
9
9
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
10
10
  import { FileProcessor, FsFile } from '@firestitch/file';
11
- import { Observable, BehaviorSubject, combineLatest, ReplaySubject, Subject, fromEventPattern } from 'rxjs';
12
- import { shareReplay, map, tap, concatMap, switchMap, filter, startWith, distinctUntilChanged, skip, takeUntil } from 'rxjs/operators';
11
+ import { BehaviorSubject, combineLatest, ReplaySubject, Subject, fromEventPattern } from 'rxjs';
12
+ import { map, shareReplay, tap, concatMap, switchMap, filter, startWith, distinctUntilChanged, skip, takeUntil } from 'rxjs/operators';
13
13
  import { merge, debounce } from 'lodash-es';
14
+ import { fsSourceLoader, guid } from '@firestitch/common';
14
15
  import * as i1 from '@angular/platform-browser';
15
16
  import Tribute from 'tributejs';
16
- import { guid } from '@firestitch/common';
17
17
  import { __awaiter } from 'tslib';
18
18
 
19
19
  const RichButtons = [
@@ -55,129 +55,48 @@ const ParagraphButtons = [
55
55
  const FS_HTML_EDITOR_DEFAULT_CONFIG = new InjectionToken('fs-html-editor.default-config');
56
56
  const FS_HTML_EDITOR_CONFIG = new InjectionToken('fs-html-editor.config');
57
57
 
58
- function resourceLoaderFactory(document) {
59
- let resourceBase = '/assets/js/froala/';
60
- let stylesBase = '/assets/css/';
61
- const head = document.getElementsByTagName('head')[0];
62
- const files = new Map();
63
- const window = document.defaultView;
64
- const resourcePaths = {
65
- froala: 'froala_editor.min.js',
66
- align: 'plugins/align.min.js',
67
- colors: 'plugins/colors.min.js',
68
- image: 'plugins/image.min.js',
69
- link: 'plugins/link.min.js',
70
- lists: 'plugins/lists.min.js',
71
- paragraph_format: 'plugins/paragraph_format.min.js',
72
- table: 'plugins/table.min.js',
73
- url: 'plugins/url.min.js',
74
- video: 'plugins/video.min.js',
75
- quote: 'plugins/quote.min.js',
76
- draggable: 'plugins/draggable.min.js',
77
- font_size: 'plugins/font_size.min.js',
78
- quick_insert: 'plugins/quick_insert.min.js',
79
- line_height: 'plugins/line_height.min.js'
80
- };
81
- const stylesPaths = {
82
- froala: 'froala_editor.pkgd.min.css',
83
- };
84
- const loadResource = function (scriptPath) {
85
- if (!files.has(scriptPath)) {
86
- const obs$ = new Observable((obs) => {
87
- const script = document.createElement('script');
88
- script.src = scriptPath;
89
- head.appendChild(script);
90
- script.onload = () => {
91
- obs.next();
92
- obs.complete();
93
- };
94
- script.onerror = (err) => {
95
- obs.error(err);
96
- };
97
- })
98
- .pipe(shareReplay(1));
99
- files.set(scriptPath, obs$);
100
- }
101
- return files.get(scriptPath);
102
- };
103
- const loadStyles = function (stylePath) {
104
- if (!files.has(stylePath)) {
105
- const obs$ = new Observable((obs) => {
106
- const style = document.createElement('link');
107
- style.id = stylePath;
108
- style.rel = 'stylesheet';
109
- style.href = `${stylePath}`;
110
- head.appendChild(style);
111
- style.onload = () => {
112
- obs.next();
113
- obs.complete();
114
- };
115
- style.onerror = (err) => {
116
- obs.error(err);
117
- };
118
- });
119
- files.set(stylePath, obs$);
120
- }
121
- return files.get(stylePath);
122
- };
123
- return {
124
- setResourceBase: (path) => {
125
- resourceBase = path;
126
- },
127
- setStylesBase: (path) => {
128
- stylesBase = path;
129
- },
130
- loadResource: (resourceName) => {
131
- /*
132
- this line must be here for cases when html-editor loaded together with text-editor
133
- monaco-editor has it's own loader and it declares "define" variable, so froala tryes to load itself in wrong way
134
- */
135
- window.define = null;
136
- const path = resourcePaths[resourceName] || resourceName;
137
- return loadResource(resourceBase + path);
138
- },
139
- loadStyles: (resourceName) => {
140
- const path = stylesPaths[resourceName] || resourceName;
141
- return loadStyles(stylesBase + path);
142
- }
143
- };
144
- }
145
-
146
58
  class FsFroalaLoaderService {
147
59
  constructor(_defaultConfig, _document) {
148
60
  this._defaultConfig = _defaultConfig;
149
61
  this._document = _document;
150
62
  this._froalaLoaded = new BehaviorSubject(false);
151
63
  this._froalaPluginsLoaded = new BehaviorSubject(false);
152
- this._resourceLoader = resourceLoaderFactory(this._document);
64
+ this._sourceLoader = fsSourceLoader;
153
65
  this._loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
154
66
  .pipe(map(([FroalaReady, pluginsRead]) => {
155
67
  return pluginsRead && FroalaReady;
156
68
  }), shareReplay(1));
157
- if (this._defaultConfig) {
158
- if (this._defaultConfig.assetsJSPath) {
159
- this._resourceLoader.setResourceBase(this._defaultConfig.assetsJSPath);
160
- }
161
- if (this._defaultConfig.assetsCSSPath) {
162
- this._resourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath);
163
- }
164
- }
69
+ this._sourceLoader.setDocument(this._document);
165
70
  this._load();
166
71
  }
167
72
  get loaded$() {
168
73
  return this._loaded$;
169
74
  }
170
- get ready() {
171
- return this._froalaLoaded.getValue() && this._froalaPluginsLoaded.getValue();
172
- }
173
75
  get FroalaEditor() {
174
76
  return this._FroalaEditor;
175
77
  }
176
78
  _load() {
177
- combineLatest([
178
- this._resourceLoader.loadResource('froala'),
179
- this._resourceLoader.loadStyles('froala')
180
- ])
79
+ this._sourceLoader.registerResources({
80
+ froala: [
81
+ '/assets/js/froala/froala_editor.min.js',
82
+ '/assets/css/froala_editor.pkgd.min.css',
83
+ ],
84
+ froala_align: '/assets/js/froala/plugins/align.min.js',
85
+ froala_colors: '/assets/js/froala/plugins/colors.min.js',
86
+ froala_image: '/assets/js/froala/plugins/image.min.js',
87
+ froala_link: '/assets/js/froala/plugins/link.min.js',
88
+ froala_lists: '/assets/js/froala/plugins/lists.min.js',
89
+ froala_paragraph_format: '/assets/js/froala/plugins/paragraph_format.min.js',
90
+ froala_table: '/assets/js/froala/plugins/table.min.js',
91
+ froala_url: '/assets/js/froala/plugins/url.min.js',
92
+ froala_video: '/assets/js/froala/plugins/video.min.js',
93
+ froala_quote: '/assets/js/froala/plugins/quote.min.js',
94
+ froala_draggable: '/assets/js/froala/plugins/draggable.min.js',
95
+ froala_font_size: '/assets/js/froala/plugins/font_size.min.js',
96
+ froala_quick_insert: '/assets/js/froala/plugins/quick_insert.min.js',
97
+ froala_line_height: '/assets/js/froala/plugins/line_height.min.js'
98
+ });
99
+ this._sourceLoader.loadResource('froala')
181
100
  .pipe(tap(() => {
182
101
  this._FroalaEditor = window.FroalaEditor;
183
102
  this._froalaDone();
@@ -189,14 +108,10 @@ class FsFroalaLoaderService {
189
108
  .subscribe();
190
109
  }
191
110
  _loadPlugins() {
192
- const imports = this._defaultConfig
111
+ const resources = this._defaultConfig
193
112
  .froalaPlugins
194
- .reduce((acc, pluginName) => {
195
- const import$ = this._resourceLoader.loadResource(pluginName);
196
- acc.push(import$);
197
- return acc;
198
- }, []);
199
- return combineLatest(imports);
113
+ .map((pluginName) => `froala_${pluginName}`);
114
+ return this._sourceLoader.loadResources(resources);
200
115
  }
201
116
  _froalaDone() {
202
117
  this._froalaLoaded.next(true);
@@ -374,6 +289,9 @@ class FsHtmlEditorComponent {
374
289
  }
375
290
  writeValue(html) {
376
291
  this._html = html || '';
292
+ if (Array.isArray(this._html)) {
293
+ this._html = this._html.pop();
294
+ }
377
295
  this._html = this._html
378
296
  .replace(/<(li)>\s?<(div)>/g, '<li>')
379
297
  .replace(/<\/(div)><\/(li)>/g, '</li>');
@@ -1043,8 +961,6 @@ class ScreenRecordPlugin extends Plugin {
1043
961
  }
1044
962
  initialize() {
1045
963
  return __awaiter(this, void 0, void 0, function* () {
1046
- yield resourceLoaderFactory(document).loadStyles('froala')
1047
- .toPromise();
1048
964
  const FroalaEditor = window.FroalaEditor;
1049
965
  this.editor.events.on('mouseup', (e) => {
1050
966
  const el = this._getEl(e.target);