ng-miam 4.7.2 → 4.7.4

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.
@@ -511,4 +511,4 @@ RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsCompo
511
511
  type: ViewChild,
512
512
  args: ['topContainerImg']
513
513
  }] }); })();
514
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUVaLFNBQVMsRUFDVCxVQUFVLEVBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUosT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2hCcEYsMEJBQ0E7OztJQUNFLDBCQUNGOzs7SUFJQSw0QkFDRTtJQUFBLFlBQ0Y7SUFBQSxpQkFBTzs7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QUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBR3VCLGVBQWU7a0JBQTVDLFNBQVM7bUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBQb2ludE9mU2FsZXNTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVG9hc3RyU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ3VzdG9tUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcmVjaXBlOiBSZWNpcGU7XG4gIEBJbnB1dCgpIHByZXZpZXdBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgaW5ncmVkaWVudHNQaWN0dXJlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JjZURpc3BsYXlUYWdzOyAvLyBPdmVycmlkZSBnbG9iYWwgc2V0dGluZyBpZiBuZWNlc2FyeVxuICBASW5wdXQoKSBkaXNwbGF5VGFnc0ljb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUFkZGVkT25QaWN0dXJlID0gdHJ1ZTtcbiAgQElucHV0KCkgc3RlcHNPbkxlZnRTaWRlID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGRldGFpbCBpbiA0IHF1YXJ0ZXJzIGluc3RlYWQgb2YgMiBoYWx2ZXNcbiAgQElucHV0KCkgY29va2luZ1RpbWVBc1ByaW1hcnlJbmZvID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGNvb2tpbmcgdGltZSBuZXh0IHRvIHRvdGFsIHRpbWVcbiAgQElucHV0KCkgbW9yZVJlY2lwZXNJbWFnZVVSTDogc3RyaW5nO1xuICBASW5wdXQoKSBwcmljaW5nR3Vlc3RzVGV4dCA9ICdwYXIgcGVyc29ubmUnO1xuICBASW5wdXQoKSByZWNpcGVBZGRlZFRvYXN0VGV4dDogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVjaXBlQWRkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlY2lwZUVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKCd0b3BDb250YWluZXJJbWcnKSB0b3BDb250YWluZXJJbWc6IEVsZW1lbnRSZWY7XG5cbiAgdGFiID0gMDtcbiAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgZGlzcGxheVRhZ3MgPSBmYWxzZTtcbiAgc2hvd0RldGFpbCA9IHRydWU7XG4gIGljb24gPSBJY29uO1xuICBwbGF5ZXJXaWR0aDtcbiAgcGxheWVySGVpZ2h0O1xuICBzaG93VmlkZW87XG4gIGFkZEJ1dHRvbkxvYWRpbmcgPSBmYWxzZTtcbiAgdGl0bGVJbkhlYWRlciA9IGZhbHNlO1xuICB0aXRsZTogSFRNTEVsZW1lbnQ7XG4gIGNvbnRlbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UubWlhbS51c2VyLmlzU21hbGxTY3JlZW4kLnN1YnNjcmliZShpc1NtYWxsID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGlzU21hbGw7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGUgJiYgY2hhbmdlc1sncmVjaXBlJ10pIHtcbiAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9ESVNQTEFZLCB0aGlzLm9yaWdpblRyYWNlLm9yaWdpblBhdGgsIHRoaXMucHJvcHMoKSk7XG4gICAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcmNlRGlzcGxheVRhZ3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmZvcmNlRGlzcGxheVRhZ3MgIT09IHRoaXMuZGlzcGxheVRhZ3MpIHtcbiAgICAgIHRoaXMuZGlzcGxheVRhZ3MgPSB0aGlzLmZvcmNlRGlzcGxheVRhZ3M7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5VGFncyA9IHRoaXMuY29udGV4dFNlcnZpY2UudGFnc09uUmVjaXBlc0VuYWJsZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0ZXBzT25MZWZ0U2lkZSkge1xuICAgICAgdGhpcy5jb29raW5nVGltZUFzUHJpbWFyeUluZm8gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlOyAvLyBmb3JjZSByZWxvYWQgdmlkZW8gcGxheWVyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlPy52aWRlb0lkO1xuICAgIGlmICh0aGlzLnNob3dWaWRlbykge1xuICAgICAgdGhpcy5zZXR1cFlvdXR1YmVQbGF5ZXIoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluaXRTY3JvbGxMaXN0ZW5lck9uVGl0bGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldHVwWW91dHViZVBsYXllcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh3aW5kb3cuWVQ/LlBsYXllcikge1xuICAgICAgICB0aGlzLnBsYXllcldpZHRoID0gdGhpcy50b3BDb250YWluZXJJbWc/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLnBsYXllckhlaWdodCA9ICBNYXRoLm1pbih3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjQ4LCB0aGlzLnBsYXllcldpZHRoICogMzkwIC8gNjQwKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0dXBZb3V0dWJlUGxheWVyKCk7XG4gICAgICB9XG4gICAgfSwgNTApO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2RldGFpbCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudFByb3BzKCk6IEN1c3RvbVByb3BlcnRpZXMge1xuICAgIHJldHVybiB7IHJlY2lwZV9pZDogdGhpcy5yZWNpcGUuaWQgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0IHRoZSBsaXN0ZW5lciBvbiBzY3JvbGwgc28gdGhlIG1vZGFsIGNhbiBoaWRlIHRoZSBjbG9zZSBpY29uXG4gICAqL1xuICBpbml0U2Nyb2xsTGlzdGVuZXJPblRpdGxlKCkge1xuICAgIGlmICghdGhpcy50aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgIXRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgJiYgdGhpcy5jb250ZW50ICYmIHRoaXMudGl0bGUpIHtcbiAgICAgIC8vIEZvciBtb3JlIHByZWNpc2lvbiBvbiB0aXRsZSBzY3JvbGwgZGV0ZWN0aW9uLCB3ZSB3YW50IHRvIHRyaWdnZXIgYW4gZXZlbnQgZWFjaCB0aW1lIHRoZSB1c2VyIHNjcm9sbHMgNSUgb2YgdGhlIGNvbnRlbnRcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IFsuLi5BcnJheSgyMCkua2V5cygpXS5tYXAoeCA9PiB4IC8gMjApXG4gICAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgdGl0bGUgZW50ZXJzL2xlYXZlcyB0aGUgdmlld3BvcnRcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHsgdGhpcy50b2dnbGVUaXRsZUluSGVhZGVyKCk7IH0sXG4gICAgICB7IHRocmVzaG9sZCB9KTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRpdGxlSW5IZWFkZXIoKSB7XG4gICAgdGhpcy50aXRsZUluSGVhZGVyID0gdGhpcy50aXRsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPD0gNDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByZWNpcGUgdG8gbGlzdCBvbiBwcmltYXJ5IGJ1dHRvbiBjbGljayBhbmQgZW1pdCB0cnVlIGlmIHRoZSByZWNpcGUgaXMgYWRkZWQsIGZhbHNlIGlmIHJlY2lwZSBpcyBub3QgYWRkZWRcbiAgICogc28gbGliIHVzZXJzIGNhbiBkZWNpZGUgdGhhdCBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdChmYWxzZSkgcmVtb3ZlcyB0aGUgcmVjaXBlIGZvciBleGFtcGxlXG4gICAqL1xuICBjbGlja1ByaW1hcnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkZEJ1dHRvbkxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZSgpO1xuICAgICAgICAgIHRoaXMucHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoIXJlY2lwZUlzSW5MaXN0KTsgLy8gIXJlY2lwZUlzSW5MaXN0ID0gYWRkIGFjdGlvbiwgc28gd2UgZW1pdCB0cnVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlY2lwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcih0cnVlKTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKS5waXBlKHRha2UoMSkpXG4gICAgXSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zdCBpc0hvb2tPayA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9va0NhbGxiYWNrKHJlc1swXSwgcmVzWzFdKTtcbiAgICAgIGlmIChpc0hvb2tPaykge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbk9LKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbktPKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25PSygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVXYXNBZGRlZCA9ICFyZWNpcGVJc0luTGlzdDtcbiAgICAgICAgaWYgKHJlY2lwZVdhc0FkZGVkKXtcbiAgICAgICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHRoaXMucmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX0FEREVEKTtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdCh0aGlzLnJlY2lwZS5pZCwgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsIHRoaXMuZXZlbnRUcmFjZSgpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUobCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uTG9hZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgaWYgKHJlY2lwZVdhc0FkZGVkICYmIHRoaXMucmVjaXBlQWRkZWRUb2FzdFRleHQgJiYgdGhpcy5yZWNpcGVBZGRlZFRvYXN0VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuaW5mbyh0aGlzLnJlY2lwZUFkZGVkVG9hc3RUZXh0LCBudWxsLCB7IGNsb3NlQnV0dG9uOiB0cnVlLCBwcm9ncmVzc0JhcjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yZWNpcGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25LTygpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9jYWNoZWQtcmVjaXBlJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNpcGUpKTtcbiAgICB0aGlzLnJlY2lwZUVycm9yLmVtaXQoKTtcbiAgfVxuXG4gIC8vIElmIHRoZSByZWNpcGUgaXMgYWxyZWFkeSBpbiBiYXNrZXQsIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIGd1ZXN0cyAoPSBhcHBlbmQgcmVjaXBlIHRvIGxpc3QgYWdhaW4pXG4gIHVwZGF0ZUd1ZXN0cygpIHtcbiAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgIGlmIChyZWNpcGVJc0luTGlzdCkge1xuICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3QodGhpcy5yZWNpcGUuaWQsIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCB0aGlzLmV2ZW50VHJhY2UoKSkuc3Vic2NyaWJlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNZWFuIHdlIHNlbmQgYW4gZXZlbnQgZXZlbiBpZiByZWNlaXBlIGlzIG5vdCBpbiBiYXNrZXRcbiAgICAgICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9DSEFOR0VHVUVTVFMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkLmVtaXQoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICB0aGlzLnNlbmRFdmVudCh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUkVDSVBFX1BSSU5UKTtcbiAgICB3aW5kb3cucHJpbnQoKTtcbiAgfVxuXG4gIHRvZ2dsZUFkZG9uKCl7XG4gICAgdGhpcy5zaG93RGV0YWlsID0gICF0aGlzLnNob3dEZXRhaWw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlSGVscGVyKCkge1xuICAgIHRoaXMucmVjaXBlU2VydmljZS50b2dnbGVIZWxwZXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVCdXR0b25Mb2FkZXIodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZEJ1dHRvbkxvYWRpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93RGV0YWlsIGVsc2UgYWRkb25cIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNcIiAjbWFpbkNvbnRhaW5lciA+XG4gIDwhLS0gSEVBREVSIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faGVhZGVyXCI+XG4gICAgPCEtLSBCT09LTUFSSyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm9va21hcmtcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCIhaXNNb2JpbGUgZWxzZSBzdGFtcFwiIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMtYm9va21hcmsuc3ZnXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI3N0YW1wPlxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMtc3RhbXAuc3ZnXCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gVElUTEUgLSBERVNLVE9QIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNb2JpbGUgfHwgdGl0bGVJbkhlYWRlclwiPlxuICAgICAgICB7e3JlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBIRUFERVIgTElOSyAtLT5cbiAgICA8YSBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2hlYWRlcl9fbGlua1wiIFtocmVmXT1cImNvbnRleHRTZXJ2aWNlLm1pYW0ucm91dGVyLmNhdGFsb2dcIj5cbiAgICAgIFZvaXIgcGx1cyBkJ2lkw6llcyByZXBhc1xuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRhaW5lclwiPlxuICAgIDwhLS0gTEVGVCBQQVJUIChUT1AgUEFSVCBPTiBNT0JJTEUpIC0tPlxuICAgIDxkaXYgI3RvcENvbnRhaW5lckltZyBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3N1bW1hcnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdW1tYXJ5X19jb250YWluZXJcIj5cbiAgICAgICAgPCEtLSBTUE9OU09SIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fc3BvbnNvclwiPlxuICAgICAgICAgIDxuZy1taWFtLWFkZG9uLWxpbmsgKm5nSWY9XCJyZWNpcGU/LnNwb25zb3JzPy5sZW5ndGggPiAwIHx8IHJlY2lwZS5pbmZvcm1hdGlvbmFsU2VudGVuY2VcIlxuICAgICAgICAgICAgW3JlY2lwZV09J3JlY2lwZScgKHNob3dBZGRvbik9J3RvZ2dsZUFkZG9uKCknPjwvbmctbWlhbS1hZGRvbi1saW5rPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBQSUNUVVJFIC8gVklERU8gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19waWN0dXJlXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1ZpZGVvXCJcbiAgICAgICAgICAgIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzcG9uc29yJzogcmVjaXBlPy5zcG9uc29ycz8ubGVuZ3RoID4gMCwgJ3RhZ3MnOiBkaXNwbGF5VGFncyAmJiByZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGEubGVuZ3RoID4gMCB9XCI+XG4gICAgICAgICAgPHlvdXR1YmUtcGxheWVyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dWaWRlbyAmJiBwbGF5ZXJXaWR0aFwiXG4gICAgICAgICAgICBbdmlkZW9JZF09XCJyZWNpcGUudmlkZW9JZFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwicGxheWVyV2lkdGhcIlxuICAgICAgICAgICAgW2hlaWdodF09XCJwbGF5ZXJIZWlnaHRcIlxuICAgICAgICAgID48L3lvdXR1YmUtcGxheWVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBBQ1RJT05TIElDT05TIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uYmFyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbmJhcl9fZ3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb24gbGlrZVwiXG4gICAgICAgICAgICAgIFtyZWNpcGVdPSdyZWNpcGUnIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCI+XG4gICAgICAgICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIChjbGljayk9XCJwcmludCgpXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uIHByaW50XCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiXG4gICAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1wcmltYXJ5KScgW2ljb25OYW1lXT1cImljb24uUHJpbnRcIj5cbiAgICAgICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25iYXJfX2dyb3VwXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uc19faWNvbiBoZWxwXCIgKGNsaWNrKT1cInRvZ2dsZUhlbHBlcigpXCIgW3dpZHRoXT1cIjQwXCIgW2hlaWdodF09XCI0MFwiXG4gICAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ncmV5MDIpJyBzZWNvbmRhcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ncmV5MDcpJyBbaWNvbk5hbWVdPVwiaWNvbi5IZWxwXCI+XG4gICAgICAgICAgICA8L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVElNRVMsIERJRkZJQ1VMVFkgJiBUQUdTIC0gREVTS1RPUCAtLT5cbiAgICAgICAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5mb3NcbiAgICAgICAgICAqbmdJZj1cIiFpc01vYmlsZVwiIFtyZWNpcGVdPVwicmVjaXBlXCIgW2Rpc3BsYXlUYWdzXT1cImRpc3BsYXlUYWdzXCIgW2Rpc3BsYXlUYWdzSWNvbnNdPVwiZGlzcGxheVRhZ3NJY29uc1wiIFtyZWR1Y2VkXT1cImNvb2tpbmdUaW1lQXNQcmltYXJ5SW5mb1wiPlxuICAgICAgICA8L25nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5mb3M+XG4gICAgICAgIDwhLS0gU1RFUFMgV0hFTiBRVUFSVEVSIERJU1BMQVkgLS0+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzICpuZ0lmPVwiIWlzTW9iaWxlICYmIHN0ZXBzT25MZWZ0U2lkZVwiIFtyZWNpcGVdPVwicmVjaXBlXCI+PC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzPlxuXG4gICAgICAgIDwhLS0gUFJJQ0UgJiBQUklNQVJZIENUQSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbl9fY29udGFpbmVyXCI+XG4gICAgICAgICAgPCEtLSBQUklDRSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcHJpY2VcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlQcmljaW5nXCIgW3JlY2lwZV09XCJyZWNpcGVcIiBbc2VydmVzXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIiBbZ3Vlc3RzVGV4dF09XCJwcmljaW5nR3Vlc3RzVGV4dFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUFJJTUFSWSBDVEEgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByZXZpZXdBbGxvd2VkXCIgIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWRkYmFza2V0XCIgKGNsaWNrKT1cImNsaWNrUHJpbWFyeSgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luLWJhc2tldCc6IChncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYyksICdsb2FkaW5nJzogYWRkQnV0dG9uTG9hZGluZ31cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYWRkQnV0dG9uTG9hZGluZyBlbHNlIGFkZExvYWRlclwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWRkYmFza2V0X19jdGFcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge3soZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpID8gJ1ZvaXIgbGVzIHByb2R1aXRzJyA6ICdBam91dGVyIGxlcyBpbmdyw6lkaWVudHMnfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKVwiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9JyNmZmYnXG4gICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uQ2FydFwiPlxuICAgICAgICAgICAgICA8L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhZGRMb2FkZXI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWxvYWRlcj48L25nLW1pYW0tbG9hZGVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUklHSFQgUEFSVCAoQk9UVE9NIFBBUlQgT04gTU9CSUxFKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGVudFwiIGlkPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGVudFwiPlxuICAgICAgPCEtLSBUSVRMRSAtIE1PQklMRSAtLT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc01vYmlsZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdGl0bGVcIiBpZD1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlXCI+XG4gICAgICAgICAge3tyZWNpcGU/LmF0dHJpYnV0ZXNbJ3RpdGxlJ119fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGU/LmF0dHJpYnV0ZXMuZGVzY3JpcHRpb25cIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnRfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgIHt7IHJlY2lwZT8uYXR0cmlidXRlcy5kZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFRJTUVTLCBESUZGSUNVTFRZICYgVEFHUyAtIE1PQklMRSAtLT5cbiAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLWluZm9zXG4gICAgICAgICpuZ0lmPVwiaXNNb2JpbGVcIiBbcmVjaXBlXT1cInJlY2lwZVwiIFtkaXNwbGF5VGFnc109XCJkaXNwbGF5VGFnc1wiIFtkaXNwbGF5VGFnc0ljb25zXT1cImRpc3BsYXlUYWdzSWNvbnNcIiBbcmVkdWNlZF09XCJjb29raW5nVGltZUFzUHJpbWFyeUluZm9cIj5cbiAgICAgIDwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmZvcz5cbiAgICAgIDwhLS0gSU5HUkVESUVOVFMgLS0+XG4gICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmdyZWRpZW50cyBbcmVjaXBlXT1cInJlY2lwZVwiIFtpbmdyZWRpZW50c1BpY3R1cmVzXT1cImluZ3JlZGllbnRzUGljdHVyZXNcIiAoZ3Vlc3RzVXBkYXRlZCk9XCJ1cGRhdGVHdWVzdHMoKVwiPjwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmdyZWRpZW50cz5cbiAgICAgIDwhLS0gU1RFUFMgLS0+XG4gICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1zdGVwc1xuICAgICAgICAqbmdJZj1cIiEoIWlzTW9iaWxlICYmIHN0ZXBzT25MZWZ0U2lkZSlcIiBbcmVjaXBlXT1cInJlY2lwZVwiPlxuICAgICAgPC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzPlxuICAgICAgPCEtLSBMSU5LIElNQUdFIC0tPlxuICAgICAgPGEgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jb250ZW50X19pbWFnZVwiIFtocmVmXT1cImNvbnRleHRTZXJ2aWNlLm1pYW0ucm91dGVyLmNhdGFsb2dcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIm1vcmVSZWNpcGVzSW1hZ2VVUkxcIj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gQURET04gLS0+XG48bmctdGVtcGxhdGUgI2FkZG9uPlxuICA8bmctbWlhbS1yZWNpcGUtYWRkb24gW3JlY2lwZV09J3JlY2lwZScgKGhpZGVBZGRvbik9XCJ0b2dnbGVBZGRvbigpXCI+PC9uZy1taWFtLXJlY2lwZS1hZGRvbj5cbjwvbmctdGVtcGxhdGU+Il19
514
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUVaLFNBQVMsRUFDVCxVQUFVLEVBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUosT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2hCcEYsMEJBQ0E7OztJQUNFLDBCQUNGOzs7SUFJQSw0QkFDRTtJQUFBLFlBQ0Y7SUFBQSxpQkFBTzs7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QUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBR3VCLGVBQWU7a0JBQTVDLFNBQVM7bUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBQb2ludE9mU2FsZXNTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVG9hc3RyU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ3VzdG9tUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcmVjaXBlOiBSZWNpcGU7XG4gIEBJbnB1dCgpIHByZXZpZXdBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgaW5ncmVkaWVudHNQaWN0dXJlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JjZURpc3BsYXlUYWdzOyAvLyBPdmVycmlkZSBnbG9iYWwgc2V0dGluZyBpZiBuZWNlc2FyeVxuICBASW5wdXQoKSBkaXNwbGF5VGFnc0ljb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUFkZGVkT25QaWN0dXJlID0gdHJ1ZTtcbiAgQElucHV0KCkgc3RlcHNPbkxlZnRTaWRlID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGRldGFpbCBpbiA0IHF1YXJ0ZXJzIGluc3RlYWQgb2YgMiBoYWx2ZXNcbiAgQElucHV0KCkgY29va2luZ1RpbWVBc1ByaW1hcnlJbmZvID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGNvb2tpbmcgdGltZSBuZXh0IHRvIHRvdGFsIHRpbWVcbiAgQElucHV0KCkgbW9yZVJlY2lwZXNJbWFnZVVSTDogc3RyaW5nO1xuICBASW5wdXQoKSBwcmljaW5nR3Vlc3RzVGV4dCA9ICdwYXIgcGVyc29ubmUnO1xuICBASW5wdXQoKSByZWNpcGVBZGRlZFRvYXN0VGV4dDogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVjaXBlQWRkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlY2lwZUVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKCd0b3BDb250YWluZXJJbWcnKSB0b3BDb250YWluZXJJbWc6IEVsZW1lbnRSZWY7XG5cbiAgdGFiID0gMDtcbiAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgZGlzcGxheVRhZ3MgPSBmYWxzZTtcbiAgc2hvd0RldGFpbCA9IHRydWU7XG4gIGljb24gPSBJY29uO1xuICBwbGF5ZXJXaWR0aDtcbiAgcGxheWVySGVpZ2h0O1xuICBzaG93VmlkZW87XG4gIGFkZEJ1dHRvbkxvYWRpbmcgPSBmYWxzZTtcbiAgdGl0bGVJbkhlYWRlciA9IGZhbHNlO1xuICB0aXRsZTogSFRNTEVsZW1lbnQ7XG4gIGNvbnRlbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UubWlhbS51c2VyLmlzU21hbGxTY3JlZW4kLnN1YnNjcmliZShpc1NtYWxsID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGlzU21hbGw7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGUgJiYgY2hhbmdlc1sncmVjaXBlJ10pIHtcbiAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9ESVNQTEFZLCB0aGlzLm9yaWdpblRyYWNlLm9yaWdpblBhdGgsIHRoaXMucHJvcHMoKSk7XG4gICAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcmNlRGlzcGxheVRhZ3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmZvcmNlRGlzcGxheVRhZ3MgIT09IHRoaXMuZGlzcGxheVRhZ3MpIHtcbiAgICAgIHRoaXMuZGlzcGxheVRhZ3MgPSB0aGlzLmZvcmNlRGlzcGxheVRhZ3M7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5VGFncyA9IHRoaXMuY29udGV4dFNlcnZpY2UudGFnc09uUmVjaXBlc0VuYWJsZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0ZXBzT25MZWZ0U2lkZSkge1xuICAgICAgdGhpcy5jb29raW5nVGltZUFzUHJpbWFyeUluZm8gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlOyAvLyBmb3JjZSByZWxvYWQgdmlkZW8gcGxheWVyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlPy52aWRlb0lkO1xuICAgIGlmICh0aGlzLnNob3dWaWRlbykge1xuICAgICAgdGhpcy5zZXR1cFlvdXR1YmVQbGF5ZXIoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluaXRTY3JvbGxMaXN0ZW5lck9uVGl0bGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldHVwWW91dHViZVBsYXllcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh3aW5kb3cuWVQ/LlBsYXllcikge1xuICAgICAgICB0aGlzLnBsYXllcldpZHRoID0gdGhpcy50b3BDb250YWluZXJJbWc/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLnBsYXllckhlaWdodCA9ICBNYXRoLm1pbih3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjQ4LCB0aGlzLnBsYXllcldpZHRoICogMzkwIC8gNjQwKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0dXBZb3V0dWJlUGxheWVyKCk7XG4gICAgICB9XG4gICAgfSwgNTApO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2RldGFpbCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudFByb3BzKCk6IEN1c3RvbVByb3BlcnRpZXMge1xuICAgIHJldHVybiB7IHJlY2lwZV9pZDogdGhpcy5yZWNpcGUuaWQgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0IHRoZSBsaXN0ZW5lciBvbiBzY3JvbGwgc28gdGhlIG1vZGFsIGNhbiBoaWRlIHRoZSBjbG9zZSBpY29uXG4gICAqL1xuICBpbml0U2Nyb2xsTGlzdGVuZXJPblRpdGxlKCkge1xuICAgIGlmICghdGhpcy50aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgIXRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgJiYgdGhpcy5jb250ZW50ICYmIHRoaXMudGl0bGUpIHtcbiAgICAgIC8vIEZvciBtb3JlIHByZWNpc2lvbiBvbiB0aXRsZSBzY3JvbGwgZGV0ZWN0aW9uLCB3ZSB3YW50IHRvIHRyaWdnZXIgYW4gZXZlbnQgZWFjaCB0aW1lIHRoZSB1c2VyIHNjcm9sbHMgNSUgb2YgdGhlIGNvbnRlbnRcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IFsuLi5BcnJheSgyMCkua2V5cygpXS5tYXAoeCA9PiB4IC8gMjApXG4gICAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgdGl0bGUgZW50ZXJzL2xlYXZlcyB0aGUgdmlld3BvcnRcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHsgdGhpcy50b2dnbGVUaXRsZUluSGVhZGVyKCk7IH0sXG4gICAgICB7IHRocmVzaG9sZCB9KTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRpdGxlSW5IZWFkZXIoKSB7XG4gICAgdGhpcy50aXRsZUluSGVhZGVyID0gdGhpcy50aXRsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPD0gNDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByZWNpcGUgdG8gbGlzdCBvbiBwcmltYXJ5IGJ1dHRvbiBjbGljayBhbmQgZW1pdCB0cnVlIGlmIHRoZSByZWNpcGUgaXMgYWRkZWQsIGZhbHNlIGlmIHJlY2lwZSBpcyBub3QgYWRkZWRcbiAgICogc28gbGliIHVzZXJzIGNhbiBkZWNpZGUgdGhhdCBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdChmYWxzZSkgcmVtb3ZlcyB0aGUgcmVjaXBlIGZvciBleGFtcGxlXG4gICAqL1xuICBjbGlja1ByaW1hcnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkZEJ1dHRvbkxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZSgpO1xuICAgICAgICAgIHRoaXMucHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoIXJlY2lwZUlzSW5MaXN0KTsgLy8gIXJlY2lwZUlzSW5MaXN0ID0gYWRkIGFjdGlvbiwgc28gd2UgZW1pdCB0cnVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlY2lwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcih0cnVlKTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKS5waXBlKHRha2UoMSkpXG4gICAgXSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zdCBpc0hvb2tPayA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9va0NhbGxiYWNrKHJlc1swXSwgcmVzWzFdKTtcbiAgICAgIGlmIChpc0hvb2tPaykge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbk9LKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbktPKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25PSygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVXYXNBZGRlZCA9ICFyZWNpcGVJc0luTGlzdDtcbiAgICAgICAgaWYgKHJlY2lwZVdhc0FkZGVkKXtcbiAgICAgICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHRoaXMucmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX0FEREVEKTtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdCh0aGlzLnJlY2lwZS5pZCwgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsIHRoaXMuZXZlbnRUcmFjZSgpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUobCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uTG9hZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgaWYgKHJlY2lwZVdhc0FkZGVkICYmIHRoaXMucmVjaXBlQWRkZWRUb2FzdFRleHQgJiYgdGhpcy5yZWNpcGVBZGRlZFRvYXN0VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuaW5mbyh0aGlzLnJlY2lwZUFkZGVkVG9hc3RUZXh0LCBudWxsLCB7IGNsb3NlQnV0dG9uOiB0cnVlLCBwcm9ncmVzc0JhcjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yZWNpcGVBZGRlZC5lbWl0KCk7XG4gIH1cbiAgYWRkUmVjaXBlQWN0aW9uS08oKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vY2FjaGVkLXJlY2lwZScsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjaXBlKSk7XG4gICAgdGhpcy5yZWNpcGVFcnJvci5lbWl0KCk7XG4gIH1cblxuICAvLyBJZiB0aGUgcmVjaXBlIGlzIGFscmVhZHkgaW4gYmFza2V0LCB1cGRhdGUgdGhlIG51bWJlciBvZiBndWVzdHMgKD0gYXBwZW5kIHJlY2lwZSB0byBsaXN0IGFnYWluKVxuICB1cGRhdGVHdWVzdHMoKSB7XG4gICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QodGhpcy5yZWNpcGUuaWQpLnN1YnNjcmliZShyZWNpcGVJc0luTGlzdCA9PiB7XG4gICAgICBpZiAocmVjaXBlSXNJbkxpc3QpIHtcbiAgICAgICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHRoaXMucmVjaXBlLmlkLCB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgdGhpcy5ldmVudFRyYWNlKCkpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTWVhbiB3ZSBzZW5kIGFuIGV2ZW50IGV2ZW4gaWYgcmVjZWlwZSBpcyBub3QgaW4gYmFza2V0XG4gICAgICAgIHRoaXMuc2VuZEV2ZW50KHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9SRUNJUEVfQ0hBTkdFR1VFU1RTKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZGlzcGxheWVkUmVjaXBlQ2hhbmdlZC5lbWl0KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9QUklOVCk7XG4gICAgd2luZG93LnByaW50KCk7XG4gIH1cblxuICB0b2dnbGVBZGRvbigpe1xuICAgIHRoaXMuc2hvd0RldGFpbCA9ICAhdGhpcy5zaG93RGV0YWlsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZUhlbHBlcigpIHtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UudG9nZ2xlSGVscGVyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQnV0dG9uTG9hZGVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hZGRCdXR0b25Mb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd0RldGFpbCBlbHNlIGFkZG9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzXCIgI21haW5Db250YWluZXIgPlxuICA8IS0tIEhFQURFUiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2hlYWRlclwiPlxuICAgIDwhLS0gQk9PS01BUksgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2Jvb2ttYXJrXCI+XG4gICAgICA8aW1nICpuZ0lmPVwiIWlzTW9iaWxlIGVsc2Ugc3RhbXBcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL3JlY2lwZS1kZXRhaWxzL3JlY2lwZS1kZXRhaWxzLWJvb2ttYXJrLnN2Z1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICNzdGFtcD5cbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL3JlY2lwZS1kZXRhaWxzL3JlY2lwZS1kZXRhaWxzLXN0YW1wLnN2Z1wiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFRJVExFIC0gREVTS1RPUCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdGl0bGVcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTW9iaWxlIHx8IHRpdGxlSW5IZWFkZXJcIj5cbiAgICAgICAge3tyZWNpcGU/LmF0dHJpYnV0ZXNbJ3RpdGxlJ119fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSEVBREVSIExJTksgLS0+XG4gICAgPGEgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19oZWFkZXJfX2xpbmtcIiBbaHJlZl09XCJjb250ZXh0U2VydmljZS5taWFtLnJvdXRlci5jYXRhbG9nXCI+XG4gICAgICBWb2lyIHBsdXMgZCdpZMOpZXMgcmVwYXNcbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jb250YWluZXJcIj5cbiAgICA8IS0tIExFRlQgUEFSVCAoVE9QIFBBUlQgT04gTU9CSUxFKSAtLT5cbiAgICA8ZGl2ICN0b3BDb250YWluZXJJbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdW1tYXJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fc3VtbWFyeV9fY29udGFpbmVyXCI+XG4gICAgICAgIDwhLS0gU1BPTlNPUiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3Nwb25zb3JcIj5cbiAgICAgICAgICA8bmctbWlhbS1hZGRvbi1saW5rICpuZ0lmPVwicmVjaXBlPy5zcG9uc29ycz8ubGVuZ3RoID4gMCB8fCByZWNpcGUuaW5mb3JtYXRpb25hbFNlbnRlbmNlXCJcbiAgICAgICAgICAgIFtyZWNpcGVdPSdyZWNpcGUnIChzaG93QWRkb24pPSd0b2dnbGVBZGRvbigpJz48L25nLW1pYW0tYWRkb24tbGluaz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gUElDVFVSRSAvIFZJREVPIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICpuZ0lmPVwiIXNob3dWaWRlb1wiXG4gICAgICAgICAgICBbc3JjXT1cInJlY2lwZT8uYXR0cmlidXRlc1snbWVkaWEtdXJsJ11cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc3BvbnNvcic6IHJlY2lwZT8uc3BvbnNvcnM/Lmxlbmd0aCA+IDAsICd0YWdzJzogZGlzcGxheVRhZ3MgJiYgcmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncy5kYXRhLmxlbmd0aCA+IDAgfVwiPlxuICAgICAgICAgIDx5b3V0dWJlLXBsYXllclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93VmlkZW8gJiYgcGxheWVyV2lkdGhcIlxuICAgICAgICAgICAgW3ZpZGVvSWRdPVwicmVjaXBlLnZpZGVvSWRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cInBsYXllcldpZHRoXCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwicGxheWVySGVpZ2h0XCJcbiAgICAgICAgICA+PC95b3V0dWJlLXBsYXllcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQUNUSU9OUyBJQ09OUyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbmJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25iYXJfX2dyb3VwXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1saWtlLWJ1dHRvbiAqbmdJZj1cInVzZXJTZXJ2aWNlLmlzTG9nZ2VkJCB8IGFzeW5jXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uIGxpa2VcIlxuICAgICAgICAgICAgICBbcmVjaXBlXT0ncmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWxpa2UtYnV0dG9uPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiAoY2xpY2spPVwicHJpbnQoKVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uc19faWNvbiBwcmludFwiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIlxuICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItcHJpbWFyeSknIFtpY29uTmFtZV09XCJpY29uLlByaW50XCI+XG4gICAgICAgICAgICA8L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uYmFyX19ncm91cFwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb24gaGVscFwiIChjbGljayk9XCJ0b2dnbGVIZWxwZXIoKVwiIFt3aWR0aF09XCI0MFwiIFtoZWlnaHRdPVwiNDBcIlxuICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTAyKScgc2Vjb25kYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTA3KScgW2ljb25OYW1lXT1cImljb24uSGVscFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFRJTUVTLCBESUZGSUNVTFRZICYgVEFHUyAtIERFU0tUT1AgLS0+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLWluZm9zXG4gICAgICAgICAgKm5nSWY9XCIhaXNNb2JpbGVcIiBbcmVjaXBlXT1cInJlY2lwZVwiIFtkaXNwbGF5VGFnc109XCJkaXNwbGF5VGFnc1wiIFtkaXNwbGF5VGFnc0ljb25zXT1cImRpc3BsYXlUYWdzSWNvbnNcIiBbcmVkdWNlZF09XCJjb29raW5nVGltZUFzUHJpbWFyeUluZm9cIj5cbiAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLWluZm9zPlxuICAgICAgICA8IS0tIFNURVBTIFdIRU4gUVVBUlRFUiBESVNQTEFZIC0tPlxuICAgICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1zdGVwcyAqbmdJZj1cIiFpc01vYmlsZSAmJiBzdGVwc09uTGVmdFNpZGVcIiBbcmVjaXBlXT1cInJlY2lwZVwiPjwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1zdGVwcz5cblxuICAgICAgICA8IS0tIFBSSUNFICYgUFJJTUFSWSBDVEEgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25fX2NvbnRhaW5lclwiPlxuICAgICAgICAgIDwhLS0gUFJJQ0UgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3ByaWNlXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1yZWNpcGUtcHJpY2luZ1xuICAgICAgICAgICAgICAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5UHJpY2luZ1wiIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCIgW2d1ZXN0c1RleHRdPVwicHJpY2luZ0d1ZXN0c1RleHRcIj5cbiAgICAgICAgICAgIDwvbmctbWlhbS1yZWNpcGUtcHJpY2luZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFBSSU1BUlkgQ1RBIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcmV2aWV3QWxsb3dlZFwiICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FkZGJhc2tldFwiIChjbGljayk9XCJjbGlja1ByaW1hcnkoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbi1iYXNrZXQnOiAoZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpLCAnbG9hZGluZyc6IGFkZEJ1dHRvbkxvYWRpbmd9XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFkZEJ1dHRvbkxvYWRpbmcgZWxzZSBhZGRMb2FkZXJcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FkZGJhc2tldF9fY3RhXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7KGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSA/ICdWb2lyIGxlcyBwcm9kdWl0cycgOiAnQWpvdXRlciBsZXMgaW5ncsOpZGllbnRzJ319XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIShncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYylcIiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgcHJpbWFyeUNvbG9yPScjZmZmJ1xuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkNhcnRcIj5cbiAgICAgICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkTG9hZGVyPlxuICAgICAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJJR0hUIFBBUlQgKEJPVFRPTSBQQVJUIE9OIE1PQklMRSkgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnRcIiBpZD1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnRcIj5cbiAgICAgIDwhLS0gVElUTEUgLSBNT0JJTEUgLS0+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlXCIgaWQ9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZVwiPlxuICAgICAgICAgIHt7cmVjaXBlPy5hdHRyaWJ1dGVzWyd0aXRsZSddfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gREVTQ1JJUFRJT04gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlPy5hdHRyaWJ1dGVzLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jb250ZW50X19kZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyByZWNpcGU/LmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBUSU1FUywgRElGRklDVUxUWSAmIFRBR1MgLSBNT0JJTEUgLS0+XG4gICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmZvc1xuICAgICAgICAqbmdJZj1cImlzTW9iaWxlXCIgW3JlY2lwZV09XCJyZWNpcGVcIiBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIiBbZGlzcGxheVRhZ3NJY29uc109XCJkaXNwbGF5VGFnc0ljb25zXCIgW3JlZHVjZWRdPVwiY29va2luZ1RpbWVBc1ByaW1hcnlJbmZvXCI+XG4gICAgICA8L25nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5mb3M+XG4gICAgICA8IS0tIElOR1JFRElFTlRTIC0tPlxuICAgICAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5ncmVkaWVudHMgW3JlY2lwZV09XCJyZWNpcGVcIiBbaW5ncmVkaWVudHNQaWN0dXJlc109XCJpbmdyZWRpZW50c1BpY3R1cmVzXCIgKGd1ZXN0c1VwZGF0ZWQpPVwidXBkYXRlR3Vlc3RzKClcIj48L25nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5ncmVkaWVudHM+XG4gICAgICA8IS0tIFNURVBTIC0tPlxuICAgICAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHMtc3RlcHNcbiAgICAgICAgKm5nSWY9XCIhKCFpc01vYmlsZSAmJiBzdGVwc09uTGVmdFNpZGUpXCIgW3JlY2lwZV09XCJyZWNpcGVcIj5cbiAgICAgIDwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1zdGVwcz5cbiAgICAgIDwhLS0gTElOSyBJTUFHRSAtLT5cbiAgICAgIDxhIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGVudF9faW1hZ2VcIiBbaHJlZl09XCJjb250ZXh0U2VydmljZS5taWFtLnJvdXRlci5jYXRhbG9nXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJtb3JlUmVjaXBlc0ltYWdlVVJMXCI+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIEFERE9OIC0tPlxuPG5nLXRlbXBsYXRlICNhZGRvbj5cbiAgPG5nLW1pYW0tcmVjaXBlLWFkZG9uIFtyZWNpcGVdPSdyZWNpcGUnIChoaWRlQWRkb24pPVwidG9nZ2xlQWRkb24oKVwiPjwvbmctbWlhbS1yZWNpcGUtYWRkb24+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -152,15 +152,12 @@ export class RecipeTagsComponent extends EventTracerComponent {
152
152
  return bpl.entries.found.find(entry => entry.selectedItem.attributes['ext-id'] === this.extId);
153
153
  });
