@progress-chef/platform-shared-components 0.0.67 → 0.0.68

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.
@@ -1,4 +1,4 @@
1
- import { Component, ContentChild, EventEmitter, HostListener, Input, Output, ViewChild, Directive, ContentChildren, } from '@angular/core';
1
+ import { Component, ContentChild, EventEmitter, HostListener, Input, Output, ViewChild, Directive, ContentChildren } from '@angular/core';
2
2
  import { GridComponent } from '@progress/kendo-angular-grid';
3
3
  import { orderBy } from '@progress/kendo-data-query';
4
4
  import { chevronDownIcon, chevronUpIcon, moreVerticalIcon } from '@progress/kendo-svg-icons';
@@ -165,13 +165,11 @@ export class GridPaginationComponent {
165
165
  }
166
166
  this.initialGridHeight =
167
167
  this.gridElement.nativeElement.offsetHeight + this.gridBottomSpace;
168
+ this.getGridHeight();
168
169
  const gridContainer = this.gridElement?.nativeElement?.getElementsByClassName('k-grid-container')[0];
169
170
  this.renderer.insertBefore(gridContainer.parentElement, this.selectAllMessageElement.nativeElement, gridContainer, true);
170
171
  this.cdRef.detectChanges();
171
172
  }
172
- ngAfterViewChecked() {
173
- this.getGridHeight();
174
- }
175
173
  selectAcrossPages(isSelected) {
176
174
  this.triggerSelectAllPagesEvent(isSelected);
177
175
  if (!isSelected) {
@@ -521,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
521
519
  type: HostListener,
522
520
  args: ['window:resize', ['$event']]
523
521
  }] } });
