@sapphire-ion/framework 1.2.5 → 1.2.8

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.
@@ -53,7 +53,7 @@ export class InputSelectComponent extends CustomInput {
53
53
  if (this.configuration().useInfiniteScroll) {
54
54
  this.lstOptions = this.lstOptions.slice(0, this.infiniteScrollPage() * 25);
55
55
  }
56
- if (this.configuration().interface == SelectInterfaces.ActionSheet) {
56
+ if (this.interface() == SelectInterfaces.ActionSheet) {
57
57
  this.lstOptionsActionSheet = [...this.lstOptions.map(p => {
58
58
  return {
59
59
  text: p.label,
@@ -370,4 +370,4 @@ class ItemValue {
370
370
  function isPortrait() {
371
371
  return window.innerHeight > window.innerWidth;
372
372
  }
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQW9CLEtBQUssRUFBZSxLQUFLLEVBQWUsTUFBTSxFQUFVLFdBQVcsRUFBRSxTQUFTLEdBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQy9TLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQXlFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZKLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlD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dUJBQUMsb0JBQW9CO2dCQUNSLEtBQUs7c0JBQTNCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSSxLQUFLO3NCQUEzQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ1EsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxjQUFjO2dCQUlHLFVBQVU7c0JBQXJDLFNBQVM7dUJBQUMsZUFBZTs7QUFpRDVCLE1BQU0sU0FBUztJQUFmO1FBR0UsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixhQUFRLEdBQVksS0FBSyxDQUFDO0lBQzVCLENBQUM7Q0FBQTtBQUVELFNBQVMsVUFBVTtJQUNqQixPQUFPLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIENvbnRlbnRDaGlsZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5qZWN0b3IsIGlucHV0LCBJbnB1dFNpZ25hbCwgbW9kZWwsIE1vZGVsU2lnbmFsLCBzaWduYWwsIFNpZ25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25TaGVldEJ1dHRvbiwgQWxlcnRCdXR0b24sIEFsZXJ0SW5wdXQsIEluZmluaXRlU2Nyb2xsQ3VzdG9tRXZlbnQsIElvbkFjdGlvblNoZWV0LCBJb25BbGVydCwgSW9uQ29udGVudCwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCaW5kTGFiZWxGYWN0b3J5LCBCaW5kVmFsdWVGYWN0b3J5LCBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24sIFNlbGVjdEludGVyZmFjZXMgfSBmcm9tICcuL2lucHV0LnNlbGVjdC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgU0lvblBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3Npb24tcG9wb3Zlci9zaW9uLXBvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tSW5wdXQgfSBmcm9tICcuLi9jdXN0b20taW5wdXQnO1xyXG5pbXBvcnQgeyBTZWFyY2gsIFRpbWVvdXQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IFBsYWNlaG9sZGVyVGVtcGxhdGVDb250ZXh0LCBTSW9uUGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zaW9uLXBsYWNlaG9sZGVyLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9wdGlvblRlbXBsYXRlQ29udGV4dCwgU0lvbk9wdGlvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Npb24tb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IExhYmVsVGVtcGxhdGVDb250ZXh0LCBTSW9uTGFiZWxUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zaW9uLWxhYmVsLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIC4uLklucHV0UHJvdmlkZXJGYWN0b3J5LkdldFByb3ZpZGVycyhJbnB1dFNlbGVjdENvbXBvbmVudCksXHJcbiAgICB7IHByb3ZpZGU6IEN1c3RvbUlucHV0LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFNlbGVjdENvbXBvbmVudCkgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWxlY3RDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBDdXN0b21JbnB1dDxUIHwgVFtdPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBTZWxlY3RJbnRlcmZhY2VzID0gU2VsZWN0SW50ZXJmYWNlcztcclxuXHJcbiAgLyoqIEl0ZW1zIGRpc3BvbsOtdmVpcyBubyBzZWxlY3QgKi9cclxuICBpdGVtcyAgICAgICAgICAgIDogTW9kZWxTaWduYWw8YW55W10+ICAgICAgICAgICAgICAgICAgICAgID0gbW9kZWw8YW55W10+KFtdKTtcclxuICAvKiogQ29uZmlndXJhw6fDo28gZG8gc2VsZWN0ICovXHJcbiAgY29uZmlndXJhdGlvbiAgICA6IElucHV0U2lnbmFsPElucHV0U2VsZWN0Q29uZmlndXJhdGlvbj4gPSBpbnB1dDxJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oKSk7IFxyXG4gIGxvYWRpbmdGcm9tTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGN1cnJlbnRMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGN1cnJlbnRJdGVtcyA6IGFueSB8IEl0ZW1WYWx1ZTxhbnk+W10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgXHJcbiAgU2V0Q3VycmVudEl0ZW1MYWJlbCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLm11bHRpcGxlKXtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWwgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKS5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmxhYmVsKS5qb2luKCcsICcpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtcyA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWwgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKS5maW5kKHAgPT4gcC5zZWxlY3RlZCk/LmxhYmVsO1xyXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtcyA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbmQocCA9PiBwLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxzdE9wdGlvbnNJdGVtVmFsdWU6IFNpZ25hbDxJdGVtVmFsdWU8YW55PltdPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGJpbmRMYWJlbCA9IEJpbmRMYWJlbEZhY3RvcnkodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgY29uc3QgYmluZFZhbHVlID0gQmluZFZhbHVlRmFjdG9yeSh0aGlzLmNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcygpLmZpbHRlcihwID0+ICh0aGlzLnNvbWVudGVBdGl2b3MoKSAmJiB0aGlzLmlzU2VydmljZUF0aXZvKCkpID8gcC5hdGl2byA6IHRydWUpIC5tYXAocCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgSXRlbVZhbHVlPGFueT4oKTtcclxuICAgICAgaXRlbS5sYWJlbCA9IGJpbmRMYWJlbChwKTtcclxuICAgICAgaXRlbS52YWx1ZSA9IGJpbmRWYWx1ZShwKTtcclxuICAgICAgaXRlbS5pdGVtICA9IHA7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0aGlzLnZhbHVlKCkgPT0gaXRlbS52YWx1ZTtcclxuICAgICAgaXRlbS5kaXNhYmxlZCA9IHAuZGlzYWJsZWQgfHwgZmFsc2UgfHwgKHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSAmJiBwLmF0aXZvID09IGZhbHNlKTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgd2luZG93U2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbDxudW1iZXI+KHdpbmRvdy5pbm5lcldpZHRoKTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLndpbmRvd1NpemUuc2V0KHdpbmRvdy5pbm5lcldpZHRoKTtcclxuICAgIHRoaXMuU2V0SW50ZXJmYWNlKCk7XHJcbiAgfVxyXG4gIFNldEludGVyZmFjZSgpOiB2b2lkIHtcclxuICAgIHZhciBfaW50ZXJmYWNlID0gdGhpcy5jb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlO1xyXG4gICAgaWYoX2ludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkR5bmFtaWMpe1xyXG4gICAgICBfaW50ZXJmYWNlID0gaXNQb3J0cmFpdCgpID8gU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCA6IFNlbGVjdEludGVyZmFjZXMuUG9wb3ZlcjtcclxuICAgIH1cclxuICAgIHRoaXMuaW50ZXJmYWNlLnNldChfaW50ZXJmYWNlKTtcclxuICB9XHJcbiAgaW50ZXJmYWNlOiBXcml0YWJsZVNpZ25hbDxTZWxlY3RJbnRlcmZhY2VzPiA9IHNpZ25hbDxTZWxlY3RJbnRlcmZhY2VzPih1bmRlZmluZWQpO1xyXG5cclxuICBsc3RPcHRpb25zOiBJdGVtVmFsdWU8YW55PltdID0gW107XHJcbiAgbHN0T3B0aW9uc0FsZXJ0ICAgICAgOiBBbGVydElucHV0W10gPSBbXTtcclxuICBsc3RCdXR0b25zQWxlcnQgICAgICA6IEFsZXJ0QnV0dG9uW10gPSBbXTtcclxuICBsc3RPcHRpb25zQWN0aW9uU2hlZXQ6IEFjdGlvblNoZWV0QnV0dG9uW10gPSBbXTtcclxuXHJcbiAgaW5maW5pdGVTY3JvbGxQYWdlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsPG51bWJlcj4oMSk7XHJcbiAgQWRkUGFnZShldmVudDogSW5maW5pdGVTY3JvbGxDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2Uuc2V0KHRoaXMuaW5maW5pdGVTY3JvbGxQYWdlKCkgKyAxKTtcclxuICAgIGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgVXBkYXRlTHN0T3B0aW9ucyhzZWFyY2g6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gVXBkYXRlIHRoZSBzZWFyY2ggXHJcbiAgICBpZiAoc2VhcmNoKSB7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IFNlYXJjaDxJdGVtVmFsdWU8YW55Pj4odGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCksIHNlYXJjaCwgKGl0ZW06IEl0ZW1WYWx1ZTxhbnk+KSA9PiBpdGVtLmxhYmVsKTtcclxuICAgIH0gZWxzZSB7IFxyXG4gICAgICB0aGlzLmxzdE9wdGlvbnMgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKTsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS51c2VJbmZpbml0ZVNjcm9sbCl7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IHRoaXMubHN0T3B0aW9ucy5zbGljZSgwLCB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZSgpICogMjUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2UgPT0gU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCl7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9uc0FjdGlvblNoZWV0ID0gWy4uLnRoaXMubHN0T3B0aW9ucy5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHRleHQ6IHAubGFiZWwsXHJcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7IHRoaXMuU2VsZWN0KHApOyB9LFxyXG4gICAgICAgICAgcm9sZSAgICA6IHAuc2VsZWN0ZWQgPyAnc2VsZWN0ZWQnIDogJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICdDYW5jZWxhcicsXHJcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcclxuICAgICAgICAgIGRhdGE6IHsgYWN0aW9uOiAnY2FuY2VsJywgfSxcclxuICAgICAgICAgIGhhbmRsZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVySW50ZXJmYWNlID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcbiAgVXBkYXRlU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLnZhbHVlKCkgYXMgYW55W10gfHwgW107XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmxzdE9wdGlvbnMpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdGVkID0gYXJyLmZpbmQocCA9PiBwID09IGl0ZW0udmFsdWUpICE9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zLmZvckVhY2goKGl0ZW06IEl0ZW1WYWx1ZTxhbnk+KSA9PiB7IGl0ZW0uc2VsZWN0ZWQgPSB0aGlzLnZhbHVlKCkgPT0gaXRlbS52YWx1ZTsgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldEN1cnJlbnRJdGVtTGFiZWwoKTtcclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoU0lvbkxhYmVsVGVtcGxhdGVEaXJlY3RpdmUgICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgbGFiZWxUZW1wbGF0ZSAgICAgIDogVGVtcGxhdGVSZWY8TGFiZWxUZW1wbGF0ZUNvbnRleHQ8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGQoU0lvbk9wdGlvblRlbXBsYXRlRGlyZWN0aXZlICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgb3B0aW9uVGVtcGxhdGUgICAgIDogVGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PFQ+PjtcclxuICBAQ29udGVudENoaWxkKFNJb25QbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHBsYWNlaG9sZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFBsYWNlaG9sZGVyVGVtcGxhdGVDb250ZXh0PjtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VsZWN0TGFiZWwnKSBpbnB1dFNlbGVjdExhYmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHsgXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuZXJyb3IgfHwgdGhpcy5sb2FkaW5nRnJvbUxvYWRlciB8fCB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmRpc2FibGVkKCkpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLlByZXNlbnQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgXHJcbiAgICBzdXBlcigpOyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyAgICBcclxuICAgICAgdGhpcy5VcGRhdGVMc3RPcHRpb25zKHRoaXMuc2VhcmNoVmFsdWUoKSk7XHJcbiAgICAgIHRoaXMuVXBkYXRlU2VsZWN0ZWQoKTtcclxuXHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pIFxyXG4gIH1cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLlNldEludGVyZmFjZSgpO1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uKCkubG9hZGVyLkFkZENvbXBvbmVudCh0aGlzKTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKHRoaXMuaXRlbXMoKSk7XHJcbiAgfVxyXG4gIGlzU2VydmljZUF0aXZvOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7IHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkRnJvbVNlcnZpY2UgaW5zdGFuY2VvZiBIdHRwU2VydmljZUF0aXZvOyB9KTtcclxuICBzb21lbnRlQXRpdm9zOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgSGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gWyBQb3BvdmVyIF1cclxuICAgIGlmKHRoaXMuc2VsZWN0Q29udGVudD8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiVGFiXCIpe1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PSBcIkVzY2FwZVwiKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gWyBpbnB1dENvbnRhaW5lciBdXHJcbiAgICBpZih0aGlzLmlucHV0Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpeyBcclxuICAgICAgaWYoW1wiQXJyb3dEb3duXCIsIFwiQXJyb3dVcFwiXS5pbmNsdWRlcyhldmVudC5rZXkpKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuUHJlc2VudChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBbIGlucHV0U2VsZWN0U2VhcmNoQmFyIF1cclxuICAgIGlmKHRoaXMuaW5wdXRTZWFyY2hCYXI/Lm5hdGl2ZUVsZW1lbnQgPT0gZXZlbnQudGFyZ2V0KXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiRW50ZXJcIil7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0IGlzIG5vdCBhdGl2byBpZ25vcmUgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5sc3RPcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleCFdO1xyXG4gICAgICAgIGlmKHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSAmJiAhaXRlbS5pdGVtLmF0aXZvKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuU2VsZWN0KGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIFxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIil7XHJcbiAgICAgICAgaWYodGhpcy5zZWxlY3RlZEluZGV4ID09IHVuZGVmaW5lZCl7IHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7IHJldHVybjsgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMubHN0T3B0aW9ucy5sZW5ndGggLSAxID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IHRoaXMuc2VsZWN0ZWRJbmRleClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiQXJyb3dVcFwiKXtcclxuICAgICAgICBpZih0aGlzLnNlbGVjdGVkSW5kZXggPT0gdW5kZWZpbmVkKXsgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDsgcmV0dXJuOyB9XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCA/IHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgOiB0aGlzLnNlbGVjdGVkSW5kZXgpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLy9bIFNlYXJjaCBCYXIgXVxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VhcmNoQmFyJykgaW5wdXRTZWFyY2hCYXI6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgc2VhcmNoQmFyQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIHNlYXJjaFZhbHVlICAgICA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz4gPSAgc2lnbmFsPHN0cmluZz4oXCJcIik7XHJcbiAgcHJpdmF0ZSBzZWFyY2hCYXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5zZWFyY2hCYXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgKVxyXG4gICAgLy9PblNlYXJjaENoYW5nZVxyXG4gICAgdGhpcy5zZWFyY2hCYXJTdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlLnN1YnNjcmliZShhc3luYyAodmFsdWU6IHN0cmluZykgPT4geyBcclxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBDbGVhclNlYXJjaEJhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uKSB7IHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5DbGVhclNlYXJjaEJhcigpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IFQgfCBUW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogVCB8IFRbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUoW10pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIFNlbGVjdChpdGVtVmFsdWU6IEl0ZW1WYWx1ZTxUPik6IHZvaWR7XHJcbiAgICBjb25zdCBpdGVtID0gaXRlbVZhbHVlLnZhbHVlO1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSl7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50VmFsdWUuZmluZEluZGV4KHAgPT4gcCA9PSBpdGVtKTtcclxuICAgICAgICBpZihpbmRleCA+IC0xKXtcclxuICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJyZW50VmFsdWUucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbLi4uY3VycmVudFZhbHVlXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbaXRlbV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICB0aGlzLkRpc21pc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBbIFBvcG92ZXIgLyBNb2RhbCBdXHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Q29udGVudCcpIHNlbGVjdENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIFxyXG4gIEBWaWV3Q2hpbGQoU0lvblBvcG92ZXJDb21wb25lbnQpIHBvcG92ZXI6IFNJb25Qb3BvdmVyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoSW9uTW9kYWwpICAgbW9kYWw6IElvbk1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWxlcnQpICAgYWxlcnQ6IElvbkFsZXJ0O1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWN0aW9uU2hlZXQpIGFjdGlvblNoZWV0OiBJb25BY3Rpb25TaGVldDtcclxuXHJcbiAgZmxvYXRpbmdWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVuZGVySW50ZXJmYWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGVudCcpIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XHJcbiAgYXN5bmMgUHJlc2VudChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucmVuZGVySW50ZXJmYWNlID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgYXdhaXQgVGltZW91dCgwKTsgLy9Fc3BlcmEgYSByZW5kZXJpemHDp8OjbyBkYSBpbnRlcmZhY2VcclxuICAgIGlmKHRoaXMuaW50ZXJmYWNlKCkgPT0gU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCl7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwucHJlc2VudCgpO1xyXG4gICAgICB0aGlzLmlucHV0U2VhcmNoQmFyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5pbnRlcmZhY2UoKSA9PSBTZWxlY3RJbnRlcmZhY2VzLlBvcG92ZXIpe1xyXG4gICAgICBhd2FpdCB0aGlzLnBvcG92ZXIucHJlc2VudChldmVudCk7XHJcbiAgICAgIHRoaXMuaW5wdXRTZWFyY2hCYXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLmludGVyZmFjZSgpID09IFNlbGVjdEludGVyZmFjZXMuQWN0aW9uU2hlZXQpe1xyXG4gICAgICBhd2FpdCB0aGlzLmFjdGlvblNoZWV0LnByZXNlbnQoKTtcclxuICAgICAgdGhpcy5pbnB1dFNlYXJjaEJhcj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIERpc21pc3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZih0aGlzLm1vZGFsKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5wb3BvdmVyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucG9wb3Zlci5kaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB1bmRlZmluZWQ7XHJcbiAgICBpZih0aGlzLmlucHV0U2VsZWN0TGFiZWw/Lm5hdGl2ZUVsZW1lbnQpeyBcclxuICAgICAgdGhpcy5pbnB1dFNlbGVjdExhYmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2Uuc2V0KDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBPbkRpc21pc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlckludGVyZmFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5mbG9hdGluZ1Zpc2libGUgPSBmYWxzZTsgXHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XHJcbiAgICB0aGlzLnNlYXJjaEJhckNvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuICBPblByZXNlbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsb2F0aW5nVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0FycmF5KG9iaiA6IGFueSApIHtcclxuICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgSXRlbVZhbHVlPFQ+e1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU6IFQ7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtICAgIDogYW55OyBcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BvcnRyYWl0KCkge1xyXG4gIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPiB3aW5kb3cuaW5uZXJXaWR0aDtcclxufSIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwic2V0Rm9jdXMoJGV2ZW50KTtcIlxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5tYW51YWwtZm9jdXNdPVwiZmxvYXRpbmdWaXNpYmxlXCJcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImxvYWRpbmcoKSB8fCBsb2FkaW5nRnJvbUxvYWRlciB8fCBkaXNhYmxlZCgpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKCkgfHwgbG9hZGluZ0Zyb21Mb2FkZXJcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIHRydW5jYXRlIG91dGxpbmUtbm9uZVwiIFtjbGFzcy5wci03XT1cIiFjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCIgW2NsYXNzLnByLTEwXT1cImNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGVcIiAgI2lucHV0U2VsZWN0TGFiZWwgdGFiaW5kZXg9XCIwXCI+XHJcbiAgICBAaWYgKCFjb25maWd1cmF0aW9uKCkubXVsdGlwbGUgJiYgY3VycmVudExhYmVsKXtcclxuICAgICAgQGlmKGxhYmVsVGVtcGxhdGUpe1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY3VycmVudExhYmVsLCBpdGVtOiBjdXJyZW50SXRlbXMuaXRlbSB9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc2VsZWN0LWxhYmVsXCI+IHt7Y3VycmVudExhYmVsfX0gPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAoY29uZmlndXJhdGlvbigpLm11bHRpcGxlICYmIGlzQXJyYXkoY3VycmVudEl0ZW1zKSAmJiAkYW55KGN1cnJlbnRJdGVtcykubGVuZ3RoKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWluLWgtNiBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHRvcC0wIG92ZXJmbG93LXgtYXV0byBmbGV4IGdhcC0yIHNpemUtZnVsbCBtYXNrLXgvMlwiPlxyXG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBjdXJyZW50SXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsdWNpZC1ib3JkZXIgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBwbC0yXCI+XHJcbiAgICAgICAgICAgICAgQGlmKGxhYmVsVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5sYWJlbCwgaXRlbTogaXRlbS5pdGVtIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNlbGVjdC1sYWJlbFwiPiB7e2l0ZW0ubGFiZWx9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2VsZWN0KGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGlvbi1idXR0b24gY2xhc3M9XCJtLTAgaC1mdWxsXCIgKGNsaWNrKT1cIlNlbGVjdChpdGVtLnZhbHVlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwib3V0bGluZVwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYocGxhY2Vob2xkZXJUZW1wbGF0ZSl7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5wbGFjZWhvbGRlciwgcGxhY2Vob2xkZXI6IHRoaXMuY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyIH1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zZWxlY3QtbGFiZWwgIXRleHQtbWVkaXVtXCI+IHt7dGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXJ9fSA8L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNpemUtN1wiIFtjbGFzcy5yaWdodC0xXT1cIiFjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCIgW2NsYXNzLnJpZ2h0LThdPVwiY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZVwiPlxyXG4gICAgPGlvbi1pY29uIGNsYXNzPVwiLW1iLTAuNVwiIG5hbWU9XCJjaGV2cm9uLXVwXCI+PC9pb24taWNvbj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cIi1tdC0wLjVcIiBuYW1lPVwiY2hldnJvbi1kb3duXCI+PC9pb24taWNvbj5cclxuICA8L2Rpdj5cclxuICBAaWYoY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZSl7XHJcbiAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTEgYm90dG9tLTFcIiAoY2xpY2spPVwiQ2xlYXIoJGV2ZW50KVwiIGNvbG9yPVwibWVkaXVtXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cImNsZWFyXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IC41cmVtXCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgIDwvaW9uLWJ1dHRvbj5cclxuICB9IFxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKCkgfHwgbG9hZGluZ0Zyb21Mb2FkZXJcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJlcnJvci1jb250YWluZXJcIiAoY2xpY2spPVwiY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKClcIiBbY2xhc3MuYWN0aXZlXT1cImNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuZXJyb3IgJiYgIWxvYWRpbmdGcm9tTG9hZGVyXCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LXhsXCIgY29sb3I9XCJkYW5nZXJcIiBuYW1lPVwicmVmcmVzaC1jaXJjbGVcIj48L2lvbi1pY29uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZighZGlzYWJsZWQoKSAmJiByZW5kZXJJbnRlcmZhY2Upe1xyXG4gIEBzd2l0Y2ggKGludGVyZmFjZSgpKSB7XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5Qb3BvdmVyKSB7XHJcbiAgICAgIDxzaW9uLXBvcG92ZXIgXHJcbiAgICAgICAgICAjcG9wb3ZlciBcclxuICAgICAgICAgIFt3aWR0aF09XCJpbnB1dENvbnRhaW5lci5vZmZzZXRXaWR0aCArICdweCdcIiBcclxuICAgICAgICAgIChvbldpbGxQcmVzZW50KT1cIk9uUHJlc2VudCgpXCIgXHJcbiAgICAgICAgICAob25EaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgXHJcbiAgICAgICAgICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCIgXHJcbiAgICAgICAgICBbcGxhY2VtZW50XT1cImNvbmZpZ3VyYXRpb24oKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5wbGFjZW1lbnRcIiBcclxuICAgICAgICAgIFtmbGlwXT1cImNvbmZpZ3VyYXRpb24oKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5mbGlwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RDb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9zaW9uLXBvcG92ZXI+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCkge1xyXG4gICAgICA8aW9uLW1vZGFsICNtb2RhbCAoaW9uTW9kYWxXaWxsUHJlc2VudCk9XCJPblByZXNlbnQoKVwiIChkaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgW2luaXRpYWxCcmVha3BvaW50XT1cIjAuOVwiIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8aW9uLWhlYWRlcj5cclxuICAgICAgICAgICAgPGlvbi10b29sYmFyPlxyXG4gICAgICAgICAgICAgIDxpb24tdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAge3tsYWJlbCgpfX1cclxuICAgICAgICAgICAgICA8L2lvbi10aXRsZT5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICAgICAgPC9pb24tdG9vbGJhcj5cclxuICAgICAgICAgIDwvaW9uLWhlYWRlcj5cclxuICAgIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RDb250ZW50VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtb2RhbDogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9pb24tbW9kYWw+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCkge1xyXG4gICAgICA8aW9uLWFjdGlvbi1zaGVldCAjYWN0aW9uU2hlZXQgdHJpZ2dlcj1cIm9wZW4tYWN0aW9uLXNoZWV0XCIgW2hlYWRlcl09XCJsYWJlbCgpXCIgW2J1dHRvbnNdPVwibHN0T3B0aW9uc0FjdGlvblNoZWV0XCI+PC9pb24tYWN0aW9uLXNoZWV0PlxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxlY3RDb250ZW50VGVtcGxhdGUgbGV0LW1vZGFsPVwibW9kYWxcIj5cclxuICA8ZGl2ICNzZWxlY3RDb250ZW50IGNsYXNzPVwic2VsZWN0LWNvbnRlbnRcIiBbY2xhc3MuIXNpemUtZnVsbF09XCJtb2RhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXNlYXJjaC1iYXItaWNvbi1jb250YWluZXIgIWJvcmRlci1yLTAgYm9yZGVyLXByaW1hcnkvNzAgYmctcHJpbWFyeS83MCBzaHJpbmstMFwiPlxyXG4gICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwic2VhcmNoXCI+PC9pb24taWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRTZWFyY2hCYXIgdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwic2VsZWN0LXNlYXJjaC1iYXIgYm9yZGVyLXByaW1hcnkvNzAgIXJvdW5kZWQtbC1ub25lXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaEJhckNvbnRyb2xcIi8+XHJcbiAgICA8L2Rpdj4gXHJcbiAgICA8dWwgY2xhc3M9XCJzZWxlY3QtaXRlbS1saXN0IG1hc2steVwiIHJvbGU9XCJsaXN0Ym94XCIgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidzaW9uLWlzLScgKyBzZWxlY3RlZEluZGV4XCI+XHJcbiAgICAgIDxpb24tY29udGVudCAjc2Nyb2xsQ29udGVudCBjbGFzcz1cInNpemUtZnVsbFwiIFtzY3JvbGxZXT1cInRydWVcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGxzdE9wdGlvbnM7IHRyYWNrIGl0ZW0udmFsdWUpIHsgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJiYXNlT3B0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLCBpbmRleDogJGluZGV4IH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYoY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsIHRocmVzaG9sZD1cIjEwcHhcIiAqbmdJZj1cImxzdE9wdGlvbnMubGVuZ3RoICYmIGxzdE9wdGlvbnMubGVuZ3RoICE9IGxzdE9wdGlvbnNJdGVtVmFsdWUoKS5sZW5ndGhcIiAoaW9uSW5maW5pdGUpPVwiQWRkUGFnZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+PC9pb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2lvbi1pbmZpbml0ZS1zY3JvbGw+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2lvbi1jb250ZW50PlxyXG4gICAgPC91bD5cclxuICAgIEBpZihpc1NlcnZpY2VBdGl2bygpKXtcclxuICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCB0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgPGlvbi1jaGVja2JveCBbbmdNb2RlbF09XCJzb21lbnRlQXRpdm9zKClcIiAobmdNb2RlbENoYW5nZSk9XCJzb21lbnRlQXRpdm9zLnNldCgkZXZlbnQpXCIgY2xhc3M9XCJzY2FsZS03NVwiPiBTb21lbnRlIGF0aXZvcyA8L2lvbi1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Jhc2VPcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxsaSBbaWRdPVwiJ3Npb24taXMtJyArIGluZGV4XCIgY2xhc3M9XCJzZWxlY3QtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpbmRleCA9PSBzZWxlY3RlZEluZGV4XCIgKG1vdXNlZW50ZXIpPVwic2VsZWN0ZWRJbmRleCA9IGluZGV4XCIgKGNsaWNrKT1cIlNlbGVjdChpdGVtKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1pdGVtLWNoZWNrbWFyay1jb250ZWluZXJcIj5cclxuICAgICAgQGlmKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZWxlY3QtaXRlbS1jaGVja21hcmtcIiBjb2xvcj1cInByaW1hcnlcIiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKG9wdGlvblRlbXBsYXRlKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0uaXRlbSB9XCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1pdGVtLWxhYmVsXCI+IHt7aXRlbS5sYWJlbH19IDwvc3Bhbj5cclxuICAgIH1cclxuICA8L2xpPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQW9CLEtBQUssRUFBZSxLQUFLLEVBQWUsTUFBTSxFQUFVLFdBQVcsRUFBRSxTQUFTLEdBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQy9TLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQXlFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZKLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxFQUE4QixnQ0FBZ0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ2hJLE9BQU8sRUFBeUIsMkJBQTJCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7OztBQVk1RSxNQUFNLE9BQU8sb0JBQThCLFNBQVEsV0FBb0I7SUFhckUsbUJBQW1CO1FBQ2pCLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekUsQ0FBQzthQUNHLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDNUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFrQkQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDaEQsSUFBRyxVQUFVLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFDLENBQUM7WUFDekMsVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN0RixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQVNELE9BQU8sQ0FBQyxLQUFnQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IscUJBQXFCO1FBQ3JCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsaUJBQWlCLEVBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksZ0JBQWdCLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdkQsT0FBTzt3QkFDTCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxJQUFJLEVBQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO3FCQUN2QyxDQUFDO2dCQUNKLENBQUMsQ0FBQztnQkFDQTtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsR0FBRztvQkFDM0IsT0FBTzt3QkFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztvQkFDL0IsQ0FBQztpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFXLElBQUksRUFBRSxDQUFDO1lBQ3hDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQVNRLFFBQVEsQ0FBQyxLQUF3QjtRQUN4QyxJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxZQUNVLEdBQXNCO1FBRTlCLEtBQUssRUFBRSxDQUFDO1FBRkEsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF0SGhDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBRXBDLGtDQUFrQztRQUNsQyxVQUFLLEdBQXdELEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM5RSw2QkFBNkI7UUFDN0Isa0JBQWEsR0FBOEMsS0FBSyxDQUEyQixJQUFJLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUMzSCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsaUJBQVksR0FBdUIsU0FBUyxDQUFDO1FBQzdDLGlCQUFZLEdBQXdDLFNBQVMsQ0FBQztRQWE5RCx3QkFBbUIsR0FBNkIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1RCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUN6RCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6RyxNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBTyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUksQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsZUFBVSxHQUEyQixNQUFNLENBQVMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBYXZFLGNBQVMsR0FBcUMsTUFBTSxDQUFtQixTQUFTLENBQUMsQ0FBQztRQUVsRixlQUFVLEdBQXFCLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUF1QixFQUFFLENBQUM7UUFDekMsb0JBQWUsR0FBd0IsRUFBRSxDQUFDO1FBQzFDLDBCQUFxQixHQUF3QixFQUFFLENBQUM7UUFFaEQsdUJBQWtCLEdBQTJCLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQThFL0QsbUJBQWMsR0FBb0IsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGVBQWUsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ILGtCQUFhLEdBQTRCLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQWlEL0Qsa0JBQWEsR0FBdUIsU0FBUyxDQUFDO1FBSTlDLHFCQUFnQixHQUFnQixJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxnQkFBVyxHQUFpQyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDdkQsMEJBQXFCLEdBQXdCLElBQUksQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyxjQUFTLEdBQVksS0FBSyxDQUFBO1FBK0VqQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQXZKL0IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV4QixDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFDUSxLQUFLLENBQUMsUUFBUTtRQUNyQixNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUtELG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLGNBQWM7UUFDZCxJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUMsQ0FBQztZQUNwRSxJQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFDLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsT0FBTztZQUNULENBQUM7aUJBQ0QsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBQyxDQUFDO2dCQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUNELHFCQUFxQjtRQUNyQixJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUMsQ0FBQztZQUNyRSxJQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFDL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFDRCwyQkFBMkI7UUFDM0IsSUFBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFDLENBQUM7WUFDckQsSUFBRyxLQUFLLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBQyxDQUFDO2dCQUN2QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLHNEQUFzRDtnQkFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUM7Z0JBQ2xELElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFBQyxPQUFPO2dCQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE9BQU87WUFDVCxDQUFDO2lCQUNELElBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUMsQ0FBQztnQkFDM0IsSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBQyxDQUFDO29CQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE9BQU87Z0JBQUMsQ0FBQztnQkFDdEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7Z0JBQ3BILE9BQU87WUFDVCxDQUFDO2lCQUNELElBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUMsQ0FBQztnQkFDekIsSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBQyxDQUFDO29CQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE9BQU87Z0JBQUMsQ0FBQztnQkFDdEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7Z0JBQzNGLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFXRCxlQUFlO1FBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLG9CQUFvQixFQUFFLEVBQ3RCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FDbEIsQ0FBQTtRQUNELGdCQUFnQjtRQUNoQixJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVEsVUFBVSxDQUFDLEdBQVk7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVEsUUFBUSxDQUFDLEdBQVk7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLEtBQWlCO1FBQ3JCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNNLE1BQU0sQ0FBQyxTQUF1QjtRQUNuQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQ2hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQztnQkFDOUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDckQsSUFBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztvQkFDYixZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFhRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztRQUN0RCxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUMsQ0FBQzthQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBQyxDQUFDO1lBQy9DLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUMsQ0FBQzthQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLGdCQUFnQixDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ25ELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsaUJBQWlCLEVBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVM7UUFDaEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLENBQUM7K0dBalVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtjQUxwQjtZQUNULEdBQUcsb0JBQW9CLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1lBQzFELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7U0FDOUUscUVBNEdhLDBCQUEwQiwyQkFBZ0IsV0FBVyw4REFDckQsMkJBQTJCLDJCQUFlLFdBQVcsbUVBQ3JELGdDQUFnQywyQkFBVSxXQUFXLG9kQWdLeEQsb0JBQW9CLHdFQUNwQixRQUFRLHdFQUNSLFFBQVEsOEVBQ1IsY0FBYyxxS0N6UzNCLDhuUUErS2M7OzRGRHJKRCxvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULEdBQUcsb0JBQW9CLENBQUMsWUFBWSxzQkFBc0I7d0JBQzFELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO3FCQUM5RTtzRkEwQ0QsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtRThCLGFBQWE7c0JBQW5GLFlBQVk7dUJBQUMsMEJBQTBCLEVBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNFLGNBQWM7c0JBQXBGLFlBQVk7dUJBQUMsMkJBQTJCLEVBQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNFLG1CQUFtQjtzQkFBekYsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3hDLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNJLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBNEI3QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBa0RmLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQTZFQyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRU8sT0FBTztzQkFBdkMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ1IsS0FBSztzQkFBM0IsU0FBUzt1QkFBQyxRQUFRO2dCQUNJLEtBQUs7c0JBQTNCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxXQUFXO3NCQUFyQyxTQUFTO3VCQUFDLGNBQWM7Z0JBSUcsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlOztBQWlENUIsTUFBTSxTQUFTO0lBQWY7UUFHRSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGFBQVEsR0FBWSxLQUFLLENBQUM7SUFDNUIsQ0FBQztDQUFBO0FBRUQsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBjb21wdXRlZCwgQ29udGVudENoaWxkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbmplY3RvciwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgTW9kZWxTaWduYWwsIHNpZ25hbCwgU2lnbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGlvblNoZWV0QnV0dG9uLCBBbGVydEJ1dHRvbiwgQWxlcnRJbnB1dCwgSW5maW5pdGVTY3JvbGxDdXN0b21FdmVudCwgSW9uQWN0aW9uU2hlZXQsIElvbkFsZXJ0LCBJb25Db250ZW50LCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbmRMYWJlbEZhY3RvcnksIEJpbmRWYWx1ZUZhY3RvcnksIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiwgU2VsZWN0SW50ZXJmYWNlcyB9IGZyb20gJy4vaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uL2lucHV0LXByb3ZpZGVyLWZhY3RvcnknO1xyXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uL2N1c3RvbS1pbnB1dCc7XHJcbmltcG9ydCB7IFNlYXJjaCwgVGltZW91dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUGxhY2Vob2xkZXJUZW1wbGF0ZUNvbnRleHQsIFNJb25QbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Npb24tcGxhY2Vob2xkZXItdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3B0aW9uVGVtcGxhdGVDb250ZXh0LCBTSW9uT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2lvbi1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGFiZWxUZW1wbGF0ZUNvbnRleHQsIFNJb25MYWJlbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Npb24tbGFiZWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VBdGl2byB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuc2NzcycsICcuLi9pbnB1dHMuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKElucHV0U2VsZWN0Q29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0U2VsZWN0Q29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFNlbGVjdENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIEN1c3RvbUlucHV0PFQgfCBUW10+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIFNlbGVjdEludGVyZmFjZXMgPSBTZWxlY3RJbnRlcmZhY2VzO1xyXG5cclxuICAvKiogSXRlbXMgZGlzcG9uw612ZWlzIG5vIHNlbGVjdCAqL1xyXG4gIGl0ZW1zICAgICAgICAgICAgOiBNb2RlbFNpZ25hbDxhbnlbXT4gICAgICAgICAgICAgICAgICAgICAgPSBtb2RlbDxhbnlbXT4oW10pO1xyXG4gIC8qKiBDb25maWd1cmHDp8OjbyBkbyBzZWxlY3QgKi9cclxuICBjb25maWd1cmF0aW9uICAgIDogSW5wdXRTaWduYWw8SW5wdXRTZWxlY3RDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0U2VsZWN0Q29uZmlndXJhdGlvbj4obmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigpKTsgXHJcbiAgbG9hZGluZ0Zyb21Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgY3VycmVudEl0ZW1zIDogYW55IHwgSXRlbVZhbHVlPGFueT5bXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBcclxuICBTZXRDdXJyZW50SXRlbUxhYmVsKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAubGFiZWwpLmpvaW4oJywgJyk7XHJcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1zID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmlsdGVyKHAgPT4gcC5zZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbmQocCA9PiBwLnNlbGVjdGVkKT8ubGFiZWw7XHJcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1zID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmluZChwID0+IHAuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbHN0T3B0aW9uc0l0ZW1WYWx1ZTogU2lnbmFsPEl0ZW1WYWx1ZTxhbnk+W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgYmluZExhYmVsID0gQmluZExhYmVsRmFjdG9yeSh0aGlzLmNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgICBjb25zdCBiaW5kVmFsdWUgPSBCaW5kVmFsdWVGYWN0b3J5KHRoaXMuY29uZmlndXJhdGlvbigpKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zKCkuZmlsdGVyKHAgPT4gKHRoaXMuc29tZW50ZUF0aXZvcygpICYmIHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSkgPyBwLmF0aXZvIDogdHJ1ZSkgLm1hcChwID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IG5ldyBJdGVtVmFsdWU8YW55PigpO1xyXG4gICAgICBpdGVtLmxhYmVsID0gYmluZExhYmVsKHApO1xyXG4gICAgICBpdGVtLnZhbHVlID0gYmluZFZhbHVlKHApO1xyXG4gICAgICBpdGVtLml0ZW0gID0gcDtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRoaXMudmFsdWUoKSA9PSBpdGVtLnZhbHVlO1xyXG4gICAgICBpdGVtLmRpc2FibGVkID0gcC5kaXNhYmxlZCB8fCBmYWxzZSB8fCAodGhpcy5pc1NlcnZpY2VBdGl2bygpICYmIHAuYXRpdm8gPT0gZmFsc2UpO1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICB3aW5kb3dTaXplOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsPG51bWJlcj4od2luZG93LmlubmVyV2lkdGgpO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMud2luZG93U2l6ZS5zZXQod2luZG93LmlubmVyV2lkdGgpO1xyXG4gICAgdGhpcy5TZXRJbnRlcmZhY2UoKTtcclxuICB9XHJcbiAgU2V0SW50ZXJmYWNlKCk6IHZvaWQge1xyXG4gICAgdmFyIF9pbnRlcmZhY2UgPSB0aGlzLmNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2U7XHJcbiAgICBpZihfaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuRHluYW1pYyl7XHJcbiAgICAgIF9pbnRlcmZhY2UgPSBpc1BvcnRyYWl0KCkgPyBTZWxlY3RJbnRlcmZhY2VzLkFjdGlvblNoZWV0IDogU2VsZWN0SW50ZXJmYWNlcy5Qb3BvdmVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnRlcmZhY2Uuc2V0KF9pbnRlcmZhY2UpO1xyXG4gIH1cclxuICBpbnRlcmZhY2U6IFdyaXRhYmxlU2lnbmFsPFNlbGVjdEludGVyZmFjZXM+ID0gc2lnbmFsPFNlbGVjdEludGVyZmFjZXM+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGxzdE9wdGlvbnM6IEl0ZW1WYWx1ZTxhbnk+W10gPSBbXTtcclxuICBsc3RPcHRpb25zQWxlcnQgICAgICA6IEFsZXJ0SW5wdXRbXSA9IFtdO1xyXG4gIGxzdEJ1dHRvbnNBbGVydCAgICAgIDogQWxlcnRCdXR0b25bXSA9IFtdO1xyXG4gIGxzdE9wdGlvbnNBY3Rpb25TaGVldDogQWN0aW9uU2hlZXRCdXR0b25bXSA9IFtdO1xyXG5cclxuICBpbmZpbml0ZVNjcm9sbFBhZ2U6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPigxKTtcclxuICBBZGRQYWdlKGV2ZW50OiBJbmZpbml0ZVNjcm9sbEN1c3RvbUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZS5zZXQodGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2UoKSArIDEpO1xyXG4gICAgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBVcGRhdGVMc3RPcHRpb25zKHNlYXJjaDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlYXJjaCBcclxuICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zID0gU2VhcmNoPEl0ZW1WYWx1ZTxhbnk+Pih0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKSwgc2VhcmNoLCAoaXRlbTogSXRlbVZhbHVlPGFueT4pID0+IGl0ZW0ubGFiZWwpO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpOyBcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zID0gdGhpcy5sc3RPcHRpb25zLnNsaWNlKDAsIHRoaXMuaW5maW5pdGVTY3JvbGxQYWdlKCkgKiAyNSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKHRoaXMuaW50ZXJmYWNlKCkgPT0gU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCl7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9uc0FjdGlvblNoZWV0ID0gWy4uLnRoaXMubHN0T3B0aW9ucy5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHRleHQ6IHAubGFiZWwsXHJcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7IHRoaXMuU2VsZWN0KHApOyB9LFxyXG4gICAgICAgICAgcm9sZSAgICA6IHAuc2VsZWN0ZWQgPyAnc2VsZWN0ZWQnIDogJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICdDYW5jZWxhcicsXHJcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcclxuICAgICAgICAgIGRhdGE6IHsgYWN0aW9uOiAnY2FuY2VsJywgfSxcclxuICAgICAgICAgIGhhbmRsZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVySW50ZXJmYWNlID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcbiAgVXBkYXRlU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLnZhbHVlKCkgYXMgYW55W10gfHwgW107XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmxzdE9wdGlvbnMpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdGVkID0gYXJyLmZpbmQocCA9PiBwID09IGl0ZW0udmFsdWUpICE9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zLmZvckVhY2goKGl0ZW06IEl0ZW1WYWx1ZTxhbnk+KSA9PiB7IGl0ZW0uc2VsZWN0ZWQgPSB0aGlzLnZhbHVlKCkgPT0gaXRlbS52YWx1ZTsgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldEN1cnJlbnRJdGVtTGFiZWwoKTtcclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoU0lvbkxhYmVsVGVtcGxhdGVEaXJlY3RpdmUgICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgbGFiZWxUZW1wbGF0ZSAgICAgIDogVGVtcGxhdGVSZWY8TGFiZWxUZW1wbGF0ZUNvbnRleHQ8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGQoU0lvbk9wdGlvblRlbXBsYXRlRGlyZWN0aXZlICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgb3B0aW9uVGVtcGxhdGUgICAgIDogVGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PFQ+PjtcclxuICBAQ29udGVudENoaWxkKFNJb25QbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHBsYWNlaG9sZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFBsYWNlaG9sZGVyVGVtcGxhdGVDb250ZXh0PjtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VsZWN0TGFiZWwnKSBpbnB1dFNlbGVjdExhYmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHsgXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuZXJyb3IgfHwgdGhpcy5sb2FkaW5nRnJvbUxvYWRlciB8fCB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmRpc2FibGVkKCkpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLlByZXNlbnQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgXHJcbiAgICBzdXBlcigpOyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyAgICBcclxuICAgICAgdGhpcy5VcGRhdGVMc3RPcHRpb25zKHRoaXMuc2VhcmNoVmFsdWUoKSk7XHJcbiAgICAgIHRoaXMuVXBkYXRlU2VsZWN0ZWQoKTtcclxuXHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pIFxyXG4gIH1cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLlNldEludGVyZmFjZSgpO1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uKCkubG9hZGVyLkFkZENvbXBvbmVudCh0aGlzKTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKHRoaXMuaXRlbXMoKSk7XHJcbiAgfVxyXG4gIGlzU2VydmljZUF0aXZvOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7IHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkRnJvbVNlcnZpY2UgaW5zdGFuY2VvZiBIdHRwU2VydmljZUF0aXZvOyB9KTtcclxuICBzb21lbnRlQXRpdm9zOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgSGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gWyBQb3BvdmVyIF1cclxuICAgIGlmKHRoaXMuc2VsZWN0Q29udGVudD8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiVGFiXCIpe1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PSBcIkVzY2FwZVwiKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gWyBpbnB1dENvbnRhaW5lciBdXHJcbiAgICBpZih0aGlzLmlucHV0Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpeyBcclxuICAgICAgaWYoW1wiQXJyb3dEb3duXCIsIFwiQXJyb3dVcFwiXS5pbmNsdWRlcyhldmVudC5rZXkpKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuUHJlc2VudChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBbIGlucHV0U2VsZWN0U2VhcmNoQmFyIF1cclxuICAgIGlmKHRoaXMuaW5wdXRTZWFyY2hCYXI/Lm5hdGl2ZUVsZW1lbnQgPT0gZXZlbnQudGFyZ2V0KXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiRW50ZXJcIil7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0IGlzIG5vdCBhdGl2byBpZ25vcmUgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5sc3RPcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleCFdO1xyXG4gICAgICAgIGlmKHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSAmJiAhaXRlbS5pdGVtLmF0aXZvKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuU2VsZWN0KGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIFxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIil7XHJcbiAgICAgICAgaWYodGhpcy5zZWxlY3RlZEluZGV4ID09IHVuZGVmaW5lZCl7IHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7IHJldHVybjsgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMubHN0T3B0aW9ucy5sZW5ndGggLSAxID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IHRoaXMuc2VsZWN0ZWRJbmRleClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiQXJyb3dVcFwiKXtcclxuICAgICAgICBpZih0aGlzLnNlbGVjdGVkSW5kZXggPT0gdW5kZWZpbmVkKXsgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDsgcmV0dXJuOyB9XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCA/IHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgOiB0aGlzLnNlbGVjdGVkSW5kZXgpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLy9bIFNlYXJjaCBCYXIgXVxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VhcmNoQmFyJykgaW5wdXRTZWFyY2hCYXI6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgc2VhcmNoQmFyQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIHNlYXJjaFZhbHVlICAgICA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz4gPSAgc2lnbmFsPHN0cmluZz4oXCJcIik7XHJcbiAgcHJpdmF0ZSBzZWFyY2hCYXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5zZWFyY2hCYXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgKVxyXG4gICAgLy9PblNlYXJjaENoYW5nZVxyXG4gICAgdGhpcy5zZWFyY2hCYXJTdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlLnN1YnNjcmliZShhc3luYyAodmFsdWU6IHN0cmluZykgPT4geyBcclxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBDbGVhclNlYXJjaEJhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uKSB7IHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5DbGVhclNlYXJjaEJhcigpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IFQgfCBUW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogVCB8IFRbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUoW10pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIFNlbGVjdChpdGVtVmFsdWU6IEl0ZW1WYWx1ZTxUPik6IHZvaWR7XHJcbiAgICBjb25zdCBpdGVtID0gaXRlbVZhbHVlLnZhbHVlO1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSl7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50VmFsdWUuZmluZEluZGV4KHAgPT4gcCA9PSBpdGVtKTtcclxuICAgICAgICBpZihpbmRleCA+IC0xKXtcclxuICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJyZW50VmFsdWUucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbLi4uY3VycmVudFZhbHVlXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbaXRlbV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICB0aGlzLkRpc21pc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBbIFBvcG92ZXIgLyBNb2RhbCBdXHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Q29udGVudCcpIHNlbGVjdENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIFxyXG4gIEBWaWV3Q2hpbGQoU0lvblBvcG92ZXJDb21wb25lbnQpIHBvcG92ZXI6IFNJb25Qb3BvdmVyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoSW9uTW9kYWwpICAgbW9kYWw6IElvbk1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWxlcnQpICAgYWxlcnQ6IElvbkFsZXJ0O1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWN0aW9uU2hlZXQpIGFjdGlvblNoZWV0OiBJb25BY3Rpb25TaGVldDtcclxuXHJcbiAgZmxvYXRpbmdWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVuZGVySW50ZXJmYWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGVudCcpIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XHJcbiAgYXN5bmMgUHJlc2VudChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucmVuZGVySW50ZXJmYWNlID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgYXdhaXQgVGltZW91dCgwKTsgLy9Fc3BlcmEgYSByZW5kZXJpemHDp8OjbyBkYSBpbnRlcmZhY2VcclxuICAgIGlmKHRoaXMuaW50ZXJmYWNlKCkgPT0gU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCl7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwucHJlc2VudCgpO1xyXG4gICAgICB0aGlzLmlucHV0U2VhcmNoQmFyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5pbnRlcmZhY2UoKSA9PSBTZWxlY3RJbnRlcmZhY2VzLlBvcG92ZXIpe1xyXG4gICAgICBhd2FpdCB0aGlzLnBvcG92ZXIucHJlc2VudChldmVudCk7XHJcbiAgICAgIHRoaXMuaW5wdXRTZWFyY2hCYXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLmludGVyZmFjZSgpID09IFNlbGVjdEludGVyZmFjZXMuQWN0aW9uU2hlZXQpe1xyXG4gICAgICBhd2FpdCB0aGlzLmFjdGlvblNoZWV0LnByZXNlbnQoKTtcclxuICAgICAgdGhpcy5pbnB1dFNlYXJjaEJhcj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIERpc21pc3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZih0aGlzLm1vZGFsKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5wb3BvdmVyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucG9wb3Zlci5kaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB1bmRlZmluZWQ7XHJcbiAgICBpZih0aGlzLmlucHV0U2VsZWN0TGFiZWw/Lm5hdGl2ZUVsZW1lbnQpeyBcclxuICAgICAgdGhpcy5pbnB1dFNlbGVjdExhYmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2Uuc2V0KDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBPbkRpc21pc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlckludGVyZmFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5mbG9hdGluZ1Zpc2libGUgPSBmYWxzZTsgXHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XHJcbiAgICB0aGlzLnNlYXJjaEJhckNvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuICBPblByZXNlbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsb2F0aW5nVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0FycmF5KG9iaiA6IGFueSApIHtcclxuICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgSXRlbVZhbHVlPFQ+e1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU6IFQ7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtICAgIDogYW55OyBcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BvcnRyYWl0KCkge1xyXG4gIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPiB3aW5kb3cuaW5uZXJXaWR0aDtcclxufSIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwic2V0Rm9jdXMoJGV2ZW50KTtcIlxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5tYW51YWwtZm9jdXNdPVwiZmxvYXRpbmdWaXNpYmxlXCJcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImxvYWRpbmcoKSB8fCBsb2FkaW5nRnJvbUxvYWRlciB8fCBkaXNhYmxlZCgpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKCkgfHwgbG9hZGluZ0Zyb21Mb2FkZXJcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIHRydW5jYXRlIG91dGxpbmUtbm9uZVwiIFtjbGFzcy5wci03XT1cIiFjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCIgW2NsYXNzLnByLTEwXT1cImNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGVcIiAgI2lucHV0U2VsZWN0TGFiZWwgdGFiaW5kZXg9XCIwXCI+XHJcbiAgICBAaWYgKCFjb25maWd1cmF0aW9uKCkubXVsdGlwbGUgJiYgY3VycmVudExhYmVsKXtcclxuICAgICAgQGlmKGxhYmVsVGVtcGxhdGUpe1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY3VycmVudExhYmVsLCBpdGVtOiBjdXJyZW50SXRlbXMuaXRlbSB9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc2VsZWN0LWxhYmVsXCI+IHt7Y3VycmVudExhYmVsfX0gPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAoY29uZmlndXJhdGlvbigpLm11bHRpcGxlICYmIGlzQXJyYXkoY3VycmVudEl0ZW1zKSAmJiAkYW55KGN1cnJlbnRJdGVtcykubGVuZ3RoKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWluLWgtNiBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHRvcC0wIG92ZXJmbG93LXgtYXV0byBmbGV4IGdhcC0yIHNpemUtZnVsbCBtYXNrLXgvMlwiPlxyXG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBjdXJyZW50SXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsdWNpZC1ib3JkZXIgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBwbC0yXCI+XHJcbiAgICAgICAgICAgICAgQGlmKGxhYmVsVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5sYWJlbCwgaXRlbTogaXRlbS5pdGVtIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNlbGVjdC1sYWJlbFwiPiB7e2l0ZW0ubGFiZWx9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2VsZWN0KGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGlvbi1idXR0b24gY2xhc3M9XCJtLTAgaC1mdWxsXCIgKGNsaWNrKT1cIlNlbGVjdChpdGVtLnZhbHVlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwib3V0bGluZVwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYocGxhY2Vob2xkZXJUZW1wbGF0ZSl7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5wbGFjZWhvbGRlciwgcGxhY2Vob2xkZXI6IHRoaXMuY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyIH1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zZWxlY3QtbGFiZWwgIXRleHQtbWVkaXVtXCI+IHt7dGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXJ9fSA8L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNpemUtN1wiIFtjbGFzcy5yaWdodC0xXT1cIiFjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCIgW2NsYXNzLnJpZ2h0LThdPVwiY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZVwiPlxyXG4gICAgPGlvbi1pY29uIGNsYXNzPVwiLW1iLTAuNVwiIG5hbWU9XCJjaGV2cm9uLXVwXCI+PC9pb24taWNvbj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cIi1tdC0wLjVcIiBuYW1lPVwiY2hldnJvbi1kb3duXCI+PC9pb24taWNvbj5cclxuICA8L2Rpdj5cclxuICBAaWYoY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZSl7XHJcbiAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTEgYm90dG9tLTFcIiAoY2xpY2spPVwiQ2xlYXIoJGV2ZW50KVwiIGNvbG9yPVwibWVkaXVtXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cImNsZWFyXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IC41cmVtXCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgIDwvaW9uLWJ1dHRvbj5cclxuICB9IFxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKCkgfHwgbG9hZGluZ0Zyb21Mb2FkZXJcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJlcnJvci1jb250YWluZXJcIiAoY2xpY2spPVwiY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKClcIiBbY2xhc3MuYWN0aXZlXT1cImNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuZXJyb3IgJiYgIWxvYWRpbmdGcm9tTG9hZGVyXCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LXhsXCIgY29sb3I9XCJkYW5nZXJcIiBuYW1lPVwicmVmcmVzaC1jaXJjbGVcIj48L2lvbi1pY29uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZighZGlzYWJsZWQoKSAmJiByZW5kZXJJbnRlcmZhY2Upe1xyXG4gIEBzd2l0Y2ggKGludGVyZmFjZSgpKSB7XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5Qb3BvdmVyKSB7XHJcbiAgICAgIDxzaW9uLXBvcG92ZXIgXHJcbiAgICAgICAgICAjcG9wb3ZlciBcclxuICAgICAgICAgIFt3aWR0aF09XCJpbnB1dENvbnRhaW5lci5vZmZzZXRXaWR0aCArICdweCdcIiBcclxuICAgICAgICAgIChvbldpbGxQcmVzZW50KT1cIk9uUHJlc2VudCgpXCIgXHJcbiAgICAgICAgICAob25EaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgXHJcbiAgICAgICAgICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCIgXHJcbiAgICAgICAgICBbcGxhY2VtZW50XT1cImNvbmZpZ3VyYXRpb24oKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5wbGFjZW1lbnRcIiBcclxuICAgICAgICAgIFtmbGlwXT1cImNvbmZpZ3VyYXRpb24oKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5mbGlwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RDb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9zaW9uLXBvcG92ZXI+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCkge1xyXG4gICAgICA8aW9uLW1vZGFsICNtb2RhbCAoaW9uTW9kYWxXaWxsUHJlc2VudCk9XCJPblByZXNlbnQoKVwiIChkaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgW2luaXRpYWxCcmVha3BvaW50XT1cIjAuOVwiIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8aW9uLWhlYWRlcj5cclxuICAgICAgICAgICAgPGlvbi10b29sYmFyPlxyXG4gICAgICAgICAgICAgIDxpb24tdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAge3tsYWJlbCgpfX1cclxuICAgICAgICAgICAgICA8L2lvbi10aXRsZT5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICAgICAgPC9pb24tdG9vbGJhcj5cclxuICAgICAgICAgIDwvaW9uLWhlYWRlcj5cclxuICAgIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RDb250ZW50VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtb2RhbDogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9pb24tbW9kYWw+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAoU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCkge1xyXG4gICAgICA8aW9uLWFjdGlvbi1zaGVldCAjYWN0aW9uU2hlZXQgdHJpZ2dlcj1cIm9wZW4tYWN0aW9uLXNoZWV0XCIgW2hlYWRlcl09XCJsYWJlbCgpXCIgW2J1dHRvbnNdPVwibHN0T3B0aW9uc0FjdGlvblNoZWV0XCI+PC9pb24tYWN0aW9uLXNoZWV0PlxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxlY3RDb250ZW50VGVtcGxhdGUgbGV0LW1vZGFsPVwibW9kYWxcIj5cclxuICA8ZGl2ICNzZWxlY3RDb250ZW50IGNsYXNzPVwic2VsZWN0LWNvbnRlbnRcIiBbY2xhc3MuIXNpemUtZnVsbF09XCJtb2RhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXNlYXJjaC1iYXItaWNvbi1jb250YWluZXIgIWJvcmRlci1yLTAgYm9yZGVyLXByaW1hcnkvNzAgYmctcHJpbWFyeS83MCBzaHJpbmstMFwiPlxyXG4gICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwic2VhcmNoXCI+PC9pb24taWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRTZWFyY2hCYXIgdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwic2VsZWN0LXNlYXJjaC1iYXIgYm9yZGVyLXByaW1hcnkvNzAgIXJvdW5kZWQtbC1ub25lXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaEJhckNvbnRyb2xcIi8+XHJcbiAgICA8L2Rpdj4gXHJcbiAgICA8dWwgY2xhc3M9XCJzZWxlY3QtaXRlbS1saXN0IG1hc2steVwiIHJvbGU9XCJsaXN0Ym94XCIgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidzaW9uLWlzLScgKyBzZWxlY3RlZEluZGV4XCI+XHJcbiAgICAgIDxpb24tY29udGVudCAjc2Nyb2xsQ29udGVudCBjbGFzcz1cInNpemUtZnVsbFwiIFtzY3JvbGxZXT1cInRydWVcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGxzdE9wdGlvbnM7IHRyYWNrIGl0ZW0udmFsdWUpIHsgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJiYXNlT3B0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLCBpbmRleDogJGluZGV4IH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYoY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsIHRocmVzaG9sZD1cIjEwcHhcIiAqbmdJZj1cImxzdE9wdGlvbnMubGVuZ3RoICYmIGxzdE9wdGlvbnMubGVuZ3RoICE9IGxzdE9wdGlvbnNJdGVtVmFsdWUoKS5sZW5ndGhcIiAoaW9uSW5maW5pdGUpPVwiQWRkUGFnZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+PC9pb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2lvbi1pbmZpbml0ZS1zY3JvbGw+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2lvbi1jb250ZW50PlxyXG4gICAgPC91bD5cclxuICAgIEBpZihpc1NlcnZpY2VBdGl2bygpKXtcclxuICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCB0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgPGlvbi1jaGVja2JveCBbbmdNb2RlbF09XCJzb21lbnRlQXRpdm9zKClcIiAobmdNb2RlbENoYW5nZSk9XCJzb21lbnRlQXRpdm9zLnNldCgkZXZlbnQpXCIgY2xhc3M9XCJzY2FsZS03NVwiPiBTb21lbnRlIGF0aXZvcyA8L2lvbi1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Jhc2VPcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxsaSBbaWRdPVwiJ3Npb24taXMtJyArIGluZGV4XCIgY2xhc3M9XCJzZWxlY3QtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpbmRleCA9PSBzZWxlY3RlZEluZGV4XCIgKG1vdXNlZW50ZXIpPVwic2VsZWN0ZWRJbmRleCA9IGluZGV4XCIgKGNsaWNrKT1cIlNlbGVjdChpdGVtKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1pdGVtLWNoZWNrbWFyay1jb250ZWluZXJcIj5cclxuICAgICAgQGlmKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZWxlY3QtaXRlbS1jaGVja21hcmtcIiBjb2xvcj1cInByaW1hcnlcIiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKG9wdGlvblRlbXBsYXRlKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0uaXRlbSB9XCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1pdGVtLWxhYmVsXCI+IHt7aXRlbS5sYWJlbH19IDwvc3Bhbj5cclxuICAgIH1cclxuICA8L2xpPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { HttpClient, HttpEventType } from '@angular/common/http';
2
- import { BehaviorSubject, lastValueFrom, map, filter } from 'rxjs';
2
+ import { BehaviorSubject } from 'rxjs';
3
3
  import { Injectable } from '@angular/core';
4
4
  import { ApiUrlProviderService } from './api-url-provider.service';
5
5
  import { GenericService } from '../generic.service';
@@ -96,27 +96,52 @@ export class StorageService {
96
96
  });
97
97
  }
98
98
  }
99
- GetFileResponse(fileUrl, params, post = false) {
100
- return lastValueFrom(this.GetFile(fileUrl, params, post).pipe(filter(event => event.type === HttpEventType.Response), map(event => event)));
101
- }
102
- async GetFileResponseBlob(path) {
103
- return (await this.GetFileResponse(path)).body;
104
- }
105
- async GetFileResponseBlobBatch(lstPath) {
106
- const lstResponse = [];
107
- await Promise.allSettled(lstPath.map(async (p) => {
108
- var blob = null;
109
- if (p) {
110
- try {
111
- blob = await this.GetFileResponseBlob(p);
112
- }
113
- catch {
114
- blob = null;
115
- }
116
- }
117
- lstResponse.push({ path: p, blob: blob });
99
+ /**
100
+ * @param lstFiles
101
+ * lista de arquivos a serem baixados
102
+ * @param onUpdate
103
+ * funcao chamada a cada progresso de download
104
+ * @returns
105
+ * lista de respostas dos arquivos, como promise, quando todos estiverem completos ou deram erro, é retornada
106
+ */
107
+ async GetBlobBatchLiveReponse(lstFiles, onUpdate) {
108
+ const lst = lstFiles.map(p => ({
109
+ path: p,
110
+ observable: this.GetFile(p),
111
+ progress: 0,
112
+ success: undefined,
113
+ blob: undefined
118
114
  }));
119
- return lstResponse;
115
+ const isAllComplete = () => lst.every(obs => obs.progress >= 1);
116
+ const getTotalProgressAvg = () => lst.reduce((acc, obs) => acc + obs.progress, 0) / lst.length;
117
+ return new Promise((resolve) => {
118
+ for (const obs of lst) {
119
+ obs.observable.subscribe({
120
+ next: (event) => {
121
+ if (event.type === HttpEventType.DownloadProgress) {
122
+ obs.progress = event.loaded / event.total;
123
+ onUpdate(getTotalProgressAvg(), lst, event.type);
124
+ }
125
+ else if (event.type === HttpEventType.Response) {
126
+ obs.blob = new Blob([event.body], { type: event.body.type });
127
+ obs.success = true;
128
+ if (isAllComplete()) {
129
+ resolve(lst);
130
+ }
131
+ onUpdate(getTotalProgressAvg(), lst, event.type);
132
+ }
133
+ },
134
+ error: (err) => {
135
+ obs.success = false;
136
+ obs.progress = 1;
137
+ onUpdate(getTotalProgressAvg(), lst);
138
+ if (isAllComplete()) {
139
+ resolve(lst);
140
+ }
141
+ }
142
+ });
143
+ }
144
+ });
120
145
  }
121
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, deps: [{ token: i1.HttpClient }, { token: i2.ApiUrlProviderService }, { token: i3.GenericService }], target: i0.ɵɵFactoryTarget.Injectable }); }
122
147
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, providedIn: 'root' }); }
@@ -147,4 +172,4 @@ function DownloadFile(data, fileUrl) {
147
172
  });
148
173
  linkElement.dispatchEvent(me);
149
174
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBUXBELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQ1EsSUFBaUIsRUFDakIscUJBQTRDLEVBQzVDLGNBQThCO1FBRjlCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFHOUIseUJBQW9CLEdBQWUsRUFBRSxDQUFDO0lBRjFDLENBQUM7SUFJRSxXQUFXLENBQUMsSUFBWTtRQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQTtRQUNwRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBWSxFQUFFLE1BQVksRUFBRSxPQUFnQixLQUFLO1FBQ3BFLElBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENB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QUM7K0dBM0hVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQW9JRCxNQUFNLE9BQU8sUUFBUTtJQUduQixZQUFtQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUQvQixhQUFRLEdBQWlCLE9BQU8sQ0FBQztJQUNBLENBQUM7Q0FDbkM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUF3QixFQUFFLE9BQU87SUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXZFLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUvRSxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7UUFDN0IsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20sIG1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vYXBpLXVybC1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gIHByaXZhdGUgaHR0cCA6IEh0dHBDbGllbnQsXHJcbiAgcHJpdmF0ZSBhcGlVcmxQcm92aWRlclNlcnZpY2U6IEFwaVVybFByb3ZpZGVyU2VydmljZSxcclxuICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgY3VycmVudGx5RG93bmxvYWRpbmc6IERvd25sb2FkW10gPSBbXTtcclxuXHJcbiAgcHVibGljIEdldFByb2dyZXNzKGZpbGU6IHN0cmluZyk6IG51bWJlcntcclxuICAgIGNvbnN0IERvd25sb2FkID0gdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpXHJcbiAgICByZXR1cm4gRG93bmxvYWQgPyBEb3dubG9hZC5wcm9ncmVzcyA6IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU3RhcnREb3dubG9hZChmaWxlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlKTogRG93bmxvYWQge1xyXG4gICAgaWYoIXRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKSl7XHJcbiAgICAgIGNvbnN0IGRvd25sb2FkID0gbmV3IERvd25sb2FkKGZpbGUpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnB1c2goZG93bmxvYWQpO1xyXG4gICAgICB0aGlzLkhhbmRsZURvd25sb2FkKGRvd25sb2FkLCBwYXJhbXMsIHBvc3QpO1xyXG4gICAgICByZXR1cm4gZG93bmxvYWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBIYW5kbGVEb3dubG9hZChkb3dubG9hZDogRG93bmxvYWQsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlKXtcclxuICAgIHZhciByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLkdldEZpbGUoZG93bmxvYWQuZmlsZSwgcGFyYW1zLCBwb3N0KTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0UHJvZ2VzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIGRvd25sb2FkLnJlcXVlc3RQcm9nZXNzID0gcmVxdWVzdFByb2dlc3M7XHJcbiAgICByZXF1ZXN0LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHsgXHJcbiAgICAgICAgICBkb3dubG9hZC5wcm9ncmVzcyA9IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsOyBcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLm5leHQoZG93bmxvYWQucHJvZ3Jlc3MpO1xyXG4gICAgICAgIH0gZWxzZSBcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgRG93bmxvYWRGaWxlKGV2ZW50LCBkb3dubG9hZC5maWxlKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuc3BsaWNlKHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuaW5kZXhPZihkb3dubG9hZCksIDEpO1xyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuY29tcGxldGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGV2ZW50LnN0YXR1cyA9PSA0MDQpe1xyXG4gICAgICAgICAgdGhpcy5nZW5lcmljU2VydmljZS5QcmVzZW50VG9hc3QoXCJBcnF1aXZvIG7Do28gZW5jb250cmFkbyAvIFVybCBpbnbDoWxpZGFcIilcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmVycm9yKGV2ZW50KTsgXHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5jb21wbGV0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5zcGxpY2UodGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5pbmRleE9mKGRvd25sb2FkKSwgMSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgU2FuaXRpemVGaWxlTmFtZSh2KTogc3RyaW5ne1xyXG4gICAgdHJ5e1xyXG4gICAgICB2YXIgZmlsZW5hbWVFbmQ6IHN0cmluZyAgPSB2LnNwbGl0KCcvJykuYXQoLTEpO1xyXG4gICAgICBcclxuICAgICAgaWYoZmlsZW5hbWVFbmQuc3BsaXQoJy4nKS5sZW5ndGggPD0gMil7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lRW5kO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB2YXIgbHN0ID0gZmlsZW5hbWVFbmQuc3BsaXQoJy4nKTtcclxuICAgICAgICBsc3RbMF0gPSAnJztcclxuICAgICAgICByZXR1cm4gbHN0LmpvaW4oJy4nKS5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICB9XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBHZXRGaWxlKGZpbGVVcmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj4ge1xyXG4gICAgdmFyIHVybDogc3RyaW5nO1xyXG4gICAgaWYoZmlsZVVybFswXSA9PSAnLycpeyBcclxuICAgICAgdXJsID0gZmlsZVVybC5zbGljZSgxLCBmaWxlVXJsLmxlbmd0aCAtIDEpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHVybCA9IGAke3RoaXMuYXBpVXJsUHJvdmlkZXJTZXJ2aWNlLmFwaVVybH0ke2ZpbGVVcmx9YDtcclxuICAgIH1cclxuICAgIHVybCA9IGVuY29kZVVSSSh1cmwpLnJlcGxhY2UoLyMvZywgJyUyMycpXHJcblxyXG4gICAgaWYoIXBvc3Qpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcclxuICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICB9KTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBwYXJhbXMsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRGaWxlUmVzcG9uc2UoZmlsZVVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+PiB7XHJcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLkdldEZpbGUoZmlsZVVybCwgcGFyYW1zLCBwb3N0KS5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSksXHJcbiAgICAgIG1hcChldmVudCA9PiBldmVudCBhcyBIdHRwUmVzcG9uc2U8QmxvYj4pXHJcbiAgICApKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgYXN5bmMgR2V0RmlsZVJlc3BvbnNlQmxvYihwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+e1xyXG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLkdldEZpbGVSZXNwb25zZShwYXRoKSkuYm9keTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBHZXRGaWxlUmVzcG9uc2VCbG9iQmF0Y2gobHN0UGF0aDogc3RyaW5nW10pOiBQcm9taXNlPEdldEZpbGVSZXNwb25zZVtdPntcclxuICAgIGNvbnN0IGxzdFJlc3BvbnNlOiBHZXRGaWxlUmVzcG9uc2VbXSA9IFtdO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxyXG4gICAgICBsc3RQYXRoLm1hcChhc3luYyBwID0+IHtcclxuICAgICAgICB2YXIgYmxvYiA9IG51bGw7XHJcbiAgICAgICAgaWYocCl7XHJcbiAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgIGJsb2IgPSBhd2FpdCB0aGlzLkdldEZpbGVSZXNwb25zZUJsb2IocCk7XHJcbiAgICAgICAgICB9Y2F0Y2h7XHJcbiAgICAgICAgICAgIGJsb2IgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsc3RSZXNwb25zZS5wdXNoKHtwYXRoOiBwLCBibG9iOiBibG9ifSk7XHJcbiAgICAgIH1cclxuICAgICkpO1xyXG4gICAgcmV0dXJuIGxzdFJlc3BvbnNlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRGaWxlUmVzcG9uc2V7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGJsb2I/OiBCbG9iO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRG93bmxvYWQge1xyXG4gIHJlcXVlc3RQcm9nZXNzOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcHJvZ3Jlc3MgICAgICA6IG51bWJlciA9IDAuMDAwMDE7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGZpbGU6IHN0cmluZyl7fVxyXG59XHJcblxyXG5mdW5jdGlvbiBEb3dubG9hZEZpbGUoZGF0YTogSHR0cFJlc3BvbnNlPEJsb2I+LCBmaWxlVXJsKSB7XHJcbiAgY29uc3QgZG93bmxvYWRlZEZpbGUgPSBuZXcgQmxvYihbZGF0YS5ib2R5XSwgeyB0eXBlOiBkYXRhLmJvZHkudHlwZSB9KTtcclxuXHJcbiAgdmFyIGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvd25sb2FkZWRGaWxlKTtcclxuICBjb25zdCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcImhyZWZcIiwgZmlsZVVSTCk7XHJcbiAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcImRvd25sb2FkXCIsIFN0b3JhZ2VTZXJ2aWNlLlNhbml0aXplRmlsZU5hbWUoZmlsZVVybCkpO1xyXG5cclxuICBsZXQgbWUgPSBuZXcgTW91c2VFdmVudChcImNsaWNrXCIsIHtcclxuICAgICAgdmlldzogd2luZG93LFxyXG4gICAgICBidWJibGVzOiB0cnVlLFxyXG4gICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcclxuICB9KTtcclxuXHJcbiAgbGlua0VsZW1lbnQuZGlzcGF0Y2hFdmVudChtZSk7XHJcbn0iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNRLElBQWlCLEVBQ2pCLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRzlCLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQUYxQyxDQUFDO0lBSUUsV0FBVyxDQUFDLElBQVk7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUE7UUFDcEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsT0FBZ0IsS0FBSztRQUNwRSxJQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJ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U0FBUyxZQUFZLENBQUMsSUFBd0IsRUFBRSxPQUFPO0lBQ3JELE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV2RSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBSSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQzdCLElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVLEVBQUUsS0FBSztLQUNwQixDQUFDLENBQUM7SUFFSCxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBsYXN0VmFsdWVGcm9tLCBtYXAsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBcGlVcmxQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL2FwaS11cmwtcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi91dGlscy5zZXJ2aWNlJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICBwcml2YXRlIGh0dHAgOiBIdHRwQ2xpZW50LFxyXG4gIHByaXZhdGUgYXBpVXJsUHJvdmlkZXJTZXJ2aWNlOiBBcGlVcmxQcm92aWRlclNlcnZpY2UsXHJcbiAgcHJpdmF0ZSBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwcml2YXRlIGN1cnJlbnRseURvd25sb2FkaW5nOiBEb3dubG9hZFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBHZXRQcm9ncmVzcyhmaWxlOiBzdHJpbmcpOiBudW1iZXJ7XHJcbiAgICBjb25zdCBEb3dubG9hZCA9IHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKVxyXG4gICAgcmV0dXJuIERvd25sb2FkID8gRG93bmxvYWQucHJvZ3Jlc3MgOiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFN0YXJ0RG93bmxvYWQoZmlsZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IERvd25sb2FkIHtcclxuICAgIGlmKCF0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmZpbmQocCA9PiBwLmZpbGUgPT0gZmlsZSkpe1xyXG4gICAgICBjb25zdCBkb3dubG9hZCA9IG5ldyBEb3dubG9hZChmaWxlKTtcclxuICAgICAgdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5wdXNoKGRvd25sb2FkKTtcclxuICAgICAgdGhpcy5IYW5kbGVEb3dubG9hZChkb3dubG9hZCwgcGFyYW1zLCBwb3N0KTtcclxuICAgICAgcmV0dXJuIGRvd25sb2FkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSGFuZGxlRG93bmxvYWQoZG93bmxvYWQ6IERvd25sb2FkLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSl7XHJcbiAgICB2YXIgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5HZXRGaWxlKGRvd25sb2FkLmZpbGUsIHBhcmFtcywgcG9zdCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdFByb2dlc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgICBkb3dubG9hZC5yZXF1ZXN0UHJvZ2VzcyA9IHJlcXVlc3RQcm9nZXNzO1xyXG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzKSB7IFxyXG4gICAgICAgICAgZG93bmxvYWQucHJvZ3Jlc3MgPSBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbDsgXHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5uZXh0KGRvd25sb2FkLnByb2dyZXNzKTtcclxuICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgIERvd25sb2FkRmlsZShldmVudCwgZG93bmxvYWQuZmlsZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnNwbGljZSh0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmluZGV4T2YoZG93bmxvYWQpLCAxKTtcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmNvbXBsZXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldmVudC5zdGF0dXMgPT0gNDA0KXtcclxuICAgICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0KFwiQXJxdWl2byBuw6NvIGVuY29udHJhZG8gLyBVcmwgaW52w6FsaWRhXCIpXHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5lcnJvcihldmVudCk7IFxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuY29tcGxldGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuc3BsaWNlKHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuaW5kZXhPZihkb3dubG9hZCksIDEpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIFNhbml0aXplRmlsZU5hbWUodjogc3RyaW5nKTogc3RyaW5ne1xyXG4gICAgdHJ5e1xyXG4gICAgICB2YXIgZmlsZW5hbWVFbmQ6IHN0cmluZyAgPSB2LnNwbGl0KCcvJykuYXQoLTEpO1xyXG4gICAgICBcclxuICAgICAgaWYoZmlsZW5hbWVFbmQuc3BsaXQoJy4nKS5sZW5ndGggPD0gMil7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lRW5kO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB2YXIgbHN0ID0gZmlsZW5hbWVFbmQuc3BsaXQoJy4nKTtcclxuICAgICAgICBsc3RbMF0gPSAnJztcclxuICAgICAgICByZXR1cm4gbHN0LmpvaW4oJy4nKS5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICB9XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBHZXRGaWxlKGZpbGVVcmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj4ge1xyXG4gICAgdmFyIHVybDogc3RyaW5nO1xyXG4gICAgaWYoZmlsZVVybFswXSA9PSAnLycpeyBcclxuICAgICAgdXJsID0gZmlsZVVybC5zbGljZSgxLCBmaWxlVXJsLmxlbmd0aCAtIDEpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHVybCA9IGAke3RoaXMuYXBpVXJsUHJvdmlkZXJTZXJ2aWNlLmFwaVVybH0ke2ZpbGVVcmx9YDtcclxuICAgIH1cclxuICAgIHVybCA9IGVuY29kZVVSSSh1cmwpLnJlcGxhY2UoLyMvZywgJyUyMycpXHJcblxyXG4gICAgaWYoIXBvc3Qpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcclxuICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICB9KTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBwYXJhbXMsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBsc3RGaWxlcyBcclxuICAgKiBsaXN0YSBkZSBhcnF1aXZvcyBhIHNlcmVtIGJhaXhhZG9zIFxyXG4gICAqIEBwYXJhbSBvblVwZGF0ZSBcclxuICAgKiBmdW5jYW8gY2hhbWFkYSBhIGNhZGEgcHJvZ3Jlc3NvIGRlIGRvd25sb2FkXHJcbiAgICogQHJldHVybnMgXHJcbiAgICogbGlzdGEgZGUgcmVzcG9zdGFzIGRvcyBhcnF1aXZvcywgY29tbyBwcm9taXNlLCBxdWFuZG8gdG9kb3MgZXN0aXZlcmVtIGNvbXBsZXRvcyBvdSBkZXJhbSBlcnJvLCDDqSByZXRvcm5hZGFcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgR2V0QmxvYkJhdGNoTGl2ZVJlcG9uc2UobHN0RmlsZXM6IHN0cmluZ1tdLCBvblVwZGF0ZTogKHRvdGFsUHJvZ3Jlc3M6IG51bWJlciwgbHN0UmVzcG9uc2U6IExpdmVSZXNwb25zZVtdLCBldmVudFR5cGU/OiBIdHRwRXZlbnRUeXBlKSA9PiB2b2lkKTogUHJvbWlzZTxMaXZlUmVzcG9uc2VbXT4ge1xyXG4gICAgY29uc3QgbHN0OiBMaXZlUmVzcG9uc2VbXSA9IGxzdEZpbGVzLm1hcChwID0+ICh7XHJcbiAgICAgIHBhdGggICAgICA6IHAsXHJcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuR2V0RmlsZShwKSxcclxuICAgICAgcHJvZ3Jlc3MgIDogMCxcclxuICAgICAgc3VjY2VzcyAgIDogdW5kZWZpbmVkLFxyXG4gICAgICBibG9iICAgICAgOiB1bmRlZmluZWRcclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCBpc0FsbENvbXBsZXRlID0gKCkgPT4gbHN0LmV2ZXJ5KG9icyA9PiBvYnMucHJvZ3Jlc3MgPj0gMSk7XHJcbiAgICBjb25zdCBnZXRUb3RhbFByb2dyZXNzQXZnID0gKCkgPT4gbHN0LnJlZHVjZSgoYWNjLCBvYnMpID0+IGFjYyArIG9icy5wcm9ncmVzcywgMCkgLyBsc3QubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaXZlUmVzcG9uc2VbXT4oKHJlc29sdmUpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBvYnMgb2YgbHN0KSB7XHJcbiAgICAgICAgb2JzLm9ic2VydmFibGUuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgb2JzLnByb2dyZXNzID0gZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7XHJcbiAgICAgICAgICAgICAgb25VcGRhdGUoZ2V0VG90YWxQcm9ncmVzc0F2ZygpLCBsc3QsIGV2ZW50LnR5cGUpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgb2JzLmJsb2IgPSBuZXcgQmxvYihbZXZlbnQuYm9keV0sIHsgdHlwZTogZXZlbnQuYm9keS50eXBlIH0pO1xyXG4gICAgICAgICAgICAgIG9icy5zdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBpZihpc0FsbENvbXBsZXRlKCkpe1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShsc3QpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCwgZXZlbnQudHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBvYnMuc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvYnMucHJvZ3Jlc3MgPSAxO1xyXG4gICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCk7XHJcbiAgICAgICAgICAgIGlmKGlzQWxsQ29tcGxldGUoKSl7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShsc3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdldEZpbGVSZXNwb25zZXtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgYmxvYj86IEJsb2I7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVJlc3BvbnNle1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICBibG9iPzogQmxvYjtcclxuICBzdWNjZXNzPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERvd25sb2FkIHtcclxuICByZXF1ZXN0UHJvZ2VzczogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHByb2dyZXNzICAgICAgOiBudW1iZXIgPSAwLjAwMDAxO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWxlOiBzdHJpbmcpe31cclxufVxyXG5cclxuZnVuY3Rpb24gRG93bmxvYWRGaWxlKGRhdGE6IEh0dHBSZXNwb25zZTxCbG9iPiwgZmlsZVVybCkge1xyXG4gIGNvbnN0IGRvd25sb2FkZWRGaWxlID0gbmV3IEJsb2IoW2RhdGEuYm9keV0sIHsgdHlwZTogZGF0YS5ib2R5LnR5cGUgfSk7XHJcblxyXG4gIHZhciBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChkb3dubG9hZGVkRmlsZSk7XHJcbiAgY29uc3QgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVVUkwpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKGZpbGVVcmwpKTtcclxuXHJcbiAgbGV0IG1lID0gbmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCB7XHJcbiAgICAgIHZpZXc6IHdpbmRvdyxcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIGxpbmtFbGVtZW50LmRpc3BhdGNoRXZlbnQobWUpO1xyXG59Il19
@@ -5,7 +5,7 @@ import { CameraSource } from '@capacitor/camera';
5
5
  import * as i0 from '@angular/core';
6
6
  import { Injectable, InjectionToken, NgModule, Inject, inject, signal, model, Component, Input, Pipe, input, computed, effect, contentChildren, output, forwardRef, ContentChildren, EventEmitter, Output, HostListener, ViewChild, Directive, ElementRef, TemplateRef, ChangeDetectionStrategy, ContentChild, ViewChildren, HostBinding, ViewContainerRef } from '@angular/core';
7
7
  import moment from 'moment';
8
- import { BehaviorSubject, firstValueFrom, from, switchMap, lastValueFrom, filter, map, Subject, takeUntil, distinctUntilChanged, debounceTime, Observable, tap, finalize, share, catchError } from 'rxjs';
8
+ import { BehaviorSubject, firstValueFrom, from, switchMap, Subject, takeUntil, distinctUntilChanged, debounceTime, lastValueFrom, Observable, tap, finalize, share, catchError } from 'rxjs';
9
9
  import * as i1$1 from '@angular/common/http';
10
10
  import { HttpClient, HttpEventType, HttpHeaders } from '@angular/common/http';
11
11
  import * as i2$1 from '@angular/forms';
@@ -2397,27 +2397,52 @@ class StorageService {
2397
2397
  });
2398
2398
  }