154
154
  this.cdr.detectChanges();
155
+ this.detectWrappedTags(this.tags);
155
156
  }
156
157
  }));
157
158
  }
158
159
  this.cdr.detectChanges();
159
160
  }
160
- ngAfterViewInit() {
161
- // Call each time list of recipe-tags change
162
- this.subscriptions.push(this.tags.changes.subscribe(queryList => this.detectWrappedTags(queryList)));
163
- }
164
161
  ngOnDestroy() {
165
162
  this.subscriptions.forEach(sub => sub.unsubscribe());
166
163
  }
@@ -235,4 +232,4 @@ RecipeTagsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeTagsComponent,
235
232
  type: ViewChildren,
236
233
  args: ['tag']
237
234
  }] }); })();
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLXRhZ3MvcmVjaXBlLXRhZ3MuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtdGFncy9yZWNpcGUtdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUM3RCxLQUFLLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFDdEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7OztJQ1IvRCxtQ0FDRTtJQUFBLHdDQUNxRDtJQURzQiwwUUFBcUM7SUFDMUUsaUJBQWU7SUFDckQsZ0NBQWlGO0lBQXRDLG9RQUFxQztJQUFDLFlBQW1DOztJQUFBLGlCQUFPO0lBQzdILGlCQUFNOzs7O0lBSGdELGVBQXNCO0lBQXRCLDJDQUFzQjtJQUVPLGVBQW1DO0lBQW5DLGtFQUFtQzs7Ozs7OztJQUwxSCw4QkFDRTtJQUFBLDhCQUNFO0lBQUEseUZBQ0U7SUFJSixpQkFBTTtJQUNOLDhCQUNFO0lBQUEsK0JBQ0U7SUFENEMsd01BQXNCO0lBQ2xFLFlBQStDO0lBQUEs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XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LCBJbnB1dCwgVmlld0NoaWxkcmVuLCBFbGVtZW50UmVmLCBRdWVyeUxpc3QsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgZ3JvdXBCeSBmcm9tICdsb2Rhc2gtZXMvZ3JvdXBCeSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLXRhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLXRhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtdGFncy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVUYWdzQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGV4dElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlY2lwZURldGFpbFByZXZpZXdBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVkdWNlID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGRyZW4oJ3RhZycpIHRhZ3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBpY29uID0gSWNvbjtcbiAgcmVjaXBlUHJldmlld0xpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdO1xuICB3cmFwcGVkSXRlbXNDb3VudDogbnVtYmVyO1xuICByb3dDb3VudDogbnVtYmVyO1xuICBsYXN0SXRlbUluZGV4T2ZGaXJzdFJvdzogbnVtYmVyO1xuICBpc0xpc3RPcGVuOiBib29sZWFuO1xuICBtb2RhbFRpdGxlOiBzdHJpbmc7XG4gIG1vZGFsSXNPcGVuZWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0ZXNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHNpbXBsZUNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2V4dElkJykgJiYgc2ltcGxlQ2hhbmdlcy5leHRJZC5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRTZXJ2aWNlLmJhc2tldFByZXZpZXckLnN1YnNjcmliZShiYXNrZXRQcmV2aWV3TGluZXMgPT4ge1xuICAgICAgICBpZiAoYmFza2V0UHJldmlld0xpbmVzKSB7XG4gICAgICAgICAgLy8gd2UgZ2V0IHRoZSBsaXN0IG9mIGJhc2tldFByZXZpZXdMaW5lcyAoYXQgcmVjaXBlIGxldmVsKSB3aXRjaCBoYXZlIGl0ZW1zIGxpbmsgd2l0aCBnaXZlbiBleHRJZFxuICAgICAgICAgIHRoaXMucmVjaXBlUHJldmlld0xpbmVzID0gYmFza2V0UHJldmlld0xpbmVzLmZpbHRlcihicGwgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJwbC5lbnRyaWVzLmZvdW5kLmZpbmQoZW50cnkgPT4gZW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddID09PSB0aGlzLmV4dElkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBlYWNoIHRpbWUgbGlzdCBvZiByZWNpcGUtdGFncyBjaGFuZ2VcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRhZ3MuY2hhbmdlcy5zdWJzY3JpYmUocXVlcnlMaXN0ID0+IHRoaXMuZGV0ZWN0V3JhcHBlZFRhZ3MocXVlcnlMaXN0KSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVjdCBhbmQgY291bnQgd3JhcHBlZCBpdGVtIGJlbG93IHRoZSBmaXN0IHJvd1xuICAgKiBpdGVtcyBhbmQgY29udGFpbmVyIGNhbiBoYXZlIHZhcmlvdXMgd2lkdGggc28gcm93IG51bWJlciBjYW4gZGlmZmVyXG4gICAqIGJhc2Ugb24gYWJzb2x1dGUgcG9zaXRpb24gaW4gd2luZG93IHdlIGFyZSBhYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRjaCBiZWxvbmdzXG4gICAqIHRvIHRoZSBmaXJzdCByb3cgYW5kIG90aGVyIGFuZCB0aGVuIGNvdW50IGhpZGRlbiBlbGVtZW50cyBhbmQgbnVtYmVyIG9mIHJvd3NcbiAgICogQHBhcmFtIHRhZ3MgIFF1ZXJ5TGlzdDxFbGVtZW50UmVmPlxuICAgKi9cbiAgZGV0ZWN0V3JhcHBlZFRhZ3ModGFnczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSB7XG5cbiAgICBpZiAodGFncy5sZW5ndGggPT09IDApeyByZXR1cm47IH1cblxuICAgIC8vIGdldCBmb3IgZWFjaCBlbGVtZW50IGhpcyBhYnNvbHV0ZSBwb3NpdGlvbiBmcm9tIHRvcCBvZiB3aW5kb3dcbiAgICBjb25zdCB0YWdzUG9zaXRpb24gPSB0YWdzLm1hcCh0YWcgPT4gdGFnLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgLy8gZ3JvdXAgYnkgdG9wICwgZWxlbWVudCB0aGF0IHNoYXJlIHRoZSBzYW1lIHRvcCBwb3NpdGlvbiBhcmUgaW4gdGhlIHNhbWUgbGluZVxuICAgIGNvbnN0IHRhZ3NHcm91cEJ5Um93ID0gZ3JvdXBCeSh0YWdzUG9zaXRpb24sICd0b3AnKTtcblxuICAgIC8vIGdldCBsaXN0IG9mIGRpc3RpbmN0IGhpZ2h0XG4gICAgY29uc3QgdGFnc0Rpc3RpbmN0SGlnaHQgPSBPYmplY3Qua2V5cyh0YWdzR3JvdXBCeVJvdyk7XG5cbiAgICB0aGlzLnJvd0NvdW50ID0gdGFnc0Rpc3RpbmN0SGlnaHQubGVuZ3RoO1xuXG4gICAgLy8gZ2V0IHNpemUgb2YgZmlyc3Qgcm93ICdsbCBoZWxwIHVzIHRvIGdldCBsYXN0IGl0ZW0gb2YgdGhpcyByb3dcbiAgICB0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ID0gdGFnc0dyb3VwQnlSb3dbdGFnc0Rpc3RpbmN0SGlnaHRbMF1dLmxlbmd0aCAtIDE7XG5cbiAgICAvLyB3cmFwcGVkIGl0ZW1zIGNvdW50IGlzIGxlbmd0aCAtIHRhZ3MgY291bnQgaW4gZmlyc3Qgcm93XG4gICAgdGhpcy53cmFwcGVkSXRlbXNDb3VudCA9IHRhZ3MudG9BcnJheSgpLmxlbmd0aCAtICh0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ICsgMSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlUmVjaXBlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbnRleHRlc2VydmljZS5taWFtLnJlY2lwZXMuZGlzcGxheShpZCwgdGhpcy5yZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCwgZmFsc2UsIHRoaXMuZXZlbnRUcmFjZSgpKTtcbiAgfVxuXG4gIHRvZ2dsZUxpc3QoKSB7XG4gICAgdGhpcy5pc0xpc3RPcGVuID0gIXRoaXMuaXNMaXN0T3BlbjtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVNb2RhbCgpIHtcbiAgICBpZiAoIXRoaXMubW9kYWxJc09wZW5lZCkge1xuICAgICAgdGhpcy5tb2RhbFRpdGxlID0gJ1V0aWxpc8OpIGRhbnMgJyArIHRoaXMucmVjaXBlUHJldmlld0xpbmVzLmxlbmd0aCArICcgcmVwYXMnO1xuICAgIH1cbiAgICB0aGlzLm1vZGFsSXNPcGVuZWQgPSAhdGhpcy5tb2RhbElzT3BlbmVkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWR1Y2UgZWxzZSByZWR1Y2VkXCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19jb250YWluZXJcIiAqbmdJZj1cInJlY2lwZVByZXZpZXdMaW5lcz8ubGVuZ3RoID4gMFwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0LnB4JzogaXNMaXN0T3BlbiA/IDMyICogcm93Q291bnQgOiAyNCAgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19jb250YWluZXJfX2xpc3RcIiA+XG4gICAgICA8ZGl2ICN0YWcgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19saXN0X19iYWRnZVwiICpuZ0Zvcj1cImxldCByZWNpcGVMaW5lIG9mIHJlY2lwZVByZXZpZXdMaW5lcywgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fYmFkZ2VfX2ljb25cIiBbaWNvbk5hbWVdPSdpY29uLk1lYWwnIChjbGljayk9J3RvZ2dsZVJlY2lwZShyZWNpcGVMaW5lLmlkKSdcbiAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJz48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdfX2JhZGdlX190ZXh0XCIgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJz57e3JlY2lwZUxpbmUudGl0bGUgfCBlbGxpcHNpcyA6IDZ9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydtaWFtLXJlY2lwZS10YWdzX19jb250YWluZXJfX3RvZ2dsZV9faGlkZGVuJzogIXJvd0NvdW50IHx8IHdyYXBwZWRJdGVtc0NvdW50ID09PSAwIH1cIiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fdG9nZ2xlXCIgPlxuICAgICAgPHNwYW4gIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fdG9nZ2xlX19vcGVuXCIgKGNsaWNrKT0ndG9nZ2xlTGlzdCgpJz5cbiAgICAgICAge3sgaXNMaXN0T3BlbiA/ICcgICcgOiAnKycgK3dyYXBwZWRJdGVtc0NvdW50fX08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX2xpZ25lXCI+PC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fdG9nZ2xlX19jbG9zZVwiIFtuZ1N0eWxlXT1cInsnb3BhY2l0eSc6IGlzTGlzdE9wZW4gPyAxIDogMH1cIiAoY2xpY2spPSd0b2dnbGVMaXN0KCknPiBcbiAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09J2ljb24uQ2hldnJvbkRvd24nIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3JlZHVjZWQ+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19yZWNpcGVzXCIgKm5nSWY9XCJyZWNpcGVQcmV2aWV3TGluZXM/Lmxlbmd0aCA+IDBcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgIDxzcGFuPnt7cmVjaXBlUHJldmlld0xpbmVzLmxlbmd0aH19IHJlcGFzPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8bmctbWlhbS1tb2RhbCBcbiAgICBbaXNBbmd1bGFyQ29tcG9uZW50XT1cInRydWVcIiBcbiAgICBbZXhwYW5kZWRdPVwibW9kYWxJc09wZW5lZFwiXG4gICAgW25vSGVhZGVyTW9kZV09XCJmYWxzZVwiIFxuICAgIFt0aXRsZV09XCJtb2RhbFRpdGxlXCJcbiAgICAoY2xvc2UpPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19tb2RhbFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fY29udGFpbmVyX19saXN0XCIgPlxuICAgICAgPGRpdiAjdGFnIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fbGlzdF9fYmFkZ2VcIiAqbmdGb3I9XCJsZXQgcmVjaXBlTGluZSBvZiByZWNpcGVQcmV2aWV3TGluZXMsIGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2JhZGdlX19pY29uXCIgW2ljb25OYW1lXT0naWNvbi5NZWFsJyAoY2xpY2spPSd0b2dnbGVSZWNpcGUocmVjaXBlTGluZS5pZCknXG4gICAgICAgICAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnX19iYWRnZV9fdGV4dFwiIChjbGljayk9J3RvZ2dsZVJlY2lwZShyZWNpcGVMaW5lLmlkKSc+e3tyZWNpcGVMaW5lLnRpdGxlfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1taWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLXRhZ3MvcmVjaXBlLXRhZ3MuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtdGFncy9yZWNpcGUtdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUM3RCxLQUFLLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFDdEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7OztJQ1IvRCxtQ0FDRTtJQUFBLHdDQUNxRDtJQURzQiwwUUFBcUM7SUFDMUUsaUJBQWU7SUFDckQsZ0NBQWlGO0lBQXRDLG9RQUFxQztJQUFDLFlBQW1DOztJQUFBLGlCQUFPO0lBQzdILGlCQUFNOzs7O0lBSGdELGVBQXNCO0lBQXRCLDJDQUFzQjtJQUVPLGVBQW1DO0lBQW5DLGtFQUFtQzs7Ozs7OztJQUwxSCw4QkFDRTtJQUFBLDhCQUNFO0lBQUEseUZBQ0U7SUFJSixpQkFBTTtJQUNOLDhCQUNFO0lBQUEsK0JBQ0U7SUFENEMsd01BQXNCO0lBQ2xFLFlBQStDO0lBQUEs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QUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztTQUMvRTtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7c0ZBaEdVLG1CQUFtQjt3REFBbkIsbUJBQW1COzs7Ozs7UUNyQmhDLHNGQUNFO1FBa0JGLHFIQUNFOzs7UUFwQlksa0NBQTRCLGlCQUFBOztrRERxQjdCLG1CQUFtQjtjQVAvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsV0FBVyxFQUFFLDhCQUE4QjtnQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs2SkFFVSxLQUFLO2tCQUFiLEtBQUs7WUFDRywwQkFBMEI7a0JBQWxDLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDZSxJQUFJO2tCQUF4QixZQUFZO21CQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgRWxlbWVudFJlZiwgUXVlcnlMaXN0LCBBZnRlclZpZXdJbml0LCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoLWVzL2dyb3VwQnknO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS10YWdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS10YWdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLXRhZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlVGFnc0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBleHRJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHJlZHVjZSA9IGZhbHNlO1xuICBAVmlld0NoaWxkcmVuKCd0YWcnKSB0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgaWNvbiA9IEljb247XG4gIHJlY2lwZVByZXZpZXdMaW5lczogQmFza2V0UHJldmlld0xpbmVbXTtcbiAgd3JhcHBlZEl0ZW1zQ291bnQ6IG51bWJlcjtcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgbGFzdEl0ZW1JbmRleE9mRmlyc3RSb3c6IG51bWJlcjtcbiAgaXNMaXN0T3BlbjogYm9vbGVhbjtcbiAgbW9kYWxUaXRsZTogc3RyaW5nO1xuICBtb2RhbElzT3BlbmVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dGVzZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChzaW1wbGVDaGFuZ2VzLmhhc093blByb3BlcnR5KCdleHRJZCcpICYmIHNpbXBsZUNoYW5nZXMuZXh0SWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYmFza2V0U2VydmljZS5iYXNrZXRQcmV2aWV3JC5zdWJzY3JpYmUoYmFza2V0UHJldmlld0xpbmVzID0+IHtcbiAgICAgICAgaWYgKGJhc2tldFByZXZpZXdMaW5lcykge1xuICAgICAgICAgIC8vIHdlIGdldCB0aGUgbGlzdCBvZiBiYXNrZXRQcmV2aWV3TGluZXMgKGF0IHJlY2lwZSBsZXZlbCkgd2l0Y2ggaGF2ZSBpdGVtcyBsaW5rIHdpdGggZ2l2ZW4gZXh0SWRcbiAgICAgICAgICB0aGlzLnJlY2lwZVByZXZpZXdMaW5lcyA9IGJhc2tldFByZXZpZXdMaW5lcy5maWx0ZXIoYnBsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBicGwuZW50cmllcy5mb3VuZC5maW5kKGVudHJ5ID0+IGVudHJ5LnNlbGVjdGVkSXRlbS5hdHRyaWJ1dGVzWydleHQtaWQnXSA9PT0gdGhpcy5leHRJZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuZGV0ZWN0V3JhcHBlZFRhZ3ModGhpcy50YWdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBkZXRlY3QgYW5kIGNvdW50IHdyYXBwZWQgaXRlbSBiZWxvdyB0aGUgZmlzdCByb3dcbiAgICogaXRlbXMgYW5kIGNvbnRhaW5lciBjYW4gaGF2ZSB2YXJpb3VzIHdpZHRoIHNvIHJvdyBudW1iZXIgY2FuIGRpZmZlclxuICAgKiBiYXNlIG9uIGFic29sdXRlIHBvc2l0aW9uIGluIHdpbmRvdyB3ZSBhcmUgYWJsZSB0byBmaW5kIGVsZW1lbnQgd2l0Y2ggYmVsb25nc1xuICAgKiB0byB0aGUgZmlyc3Qgcm93IGFuZCBvdGhlciBhbmQgdGhlbiBjb3VudCBoaWRkZW4gZWxlbWVudHMgYW5kIG51bWJlciBvZiByb3dzXG4gICAqIEBwYXJhbSB0YWdzICBRdWVyeUxpc3Q8RWxlbWVudFJlZj5cbiAgICovXG4gIGRldGVjdFdyYXBwZWRUYWdzKHRhZ3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPikge1xuICAgIGlmICh0YWdzLmxlbmd0aCA9PT0gMCl7IHJldHVybjsgfVxuXG4gICAgLy8gZ2V0IGZvciBlYWNoIGVsZW1lbnQgaGlzIGFic29sdXRlIHBvc2l0aW9uIGZyb20gdG9wIG9mIHdpbmRvd1xuICAgIGNvbnN0IHRhZ3NQb3NpdGlvbiA9IHRhZ3MubWFwKHRhZyA9PiB0YWcubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgICAvLyBncm91cCBieSB0b3AgLCBlbGVtZW50IHRoYXQgc2hhcmUgdGhlIHNhbWUgdG9wIHBvc2l0aW9uIGFyZSBpbiB0aGUgc2FtZSBsaW5lXG4gICAgY29uc3QgdGFnc0dyb3VwQnlSb3cgPSBncm91cEJ5KHRhZ3NQb3NpdGlvbiwgJ3RvcCcpO1xuXG4gICAgLy8gZ2V0IGxpc3Qgb2YgZGlzdGluY3QgaGlnaHRcbiAgICBjb25zdCB0YWdzRGlzdGluY3RIaWdodCA9IE9iamVjdC5rZXlzKHRhZ3NHcm91cEJ5Um93KTtcblxuICAgIHRoaXMucm93Q291bnQgPSB0YWdzRGlzdGluY3RIaWdodC5sZW5ndGg7XG5cbiAgICAvLyBnZXQgc2l6ZSBvZiBmaXJzdCByb3cgJ2xsIGhlbHAgdXMgdG8gZ2V0IGxhc3QgaXRlbSBvZiB0aGlzIHJvd1xuICAgIHRoaXMubGFzdEl0ZW1JbmRleE9mRmlyc3RSb3cgPSB0YWdzR3JvdXBCeVJvd1t0YWdzRGlzdGluY3RIaWdodFswXV0ubGVuZ3RoIC0gMTtcblxuICAgIC8vIHdyYXBwZWQgaXRlbXMgY291bnQgaXMgbGVuZ3RoIC0gdGFncyBjb3VudCBpbiBmaXJzdCByb3dcbiAgICB0aGlzLndyYXBwZWRJdGVtc0NvdW50ID0gdGFncy50b0FycmF5KCkubGVuZ3RoIC0gKHRoaXMubGFzdEl0ZW1JbmRleE9mRmlyc3RSb3cgKyAxKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVSZWNpcGUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuY29udGV4dGVzZXJ2aWNlLm1pYW0ucmVjaXBlcy5kaXNwbGF5KGlkLCB0aGlzLnJlY2lwZURldGFpbFByZXZpZXdBbGxvd2VkLCBmYWxzZSwgdGhpcy5ldmVudFRyYWNlKCkpO1xuICB9XG5cbiAgdG9nZ2xlTGlzdCgpIHtcbiAgICB0aGlzLmlzTGlzdE9wZW4gPSAhdGhpcy5pc0xpc3RPcGVuO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsKCkge1xuICAgIGlmICghdGhpcy5tb2RhbElzT3BlbmVkKSB7XG4gICAgICB0aGlzLm1vZGFsVGl0bGUgPSAnVXRpbGlzw6kgZGFucyAnICsgdGhpcy5yZWNpcGVQcmV2aWV3TGluZXMubGVuZ3RoICsgJyByZXBhcyc7XG4gICAgfVxuICAgIHRoaXMubW9kYWxJc09wZW5lZCA9ICF0aGlzLm1vZGFsSXNPcGVuZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlZHVjZSBlbHNlIHJlZHVjZWRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lclwiICpuZ0lmPVwicmVjaXBlUHJldmlld0xpbmVzPy5sZW5ndGggPiAwXCIgW25nU3R5bGVdPVwieydoZWlnaHQucHgnOiBpc0xpc3RPcGVuID8gMzIgKiByb3dDb3VudCA6IDI0ICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fbGlzdFwiID5cbiAgICAgIDxkaXYgI3RhZyBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2xpc3RfX2JhZGdlXCIgKm5nRm9yPVwibGV0IHJlY2lwZUxpbmUgb2YgcmVjaXBlUHJldmlld0xpbmVzLCBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19iYWRnZV9faWNvblwiIFtpY29uTmFtZV09J2ljb24uTWVhbCcgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJ1xuICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ19fYmFkZ2VfX3RleHRcIiAoY2xpY2spPSd0b2dnbGVSZWNpcGUocmVjaXBlTGluZS5pZCknPnt7cmVjaXBlTGluZS50aXRsZSB8IGVsbGlwc2lzIDogNn19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J21pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fdG9nZ2xlX19oaWRkZW4nOiAhcm93Q291bnQgfHwgd3JhcHBlZEl0ZW1zQ291bnQgPT09IDAgfVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fY29udGFpbmVyX190b2dnbGVcIiA+XG4gICAgICA8c3BhbiAgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX29wZW5cIiAoY2xpY2spPSd0b2dnbGVMaXN0KCknPlxuICAgICAgICB7eyBpc0xpc3RPcGVuID8gJyAgJyA6ICcrJyArd3JhcHBlZEl0ZW1zQ291bnR9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3RvZ2dsZV9fbGlnbmVcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX2Nsb3NlXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogaXNMaXN0T3BlbiA/IDEgOiAwfVwiIChjbGljayk9J3RvZ2dsZUxpc3QoKSc+IFxuICAgICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjcmVkdWNlZD5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3JlY2lwZXNcIiAqbmdJZj1cInJlY2lwZVByZXZpZXdMaW5lcz8ubGVuZ3RoID4gMFwiIChjbGljayk9XCJ0b2dnbGVNb2RhbCgpXCI+XG4gICAgPHNwYW4+e3tyZWNpcGVQcmV2aWV3TGluZXMubGVuZ3RofX0gcmVwYXM8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLW1vZGFsIFxuICAgIFtpc0FuZ3VsYXJDb21wb25lbnRdPVwidHJ1ZVwiIFxuICAgIFtleHBhbmRlZF09XCJtb2RhbElzT3BlbmVkXCJcbiAgICBbbm9IZWFkZXJNb2RlXT1cImZhbHNlXCIgXG4gICAgW3RpdGxlXT1cIm1vZGFsVGl0bGVcIlxuICAgIChjbG9zZSk9XCJ0b2dnbGVNb2RhbCgpXCJcbiAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX21vZGFsXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19jb250YWluZXJfX2xpc3RcIiA+XG4gICAgICA8ZGl2ICN0YWcgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19saXN0X19iYWRnZVwiICpuZ0Zvcj1cImxldCByZWNpcGVMaW5lIG9mIHJlY2lwZVByZXZpZXdMaW5lcywgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fYmFkZ2VfX2ljb25cIiBbaWNvbk5hbWVdPSdpY29uLk1lYWwnIChjbGljayk9J3RvZ2dsZVJlY2lwZShyZWNpcGVMaW5lLmlkKSdcbiAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJz48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdfX2JhZGdlX190ZXh0XCIgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJz57e3JlY2lwZUxpbmUudGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLW1pYW0tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
@@ -1634,15 +1634,15 @@ class RecipeLikesService extends Service {
1634
1634
  return this.isCleaning.asObservable().pipe(skipWhile(isCleaning => isCleaning), take(1), switchMap(_ => this.afterCLeanAddLikesToRecipes(recipes)));
1635
1635
  }