524
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL21vbGVjdWxlcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL21vbGVjdWxlcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsR0FJaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGFBQWEsRUFNZCxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBa0IsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O0FBS3RELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFBbUIsUUFBZ0M7UUFBaEMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFEMUMsU0FBSSxHQUFXLEVBQUUsQ0FBQztJQUMyQixDQUFDOytHQUY1QyxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9C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QWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkF5T04sTUFBTTtzQkFETCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBEaXJlY3RpdmUsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2VsZWN0YWJsZVNldHRpbmdzLFxuICBTZWxlY3RhYmxlTW9kZSxcbiAgQ2VsbENsaWNrRXZlbnQsXG4gIEdyaWRDb21wb25lbnQsXG4gIEdyaWREYXRhUmVzdWx0LFxuICBQYWdlQ2hhbmdlRXZlbnQsXG4gIFJvd0NsYXNzQXJncyxcbiAgU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSxcbiAgQ2VsbENsb3NlRXZlbnRcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQgeyBTb3J0RGVzY3JpcHRvciwgb3JkZXJCeSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7XG4gIFNWR0ljb24sXG4gIGNoZXZyb25Eb3duSWNvbixcbiAgY2hldnJvblVwSWNvbixcbiAgbW9yZVZlcnRpY2FsSWNvblxufSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tc3ZnLWljb25zJztcbmltcG9ydCB7IExvYWRlclNpemUsIExvYWRlclR5cGUsIExvYWRlclRoZW1lQ29sb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2V5cyB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWNvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3R5cGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Db2x1bW5UZW1wbGF0ZSB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9IFwiXCI7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8Q29tcG9uZW50Pikge31cbn1cblxuY29uc3QgY3JlYXRlRm9ybUdyb3VwID0gKGRhdGFJdGVtOiBhbnkpOiBGb3JtR3JvdXAgPT4ge1xuICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGZvciAobGV0IGRhdGEgb2YgT2JqZWN0LmtleXMoZGF0YUl0ZW0pKSB7XG4gICAgZm9ybS5hZGRDb250cm9sKGRhdGEsIG5ldyBGb3JtQ29udHJvbChkYXRhSXRlbVtkYXRhXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCkpXG4gIH1cbiAgcmV0dXJuIGZvcm1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1ncmlkLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRQYWdpbmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgQENvbnRlbnRDaGlsZHJlbihDdXN0b21Db2x1bW5UZW1wbGF0ZSkgY29sdW1uVGVtcGxhdGVzITogUXVlcnlMaXN0PEN1c3RvbUNvbHVtblRlbXBsYXRlPiB8IFtdO1xuICBAQ29udGVudENoaWxkKCdtdWx0aUNvbHVtbkRhdGEnKSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBAQ29udGVudENoaWxkKCdkZXRhaWxUZW1wbGF0ZScpIGRldGFpbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gIEBDb250ZW50Q2hpbGQoJ2ltcGFjdENvbHVtbicpIGltcGFjdENvbHVtbiE6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBAVmlld0NoaWxkKEdyaWRDb21wb25lbnQpIGdyaWQhOiBHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmlkRWxlbWVudCcpIGdyaWRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQnKSBzZWxlY3RBbGxNZXNzYWdlRWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZ3JpZFZpZXc6IEdyaWREYXRhUmVzdWx0ID0geyBkYXRhOiBbXSwgdG90YWw6IDAgfTtcbiAgQElucHV0KCkgc2tpcDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgaXRlbU5hbWU6IHN0cmluZyA9ICdJdGVtcyc7XG4gIHNob3dTZWxlY3RBbGxNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIGFsbFBhZ2VzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2F2ZWRIZWlnaHQ6bnVtYmVyID0gMDtcbiAgcHJldmlvdXNTZWxlY3RBbGxTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnO1xuICBAT3V0cHV0KCkgb25TZWxlY3RBbGxBY3Jvc3NQYWdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQElucHV0KCkgY29sdW1uRGF0YTogYW55ID0gW107XG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzb3J0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBncm91cGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVvcmRlcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGg6IG51bWJlciA9IDQ1O1xuICBASW5wdXQoKSBjaGVja0JveENvbHVtblJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjaGVja0JveENvbHVtbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2tCb3hDb2x1bW5TaG93U2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjaGVja0JveFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbHVtbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogU2VsZWN0YWJsZU1vZGUgfCB1bmRlZmluZWQgPSAnbXVsdGlwbGUnO1xuICBASW5wdXQoKSBjaGVja2JveE9ubHkgPSB0cnVlO1xuICBASW5wdXQoKSBkcmFnQ29sdW1ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBuYXZpZ2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBoZWlnaHQ6IGFueTtcbiAgQElucHV0KCkgZ3JpZFJvd1NlbGVjdEJ5VmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBub1JlY29yZHNDb250ZW50OiBzdHJpbmcgPSAnTm8gUmVjb3JkcyBBdmFpbGFibGUnO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQElucHV0KCkgc2hvd1Rvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXh0cmFjdERhdGFJdGVtczogYW55O1xuICBzZWxlY3RhYmxlU2V0dGluZ3M6IFNlbGVjdGFibGVTZXR0aW5ncyA9IHt9O1xuICBASW5wdXQoKSBrZWJhYkxpc3Q6IGFueSA9IFtdO1xuICBASW5wdXQoKSBzaG93S2ViYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJvd0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkga2ViYWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgaWNvbjogU1ZHSWNvbiA9IG1vcmVWZXJ0aWNhbEljb247XG4gIEBJbnB1dCgpIGtlYmFiQ29sdW1uV2lkdGg6IG51bWJlciA9IDYwO1xuICBkYXRhOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0Q29sdW1uID0gJyc7XG4gIEBPdXRwdXQoKSByb3dEYXRhT2ZDbGlja2VkQ2VsbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBwcmVTZWxlY3RlZDogYW55W10gPSBbXTtcbiAgcHJlU2VsZWN0ZWRSZWNvcmRzOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGlnbm9yZUNvbHVtbkNlbGxDbGljazogbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KCkgYWxsb3dDb2x1bW5DbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzb3J0OiBTb3J0RGVzY3JpcHRvcltdID0gW1xuICAgIHtcbiAgICAgIGZpZWxkOiAnJyxcbiAgICAgIGRpcjogdW5kZWZpbmVkLFxuICAgIH0sXG4gIF07XG4gIEBJbnB1dCgpIGhhc0FwaVNvcnRpbmcgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNvcnREaXJlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIGFycm93RG93bkljb246IFNWR0ljb24gPSBjaGV2cm9uRG93bkljb247XG4gIHB1YmxpYyBhcnJvd1VwSWNvbjogU1ZHSWNvbiA9IGNoZXZyb25VcEljb247XG4gIEBJbnB1dCgpIGV4cGFuZFJvd0luZGV4OiBudW1iZXJbXSA9IFtdO1xuICBASW5wdXQoKSBjdXN0b21FeHBhbmRSb3dDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGVsZXRlQ29sdW1uV2lkdGg6IG51bWJlciA9IDQyO1xuICBleHBhbmRSb3dDb2x1bW5XaWR0aDogbnVtYmVyID0gNTY7XG4gIEBPdXRwdXQoKSBkZWxldGVkUm93RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzaXplczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGFnZUNvdW50ID0gMDtcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUNvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlS2ViYWJSb3dJbmRleDogbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkZXJUeXBlOiBMb2FkZXJUeXBlID0gTG9hZGVyVHlwZS5wdWxzaW5nO1xuICBASW5wdXQoKSBsb2FkZXJTaXplOiBMb2FkZXJTaXplID0gTG9hZGVyU2l6ZS5tZWRpdW07XG4gIEBJbnB1dCgpIGxvYWRlclRoZW1lOiBMb2FkZXJUaGVtZUNvbG9yID0gTG9hZGVyVGhlbWVDb2xvci5wcmltYXJ5O1xuICBpbml0aWFsR3JpZEhlaWdodDogYW55O1xuICBncmlkQm90dG9tU3BhY2UgPSAyNDtcbiAgcmVzaXplSGVpZ2h0OiBhbnkgPSAwO1xuICBzZWxlY3RBbGxTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnO1xuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGRpc2FibGVQcmVTZWxlY3RlZFJvd3MgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1Hcm91cCE6IEZvcm1Hcm91cCB8IGFueTtcbiAgQE91dHB1dCgpIHVwZGF0ZWREYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbG93RWRpdGluZ0NlbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgY29sdW1uQ29udGVudE5vV3JhcCA9IGZhbHNlO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHRoaXMuc2V0U2VsZWN0YWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBjb2x1bW5UZW1wbGF0ZURpY3Q6YW55ID0ge307XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5EYXRhLmZvckVhY2goKGNvbHVtbjphbnksaW5kZXg6bnVtYmVyKT0+e1xuICAgICAgY29sdW1uLnNvcnRhYmxlID0gY29sdW1uLnNvcnRhYmxlID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb2x1bW4uc29ydGFibGU7XG4gICAgICBpZighdGhpcy5pZ25vcmVDb2x1bW5DZWxsQ2xpY2suaW5jbHVkZXMoaW5kZXgpKXtcbiAgICAgICAgY29sdW1uLmNsYXNzPSdjb2x1bW4tY3Vyc29yLXBvaW50ZXInO1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCF0aGlzLmhhc0FwaVNvcnRpbmcpIHtcbiAgICAgIHRoaXMubG9hZEdyaWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuZ3JpZFZpZXcuZGF0YT8ubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLmNvbHVtblRlbXBsYXRlcy5mb3JFYWNoKHggPT4gdGhpcy5jb2x1bW5UZW1wbGF0ZURpY3RbeC50eXBlXSA9IHgudGVtcGxhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmN1c3RvbUV4cGFuZFJvd0NvbHVtbikge1xuICAgICAgdGhpcy5leHBhbmRSb3dJbmRleC5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWQuZXhwYW5kUm93KGlkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMucHJlU2VsZWN0ZWQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzPy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA9PSB0aGlzLmdyaWRWaWV3LnRvdGFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAnY2hlY2tlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2luZGV0ZXJtaW5hdGUnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ3VuY2hlY2tlZCc7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbEdyaWRIZWlnaHQgPVxuICAgICAgdGhpcy5ncmlkRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIHRoaXMuZ3JpZEJvdHRvbVNwYWNlO1xuXG4gICAgY29uc3QgZ3JpZENvbnRhaW5lciA9IHRoaXMuZ3JpZEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2stZ3JpZC1jb250YWluZXInKVswXTtcbiAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgIGdyaWRDb250YWluZXIucGFyZW50RWxlbWVudCxcbiAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIGdyaWRDb250YWluZXIsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuICB9XG5cbiAgc2VsZWN0QWNyb3NzUGFnZXMoaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMudHJpZ2dlclNlbGVjdEFsbFBhZ2VzRXZlbnQoaXNTZWxlY3RlZCk7XG4gICAgaWYoIWlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMub25TZWxlY3RBbGxDaGFuZ2UodGhpcy5wcmV2aW91c1NlbGVjdEFsbFN0YXRlKVxuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJTZWxlY3RBbGxQYWdlc0V2ZW50KGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbFBhZ2VzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xuICAgIHRoaXMub25TZWxlY3RBbGxBY3Jvc3NQYWdlcy5lbWl0KGlzU2VsZWN0ZWQpO1xuICAgIGNvbnNvbGUubG9nKCd0cmlnZ2VyU2VsZWN0QWxsUGFnZXNFdmVudCA6IGlzU2VsZWN0ZWQnLCBpc1NlbGVjdGVkKTtcbiAgfVxuXG4gIGFkZFNlbGVjdEFsbE1lc3NhZ2Uoc2VsZWN0QWxsOmJvb2xlYW4pIHtcbiAgICBpZih0aGlzLnNob3dTZWxlY3RBbGxNZXNzYWdlICYmIHRoaXMucGFnZUNvdW50ID4gMSkge1xuICAgICAgY29uc3QgZWxlbWVudFJlc3VsdCA9IHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYoc2VsZWN0QWxsKSB7XG4gICAgICAgIHRoaXMuc2F2ZWRIZWlnaHQgPSBlbGVtZW50UmVzdWx0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gZWxlbWVudFJlc3VsdC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2Utc2hvdycpO1xuICAgICAgICBjb25zdCBhZnRlckhlaWdodCA9IGVsZW1lbnRSZXN1bHQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBlbGVtZW50UmVzdWx0LnN0eWxlLmhlaWdodCA9IChlbGVtZW50UmVzdWx0Lm9mZnNldEhlaWdodCAtIChhZnRlckhlaWdodCAtIGJlZm9yZUhlaWdodCkpICsgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2Utc2hvdycpO1xuICAgICAgICBpZih0aGlzLmFsbFBhZ2VzU2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJTZWxlY3RBbGxQYWdlc0V2ZW50KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50UmVzdWx0LnN0eWxlLmhlaWdodCA9IHRoaXMuc2F2ZWRIZWlnaHQgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhZ2VDaGFuZ2UoZXZlbnQ6IFBhZ2VDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc2V0U2VsZWN0YWJsZVNldHRpbmdzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoZWNrYm94T25seSB8fCB0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmRyYWdDb2x1bW5zID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RhYmxlU2V0dGluZ3MgPSB7XG4gICAgICBjaGVja2JveE9ubHk6IHRoaXMuY2hlY2tib3hPbmx5LFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgZHJhZzogdGhpcy5kcmFnQ29sdW1ucyxcbiAgICB9O1xuICB9XG5cbiAgLy8gV2UgY2FuIGV4dHJhY3QgZGF0YSBvdXQgb2Ygcm93IG51bWJlciB1c2luZyBiZWxvdyBmdW5jdGlvblxuICAvKiBleHRyYWN0KCkge1xuICAgIHRoaXMuZXh0cmFjdERhdGFJdGVtcyA9IHRoaXMubXlTZWxlY3Rpb24ubWFwKGlkeCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YS5maW5kKChkYXRhOiB7IFByb2R1Y3RJRDogbnVtYmVyOyB9KSA9PiBkYXRhLlByb2R1Y3RJRCA9PT0gaWR4KTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmV4dHJhY3REYXRhSXRlbXMpXG4gICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEuZW1pdCh0aGlzLmV4dHJhY3REYXRhSXRlbXMpO1xuICB9ICovXG5cbiAgc2VsZWN0ZWRLZXlzQ2hhbmdlKHJvd3M6IG51bWJlcltdKSB7XG4gICAgbGV0IHNlbGVjdGVkUm93RGF0YSA9IFtdO1xuICAgIGxldCBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG5cbiAgICBpZiAocm93cz8ubGVuZ3RoID4gMCkge1xuICAgICAgc2VsZWN0ZWRSb3dzQ291bnQgPSByb3dzPy5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUm93cz8ubGVuZ3RoID4gMCAmJiB0aGlzLmRpc2FibGVQcmVTZWxlY3RlZFJvd3MpIHtcbiAgICAgIHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aDtcbiAgICAgIHJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cztcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdEFsbFN0YXRlID0gdGhpcy5zZWxlY3RBbGxTdGF0ZTtcbiAgICBpZiAoc2VsZWN0ZWRSb3dzQ291bnQgPT0gdGhpcy5ncmlkVmlldy50b3RhbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGxTdGF0ZSA9ICdjaGVja2VkJztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkUm93c0NvdW50ID09IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAndW5jaGVja2VkJztcbiAgICAgIHRoaXMuYWRkU2VsZWN0QWxsTWVzc2FnZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAnaW5kZXRlcm1pbmF0ZSc7XG4gICAgICB0aGlzLmFkZFNlbGVjdEFsbE1lc3NhZ2UoZmFsc2UpO1xuICAgIH1cblxuICAgIHNlbGVjdGVkUm93RGF0YSA9IHJvd3MubWFwKHJvd0RhdGEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JpZFZpZXcuZGF0YS5maW5kKChkYXRhKSA9PiBkYXRhW3RoaXMuZ3JpZFJvd1NlbGVjdEJ5VmFsdWVdID09PSByb3dEYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3dEYXRhLmVtaXQoc2VsZWN0ZWRSb3dEYXRhKTtcbiAgfVxuXG4gIG9uS2ViYWJDbGljayhpdGVtOiBhbnksIHJvd0RldGFpbHM6IGFueSkge1xuICAgIHRoaXMua2ViYWJJdGVtQ2xpY2suZW1pdCh7IGFjdGlvbjogaXRlbSwgcm93RGV0YWlscyB9KTtcbiAgfVxuXG4gIG9uRGV0YWlsRXhwYW5kKHJvd0RhdGE6IGFueSkge1xuICAgIHRoaXMucm93RGV0YWlscy5lbWl0KHJvd0RhdGEuZGF0YUl0ZW0pO1xuICB9XG5cbiAgY2VsbENsaWNrSGFuZGxlcihhcmdzOiBDZWxsQ2xpY2tFdmVudCkge1xuICAgIGlmICh0aGlzLmFsbG93Q29sdW1uQ2xpY2spIHtcbiAgICAgIGlmICh0aGlzLmlnbm9yZUNvbHVtbkNlbGxDbGljay5pbmNsdWRlcyhhcmdzLmNvbHVtbkluZGV4KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJvd0RhdGFPZkNsaWNrZWRDZWxsLmVtaXQoe2RhdGFJdGVtOmFyZ3MuZGF0YUl0ZW0sY29sdW1uSW5kZXg6YXJncy5jb2x1bW5JbmRleH0pO1xuICAgIH1cbiAgICBpZih0aGlzLmFsbG93RWRpdGluZ0NlbGwpe1xuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBjcmVhdGVGb3JtR3JvdXAoYXJncy5kYXRhSXRlbSk7XG4gICAgICAgICAgICBhcmdzLnNlbmRlci5lZGl0Q2VsbChhcmdzLnJvd0luZGV4LCBhcmdzLmNvbHVtbkluZGV4LCB0aGlzLmZvcm1Hcm91cCk7XG4gICAgICB9XG4gIH1cblxuICBzb3J0Q2hhbmdlKHNvcnQ6IFNvcnREZXNjcmlwdG9yW10pOiB2b2lkIHtcbiAgICB0aGlzLnNvcnQgPSBzb3J0O1xuICAgIGlmICghdGhpcy5oYXNBcGlTb3J0aW5nKSB7XG4gICAgICB0aGlzLmxvYWRHcmlkRGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLnNvcnREaXJlY3Rpb24uZW1pdCh0aGlzLnNvcnQpO1xuICB9XG5cbiAgbG9hZEdyaWREYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZFZpZXcgPSB7XG4gICAgICBkYXRhOiBvcmRlckJ5KHRoaXMuZ3JpZFZpZXc/LmRhdGEsIHRoaXMuc29ydCksXG4gICAgICB0b3RhbDogdGhpcy5ncmlkVmlldz8udG90YWwsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGFuZFJvdyhpZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ncmlkLmV4cGFuZFJvdyhpZCk7XG4gICAgdGhpcy5leHBhbmRSb3dJbmRleC5wdXNoKGlkKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgY29sbGFwc2VSb3coaWQ6IG51bWJlcikge1xuICAgIHRoaXMuZ3JpZC5jb2xsYXBzZVJvdyhpZCk7XG4gICAgdGhpcy5leHBhbmRSb3dJbmRleC5zcGxpY2UodGhpcy5leHBhbmRSb3dJbmRleC5pbmRleE9mKGlkKSwgMSk7XG4gICAgaWYgKHRoaXMuZXhwYW5kUm93SW5kZXg/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpYi1ncmlkJyk7XG4gICAgICBjb25zdCBncmlkT2Zmc2V0ID0gdmlld3BvcnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFk7XG4gICAgICBpZiAod2luZG93SGVpZ2h0ID4gZ3JpZE9mZnNldCArIHRoaXMuaW5pdGlhbEdyaWRIZWlnaHQpIHtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlKHJvd0RldGFpbHM6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRIZWFkZXJIZWlnaHQoKTtcbiAgICB9LCAxMDAwKTtcbiAgICB0aGlzLmRlbGV0ZWRSb3dEYXRhLmVtaXQocm93RGV0YWlscyk7XG4gIH1cblxuICBnZXRIZWFkZXJIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMuZ3JpZFZpZXc/LmRhdGE/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdoaWRlLWhlYWRlcic7XG4gICAgfVxuICAgIHJldHVybiAndmlldy1oZWFkZXInO1xuICB9XG5cbiAgZ2V0R3JpZEhlaWdodCgpIHtcbiAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3Qgdmlld3BvcnQ6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWItZ3JpZCcpO1xuICAgIGNvbnN0IGdyaWRPZmZzZXQgPSB2aWV3cG9ydC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICBjb25zdCBncmlkSGVpZ2h0ID1cbiAgICAgIHRoaXMuZ3JpZEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyB0aGlzLmdyaWRCb3R0b21TcGFjZTsgLy9ncmlkIHNob3VsZCBoYXZlIDI0cHggc3BhY2UgYXQgYm90dG9tXG4gICAgaWYgKGdyaWRPZmZzZXQgKyBncmlkSGVpZ2h0ID49IHdpbmRvd0hlaWdodCkge1xuICAgICAgdGhpcy5oZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSAoZ3JpZE9mZnNldCArIHRoaXMuZ3JpZEJvdHRvbVNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcmVzaXplKGV2OiBhbnkpIHtcbiAgICBpZiAoZXYudGFyZ2V0LmlubmVySGVpZ2h0ID4gdGhpcy5yZXNpemVIZWlnaHQpIHtcbiAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gZXYudGFyZ2V0LmlubmVySGVpZ2h0O1xuICAgICAgdGhpcy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc2l6ZUhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgdGhpcy5yZXNpemVIZWlnaHQgPSAwO1xuICAgIH1cbiAgICB0aGlzLmdldEdyaWRIZWlnaHQoKTtcbiAgfVxuXG4gIHJvd0NsYXNzID0gKGFyZ3M6IFJvd0NsYXNzQXJncykgPT4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cyAmJiB0aGlzLmRpc2FibGVQcmVTZWxlY3RlZFJvd3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdrLWRpc2FibGVkJzogdGhpcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoXG4gICAgICAgICAgYXJncy5kYXRhSXRlbVt0aGlzLmdyaWRSb3dTZWxlY3RCeVZhbHVlXVxuICAgICAgICApIHx8IHRoaXMuYWxsUGFnZXNTZWxlY3RlZCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBleHBhbmRDb2x1bW5DbGFzcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDAgJiYgdGhpcy5kaXNhYmxlUHJlU2VsZWN0ZWRSb3dzKSB7XG4gICAgICB0aGlzLmV4cGFuZFJvd0NvbHVtbldpZHRoID0gMTk0O1xuICAgICAgcmV0dXJuICdleHBhbmQtcm93JztcbiAgICB9XG4gICAgdGhpcy5leHBhbmRSb3dDb2x1bW5XaWR0aCA9IDU2O1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGNoZWNrZWRTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoZWNrZWRTdGF0ZSA9PT0gJ2NoZWNrZWQnIHx8XG4gICAgICAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA9PSB0aGlzLmdyaWRWaWV3LnRvdGFsICYmXG4gICAgICAgIHRoaXMuZGlzYWJsZVByZVNlbGVjdGVkUm93cylcbiAgICApIHtcbiAgICAgIHRoaXMucHJlU2VsZWN0ZWQgPSB0aGlzLmdyaWRWaWV3LmRhdGFcbiAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuZ3JpZFJvd1NlbGVjdEJ5VmFsdWVdKVxuICAgICAgICAuZmlsdGVyKChpZDogYW55KSA9PiBpZCk7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2NoZWNrZWQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDAgJiYgdGhpcy5kaXNhYmxlUHJlU2VsZWN0ZWRSb3dzKSB7XG4gICAgICB0aGlzLnByZVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFJvd3M7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2luZGV0ZXJtaW5hdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZVNlbGVjdGVkID0gW107XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ3VuY2hlY2tlZCc7XG4gICAgfVxuICAgIHRoaXMuYWRkU2VsZWN0QWxsTWVzc2FnZSh0aGlzLnNlbGVjdEFsbFN0YXRlID09PSAnY2hlY2tlZCcpO1xuICB9XG5cbiAgcHVibGljIGNlbGxDbG9zZUhhbmRsZXIoYXJnczogQ2VsbENsb3NlRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgeyBmb3JtR3JvdXAsIGRhdGFJdGVtIH0gPSBhcmdzO1xuICAgIGlmICghZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICBhcmdzLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIGlmIChmb3JtR3JvdXAuZGlydHkpIHtcbiAgICAgIGlmIChhcmdzLm9yaWdpbmFsRXZlbnQgJiYgYXJncy5vcmlnaW5hbEV2ZW50LmtleUNvZGUgPT09IEtleXMuRXNjYXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YUl0ZW0sIGZvcm1Hcm91cC52YWx1ZSk7XG4gICAgICB0aGlzLnNhdmVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnVwZGF0ZWREYXRhLmVtaXQodGhpcy5ncmlkLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZC5jbG9zZUNlbGwoKTtcbiAgICB0aGlzLmdyaWQuY2FuY2VsQ2VsbCgpO1xuICB9XG59XG4iLCI8ZGl2ICNncmlkRWxlbWVudCAod2luZG93OnJlc2l6ZSk9XCJyZXNpemUoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cImNvbHVtbkNvbnRlbnROb1dyYXAgPyAnY29sdW1uLWNvbnRlbnQtbm93cmFwJyA6ICcnXCI+XG4gIDxrZW5kby1ncmlkIFtkYXRhXT1cImdyaWRWaWV3XCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3NraXBdPVwic2tpcFwiIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVTZXR0aW5nc1wiXG4gICAgW3BhZ2VhYmxlXT1cInBhZ2VhYmxlXCIgW3NvcnRhYmxlXT1cInNvcnRhYmxlXCIgW2dyb3VwYWJsZV09XCJncm91cGFibGVcIiBbcmVvcmRlcmFibGVdPVwicmVvcmRlcmFibGVcIlxuICAgIFtyZXNpemFibGVdPVwicmVzaXphYmxlXCIgW2NvbHVtbk1lbnVdPVwiY29sdW1uTWVudVwiIFtuYXZpZ2FibGVdPVwibmF2aWdhYmxlXCIgW2hlaWdodF09XCJoZWlnaHRcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgKGNoYW5nZSk9XCJzZXRTZWxlY3RhYmxlU2V0dGluZ3MoKVwiIChzZWxlY3RlZEtleXNDaGFuZ2UpPVwic2VsZWN0ZWRLZXlzQ2hhbmdlKCRldmVudClcIlxuICAgIFtrZW5kb0dyaWRTZWxlY3RCeV09XCJncmlkUm93U2VsZWN0QnlWYWx1ZVwiIChkZXRhaWxFeHBhbmQpPVwib25EZXRhaWxFeHBhbmQoJGV2ZW50KVwiIFtzZWxlY3RlZEtleXNdPVwicHJlU2VsZWN0ZWRcIlxuICAgIChwYWdlQ2hhbmdlKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChjZWxsQ2xpY2spPVwiY2VsbENsaWNrSGFuZGxlcigkZXZlbnQpXCIgKGNlbGxDbG9zZSk9XCJjZWxsQ2xvc2VIYW5kbGVyKCRldmVudClcIiBbc29ydF09XCJzb3J0XCJcbiAgICAoc29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlKCRldmVudClcIiBbbmdDbGFzc109XCJnZXRIZWFkZXJIZWlnaHQoKVwiIGlkPVwibGliLWdyaWRcIiBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIj5cbiAgICA8ZGl2ICNzZWxlY3RBbGxNZXNzYWdlRWxlbWVudCBjbGFzcz1cImxpYi1ncmlkLXNlbGVjdC1hbGwtbWVzc2FnZS1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhYWxsUGFnZXNTZWxlY3RlZFwiIGNsYXNzPVwibGliLWdyaWQtc2VsZWN0LWFsbC1tZXNzYWdlXCI+XG4gICAgICAgIDxsaWItdHlwb2dyYXBoeSBbZGVmYXVsdFRleHRdPVwiJ0FsbCAnK2dyaWRWaWV3LmRhdGEubGVuZ3RoKycgJytpdGVtTmFtZSsnIG9uIHRoaXMgcGFnZSBhcmUgc2VsZWN0ZWQuJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT5cbiAgICAgICAgPHU+PGxpYi10eXBvZ3JhcGh5IChjbGljayk9XCJzZWxlY3RBY3Jvc3NQYWdlcyh0cnVlKVwiIGNsYXNzPSBcInNlbGVjdC1hbGwtaGFuZGxlclwiIFtkZWZhdWx0VGV4dF09XCInU2VsZWN0IGFsbCAnK2dyaWRWaWV3LnRvdGFsKycgJytpdGVtTmFtZSsnIGZyb20gYWxsIHBhZ2VzJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT48L3U+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxQYWdlc1NlbGVjdGVkXCIgY2xhc3M9XCJsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2VcIj5cbiAgICAgICAgPGxpYi1pY29uIG5hbWU9XCJjaXJjbGUtY2hlY2tlZFwiIGNsYXNzPVwiYWxsLXNlbGVjdGVkLWljb25cIj48L2xpYi1pY29uPlxuICAgICAgICA8bGliLXR5cG9ncmFwaHkgW2RlZmF1bHRUZXh0XT1cIidBbGwgJytncmlkVmlldy50b3RhbCsnICcraXRlbU5hbWUrJyBhY3Jvc3MgYWxsIHBhZ2VzIGFyZSBzZWxlY3RlZC4nXCIgdHlwZT1cIkJPRFlfU01BTExcIj48L2xpYi10eXBvZ3JhcGh5PlxuICAgICAgICA8dT48bGliLXR5cG9ncmFwaHkgKGNsaWNrKT1cInNlbGVjdEFjcm9zc1BhZ2VzKGZhbHNlKVwiIGNsYXNzPSBcInNlbGVjdC1hbGwtaGFuZGxlclwiIFtkZWZhdWx0VGV4dF09XCInQ2xlYXIgc2VsZWN0aW9uJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT48L3U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJzaG93VG9vbGJhclwiIGtlbmRvR3JpZFRvb2xiYXJUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidGhpcy5ncmlkVmlldy50b3RhbCA9PT0gMFwiIGtlbmRvR3JpZE5vUmVjb3Jkc1RlbXBsYXRlPlxuICAgICAgPGxpYi10eXBvZ3JhcGh5ICpuZ0lmPVwiIWxvYWRpbmdcIiBbZGVmYXVsdFRleHRdPVwibm9SZWNvcmRzQ29udGVudFwiIHR5cGU9XCJCT0RZX01FRElVTVwiPjwvbGliLXR5cG9ncmFwaHk+XG4gICAgICA8bGliLWxvYWRlciAqbmdJZj1cImxvYWRpbmdcIiBbdHlwZV09XCJsb2FkZXJUeXBlXCIgW3NpemVdPVwibG9hZGVyU2l6ZVwiIFt0aGVtZUNvbG9yXT1cImxvYWRlclRoZW1lXCI+PC9saWItbG9hZGVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5ncmlkVmlldy50b3RhbCA+IDBcIj5cbiAgICAgIDxrZW5kby1ncmlkLWNoZWNrYm94LWNvbHVtbiAqbmdJZj1cImNoZWNrQm94UmVxdWlyZWQgPT09IHRydWVcIiBbd2lkdGhdPVwiY2hlY2tCb3hXaWR0aFwiXG4gICAgICAgIFtyZXNpemFibGVdPVwiY2hlY2tCb3hDb2x1bW5SZXNpemFibGVcIiBbY29sdW1uTWVudV09XCJjaGVja0JveENvbHVtbk1lbnVcIiBjbGFzcz1cImNoZWNrYm94LWNvbHVtblwiPlxuICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9HcmlkSGVhZGVyVGVtcGxhdGU+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2VsZWN0QWxsQ2hlY2tib3hJZFwiIHR5cGU9XCJjaGVja2JveFwiIGtlbmRvQ2hlY2tCb3gga2VuZG9HcmlkU2VsZWN0QWxsQ2hlY2tib3hcbiAgICAgICAgICAgIFtzdGF0ZV09XCJzZWxlY3RBbGxTdGF0ZVwiIChzZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2tlbmRvLWdyaWQtY2hlY2tib3gtY29sdW1uPlxuICAgICAgXG4gICAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gY2xhc3M9XCJncmlkLWNvbHVtblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVtbkRhdGFcIiBbZmllbGRdPVwiaXRlbS5maWVsZFwiIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgW3dpZHRoXT1cIml0ZW0uY29sdW1uV2lkdGhcIiBbc29ydGFibGVdPVwiaXRlbS5zb3J0YWJsZVwiIFtlZGl0b3JdPVwiaXRlbS5lZGl0b3JcIiBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInNvcnRhYmxlXCIga2VuZG9HcmlkSGVhZGVyVGVtcGxhdGU+XG4gICAgICAgICAge3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRbMF0uZmllbGQgPT09IGl0ZW0uZmllbGRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydFswXS5kaXIgPT09ICdhc2MnXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0WzBdLmRpciA9PT0gJ2Rlc2MnXCI+PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpdGVtLmN1c3RvbUNvbHVtblwiIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5UZW1wbGF0ZURpY3RbaXRlbS50eXBlXVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBkYXRhSXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpdGVtLmN1c3RvbVwiIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhSXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXRlbS5pbXBhY3RcIiBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbXBhY3RDb2x1bW47IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGFJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9rZW5kby1ncmlkLWNvbHVtbj5cblxuICAgICAgPGtlbmRvLWdyaWQtY29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUNvbHVtblwiIFt3aWR0aF09XCJkZWxldGVDb2x1bW5XaWR0aFwiIGNsYXNzPVwiZGVsZXRlLWNvbHVtblwiIHRpdGxlPVwiQWN0aW9uXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgPGxpYi10b29sdGlwIHNob3dPbj1cImhvdmVyXCIgcG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cInJlbW92ZS10b29sdGlwXCI+XG4gICAgICAgICAgICA8bGliLWljb24gbmFtZT1cImRlbGV0ZVwiIGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwib25EZWxldGUoZGF0YUl0ZW0pXCI+PC9saWItaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGxpYi10eXBvZ3JhcGh5IGRlZmF1bHRUZXh0PVwiUmVtb3ZlXCI+PC9saWItdHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGliLXRvb2x0aXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2tlbmRvLWdyaWQtY29sdW1uPlxuXG4gICAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gW3dpZHRoXT1cImtlYmFiQ29sdW1uV2lkdGhcIiBjbGFzcz1cImtlYmFiLWNvbHVtblwiICpuZ0lmPVwic2hvd0tlYmFiXCIgdGl0bGU9XCJBY3Rpb25zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3duYnV0dG9uICpuZ0lmPVwiIWhpZGVLZWJhYlJvd0luZGV4LmluY2x1ZGVzKHJvd0luZGV4KVwiIFtzdmdJY29uXT1cImljb25cIiBmaWxsTW9kZT1cIm5vbmVcIlxuICAgICAgICAgICAgW2RhdGFdPVwia2ViYWJMaXN0IHwga2ViYWJNZW51RmlsdGVyIDogZGF0YUl0ZW1cIiBjbGFzcz1cImtlYmFiXCIgKGl0ZW1DbGljayk9XCJvbktlYmFiQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIlxuICAgICAgICAgICAgW3BvcHVwU2V0dGluZ3NdPVwieyBhbGlnbjogJ3JpZ2h0JywgYW5pbWF0ZTogdHJ1ZSwgcG9wdXBDbGFzczogJ2tlYmFiLWxpc3QnIH1cIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3duYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9rZW5kby1ncmlkLWNvbHVtbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWREZXRhaWxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGFJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gKm5nSWY9XCJjdXN0b21FeHBhbmRSb3dDb2x1bW5cIiBbd2lkdGhdPVwiZXhwYW5kUm93Q29sdW1uV2lkdGhcIiBjbGFzcz1cImdyaWQtY29sdW1uIGV4cGFuZC1jb2x1bW5cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhwYW5kQ29sdW1uQ2xhc3MoKVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGRhdGFJdGVtW2dyaWRSb3dTZWxlY3RCeVZhbHVlXSkgJiYgZGlzYWJsZVByZVNlbGVjdGVkUm93c1wiXG4gICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1jb2x1bW4tdGV4dFwiPlxuICAgICAgICAgICAgQWxyZWFkeSBhZGRlZFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8a2VuZG8tYnV0dG9uICpuZ0lmPVwiIWV4cGFuZFJvd0luZGV4LmluY2x1ZGVzKHJvd0luZGV4KVwiIFtzdmdJY29uXT1cImFycm93RG93bkljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZFJvdyhyb3dJbmRleClcIiBmaWxsTW9kZT1cIm5vbmVcIiBjbGFzcz1cImFycm93LWJ0blwiPlxuICAgICAgICAgIDwva2VuZG8tYnV0dG9uPlxuICAgICAgICAgIDxrZW5kby1idXR0b24gKm5nSWY9XCJleHBhbmRSb3dJbmRleC5pbmNsdWRlcyhyb3dJbmRleClcIiBbc3ZnSWNvbl09XCJhcnJvd1VwSWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29sbGFwc2VSb3cocm93SW5kZXgpXCIgZmlsbE1vZGU9XCJub25lXCIgY2xhc3M9XCJhcnJvdy1idG5cIj5cbiAgICAgICAgICA8L2tlbmRvLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwva2VuZG8tZ3JpZC1jb2x1bW4+XG5cbiAgICA8bmctdGVtcGxhdGUga2VuZG9QYWdlclRlbXBsYXRlIGxldC10b3RhbFBhZ2VzPVwidG90YWxQYWdlc1wiIGxldC1jdXJyZW50UGFnZT1cImN1cnJlbnRQYWdlXCI+XG4gICAgICA8a2VuZG8tcGFnZXItcHJldi1idXR0b25zPjwva2VuZG8tcGFnZXItcHJldi1idXR0b25zPlxuICAgICAgPGtlbmRvLXBhZ2VyLW51bWVyaWMtYnV0dG9ucyBbYnV0dG9uQ291bnRdPVwicGFnZUNvdW50XCI+PC9rZW5kby1wYWdlci1udW1lcmljLWJ1dHRvbnM+XG4gICAgICA8a2VuZG8tcGFnZXItbmV4dC1idXR0b25zPjwva2VuZG8tcGFnZXItbmV4dC1idXR0b25zPlxuICAgICAgPGtlbmRvLXBhZ2VyLWluZm8+PC9rZW5kby1wYWdlci1pbmZvPlxuICAgICAgPGtlbmRvLXBhZ2VyLXBhZ2Utc2l6ZXMgW3BhZ2VTaXplc109XCJzaXplc1wiPjwva2VuZG8tcGFnZXItcGFnZS1zaXplcz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwva2VuZG8tZ3JpZD5cbjwvZGl2PlxuIl19
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL21vbGVjdWxlcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL21vbGVjdWxlcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFHaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGFBQWEsRUFNZCxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBa0IsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O0FBS3RELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFBbUIsUUFBZ0M7UUFBaEMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFEMUMsU0FBSSxHQUFXLEVBQUUsQ0FBQztJQUMyQixDQUFDOytHQUY1QyxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9C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QkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBc09OLE1BQU07c0JBREwsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2VsZWN0YWJsZVNldHRpbmdzLFxuICBTZWxlY3RhYmxlTW9kZSxcbiAgQ2VsbENsaWNrRXZlbnQsXG4gIEdyaWRDb21wb25lbnQsXG4gIEdyaWREYXRhUmVzdWx0LFxuICBQYWdlQ2hhbmdlRXZlbnQsXG4gIFJvd0NsYXNzQXJncyxcbiAgU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSxcbiAgQ2VsbENsb3NlRXZlbnRcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQgeyBTb3J0RGVzY3JpcHRvciwgb3JkZXJCeSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7XG4gIFNWR0ljb24sXG4gIGNoZXZyb25Eb3duSWNvbixcbiAgY2hldnJvblVwSWNvbixcbiAgbW9yZVZlcnRpY2FsSWNvblxufSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tc3ZnLWljb25zJztcbmltcG9ydCB7IExvYWRlclNpemUsIExvYWRlclR5cGUsIExvYWRlclRoZW1lQ29sb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2V5cyB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWNvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3R5cGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Db2x1bW5UZW1wbGF0ZSB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9IFwiXCI7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8Q29tcG9uZW50Pikge31cbn1cblxuY29uc3QgY3JlYXRlRm9ybUdyb3VwID0gKGRhdGFJdGVtOiBhbnkpOiBGb3JtR3JvdXAgPT4ge1xuICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGZvciAobGV0IGRhdGEgb2YgT2JqZWN0LmtleXMoZGF0YUl0ZW0pKSB7XG4gICAgZm9ybS5hZGRDb250cm9sKGRhdGEsIG5ldyBGb3JtQ29udHJvbChkYXRhSXRlbVtkYXRhXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCkpXG4gIH1cbiAgcmV0dXJuIGZvcm1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1ncmlkLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRQYWdpbmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihDdXN0b21Db2x1bW5UZW1wbGF0ZSkgY29sdW1uVGVtcGxhdGVzITogUXVlcnlMaXN0PEN1c3RvbUNvbHVtblRlbXBsYXRlPiB8IFtdO1xuICBAQ29udGVudENoaWxkKCdtdWx0aUNvbHVtbkRhdGEnKSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBAQ29udGVudENoaWxkKCdkZXRhaWxUZW1wbGF0ZScpIGRldGFpbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gIEBDb250ZW50Q2hpbGQoJ2ltcGFjdENvbHVtbicpIGltcGFjdENvbHVtbiE6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBAVmlld0NoaWxkKEdyaWRDb21wb25lbnQpIGdyaWQhOiBHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmlkRWxlbWVudCcpIGdyaWRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQnKSBzZWxlY3RBbGxNZXNzYWdlRWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZ3JpZFZpZXc6IEdyaWREYXRhUmVzdWx0ID0geyBkYXRhOiBbXSwgdG90YWw6IDAgfTtcbiAgQElucHV0KCkgc2tpcDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgaXRlbU5hbWU6IHN0cmluZyA9ICdJdGVtcyc7XG4gIHNob3dTZWxlY3RBbGxNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIGFsbFBhZ2VzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2F2ZWRIZWlnaHQ6bnVtYmVyID0gMDtcbiAgcHJldmlvdXNTZWxlY3RBbGxTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnO1xuICBAT3V0cHV0KCkgb25TZWxlY3RBbGxBY3Jvc3NQYWdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQElucHV0KCkgY29sdW1uRGF0YTogYW55ID0gW107XG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzb3J0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBncm91cGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVvcmRlcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGg6IG51bWJlciA9IDQ1O1xuICBASW5wdXQoKSBjaGVja0JveENvbHVtblJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjaGVja0JveENvbHVtbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2tCb3hDb2x1bW5TaG93U2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjaGVja0JveFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbHVtbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogU2VsZWN0YWJsZU1vZGUgfCB1bmRlZmluZWQgPSAnbXVsdGlwbGUnO1xuICBASW5wdXQoKSBjaGVja2JveE9ubHkgPSB0cnVlO1xuICBASW5wdXQoKSBkcmFnQ29sdW1ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBuYXZpZ2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBoZWlnaHQ6IGFueTtcbiAgQElucHV0KCkgZ3JpZFJvd1NlbGVjdEJ5VmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBub1JlY29yZHNDb250ZW50OiBzdHJpbmcgPSAnTm8gUmVjb3JkcyBBdmFpbGFibGUnO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQElucHV0KCkgc2hvd1Rvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXh0cmFjdERhdGFJdGVtczogYW55O1xuICBzZWxlY3RhYmxlU2V0dGluZ3M6IFNlbGVjdGFibGVTZXR0aW5ncyA9IHt9O1xuICBASW5wdXQoKSBrZWJhYkxpc3Q6IGFueSA9IFtdO1xuICBASW5wdXQoKSBzaG93S2ViYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJvd0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkga2ViYWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgaWNvbjogU1ZHSWNvbiA9IG1vcmVWZXJ0aWNhbEljb247XG4gIEBJbnB1dCgpIGtlYmFiQ29sdW1uV2lkdGg6IG51bWJlciA9IDYwO1xuICBkYXRhOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0Q29sdW1uID0gJyc7XG4gIEBPdXRwdXQoKSByb3dEYXRhT2ZDbGlja2VkQ2VsbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBwcmVTZWxlY3RlZDogYW55W10gPSBbXTtcbiAgcHJlU2VsZWN0ZWRSZWNvcmRzOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGlnbm9yZUNvbHVtbkNlbGxDbGljazogbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KCkgYWxsb3dDb2x1bW5DbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzb3J0OiBTb3J0RGVzY3JpcHRvcltdID0gW1xuICAgIHtcbiAgICAgIGZpZWxkOiAnJyxcbiAgICAgIGRpcjogdW5kZWZpbmVkLFxuICAgIH0sXG4gIF07XG4gIEBJbnB1dCgpIGhhc0FwaVNvcnRpbmcgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNvcnREaXJlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIGFycm93RG93bkljb246IFNWR0ljb24gPSBjaGV2cm9uRG93bkljb247XG4gIHB1YmxpYyBhcnJvd1VwSWNvbjogU1ZHSWNvbiA9IGNoZXZyb25VcEljb247XG4gIEBJbnB1dCgpIGV4cGFuZFJvd0luZGV4OiBudW1iZXJbXSA9IFtdO1xuICBASW5wdXQoKSBjdXN0b21FeHBhbmRSb3dDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGVsZXRlQ29sdW1uV2lkdGg6IG51bWJlciA9IDQyO1xuICBleHBhbmRSb3dDb2x1bW5XaWR0aDogbnVtYmVyID0gNTY7XG4gIEBPdXRwdXQoKSBkZWxldGVkUm93RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzaXplczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGFnZUNvdW50ID0gMDtcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUNvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlS2ViYWJSb3dJbmRleDogbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkZXJUeXBlOiBMb2FkZXJUeXBlID0gTG9hZGVyVHlwZS5wdWxzaW5nO1xuICBASW5wdXQoKSBsb2FkZXJTaXplOiBMb2FkZXJTaXplID0gTG9hZGVyU2l6ZS5tZWRpdW07XG4gIEBJbnB1dCgpIGxvYWRlclRoZW1lOiBMb2FkZXJUaGVtZUNvbG9yID0gTG9hZGVyVGhlbWVDb2xvci5wcmltYXJ5O1xuICBpbml0aWFsR3JpZEhlaWdodDogYW55O1xuICBncmlkQm90dG9tU3BhY2UgPSAyNDtcbiAgcmVzaXplSGVpZ2h0OiBhbnkgPSAwO1xuICBzZWxlY3RBbGxTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnO1xuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGRpc2FibGVQcmVTZWxlY3RlZFJvd3MgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1Hcm91cCE6IEZvcm1Hcm91cCB8IGFueTtcbiAgQE91dHB1dCgpIHVwZGF0ZWREYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbG93RWRpdGluZ0NlbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgY29sdW1uQ29udGVudE5vV3JhcCA9IGZhbHNlO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHRoaXMuc2V0U2VsZWN0YWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBjb2x1bW5UZW1wbGF0ZURpY3Q6YW55ID0ge307XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5EYXRhLmZvckVhY2goKGNvbHVtbjphbnksaW5kZXg6bnVtYmVyKT0+e1xuICAgICAgY29sdW1uLnNvcnRhYmxlID0gY29sdW1uLnNvcnRhYmxlID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb2x1bW4uc29ydGFibGU7XG4gICAgICBpZighdGhpcy5pZ25vcmVDb2x1bW5DZWxsQ2xpY2suaW5jbHVkZXMoaW5kZXgpKXtcbiAgICAgICAgY29sdW1uLmNsYXNzPSdjb2x1bW4tY3Vyc29yLXBvaW50ZXInO1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCF0aGlzLmhhc0FwaVNvcnRpbmcpIHtcbiAgICAgIHRoaXMubG9hZEdyaWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuZ3JpZFZpZXcuZGF0YT8ubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLmNvbHVtblRlbXBsYXRlcy5mb3JFYWNoKHggPT4gdGhpcy5jb2x1bW5UZW1wbGF0ZURpY3RbeC50eXBlXSA9IHgudGVtcGxhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmN1c3RvbUV4cGFuZFJvd0NvbHVtbikge1xuICAgICAgdGhpcy5leHBhbmRSb3dJbmRleC5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWQuZXhwYW5kUm93KGlkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMucHJlU2VsZWN0ZWQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzPy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA9PSB0aGlzLmdyaWRWaWV3LnRvdGFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAnY2hlY2tlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2luZGV0ZXJtaW5hdGUnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ3VuY2hlY2tlZCc7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbEdyaWRIZWlnaHQgPVxuICAgICAgdGhpcy5ncmlkRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIHRoaXMuZ3JpZEJvdHRvbVNwYWNlO1xuICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuXG4gICAgY29uc3QgZ3JpZENvbnRhaW5lciA9IHRoaXMuZ3JpZEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2stZ3JpZC1jb250YWluZXInKVswXTtcbiAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgIGdyaWRDb250YWluZXIucGFyZW50RWxlbWVudCxcbiAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIGdyaWRDb250YWluZXIsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICB9XG5cbiAgc2VsZWN0QWNyb3NzUGFnZXMoaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMudHJpZ2dlclNlbGVjdEFsbFBhZ2VzRXZlbnQoaXNTZWxlY3RlZCk7XG4gICAgaWYoIWlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMub25TZWxlY3RBbGxDaGFuZ2UodGhpcy5wcmV2aW91c1NlbGVjdEFsbFN0YXRlKVxuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJTZWxlY3RBbGxQYWdlc0V2ZW50KGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbFBhZ2VzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xuICAgIHRoaXMub25TZWxlY3RBbGxBY3Jvc3NQYWdlcy5lbWl0KGlzU2VsZWN0ZWQpO1xuICAgIGNvbnNvbGUubG9nKCd0cmlnZ2VyU2VsZWN0QWxsUGFnZXNFdmVudCA6IGlzU2VsZWN0ZWQnLCBpc1NlbGVjdGVkKTtcbiAgfVxuXG4gIGFkZFNlbGVjdEFsbE1lc3NhZ2Uoc2VsZWN0QWxsOmJvb2xlYW4pIHtcbiAgICBpZih0aGlzLnNob3dTZWxlY3RBbGxNZXNzYWdlICYmIHRoaXMucGFnZUNvdW50ID4gMSkge1xuICAgICAgY29uc3QgZWxlbWVudFJlc3VsdCA9IHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYoc2VsZWN0QWxsKSB7XG4gICAgICAgIHRoaXMuc2F2ZWRIZWlnaHQgPSBlbGVtZW50UmVzdWx0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gZWxlbWVudFJlc3VsdC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2Utc2hvdycpO1xuICAgICAgICBjb25zdCBhZnRlckhlaWdodCA9IGVsZW1lbnRSZXN1bHQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBlbGVtZW50UmVzdWx0LnN0eWxlLmhlaWdodCA9IChlbGVtZW50UmVzdWx0Lm9mZnNldEhlaWdodCAtIChhZnRlckhlaWdodCAtIGJlZm9yZUhlaWdodCkpICsgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVzc2FnZUVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2Utc2hvdycpO1xuICAgICAgICBpZih0aGlzLmFsbFBhZ2VzU2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJTZWxlY3RBbGxQYWdlc0V2ZW50KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50UmVzdWx0LnN0eWxlLmhlaWdodCA9IHRoaXMuc2F2ZWRIZWlnaHQgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhZ2VDaGFuZ2UoZXZlbnQ6IFBhZ2VDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc2V0U2VsZWN0YWJsZVNldHRpbmdzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoZWNrYm94T25seSB8fCB0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmRyYWdDb2x1bW5zID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RhYmxlU2V0dGluZ3MgPSB7XG4gICAgICBjaGVja2JveE9ubHk6IHRoaXMuY2hlY2tib3hPbmx5LFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgZHJhZzogdGhpcy5kcmFnQ29sdW1ucyxcbiAgICB9O1xuICB9XG5cbiAgLy8gV2UgY2FuIGV4dHJhY3QgZGF0YSBvdXQgb2Ygcm93IG51bWJlciB1c2luZyBiZWxvdyBmdW5jdGlvblxuICAvKiBleHRyYWN0KCkge1xuICAgIHRoaXMuZXh0cmFjdERhdGFJdGVtcyA9IHRoaXMubXlTZWxlY3Rpb24ubWFwKGlkeCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YS5maW5kKChkYXRhOiB7IFByb2R1Y3RJRDogbnVtYmVyOyB9KSA9PiBkYXRhLlByb2R1Y3RJRCA9PT0gaWR4KTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmV4dHJhY3REYXRhSXRlbXMpXG4gICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEuZW1pdCh0aGlzLmV4dHJhY3REYXRhSXRlbXMpO1xuICB9ICovXG5cbiAgc2VsZWN0ZWRLZXlzQ2hhbmdlKHJvd3M6IG51bWJlcltdKSB7XG4gICAgbGV0IHNlbGVjdGVkUm93RGF0YSA9IFtdO1xuICAgIGxldCBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG5cbiAgICBpZiAocm93cz8ubGVuZ3RoID4gMCkge1xuICAgICAgc2VsZWN0ZWRSb3dzQ291bnQgPSByb3dzPy5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUm93cz8ubGVuZ3RoID4gMCAmJiB0aGlzLmRpc2FibGVQcmVTZWxlY3RlZFJvd3MpIHtcbiAgICAgIHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aDtcbiAgICAgIHJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cztcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdEFsbFN0YXRlID0gdGhpcy5zZWxlY3RBbGxTdGF0ZTtcbiAgICBpZiAoc2VsZWN0ZWRSb3dzQ291bnQgPT0gdGhpcy5ncmlkVmlldy50b3RhbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGxTdGF0ZSA9ICdjaGVja2VkJztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkUm93c0NvdW50ID09IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAndW5jaGVja2VkJztcbiAgICAgIHRoaXMuYWRkU2VsZWN0QWxsTWVzc2FnZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAnaW5kZXRlcm1pbmF0ZSc7XG4gICAgICB0aGlzLmFkZFNlbGVjdEFsbE1lc3NhZ2UoZmFsc2UpO1xuICAgIH1cblxuICAgIHNlbGVjdGVkUm93RGF0YSA9IHJvd3MubWFwKHJvd0RhdGEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JpZFZpZXcuZGF0YS5maW5kKChkYXRhKSA9PiBkYXRhW3RoaXMuZ3JpZFJvd1NlbGVjdEJ5VmFsdWVdID09PSByb3dEYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3dEYXRhLmVtaXQoc2VsZWN0ZWRSb3dEYXRhKTtcbiAgfVxuXG4gIG9uS2ViYWJDbGljayhpdGVtOiBhbnksIHJvd0RldGFpbHM6IGFueSkge1xuICAgIHRoaXMua2ViYWJJdGVtQ2xpY2suZW1pdCh7IGFjdGlvbjogaXRlbSwgcm93RGV0YWlscyB9KTtcbiAgfVxuXG4gIG9uRGV0YWlsRXhwYW5kKHJvd0RhdGE6IGFueSkge1xuICAgIHRoaXMucm93RGV0YWlscy5lbWl0KHJvd0RhdGEuZGF0YUl0ZW0pO1xuICB9XG5cbiAgY2VsbENsaWNrSGFuZGxlcihhcmdzOiBDZWxsQ2xpY2tFdmVudCkge1xuICAgIGlmICh0aGlzLmFsbG93Q29sdW1uQ2xpY2spIHtcbiAgICAgIGlmICh0aGlzLmlnbm9yZUNvbHVtbkNlbGxDbGljay5pbmNsdWRlcyhhcmdzLmNvbHVtbkluZGV4KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJvd0RhdGFPZkNsaWNrZWRDZWxsLmVtaXQoe2RhdGFJdGVtOmFyZ3MuZGF0YUl0ZW0sY29sdW1uSW5kZXg6YXJncy5jb2x1bW5JbmRleH0pO1xuICAgIH1cbiAgICBpZih0aGlzLmFsbG93RWRpdGluZ0NlbGwpe1xuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBjcmVhdGVGb3JtR3JvdXAoYXJncy5kYXRhSXRlbSk7XG4gICAgICAgICAgICBhcmdzLnNlbmRlci5lZGl0Q2VsbChhcmdzLnJvd0luZGV4LCBhcmdzLmNvbHVtbkluZGV4LCB0aGlzLmZvcm1Hcm91cCk7XG4gICAgICB9XG4gIH1cblxuICBzb3J0Q2hhbmdlKHNvcnQ6IFNvcnREZXNjcmlwdG9yW10pOiB2b2lkIHtcbiAgICB0aGlzLnNvcnQgPSBzb3J0O1xuICAgIGlmICghdGhpcy5oYXNBcGlTb3J0aW5nKSB7XG4gICAgICB0aGlzLmxvYWRHcmlkRGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLnNvcnREaXJlY3Rpb24uZW1pdCh0aGlzLnNvcnQpO1xuICB9XG5cbiAgbG9hZEdyaWREYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZFZpZXcgPSB7XG4gICAgICBkYXRhOiBvcmRlckJ5KHRoaXMuZ3JpZFZpZXc/LmRhdGEsIHRoaXMuc29ydCksXG4gICAgICB0b3RhbDogdGhpcy5ncmlkVmlldz8udG90YWwsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGFuZFJvdyhpZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ncmlkLmV4cGFuZFJvdyhpZCk7XG4gICAgdGhpcy5leHBhbmRSb3dJbmRleC5wdXNoKGlkKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgY29sbGFwc2VSb3coaWQ6IG51bWJlcikge1xuICAgIHRoaXMuZ3JpZC5jb2xsYXBzZVJvdyhpZCk7XG4gICAgdGhpcy5leHBhbmRSb3dJbmRleC5zcGxpY2UodGhpcy5leHBhbmRSb3dJbmRleC5pbmRleE9mKGlkKSwgMSk7XG4gICAgaWYgKHRoaXMuZXhwYW5kUm93SW5kZXg/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpYi1ncmlkJyk7XG4gICAgICBjb25zdCBncmlkT2Zmc2V0ID0gdmlld3BvcnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFk7XG4gICAgICBpZiAod2luZG93SGVpZ2h0ID4gZ3JpZE9mZnNldCArIHRoaXMuaW5pdGlhbEdyaWRIZWlnaHQpIHtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0R3JpZEhlaWdodCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlKHJvd0RldGFpbHM6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRIZWFkZXJIZWlnaHQoKTtcbiAgICB9LCAxMDAwKTtcbiAgICB0aGlzLmRlbGV0ZWRSb3dEYXRhLmVtaXQocm93RGV0YWlscyk7XG4gIH1cblxuICBnZXRIZWFkZXJIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMuZ3JpZFZpZXc/LmRhdGE/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdoaWRlLWhlYWRlcic7XG4gICAgfVxuICAgIHJldHVybiAndmlldy1oZWFkZXInO1xuICB9XG5cbiAgZ2V0R3JpZEhlaWdodCgpIHtcbiAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3Qgdmlld3BvcnQ6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWItZ3JpZCcpO1xuICAgIGNvbnN0IGdyaWRPZmZzZXQgPSB2aWV3cG9ydC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICBjb25zdCBncmlkSGVpZ2h0ID1cbiAgICAgIHRoaXMuZ3JpZEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyB0aGlzLmdyaWRCb3R0b21TcGFjZTsgLy9ncmlkIHNob3VsZCBoYXZlIDI0cHggc3BhY2UgYXQgYm90dG9tXG4gICAgaWYgKGdyaWRPZmZzZXQgKyBncmlkSGVpZ2h0ID49IHdpbmRvd0hlaWdodCkge1xuICAgICAgdGhpcy5oZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSAoZ3JpZE9mZnNldCArIHRoaXMuZ3JpZEJvdHRvbVNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcmVzaXplKGV2OiBhbnkpIHtcbiAgICBpZiAoZXYudGFyZ2V0LmlubmVySGVpZ2h0ID4gdGhpcy5yZXNpemVIZWlnaHQpIHtcbiAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gZXYudGFyZ2V0LmlubmVySGVpZ2h0O1xuICAgICAgdGhpcy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc2l6ZUhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgdGhpcy5yZXNpemVIZWlnaHQgPSAwO1xuICAgIH1cbiAgICB0aGlzLmdldEdyaWRIZWlnaHQoKTtcbiAgfVxuXG4gIHJvd0NsYXNzID0gKGFyZ3M6IFJvd0NsYXNzQXJncykgPT4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cyAmJiB0aGlzLmRpc2FibGVQcmVTZWxlY3RlZFJvd3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdrLWRpc2FibGVkJzogdGhpcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoXG4gICAgICAgICAgYXJncy5kYXRhSXRlbVt0aGlzLmdyaWRSb3dTZWxlY3RCeVZhbHVlXVxuICAgICAgICApIHx8IHRoaXMuYWxsUGFnZXNTZWxlY3RlZCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBleHBhbmRDb2x1bW5DbGFzcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDAgJiYgdGhpcy5kaXNhYmxlUHJlU2VsZWN0ZWRSb3dzKSB7XG4gICAgICB0aGlzLmV4cGFuZFJvd0NvbHVtbldpZHRoID0gMTk0O1xuICAgICAgcmV0dXJuICdleHBhbmQtcm93JztcbiAgICB9XG4gICAgdGhpcy5leHBhbmRSb3dDb2x1bW5XaWR0aCA9IDU2O1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGNoZWNrZWRTdGF0ZTogU2VsZWN0QWxsQ2hlY2tib3hTdGF0ZSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoZWNrZWRTdGF0ZSA9PT0gJ2NoZWNrZWQnIHx8XG4gICAgICAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA9PSB0aGlzLmdyaWRWaWV3LnRvdGFsICYmXG4gICAgICAgIHRoaXMuZGlzYWJsZVByZVNlbGVjdGVkUm93cylcbiAgICApIHtcbiAgICAgIHRoaXMucHJlU2VsZWN0ZWQgPSB0aGlzLmdyaWRWaWV3LmRhdGFcbiAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuZ3JpZFJvd1NlbGVjdEJ5VmFsdWVdKVxuICAgICAgICAuZmlsdGVyKChpZDogYW55KSA9PiBpZCk7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2NoZWNrZWQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDAgJiYgdGhpcy5kaXNhYmxlUHJlU2VsZWN0ZWRSb3dzKSB7XG4gICAgICB0aGlzLnByZVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFJvd3M7XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ2luZGV0ZXJtaW5hdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZVNlbGVjdGVkID0gW107XG4gICAgICB0aGlzLnNlbGVjdEFsbFN0YXRlID0gJ3VuY2hlY2tlZCc7XG4gICAgfVxuICAgIHRoaXMuYWRkU2VsZWN0QWxsTWVzc2FnZSh0aGlzLnNlbGVjdEFsbFN0YXRlID09PSAnY2hlY2tlZCcpO1xuICB9XG5cbiAgcHVibGljIGNlbGxDbG9zZUhhbmRsZXIoYXJnczogQ2VsbENsb3NlRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgeyBmb3JtR3JvdXAsIGRhdGFJdGVtIH0gPSBhcmdzO1xuICAgIGlmICghZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICBhcmdzLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIGlmIChmb3JtR3JvdXAuZGlydHkpIHtcbiAgICAgIGlmIChhcmdzLm9yaWdpbmFsRXZlbnQgJiYgYXJncy5vcmlnaW5hbEV2ZW50LmtleUNvZGUgPT09IEtleXMuRXNjYXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YUl0ZW0sIGZvcm1Hcm91cC52YWx1ZSk7XG4gICAgICB0aGlzLnNhdmVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnVwZGF0ZWREYXRhLmVtaXQodGhpcy5ncmlkLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZC5jbG9zZUNlbGwoKTtcbiAgICB0aGlzLmdyaWQuY2FuY2VsQ2VsbCgpO1xuICB9XG59XG4iLCI8ZGl2ICNncmlkRWxlbWVudCAod2luZG93OnJlc2l6ZSk9XCJyZXNpemUoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cImNvbHVtbkNvbnRlbnROb1dyYXAgPyAnY29sdW1uLWNvbnRlbnQtbm93cmFwJyA6ICcnXCI+XG4gIDxrZW5kby1ncmlkIFtkYXRhXT1cImdyaWRWaWV3XCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3NraXBdPVwic2tpcFwiIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVTZXR0aW5nc1wiXG4gICAgW3BhZ2VhYmxlXT1cInBhZ2VhYmxlXCIgW3NvcnRhYmxlXT1cInNvcnRhYmxlXCIgW2dyb3VwYWJsZV09XCJncm91cGFibGVcIiBbcmVvcmRlcmFibGVdPVwicmVvcmRlcmFibGVcIlxuICAgIFtyZXNpemFibGVdPVwicmVzaXphYmxlXCIgW2NvbHVtbk1lbnVdPVwiY29sdW1uTWVudVwiIFtuYXZpZ2FibGVdPVwibmF2aWdhYmxlXCIgW2hlaWdodF09XCJoZWlnaHRcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgKGNoYW5nZSk9XCJzZXRTZWxlY3RhYmxlU2V0dGluZ3MoKVwiIChzZWxlY3RlZEtleXNDaGFuZ2UpPVwic2VsZWN0ZWRLZXlzQ2hhbmdlKCRldmVudClcIlxuICAgIFtrZW5kb0dyaWRTZWxlY3RCeV09XCJncmlkUm93U2VsZWN0QnlWYWx1ZVwiIChkZXRhaWxFeHBhbmQpPVwib25EZXRhaWxFeHBhbmQoJGV2ZW50KVwiIFtzZWxlY3RlZEtleXNdPVwicHJlU2VsZWN0ZWRcIlxuICAgIChwYWdlQ2hhbmdlKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChjZWxsQ2xpY2spPVwiY2VsbENsaWNrSGFuZGxlcigkZXZlbnQpXCIgKGNlbGxDbG9zZSk9XCJjZWxsQ2xvc2VIYW5kbGVyKCRldmVudClcIiBbc29ydF09XCJzb3J0XCJcbiAgICAoc29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlKCRldmVudClcIiBbbmdDbGFzc109XCJnZXRIZWFkZXJIZWlnaHQoKVwiIGlkPVwibGliLWdyaWRcIiBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIj5cbiAgICA8ZGl2ICNzZWxlY3RBbGxNZXNzYWdlRWxlbWVudCBjbGFzcz1cImxpYi1ncmlkLXNlbGVjdC1hbGwtbWVzc2FnZS1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhYWxsUGFnZXNTZWxlY3RlZFwiIGNsYXNzPVwibGliLWdyaWQtc2VsZWN0LWFsbC1tZXNzYWdlXCI+XG4gICAgICAgIDxsaWItdHlwb2dyYXBoeSBbZGVmYXVsdFRleHRdPVwiJ0FsbCAnK2dyaWRWaWV3LmRhdGEubGVuZ3RoKycgJytpdGVtTmFtZSsnIG9uIHRoaXMgcGFnZSBhcmUgc2VsZWN0ZWQuJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT5cbiAgICAgICAgPHU+PGxpYi10eXBvZ3JhcGh5IChjbGljayk9XCJzZWxlY3RBY3Jvc3NQYWdlcyh0cnVlKVwiIGNsYXNzPSBcInNlbGVjdC1hbGwtaGFuZGxlclwiIFtkZWZhdWx0VGV4dF09XCInU2VsZWN0IGFsbCAnK2dyaWRWaWV3LnRvdGFsKycgJytpdGVtTmFtZSsnIGZyb20gYWxsIHBhZ2VzJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT48L3U+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxQYWdlc1NlbGVjdGVkXCIgY2xhc3M9XCJsaWItZ3JpZC1zZWxlY3QtYWxsLW1lc3NhZ2VcIj5cbiAgICAgICAgPGxpYi1pY29uIG5hbWU9XCJjaXJjbGUtY2hlY2tlZFwiIGNsYXNzPVwiYWxsLXNlbGVjdGVkLWljb25cIj48L2xpYi1pY29uPlxuICAgICAgICA8bGliLXR5cG9ncmFwaHkgW2RlZmF1bHRUZXh0XT1cIidBbGwgJytncmlkVmlldy50b3RhbCsnICcraXRlbU5hbWUrJyBhY3Jvc3MgYWxsIHBhZ2VzIGFyZSBzZWxlY3RlZC4nXCIgdHlwZT1cIkJPRFlfU01BTExcIj48L2xpYi10eXBvZ3JhcGh5PlxuICAgICAgICA8dT48bGliLXR5cG9ncmFwaHkgKGNsaWNrKT1cInNlbGVjdEFjcm9zc1BhZ2VzKGZhbHNlKVwiIGNsYXNzPSBcInNlbGVjdC1hbGwtaGFuZGxlclwiIFtkZWZhdWx0VGV4dF09XCInQ2xlYXIgc2VsZWN0aW9uJ1wiIHR5cGU9XCJCT0RZX1NNQUxMXCI+PC9saWItdHlwb2dyYXBoeT48L3U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJzaG93VG9vbGJhclwiIGtlbmRvR3JpZFRvb2xiYXJUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidGhpcy5ncmlkVmlldy50b3RhbCA9PT0gMFwiIGtlbmRvR3JpZE5vUmVjb3Jkc1RlbXBsYXRlPlxuICAgICAgPGxpYi10eXBvZ3JhcGh5ICpuZ0lmPVwiIWxvYWRpbmdcIiBbZGVmYXVsdFRleHRdPVwibm9SZWNvcmRzQ29udGVudFwiIHR5cGU9XCJCT0RZX01FRElVTVwiPjwvbGliLXR5cG9ncmFwaHk+XG4gICAgICA8bGliLWxvYWRlciAqbmdJZj1cImxvYWRpbmdcIiBbdHlwZV09XCJsb2FkZXJUeXBlXCIgW3NpemVdPVwibG9hZGVyU2l6ZVwiIFt0aGVtZUNvbG9yXT1cImxvYWRlclRoZW1lXCI+PC9saWItbG9hZGVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5ncmlkVmlldy50b3RhbCA+IDBcIj5cbiAgICAgIDxrZW5kby1ncmlkLWNoZWNrYm94LWNvbHVtbiAqbmdJZj1cImNoZWNrQm94UmVxdWlyZWQgPT09IHRydWVcIiBbd2lkdGhdPVwiY2hlY2tCb3hXaWR0aFwiXG4gICAgICAgIFtyZXNpemFibGVdPVwiY2hlY2tCb3hDb2x1bW5SZXNpemFibGVcIiBbY29sdW1uTWVudV09XCJjaGVja0JveENvbHVtbk1lbnVcIiBjbGFzcz1cImNoZWNrYm94LWNvbHVtblwiPlxuICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9HcmlkSGVhZGVyVGVtcGxhdGU+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2VsZWN0QWxsQ2hlY2tib3hJZFwiIHR5cGU9XCJjaGVja2JveFwiIGtlbmRvQ2hlY2tCb3gga2VuZG9HcmlkU2VsZWN0QWxsQ2hlY2tib3hcbiAgICAgICAgICAgIFtzdGF0ZV09XCJzZWxlY3RBbGxTdGF0ZVwiIChzZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2tlbmRvLWdyaWQtY2hlY2tib3gtY29sdW1uPlxuICAgICAgXG4gICAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gY2xhc3M9XCJncmlkLWNvbHVtblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVtbkRhdGFcIiBbZmllbGRdPVwiaXRlbS5maWVsZFwiIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgW3dpZHRoXT1cIml0ZW0uY29sdW1uV2lkdGhcIiBbc29ydGFibGVdPVwiaXRlbS5zb3J0YWJsZVwiIFtlZGl0b3JdPVwiaXRlbS5lZGl0b3JcIiBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInNvcnRhYmxlXCIga2VuZG9HcmlkSGVhZGVyVGVtcGxhdGU+XG4gICAgICAgICAge3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRbMF0uZmllbGQgPT09IGl0ZW0uZmllbGRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydFswXS5kaXIgPT09ICdhc2MnXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0WzBdLmRpciA9PT0gJ2Rlc2MnXCI+PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpdGVtLmN1c3RvbUNvbHVtblwiIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5UZW1wbGF0ZURpY3RbaXRlbS50eXBlXVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBkYXRhSXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpdGVtLmN1c3RvbVwiIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhSXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXRlbS5pbXBhY3RcIiBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbXBhY3RDb2x1bW47IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGFJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9rZW5kby1ncmlkLWNvbHVtbj5cblxuICAgICAgPGtlbmRvLWdyaWQtY29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUNvbHVtblwiIFt3aWR0aF09XCJkZWxldGVDb2x1bW5XaWR0aFwiIGNsYXNzPVwiZGVsZXRlLWNvbHVtblwiIHRpdGxlPVwiQWN0aW9uXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgPGxpYi10b29sdGlwIHNob3dPbj1cImhvdmVyXCIgcG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cInJlbW92ZS10b29sdGlwXCI+XG4gICAgICAgICAgICA8bGliLWljb24gbmFtZT1cImRlbGV0ZVwiIGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwib25EZWxldGUoZGF0YUl0ZW0pXCI+PC9saWItaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGxpYi10eXBvZ3JhcGh5IGRlZmF1bHRUZXh0PVwiUmVtb3ZlXCI+PC9saWItdHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGliLXRvb2x0aXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2tlbmRvLWdyaWQtY29sdW1uPlxuXG4gICAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gW3dpZHRoXT1cImtlYmFiQ29sdW1uV2lkdGhcIiBjbGFzcz1cImtlYmFiLWNvbHVtblwiICpuZ0lmPVwic2hvd0tlYmFiXCIgdGl0bGU9XCJBY3Rpb25zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3duYnV0dG9uICpuZ0lmPVwiIWhpZGVLZWJhYlJvd0luZGV4LmluY2x1ZGVzKHJvd0luZGV4KVwiIFtzdmdJY29uXT1cImljb25cIiBmaWxsTW9kZT1cIm5vbmVcIlxuICAgICAgICAgICAgW2RhdGFdPVwia2ViYWJMaXN0IHwga2ViYWJNZW51RmlsdGVyIDogZGF0YUl0ZW1cIiBjbGFzcz1cImtlYmFiXCIgKGl0ZW1DbGljayk9XCJvbktlYmFiQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIlxuICAgICAgICAgICAgW3BvcHVwU2V0dGluZ3NdPVwieyBhbGlnbjogJ3JpZ2h0JywgYW5pbWF0ZTogdHJ1ZSwgcG9wdXBDbGFzczogJ2tlYmFiLWxpc3QnIH1cIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3duYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9rZW5kby1ncmlkLWNvbHVtbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWREZXRhaWxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGFJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8a2VuZG8tZ3JpZC1jb2x1bW4gKm5nSWY9XCJjdXN0b21FeHBhbmRSb3dDb2x1bW5cIiBbd2lkdGhdPVwiZXhwYW5kUm93Q29sdW1uV2lkdGhcIiBjbGFzcz1cImdyaWQtY29sdW1uIGV4cGFuZC1jb2x1bW5cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhwYW5kQ29sdW1uQ2xhc3MoKVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGRhdGFJdGVtW2dyaWRSb3dTZWxlY3RCeVZhbHVlXSkgJiYgZGlzYWJsZVByZVNlbGVjdGVkUm93c1wiXG4gICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1jb2x1bW4tdGV4dFwiPlxuICAgICAgICAgICAgQWxyZWFkeSBhZGRlZFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8a2VuZG8tYnV0dG9uICpuZ0lmPVwiIWV4cGFuZFJvd0luZGV4LmluY2x1ZGVzKHJvd0luZGV4KVwiIFtzdmdJY29uXT1cImFycm93RG93bkljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZFJvdyhyb3dJbmRleClcIiBmaWxsTW9kZT1cIm5vbmVcIiBjbGFzcz1cImFycm93LWJ0blwiPlxuICAgICAgICAgIDwva2VuZG8tYnV0dG9uPlxuICAgICAgICAgIDxrZW5kby1idXR0b24gKm5nSWY9XCJleHBhbmRSb3dJbmRleC5pbmNsdWRlcyhyb3dJbmRleClcIiBbc3ZnSWNvbl09XCJhcnJvd1VwSWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29sbGFwc2VSb3cocm93SW5kZXgpXCIgZmlsbE1vZGU9XCJub25lXCIgY2xhc3M9XCJhcnJvdy1idG5cIj5cbiAgICAgICAgICA8L2tlbmRvLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwva2VuZG8tZ3JpZC1jb2x1bW4+XG5cbiAgICA8bmctdGVtcGxhdGUga2VuZG9QYWdlclRlbXBsYXRlIGxldC10b3RhbFBhZ2VzPVwidG90YWxQYWdlc1wiIGxldC1jdXJyZW50UGFnZT1cImN1cnJlbnRQYWdlXCI+XG4gICAgICA8a2VuZG8tcGFnZXItcHJldi1idXR0b25zPjwva2VuZG8tcGFnZXItcHJldi1idXR0b25zPlxuICAgICAgPGtlbmRvLXBhZ2VyLW51bWVyaWMtYnV0dG9ucyBbYnV0dG9uQ291bnRdPVwicGFnZUNvdW50XCI+PC9rZW5kby1wYWdlci1udW1lcmljLWJ1dHRvbnM+XG4gICAgICA8a2VuZG8tcGFnZXItbmV4dC1idXR0b25zPjwva2VuZG8tcGFnZXItbmV4dC1idXR0b25zPlxuICAgICAgPGtlbmRvLXBhZ2VyLWluZm8+PC9rZW5kby1wYWdlci1pbmZvPlxuICAgICAgPGtlbmRvLXBhZ2VyLXBhZ2Utc2l6ZXMgW3BhZ2VTaXplc109XCJzaXplc1wiPjwva2VuZG8tcGFnZXItcGFnZS1zaXplcz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwva2VuZG8tZ3JpZD5cbjwvZGl2PlxuIl19
@@ -4480,13 +4480,11 @@ class GridPaginationComponent {
4480
4480
  }
4481
4481
  this.initialGridHeight =
4482
4482
  this.gridElement.nativeElement.offsetHeight + this.gridBottomSpace;
4483
+ this.getGridHeight();
4483
4484
  const gridContainer = this.gridElement?.nativeElement?.getElementsByClassName('k-grid-container')[0];
4484
4485
  this.renderer.insertBefore(gridContainer.parentElement, this.selectAllMessageElement.nativeElement, gridContainer, true);
4485
4486
  this.cdRef.detectChanges();
4486
4487
  }
4487
- ngAfterViewChecked() {
4488
- this.getGridHeight();
4489
- }
4490
4488
  selectAcrossPages(isSelected) {
4491
4489
  this.triggerSelectAllPagesEvent(isSelected);
4492
4490
  if (!isSelected) {