2399
2399
  }
2400
- GetFileResponse(fileUrl, params, post = false) {
2401
- return lastValueFrom(this.GetFile(fileUrl, params, post).pipe(filter(event => event.type === HttpEventType.Response), map(event => event)));
2402
- }
2403
- async GetFileResponseBlob(path) {
2404
- return (await this.GetFileResponse(path)).body;
2405
- }
2406
- async GetFileResponseBlobBatch(lstPath) {
2407
- const lstResponse = [];
2408
- await Promise.allSettled(lstPath.map(async (p) => {
2409
- var blob = null;
2410
- if (p) {
2411
- try {
2412
- blob = await this.GetFileResponseBlob(p);
2413
- }
2414
- catch {
2415
- blob = null;
2416
- }
2417
- }
2418
- lstResponse.push({ path: p, blob: blob });
2400
+ /**
2401
+ * @param lstFiles
2402
+ * lista de arquivos a serem baixados
2403
+ * @param onUpdate
2404
+ * funcao chamada a cada progresso de download
2405
+ * @returns
2406
+ * lista de respostas dos arquivos, como promise, quando todos estiverem completos ou deram erro, é retornada
2407
+ */
2408
+ async GetBlobBatchLiveReponse(lstFiles, onUpdate) {
2409
+ const lst = lstFiles.map(p => ({
2410
+ path: p,
2411
+ observable: this.GetFile(p),
2412
+ progress: 0,
2413
+ success: undefined,
2414
+ blob: undefined
2419
2415
  }));
2420
- return lstResponse;
2416
+ const isAllComplete = () => lst.every(obs => obs.progress >= 1);
2417
+ const getTotalProgressAvg = () => lst.reduce((acc, obs) => acc + obs.progress, 0) / lst.length;
2418
+ return new Promise((resolve) => {
2419
+ for (const obs of lst) {
2420
+ obs.observable.subscribe({
2421
+ next: (event) => {
2422
+ if (event.type === HttpEventType.DownloadProgress) {
2423
+ obs.progress = event.loaded / event.total;
2424
+ onUpdate(getTotalProgressAvg(), lst, event.type);
2425
+ }
2426
+ else if (event.type === HttpEventType.Response) {
2427
+ obs.blob = new Blob([event.body], { type: event.body.type });
2428
+ obs.success = true;
2429
+ if (isAllComplete()) {
2430
+ resolve(lst);
2431
+ }
2432
+ onUpdate(getTotalProgressAvg(), lst, event.type);
2433
+ }
2434
+ },
2435
+ error: (err) => {
2436
+ obs.success = false;
2437
+ obs.progress = 1;
2438
+ onUpdate(getTotalProgressAvg(), lst);
2439
+ if (isAllComplete()) {
2440
+ resolve(lst);
2441
+ }
2442
+ }
2443
+ });
2444
+ }
2445
+ });
2421
2446
  }
2422
2447
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, deps: [{ token: i1$1.HttpClient }, { token: ApiUrlProviderService }, { token: GenericService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2423
2448
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, providedIn: 'root' }); }
@@ -3409,7 +3434,7 @@ class InputSelectComponent extends CustomInput {
3409
3434
  if (this.configuration().useInfiniteScroll) {
3410
3435
  this.lstOptions = this.lstOptions.slice(0, this.infiniteScrollPage() * 25);
3411
3436
  }
3412
- if (this.configuration().interface == SelectInterfaces.ActionSheet) {
3437
+ if (this.interface() == SelectInterfaces.ActionSheet) {
3413
3438
  this.lstOptionsActionSheet = [...this.lstOptions.map(p => {
3414
3439
  return {
3415
3440
  text: p.label,