1636
1636
  afterCLeanAddLikesToRecipes(recipes) {
1637
- const recipeIds = recipes.map(r => r.id).filter(rid => !this.activeRecipeLikes.has(rid));
1638
- if (recipeIds.length == 0) {
1637
+ recipes = recipes.filter(recipe => !this.activeRecipeLikes.has(recipe.id));
1638
+ if (recipes.length == 0) {
1639
1639
  return of(null);
1640
1640
  }
1641
1641
  ;
1642
1642
  return this.all({
1643
1643
  page: { size: 20, number: 1 },
1644
1644
  remotefilter: {
1645
- recipe_id: recipeIds.join(),
1645
+ recipe_id: recipes.map(r => r.id).join(),
1646
1646
  is_past: 'true,false'
1647
1647
  }
1648
1648
  }).pipe(skipWhile(resp => resp.is_loading), tap(result => {
@@ -7950,9 +7950,9 @@ class LoaderComponent {
7950
7950
  constructor() { }
7951
7951
  }
7952
7952
  LoaderComponent.ɵfac = function LoaderComponent_Factory(t) { return new (t || LoaderComponent)(); };
7953
- LoaderComponent.ɵcmp = ɵɵdefineComponent({ type: LoaderComponent, selectors: [["ng-miam-loader"]], decls: 1, vars: 0, consts: [[1, "loader"]], template: function LoaderComponent_Template(rf, ctx) { if (rf & 1) {
7953
+ LoaderComponent.ɵcmp = ɵɵdefineComponent({ type: LoaderComponent, selectors: [["ng-miam-loader"]], decls: 1, vars: 0, consts: [[1, "miam-loader"]], template: function LoaderComponent_Template(rf, ctx) { if (rf & 1) {
7954
7954
  ɵɵelement(0, "div", 0);
7955
- } }, styles: [".loader{-webkit-animation:spin .5s linear infinite;animation:spin .5s linear infinite;border:var(--m-loader-thickness) solid var(--m-color-grey);border-radius:var(--m-border-radius-circle);border-top:var(--m-loader-thickness) solid var(--m-color-ternary);height:var(--m-loader-size);width:var(--m-loader-size)}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}"], encapsulation: 2 });
7955
+ } }, styles: [".miam-loader{-webkit-animation:miam-loader-spin .5s linear infinite;animation:miam-loader-spin .5s linear infinite;border:var(--m-loader-thickness) solid var(--m-color-grey);border-radius:var(--m-border-radius-circle);border-top:var(--m-loader-thickness) solid var(--m-color-ternary);height:var(--m-loader-size);width:var(--m-loader-size)}@-webkit-keyframes miam-loader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes miam-loader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}"], encapsulation: 2 });
7956
7956
  /*@__PURE__*/ (function () { ɵsetClassMetadata(LoaderComponent, [{
7957
7957
  type: Component,
7958
7958
  args: [{
@@ -9286,6 +9286,7 @@ class AbstractRecipeCardComponent extends EventTracerComponent {
9286
9286
  ngAfterViewInit() {
9287
9287
  this.sendShowEvent();
9288
9288
  this.displayPrice();
9289
+ this.subscriptions.push(this.groceriesListsService.list$.subscribe(() => this.cdr.detectChanges()));
9289
9290
  }
9290
9291
  ngOnDestroy() {
9291
9292
  this.subscriptions.forEach(sub => sub.unsubscribe());
@@ -13769,7 +13770,7 @@ class RecipeCatalogComponent extends EventTracerComponent {
13769
13770
  }
13770
13771
  const selectedCategory = this.categories.find((cat) => cat.key === paramsArray.get('catalogCategory'));
13771
13772
  if (selectedCategory) {
13772
- return this.categoryTitleClicked(selectedCategory);
13773
+ return this.categoryTitleClicked({ title: selectedCategory.title, filters: selectedCategory.filters.additionalFilters.filters });
13773
13774
  }
13774
13775
  }
13775
13776
  // Show feedback block only if user is logged and the children preference is unknown
@@ -16276,15 +16277,12 @@ class RecipeTagsComponent extends EventTracerComponent {
16276
16277
  return bpl.entries.found.find(entry => entry.selectedItem.attributes['ext-id'] === this.extId);
16277
16278
  });
16278
16279
  this.cdr.detectChanges();
16280
+ this.detectWrappedTags(this.tags);
16279
16281
  }
16280
16282
  }));
16281
16283
  }
16282
16284
  this.cdr.detectChanges();
16283
16285
  }
16284
- ngAfterViewInit() {
16285
- // Call each time list of recipe-tags change
16286
- this.subscriptions.push(this.tags.changes.subscribe(queryList => this.detectWrappedTags(queryList)));
16287
- }
16288
16286
  ngOnDestroy() {
16289
16287
  this.subscriptions.forEach(sub => sub.unsubscribe());
16290
16288
  }