@villedemontreal/angular-ui 16.0.4 → 16.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -191,16 +191,20 @@ export class BaoDropdownMenuComponent {
191
191
  }
192
192
  upKeyEvent() {
193
193
  if (this.isOpen) {
194
- const index = isNaN(this._activeItemIndex) ? 0 : this._activeItemIndex;
194
+ const index = isNaN(this._activeItemIndex) ? -1 : this._activeItemIndex;
195
195
  const nextIndex = this.getNextActivableItemIndex(index, false);
196
- this.focusNextItem(nextIndex);
196
+ if (nextIndex > -1) {
197
+ this.focusNextItem(nextIndex);
198
+ }
197
199
  }
198
200
  }
199
201
  downKeyEvent() {
200
202
  if (this.isOpen) {
201
- const index = isNaN(this._activeItemIndex) ? 0 : this._activeItemIndex;
203
+ const index = isNaN(this._activeItemIndex) ? -1 : this._activeItemIndex;
202
204
  const nextIndex = this.getNextActivableItemIndex(index, true);
203
- this.focusNextItem(nextIndex);
205
+ if (nextIndex > -1) {
206
+ this.focusNextItem(nextIndex);
207
+ }
204
208
  }
205
209
  }
206
210
  /** Prevents focus to be lost when TAB has reached end of menu */
@@ -211,6 +215,16 @@ export class BaoDropdownMenuComponent {
211
215
  }
212
216
  }
213
217
  }
218
+ tabUpKeyEvent() {
219
+ if (this.isOpen) {
220
+ this._activeItemIndex = this._listItems.reduce((acc, element, index) => {
221
+ if (element.nativeElement === document.activeElement) {
222
+ acc = index;
223
+ }
224
+ return acc;
225
+ }, -1);
226
+ }
227
+ }
214
228
  /** Prevents focus to be lost when SHIFT + TAB has reached beginning of menu */
215
229
  shiftTabKeyEvent() {
216
230
  if (this.isOpen) {
@@ -226,16 +240,16 @@ export class BaoDropdownMenuComponent {
226
240
  ngAfterContentInit() {
227
241
  this._listItems.forEach((item) => item.itemClicked.subscribe(() => this.isClosedByKeyEvent.emit()));
228
242
  }
229
- focusFirstItem() {
230
- this._activeItemIndex = 0;
231
- this._listItems.first.nativeElement.focus();
232
- }
233
243
  open() {
234
244
  this.isOpen = true;
235
245
  }
236
246
  close() {
237
247
  this.isOpen = false;
238
248
  }
249
+ focus() {
250
+ this._activeItemIndex = -1;
251
+ this._menuContent.nativeElement.focus();
252
+ }
239
253
  /** Move the aria-current attribute to new active page */
240
254
  setNavigationAttribute(activePageElement) {
241
255
  const previousActivePage = this._listItems.find((item) => {
@@ -259,39 +273,54 @@ export class BaoDropdownMenuComponent {
259
273
  * @param isBackward If recursive function is going backward looking for last activable item in list
260
274
  * @returns Index of the next item that will receive focus
261
275
  */
262
- getNextActivableItemIndex(currentIndex, isDown, isBackward = false) {
263
- if (!this._listItems.get(currentIndex).disabled) {
264
- if (!this.canMove(currentIndex, isDown)) {
265
- return currentIndex;
276
+ getNextActivableItemIndex(currentIndex, isDown) {
277
+ const init = [];
278
+ // Get all the activable indexes
279
+ const activableIndexes = this._listItems.reduce((acc, element, index) => {
280
+ if (!element.disabled) {
281
+ acc = [...acc, index];
266
282
  }
267
- }
268
- else {
269
- if (!this.canMove(currentIndex, isDown)) {
270
- const previousIndex = isDown ? currentIndex - 1 : currentIndex + 1;
271
- return this.getNextActivableItemIndex(previousIndex, isDown, true);
283
+ return acc;
284
+ }, init);
285
+ if (activableIndexes.length) {
286
+ if (isDown) {
287
+ // Select the first enabled element
288
+ if (currentIndex === -1) {
289
+ return activableIndexes[0];
290
+ }
291
+ // Select the only enabled element
292
+ if (activableIndexes.length === 1) {
293
+ return activableIndexes[0];
294
+ }
295
+ // Stay on the last enabled element
296
+ if (currentIndex === activableIndexes[activableIndexes.length - 1]) {
297
+ return currentIndex;
298
+ }
299
+ // Select the next enabled element
300
+ return activableIndexes.find(index => index > currentIndex);
272
301
  }
273
- }
274
- const nextIndex = isDown ? currentIndex + 1 : currentIndex - 1;
275
- if (this._listItems.get(nextIndex).disabled) {
276
- if (isBackward) {
277
- return currentIndex;
302
+ const isUp = !isDown;
303
+ if (isUp) {
304
+ // Do nothing whenever nothing is selected
305
+ if (currentIndex === -1) {
306
+ return currentIndex;
307
+ }
308
+ // Select the only enabled element
309
+ if (activableIndexes.length === 1) {
310
+ return activableIndexes[0];
311
+ }
312
+ // Stay on the first enabled element
313
+ if (currentIndex === activableIndexes[0]) {
314
+ return currentIndex;
315
+ }
316
+ // Select the above enabled element
317
+ return activableIndexes.reverse().find(index => index < currentIndex);
278
318
  }
279
- return this.getNextActivableItemIndex(nextIndex, isDown);
319
+ return -1;
280
320
  }
281
- return nextIndex;
282
- }
283
- /**
284
- * Finds if focus has reached end or beginning of list
285
- * @param currentIndex List item index which currently has focus
286
- * @param isDown Whether the navigation is going in the down direction or not
287
- * @returns Can focus move to next item or not
288
- */
289
- canMove(currentIndex, isDown) {
290
- return !((currentIndex == 0 && !isDown) ||
291
- (currentIndex == this._listItems.length - 1 && isDown));
292
321
  }
293
322
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuComponent, selector: "bao-dropdown-menu", outputs: { isOpenChange: "isOpenChange", isClosedByKeyEvent: "isClosedByKeyEvent" }, host: { listeners: { "window:keyup.arrowup": "upKeyEvent()", "window:keyup.arrowdown": "downKeyEvent()", "window:keydown.tab": "tabKeyEvent()", "window:keydown.shift.tab": "shiftTabKeyEvent()" }, properties: { "class.bao-overlay-transparent-backdrop": "isOpen===false", "class.bao-dropdown-menu-closed": "isOpen===false", "attr.aria-expanded": "isOpen" }, classAttribute: "bao-dropdown-menu-container" }, queries: [{ propertyName: "_listItems", predicate: BaoDropdownMenuItem, descendants: true }], viewQueries: [{ propertyName: "_menuContent", first: true, predicate: ["menuContent"], descendants: true }], ngImport: i0, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
323
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuComponent, selector: "bao-dropdown-menu", outputs: { isOpenChange: "isOpenChange", isClosedByKeyEvent: "isClosedByKeyEvent" }, host: { listeners: { "window:keyup.arrowup": "upKeyEvent()", "window:keyup.arrowdown": "downKeyEvent()", "window:keydown.tab": "tabKeyEvent()", "window:keyup.tab": "tabUpKeyEvent()", "window:keydown.shift.tab": "shiftTabKeyEvent()" }, properties: { "class.bao-overlay-transparent-backdrop": "isOpen===false", "class.bao-dropdown-menu-closed": "isOpen===false", "attr.aria-expanded": "isOpen" }, classAttribute: "bao-dropdown-menu-container" }, queries: [{ propertyName: "_listItems", predicate: BaoDropdownMenuItem, descendants: true }], viewQueries: [{ propertyName: "_menuContent", first: true, predicate: ["menuContent"], descendants: true }], ngImport: i0, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;margin-top:.25rem;margin-bottom:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu:focus-visible{outline:none}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
295
324
  }
296
325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuComponent, decorators: [{
297
326
  type: Component,
@@ -300,7 +329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
300
329
  '[class.bao-overlay-transparent-backdrop]': 'isOpen===false',
301
330
  '[class.bao-dropdown-menu-closed]': 'isOpen===false',
302
331
  '[attr.aria-expanded]': 'isOpen'
303
- }, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"] }]
332
+ }, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;margin-top:.25rem;margin-bottom:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu:focus-visible{outline:none}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"] }]
304
333
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { isOpenChange: [{
305
334
  type: Output
306
335
  }], isClosedByKeyEvent: [{
@@ -320,6 +349,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
320
349
  }], tabKeyEvent: [{
321
350
  type: HostListener,
322
351
  args: ['window:keydown.tab']
352
+ }], tabUpKeyEvent: [{
353
+ type: HostListener,
354
+ args: ['window:keyup.tab']
323
355
  }], shiftTabKeyEvent: [{
324
356
  type: HostListener,
325
357
  args: ['window:keydown.shift.tab']
@@ -344,14 +376,6 @@ export class BaoDropdownMenuTrigger {
344
376
  this.nativeElement.focus();
345
377
  }
346
378
  }
347
- /** Enter key event triggers click event which opens menu,
348
- * then focus is put on first item in the menu */
349
- enterKeyEvent(event) {
350
- if (this._isMenuOpen && document.activeElement === this.nativeElement) {
351
- event.stopImmediatePropagation();
352
- this.menu.focusFirstItem();
353
- }
354
- }
355
379
  onClick() {
356
380
  this.toggleMenu();
357
381
  }
@@ -386,6 +410,7 @@ export class BaoDropdownMenuTrigger {
386
410
  overlayRef.attach(this.menu.menuPortal);
387
411
  this._isMenuOpen = true;
388
412
  this.menu.open();
413
+ this.menu.focus();
389
414
  }
390
415
  createOverlay() {
391
416
  if (!this._overlayRef) {
@@ -440,7 +465,7 @@ export class BaoDropdownMenuTrigger {
440
465
  });
441
466
  }
442
467
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuTrigger, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Directive }); }
443
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuTrigger, selector: "bao-dropdown-menu-trigger, [bao-dropdown-menu-trigger], [baoDropdownMenuTriggerFor]", inputs: { menu: ["baoDropdownMenuTriggerFor", "menu"] }, host: { listeners: { "window:keyup.escape": "escapeKeyEvent()", "window:keyup.enter": "enterKeyEvent($event)", "click": "onClick()" }, classAttribute: "bao-dropdown-menu-trigger" }, ngImport: i0 }); }
468
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuTrigger, selector: "bao-dropdown-menu-trigger, [bao-dropdown-menu-trigger], [baoDropdownMenuTriggerFor]", inputs: { menu: ["baoDropdownMenuTriggerFor", "menu"] }, host: { listeners: { "window:keyup.escape": "escapeKeyEvent()", "click": "onClick()" }, classAttribute: "bao-dropdown-menu-trigger" }, ngImport: i0 }); }
444
469
  }
445
470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuTrigger, decorators: [{
446
471
  type: Directive,
@@ -454,9 +479,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
454
479
  }], escapeKeyEvent: [{
455
480
  type: HostListener,
456
481
  args: ['window:keyup.escape']
457
- }], enterKeyEvent: [{
458
- type: HostListener,
459
- args: ['window:keyup.enter', ['$event']]
460
482
  }], onClick: [{
461
483
  type: HostListener,
462
484
  args: ['click']
@@ -549,4 +571,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
549
571
  host: { class: 'bao-dropdown-menu-divider' }
550
572
  }]
551
573
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
552
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvZHJvcGRvd24tbWVudS9kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9kcm9wZG93bi1tZW51L2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFHTCxhQUFhLEVBRWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7O0FBR3ZCOztHQUVHO0FBQ0gsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFRN0IsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUNVLFFBQW1CLEVBQ25CLFVBQW1DLEVBQ25DLE9BQWlDO1FBRmpDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFiM0M7O1dBRUc7UUFDYSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ2MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTS9DLENBQUM7SUFFSixJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFHRCxhQUFhO1FBQ1gsSUFBSSxRQUFRLENBQUMsYUFBYSxJQUFJ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QjtJQUNqQyxZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQUVKLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQVpVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHFKQUp2QixRQUFROzsyRkFJUCxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFFBQVEsRUFBRSx3REFBd0Q7b0JBQ2xFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRTtpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29ubmVjdGVkUG9zaXRpb24sXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRG9tUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBVbmlxdWUgSUQgZm9yIGVhY2ggZHJvcGRvd24gbWVudVxuICovXG5sZXQgZHJvcGRvd25NZW51VW5pcXVlSWQgPSAwO1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbSwgW2Jhby1kcm9wZG93bi1tZW51LWl0ZW1dJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbScsXG4gICAgJ1tjbGFzcy5iYW8tZHJvcGRvd24tbWVudS1pdGVtLWRpc2FibGVkXSc6ICdkaXNhYmxlZD09PXRydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51SXRlbSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBJcyB0aGUgbGlzdCBpdGVtIGRpc2FibGVkXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBtZW51IGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIF9wYXJlbnQ6IEJhb0Ryb3Bkb3duTWVudUNvbXBvbmVudFxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5zcGFjZScpXG4gIHNwYWNlS2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkNsaWNrKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlc1snaHJlZiddKSB7XG4gICAgICB0aGlzLl9wYXJlbnQuc2V0TmF2aWdhdGlvbkF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICAvLyBQcmV2ZW50IGRvdWJsZS1jbGljayBvbiBjaGVja2JveCBpbnB1dCB0aGF0IHVuZG9lcyB0aGUgdG9nZ2xlXG4gICAgaWYgKCFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2Jhby1jaGVja2JveC1jb250ZW50LWNvbnRhaW5lcicpKSB7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwLmVudGVyJylcbiAgZW50ZXJLZXlFdmVudCgpIHtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSB0aGlzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlc1snaHJlZiddKSB7XG4gICAgICAgIHRoaXMuX3BhcmVudC5zZXROYXZpZ2F0aW9uQXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENvbnRlbnREaXYoKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3RhYkluZGV4JywgJzAnKTtcbiAgICB9XG4gICAgdGhpcy5hZGRQYWRkaW5nQ2xhc3MoKTtcbiAgICAvLyBSZW1vdmUgaW5wdXQgZWxlbWVudCBpbnNpZGUgaXRlbSBmcm9tIGtleWJvYXJkIG5hdmlnYXRpb24gc2VxdWVuY2VcbiAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnaGFzLWVsZW1lbnQtbGVmdCcpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oMCkuZmlyc3RFbGVtZW50Q2hpbGQsXG4gICAgICAgICd0YWJJbmRleCcsXG4gICAgICAgICctMSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSAmJiBjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSA9PSB0cnVlKSB7XG4gICAgICB0aGlzLmRpc2FibGVJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlZ3JvdXBzIGxhYmVsIGFuZCBkZXNjcmlwdGlvbiBpbiBhIG5ldyBkaXYgdG8gaGVscCB3aXRoIGxheW91dCAqL1xuICBwcml2YXRlIGFkZENvbnRlbnREaXYoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbik7XG4gICAgY29uc3QgbGFiZWxJbmRleCA9IGNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIGMgPT4gYy5sb2NhbE5hbWUgPT09ICdiYW8tZHJvcGRvd24tbWVudS1pdGVtLWxhYmVsJ1xuICAgICk7XG4gICAgY29uc3QgbGFiZWxFbGVtZW50ID0gY2hpbGRyZW5bbGFiZWxJbmRleF07XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLm5hdGl2ZUVsZW1lbnQsIGNoaWxkcmVuW2xhYmVsSW5kZXhdKTtcbiAgICBjb25zdCBjb250ZW50RGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGNvbnRlbnREaXYsICdiYW8tZHJvcGRvd24tbWVudS1pdGVtLWNvbnRlbnQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMubmF0aXZlRWxlbWVudCwgY29udGVudERpdik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChjb250ZW50RGl2LCBsYWJlbEVsZW1lbnQpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoXG4gICAgICBjID0+IGMubG9jYWxOYW1lID09PSAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1kZXNjcmlwdGlvbidcbiAgICApO1xuICAgIGlmIChkZXNjcmlwdGlvbkluZGV4ID4gMCkge1xuICAgICAgY29uc3QgZGVzY3JpcHRpb25FbGVtZW50ID0gY2hpbGRyZW5bZGVzY3JpcHRpb25JbmRleF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMubmF0aXZlRWxlbWVudCwgY2hpbGRyZW5bZGVzY3JpcHRpb25JbmRleF0pO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChjb250ZW50RGl2LCBkZXNjcmlwdGlvbkVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkUGFkZGluZ0NsYXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pO1xuICAgIC8vIE1lbnUgaXRlbSBoYXMgZXh0cmEgZWxlbWVudCBuZXh0IHRvIGxhYmVsXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIE9ubHkgdG9nZ2xlIGVsZW1lbnQgY2FuIGJlIG9uIHRoZSByaWdodFxuICAgICAgaWYgKGNoaWxkcmVuLmZpbmRJbmRleChjID0+IGMubG9jYWxOYW1lID09PSAnYmFvLXRvZ2dsZScpID4gMCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2hhcy1lbGVtZW50LXJpZ2h0Jyk7XG4gICAgICB9XG4gICAgICAvLyBJY29uLCBjaGVja2JveCwgcmFkaW8gYnV0dG9uIG9yIGF2YXRhciBtdXN0IGJlIG9uIHRoZSBsZWZ0XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdoYXMtZWxlbWVudC1sZWZ0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlSXRlbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd0YWJJbmRleCcsICctMScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBwcm9wYWdhdGVzIGEgY2xpY2sgZXZlbnQgdG8gbWVudSBpdGVtIGNoaWxkcmVuIHdpdGggaW5wdXRzIChjaGVja2JveCwgcmFkaW8gYnV0dG9uKS5cbiAgICogSXQgZW1pdHMgZXZlbnQgdG8gY2xvc2UgbWVudSBpZiBpdGVtIGRvZXMgbm90IGNvbnRhaW4gYW4gaW5wdXQuXG4gICAqL1xuICBwcml2YXRlIHByb3BhZ2F0ZUNsaWNrKCk6IHZvaWQge1xuICAgIGxldCBjbG9zZU1lbnUgPSB0cnVlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpLmZpcnN0RWxlbWVudENoaWxkLmxvY2FsTmFtZSA9PVxuICAgICAgICAnaW5wdXQnXG4gICAgICApIHtcbiAgICAgICAgKFxuICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICkuY2xpY2soKTtcbiAgICAgICAgY2xvc2VNZW51ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjbG9zZU1lbnUpIHtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLWRyb3Bkb3duLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LWNvbnRhaW5lcicsXG4gICAgJ1tjbGFzcy5iYW8tb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcF0nOiAnaXNPcGVuPT09ZmFsc2UnLFxuICAgICdbY2xhc3MuYmFvLWRyb3Bkb3duLW1lbnUtY2xvc2VkXSc6ICdpc09wZW49PT1mYWxzZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzT3BlbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9Ecm9wZG93bk1lbnVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBkcm9wZG93bi1tZW51IGNoYW5nZXMgaXRzICdpc09wZW4nIHZhbHVlXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBtZW51IGlzIGNsb3NlZCBieSBrZXkgZXZlbnQgdHJpZ2dlcmVkIGZyb20gbWVudSBpdGVtXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGlzQ2xvc2VkQnlLZXlFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQ29udGVudCBvZiBtZW51IHRvIGJlIGxvYWRlZCBpbnNpZGUgT3ZlcmxheVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRlbnQnKSBfbWVudUNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBBbGwgbGlzdCBpdGVtcyBpbnNpZGUgbWVudVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihCYW9Ecm9wZG93bk1lbnVJdGVtLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIF9saXN0SXRlbXM6IFF1ZXJ5TGlzdDxCYW9Ecm9wZG93bk1lbnVJdGVtPjtcblxuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRyb3Bkb3duIG1lbnVcbiAgICovXG4gIHJlYWRvbmx5IG1lbnVJZCA9IGBiYW8tZHJvcGRvd24tbWVudS0keysrZHJvcGRvd25NZW51VW5pcXVlSWR9YDtcblxuICAvKipcbiAgICogSXMgdGhlIGRyb3B3ZG93biBtZW51IGN1cnJlbnRseSBvcGVuXG4gICAqL1xuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHBvcnRhbCB3aGljaCBpcyBhdHRhY2hlZCB0byBPdmVybGF5XG4gICAqL1xuICBwcml2YXRlIF9tZW51UG9ydGFsOiBEb21Qb3J0YWw7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIGN1cnJlbnRseSBhY3RpdmUgbGlzdCBpdGVtXG4gICAqL1xuICBwcml2YXRlIF9hY3RpdmVJdGVtSW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuICBnZXQgYWN0aXZlSXRlbUluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleDtcbiAgfVxuICBnZXQgbWVudVBvcnRhbCgpOiBEb21Qb3J0YWwge1xuICAgIHJldHVybiB0aGlzLl9tZW51UG9ydGFsO1xuICB9XG4gIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgc2V0IGlzT3Blbihpc09wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc09wZW4gPSBpc09wZW47XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgfVxuICBzZXQgYWN0aXZlSXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5hcnJvd3VwJylcbiAgdXBLZXlFdmVudCgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaXNOYU4odGhpcy5fYWN0aXZlSXRlbUluZGV4KSA/IDAgOiB0aGlzLl9hY3RpdmVJdGVtSW5kZXg7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLmdldE5leHRBY3RpdmFibGVJdGVtSW5kZXgoaW5kZXgsIGZhbHNlKTtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbShuZXh0SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5hcnJvd2Rvd24nKVxuICBkb3duS2V5RXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGlzTmFOKHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCkgPyAwIDogdGhpcy5fYWN0aXZlSXRlbUluZGV4O1xuICAgICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5nZXROZXh0QWN0aXZhYmxlSXRlbUluZGV4KGluZGV4LCB0cnVlKTtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbShuZXh0SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQcmV2ZW50cyBmb2N1cyB0byBiZSBsb3N0IHdoZW4gVEFCIGhhcyByZWFjaGVkIGVuZCBvZiBtZW51ICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi50YWInKVxuICB0YWJLZXlFdmVudCgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLl9saXN0SXRlbXMubGFzdC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWRCeUtleUV2ZW50LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUHJldmVudHMgZm9jdXMgdG8gYmUgbG9zdCB3aGVuIFNISUZUICsgVEFCIGhhcyByZWFjaGVkIGJlZ2lubmluZyBvZiBtZW51ICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5zaGlmdC50YWInKVxuICBzaGlmdFRhYktleUV2ZW50KCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuX2xpc3RJdGVtcy5maXJzdC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWRCeUtleUV2ZW50LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2lkJywgdGhpcy5tZW51SWQpO1xuICAgIHRoaXMuX21lbnVQb3J0YWwgPSBuZXcgRG9tUG9ydGFsKHRoaXMuX21lbnVDb250ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdEl0ZW1zLmZvckVhY2goXG4gICAgICAoaXRlbTogQmFvRHJvcGRvd25NZW51SXRlbSk6IFN1YnNjcmlwdGlvbiA9PlxuICAgICAgICBpdGVtLml0ZW1DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzQ2xvc2VkQnlLZXlFdmVudC5lbWl0KCkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0ZpcnN0SXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSAwO1xuICAgIHRoaXMuX2xpc3RJdGVtcy5maXJzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBhcmlhLWN1cnJlbnQgYXR0cmlidXRlIHRvIG5ldyBhY3RpdmUgcGFnZSAqL1xuICBwdWJsaWMgc2V0TmF2aWdhdGlvbkF0dHJpYnV0ZShhY3RpdmVQYWdlRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c0FjdGl2ZVBhZ2UgPSB0aGlzLl9saXN0SXRlbXMuZmluZChcbiAgICAgIChpdGVtOiBCYW9Ecm9wZG93bk1lbnVJdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlc1snYXJpYS1jdXJyZW50J10gPT09ICdwYWdlJztcbiAgICAgIH1cbiAgICApO1xuICAgIGlmIChwcmV2aW91c0FjdGl2ZVBhZ2UpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKFxuICAgICAgICBwcmV2aW91c0FjdGl2ZVBhZ2UubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtY3VycmVudCdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICBwcmV2aW91c0FjdGl2ZVBhZ2UubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FjdGl2ZS1saW5rJ1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYWN0aXZlUGFnZUVsZW1lbnQsICdhcmlhLWN1cnJlbnQnLCAncGFnZScpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYWN0aXZlUGFnZUVsZW1lbnQsICdhY3RpdmUtbGluaycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05leHRJdGVtKG5leHRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gbmV4dEluZGV4O1xuICAgIHRoaXMuX2xpc3RJdGVtcy5nZXQobmV4dEluZGV4KS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG5leHQgYWN0aXZhYmxlIHRhYiBpbmRleCB3aGVuIG5hdmlnYXRpbmcgd2l0aCB1cCBhbmQgZG93biBhcnJvdyBvciBUQUIga2V5c1xuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IExpc3QgaXRlbSBpbmRleCB3aGljaCBjdXJyZW50bHkgaGFzIGZvY3VzXG4gICAqIEBwYXJhbSBpc0Rvd24gV2hldGhlciB0aGUgbmF2aWdhdGlvbiBpcyBnb2luZyBpbiB0aGUgZG93biBkaXJlY3Rpb24gb3Igbm90XG4gICAqIEBwYXJhbSBpc0JhY2t3YXJkIElmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBpcyBnb2luZyBiYWNrd2FyZCBsb29raW5nIGZvciBsYXN0IGFjdGl2YWJsZSBpdGVtIGluIGxpc3RcbiAgICogQHJldHVybnMgSW5kZXggb2YgdGhlIG5leHQgaXRlbSB0aGF0IHdpbGwgcmVjZWl2ZSBmb2N1c1xuICAgKi9cbiAgcHJpdmF0ZSBnZXROZXh0QWN0aXZhYmxlSXRlbUluZGV4KFxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgIGlzRG93bjogYm9vbGVhbixcbiAgICBpc0JhY2t3YXJkID0gZmFsc2VcbiAgKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuX2xpc3RJdGVtcy5nZXQoY3VycmVudEluZGV4KS5kaXNhYmxlZCkge1xuICAgICAgaWYgKCF0aGlzLmNhbk1vdmUoY3VycmVudEluZGV4LCBpc0Rvd24pKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5jYW5Nb3ZlKGN1cnJlbnRJbmRleCwgaXNEb3duKSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gaXNEb3duID8gY3VycmVudEluZGV4IC0gMSA6IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5leHRBY3RpdmFibGVJdGVtSW5kZXgocHJldmlvdXNJbmRleCwgaXNEb3duLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV4dEluZGV4ID0gaXNEb3duID8gY3VycmVudEluZGV4ICsgMSA6IGN1cnJlbnRJbmRleCAtIDE7XG4gICAgaWYgKHRoaXMuX2xpc3RJdGVtcy5nZXQobmV4dEluZGV4KS5kaXNhYmxlZCkge1xuICAgICAgaWYgKGlzQmFja3dhcmQpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRBY3RpdmFibGVJdGVtSW5kZXgobmV4dEluZGV4LCBpc0Rvd24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dEluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGlmIGZvY3VzIGhhcyByZWFjaGVkIGVuZCBvciBiZWdpbm5pbmcgb2YgbGlzdFxuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IExpc3QgaXRlbSBpbmRleCB3aGljaCBjdXJyZW50bHkgaGFzIGZvY3VzXG4gICAqIEBwYXJhbSBpc0Rvd24gV2hldGhlciB0aGUgbmF2aWdhdGlvbiBpcyBnb2luZyBpbiB0aGUgZG93biBkaXJlY3Rpb24gb3Igbm90XG4gICAqIEByZXR1cm5zIENhbiBmb2N1cyBtb3ZlIHRvIG5leHQgaXRlbSBvciBub3RcbiAgICovXG4gIHByaXZhdGUgY2FuTW92ZShjdXJyZW50SW5kZXg6IG51bWJlciwgaXNEb3duOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoXG4gICAgICAoY3VycmVudEluZGV4ID09IDAgJiYgIWlzRG93bikgfHxcbiAgICAgIChjdXJyZW50SW5kZXggPT0gdGhpcy5fbGlzdEl0ZW1zLmxlbmd0aCAtIDEgJiYgaXNEb3duKVxuICAgICk7XG4gIH1cbn1cbi8qKlxuICogRGlyZWN0aXZlIHRvIGJlIGFwcGxpZWQgb24gZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBvZiBtZW51LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgJ2Jhby1kcm9wZG93bi1tZW51LXRyaWdnZXIsIFtiYW8tZHJvcGRvd24tbWVudS10cmlnZ2VyXSwgW2Jhb0Ryb3Bkb3duTWVudVRyaWdnZXJGb3JdJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LXRyaWdnZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51VHJpZ2dlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgnYmFvRHJvcGRvd25NZW51VHJpZ2dlckZvcicpIG1lbnU6IEJhb0Ryb3Bkb3duTWVudUNvbXBvbmVudCB8IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNNZW51T3BlbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lc2NhcGUnKVxuICBlc2NhcGVLZXlFdmVudCgpIHtcbiAgICBpZiAodGhpcy5faXNNZW51T3Blbikge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBFbnRlciBrZXkgZXZlbnQgdHJpZ2dlcnMgY2xpY2sgZXZlbnQgd2hpY2ggb3BlbnMgbWVudSxcbiAgICogIHRoZW4gZm9jdXMgaXMgcHV0IG9uIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwLmVudGVyJywgWyckZXZlbnQnXSlcbiAgZW50ZXJLZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLl9pc01lbnVPcGVuICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLm1lbnUuZm9jdXNGaXJzdEl0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy50b2dnbGVNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3JvbGUnLCAnYnV0dG9uJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnYXJpYS1jb250cm9scycsXG4gICAgICBgYmFvLWRyb3Bkb3duLW1lbnUtJHtkcm9wZG93bk1lbnVVbmlxdWVJZH1gXG4gICAgKTtcbiAgICB0aGlzLm1lbnUuaXNDbG9zZWRCeUtleUV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlTWVudSgpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faXNNZW51T3BlbiA/IHRoaXMuY2xvc2VNZW51KCkgOiB0aGlzLm9wZW5NZW51KCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc01lbnVPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5tZW51LmNsb3NlKCk7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuTWVudSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgb3ZlcmxheVJlZi5hdHRhY2godGhpcy5tZW51Lm1lbnVQb3J0YWwpO1xuICAgIHRoaXMuX2lzTWVudU9wZW4gPSB0cnVlO1xuICAgIHRoaXMubWVudS5vcGVuKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldE92ZXJsYXlDb25maWcoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgfVxuICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKClcbiAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKClcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIHRvcC1sZWZ0IG9mIHRoZSBvdmVybGF5IGlzIGNvbm5lY3RlZCB0byBib3R0b20tbGVmdCBvZiB0aGUgb3JpZ2luO1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgICB9IGFzIENvbm5lY3RlZFBvc2l0aW9uLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJvdHRvbS1sZWZ0IG9mIHRoZSBvdmVybGF5IGlzIGNvbm5lY3RlZCB0byB0b3AtbGVmdCBvZiB0aGUgb3JpZ2luO1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgICB9IGFzIENvbm5lY3RlZFBvc2l0aW9uLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIHRvcC1yaWdodCBvZiB0aGUgb3ZlcmxheSBpcyBjb25uZWN0ZWQgdG8gYm90dG9tLXJpZ2h0IG9mIHRoZSBvcmlnaW47XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBib3R0b20tcmlnaHQgb2YgdGhlIG92ZXJsYXkgaXMgY29ubmVjdGVkIHRvIHRvcC1yaWdodCBvZiB0aGUgb3JpZ2luO1xuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICAgIH0gYXMgQ29ubmVjdGVkUG9zaXRpb25cbiAgICAgICAgXSksXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFvLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgIH0pO1xuICB9XG59XG4vKipcbiAqIFNlY3Rpb25zIG9mIGxpc3QgaXRlbXMgaW4gbWVudS4gQXBwbHkgcHJvcGVyIHN0eWxpbmcgdG8gc2VjdGlvbidzIHRpdGxlIGlmIHRoZXJlIGlzIG9uZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWRyb3Bkb3duLW1lbnUtc2VjdGlvbiwgW2Jhby1kcm9wZG93bi1tZW51LXNlY3Rpb25dJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LXNlY3Rpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51U2VjdGlvbiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzKTtcbiAgICBjb25zdCB0ZXh0SW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoXG4gICAgICAoYzogQ2hpbGROb2RlKSA9PiBjLm5vZGVOYW1lID09PSAnI3RleHQnXG4gICAgKTtcbiAgICBpZiAodGV4dEluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuaW5zZXJ0VGl0bGUoY2hpbGRyZW4sIHRleHRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRUaXRsZShjaGlsZHJlbjogQ2hpbGROb2RlW10sIHR4dElkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdoNScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICB0aXRsZUVsZW1lbnQsXG4gICAgICAndGV4dENvbnRlbnQnLFxuICAgICAgY2hpbGRyZW5bdHh0SWR4XS5ub2RlVmFsdWVcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5uYXRpdmVFbGVtZW50LCBjaGlsZHJlblt0eHRJZHhdKTtcbiAgICBjb25zdCBsaXN0SW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoKGM6IENoaWxkTm9kZSkgPT4gYy5ub2RlTmFtZSA9PT0gJ1VMJyk7XG4gICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aXRsZUVsZW1lbnQsXG4gICAgICBjaGlsZHJlbltsaXN0SW5kZXhdXG4gICAgKTtcbiAgfVxufVxuLyoqXG4gKiBMYWJlbCBvZiBhIGxpc3QgaXRlbSwgYWRkIGNzcyBjbGFzcyB0byBhcHBseSBwcm9wZXIgc3R5bGluZy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1sYWJlbCwgW2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tbGFiZWxdJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tbGFiZWwnIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51SXRlbUxhYmVsIHt9XG4vKipcbiAqIERlc2NyaXB0aW9uIG9mIGEgbGlzdCBpdGVtLCBhZGQgY3NzIGNsYXNzIHRvIGFwcGx5IHByb3BlciBzdHlsaW5nLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tZGVzY3JpcHRpb24sIFtiYW8tZHJvcGRvd24tbWVudS1pdGVtLWRlc2NyaXB0aW9uXScsXG4gIGhvc3Q6IHsgY2xhc3M6ICdiYW8tZHJvcGRvd24tbWVudS1pdGVtLWRlc2NyaXB0aW9uJyB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0Ryb3Bkb3duTWVudUl0ZW1EZXNjcmlwdGlvbiB7fVxuLyoqXG4gKiBEaXZpZGVyIHRvIHNlcGFyYXRlIHNlY3Rpb25zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGA8aHIgLz5gLFxuICBzZWxlY3RvcjogJ2Jhby1kcm9wZG93bi1tZW51LWRpdmlkZXIsIFtiYW8tZHJvcGRvd24tbWVudS1kaXZpZGVyXScsXG4gIGhvc3Q6IHsgY2xhc3M6ICdiYW8tZHJvcGRvd24tbWVudS1kaXZpZGVyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0Ryb3Bkb3duTWVudURpdmlkZXIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3JvbGUnLCAnc2VwYXJhdG9yJyk7XG4gIH1cbn1cbiIsIjxkaXYgI21lbnVDb250ZW50IGNsYXNzPVwiYmFvLWRyb3Bkb3duLW1lbnVcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
574
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvZHJvcGRvd24tbWVudS9kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9kcm9wZG93bi1tZW51L2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFHTCxhQUFhLEVBRWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7O0FBR3ZCOztHQUVHO0FBQ0gsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFRN0IsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUNVLFFBQW1CLEVBQ25CLFVBQW1DLEVBQ25DLE9BQWlDO1FBRmpDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFiM0M7O1dBRUc7UUFDYSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ2MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTS9DLENBQUM7SUFFSixJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFHRCxhQUFhO1FBQ1gsSUFBSSxRQUFRLENBQUMsYUFBYSxJQUFJ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RSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbmltcG9ydCB7XG4gIENvbm5lY3RlZFBvc2l0aW9uLFxuICBPdmVybGF5LFxuICBPdmVybGF5Q29uZmlnLFxuICBPdmVybGF5UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IERvbVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVW5pcXVlIElEIGZvciBlYWNoIGRyb3Bkb3duIG1lbnVcbiAqL1xubGV0IGRyb3Bkb3duTWVudVVuaXF1ZUlkID0gMDtcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0sIFtiYW8tZHJvcGRvd24tbWVudS1pdGVtXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0nLFxuICAgICdbY2xhc3MuYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQ9PT10cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0Ryb3Bkb3duTWVudUl0ZW0gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSXMgdGhlIGxpc3QgaXRlbSBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gbWVudSBpdGVtIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgaXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfcGFyZW50OiBCYW9Ecm9wZG93bk1lbnVDb21wb25lbnRcbiAgKSB7fVxuXG4gIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuc3BhY2UnKVxuICBzcGFjZUtleUV2ZW50KCkge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25DbGljayhlbDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXNbJ2hyZWYnXSkge1xuICAgICAgdGhpcy5fcGFyZW50LnNldE5hdmlnYXRpb25BdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgLy8gUHJldmVudCBkb3VibGUtY2xpY2sgb24gY2hlY2tib3ggaW5wdXQgdGhhdCB1bmRvZXMgdGhlIHRvZ2dsZVxuICAgIGlmICghZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdiYW8tY2hlY2tib3gtY29udGVudC1jb250YWluZXInKSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lbnRlcicpXG4gIGVudGVyS2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXNbJ2hyZWYnXSkge1xuICAgICAgICB0aGlzLl9wYXJlbnQuc2V0TmF2aWdhdGlvbkF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9wYWdhdGVDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDb250ZW50RGl2KCk7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICd0YWJJbmRleCcsICcwJyk7XG4gICAgfVxuICAgIHRoaXMuYWRkUGFkZGluZ0NsYXNzKCk7XG4gICAgLy8gUmVtb3ZlIGlucHV0IGVsZW1lbnQgaW5zaWRlIGl0ZW0gZnJvbSBrZXlib2FyZCBuYXZpZ2F0aW9uIHNlcXVlbmNlXG4gICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2hhcy1lbGVtZW50LWxlZnQnKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKDApLmZpcnN0RWxlbWVudENoaWxkLFxuICAgICAgICAndGFiSW5kZXgnLFxuICAgICAgICAnLTEnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10gJiYgY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5kaXNhYmxlSXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdyb3VwcyBsYWJlbCBhbmQgZGVzY3JpcHRpb24gaW4gYSBuZXcgZGl2IHRvIGhlbHAgd2l0aCBsYXlvdXQgKi9cbiAgcHJpdmF0ZSBhZGRDb250ZW50RGl2KCk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pO1xuICAgIGNvbnN0IGxhYmVsSW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoXG4gICAgICBjID0+IGMubG9jYWxOYW1lID09PSAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1sYWJlbCdcbiAgICApO1xuICAgIGNvbnN0IGxhYmVsRWxlbWVudCA9IGNoaWxkcmVuW2xhYmVsSW5kZXhdO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5uYXRpdmVFbGVtZW50LCBjaGlsZHJlbltsYWJlbEluZGV4XSk7XG4gICAgY29uc3QgY29udGVudERpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhjb250ZW50RGl2LCAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1jb250ZW50Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLm5hdGl2ZUVsZW1lbnQsIGNvbnRlbnREaXYpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoY29udGVudERpdiwgbGFiZWxFbGVtZW50KTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbkluZGV4ID0gY2hpbGRyZW4uZmluZEluZGV4KFxuICAgICAgYyA9PiBjLmxvY2FsTmFtZSA9PT0gJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tZGVzY3JpcHRpb24nXG4gICAgKTtcbiAgICBpZiAoZGVzY3JpcHRpb25JbmRleCA+IDApIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uRWxlbWVudCA9IGNoaWxkcmVuW2Rlc2NyaXB0aW9uSW5kZXhdO1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLm5hdGl2ZUVsZW1lbnQsIGNoaWxkcmVuW2Rlc2NyaXB0aW9uSW5kZXhdKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoY29udGVudERpdiwgZGVzY3JpcHRpb25FbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFBhZGRpbmdDbGFzcygpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcbiAgICAvLyBNZW51IGl0ZW0gaGFzIGV4dHJhIGVsZW1lbnQgbmV4dCB0byBsYWJlbFxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBPbmx5IHRvZ2dsZSBlbGVtZW50IGNhbiBiZSBvbiB0aGUgcmlnaHRcbiAgICAgIGlmIChjaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmxvY2FsTmFtZSA9PT0gJ2Jhby10b2dnbGUnKSA+IDApIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdoYXMtZWxlbWVudC1yaWdodCcpO1xuICAgICAgfVxuICAgICAgLy8gSWNvbiwgY2hlY2tib3gsIHJhZGlvIGJ1dHRvbiBvciBhdmF0YXIgbXVzdCBiZSBvbiB0aGUgbGVmdFxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnaGFzLWVsZW1lbnQtbGVmdCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZUl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAndGFiSW5kZXgnLCAnLTEnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgcHJvcGFnYXRlcyBhIGNsaWNrIGV2ZW50IHRvIG1lbnUgaXRlbSBjaGlsZHJlbiB3aXRoIGlucHV0cyAoY2hlY2tib3gsIHJhZGlvIGJ1dHRvbikuXG4gICAqIEl0IGVtaXRzIGV2ZW50IHRvIGNsb3NlIG1lbnUgaWYgaXRlbSBkb2VzIG5vdCBjb250YWluIGFuIGlucHV0LlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9wYWdhdGVDbGljaygpOiB2b2lkIHtcbiAgICBsZXQgY2xvc2VNZW51ID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKS5maXJzdEVsZW1lbnRDaGlsZC5sb2NhbE5hbWUgPT1cbiAgICAgICAgJ2lucHV0J1xuICAgICAgKSB7XG4gICAgICAgIChcbiAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudFxuICAgICAgICApLmNsaWNrKCk7XG4gICAgICAgIGNsb3NlTWVudSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2xvc2VNZW51KSB7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhby1kcm9wZG93bi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tZHJvcGRvd24tbWVudS1jb250YWluZXInLFxuICAgICdbY2xhc3MuYmFvLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BdJzogJ2lzT3Blbj09PWZhbHNlJyxcbiAgICAnW2NsYXNzLmJhby1kcm9wZG93bi1tZW51LWNsb3NlZF0nOiAnaXNPcGVuPT09ZmFsc2UnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgZHJvcGRvd24tbWVudSBjaGFuZ2VzIGl0cyAnaXNPcGVuJyB2YWx1ZVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gbWVudSBpcyBjbG9zZWQgYnkga2V5IGV2ZW50IHRyaWdnZXJlZCBmcm9tIG1lbnUgaXRlbVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpc0Nsb3NlZEJ5S2V5RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENvbnRlbnQgb2YgbWVudSB0byBiZSBsb2FkZWQgaW5zaWRlIE92ZXJsYXlcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ21lbnVDb250ZW50JykgX21lbnVDb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogQWxsIGxpc3QgaXRlbXMgaW5zaWRlIG1lbnVcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQmFvRHJvcGRvd25NZW51SXRlbSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8QmFvRHJvcGRvd25NZW51SXRlbT47XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBkcm9wZG93biBtZW51XG4gICAqL1xuICByZWFkb25seSBtZW51SWQgPSBgYmFvLWRyb3Bkb3duLW1lbnUtJHsrK2Ryb3Bkb3duTWVudVVuaXF1ZUlkfWA7XG5cbiAgLyoqXG4gICAqIElzIHRoZSBkcm9wd2Rvd24gbWVudSBjdXJyZW50bHkgb3BlblxuICAgKi9cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBwb3J0YWwgd2hpY2ggaXMgYXR0YWNoZWQgdG8gT3ZlcmxheVxuICAgKi9cbiAgcHJpdmF0ZSBfbWVudVBvcnRhbDogRG9tUG9ydGFsO1xuXG4gIC8qKlxuICAgKiBJbmRleCBvZiBjdXJyZW50bHkgYWN0aXZlIGxpc3QgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge31cblxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cbiAgZ2V0IGFjdGl2ZUl0ZW1JbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVJdGVtSW5kZXg7XG4gIH1cbiAgZ2V0IG1lbnVQb3J0YWwoKTogRG9tUG9ydGFsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVBvcnRhbDtcbiAgfVxuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG4gIHNldCBpc09wZW4oaXNPcGVuOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNPcGVuID0gaXNPcGVuO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGlzT3Blbik7XG4gIH1cbiAgc2V0IGFjdGl2ZUl0ZW1JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gaW5kZXg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuYXJyb3d1cCcpXG4gIHVwS2V5RXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGlzTmFOKHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCkgPyAtMSA6IHRoaXMuX2FjdGl2ZUl0ZW1JbmRleDtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZ2V0TmV4dEFjdGl2YWJsZUl0ZW1JbmRleChpbmRleCwgZmFsc2UpO1xuICAgICAgaWYgKG5leHRJbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbShuZXh0SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5hcnJvd2Rvd24nKVxuICBkb3duS2V5RXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGlzTmFOKHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCkgPyAtMSA6IHRoaXMuX2FjdGl2ZUl0ZW1JbmRleDtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZ2V0TmV4dEFjdGl2YWJsZUl0ZW1JbmRleChpbmRleCwgdHJ1ZSk7XG4gICAgICBpZiAobmV4dEluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKG5leHRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFByZXZlbnRzIGZvY3VzIHRvIGJlIGxvc3Qgd2hlbiBUQUIgaGFzIHJlYWNoZWQgZW5kIG9mIG1lbnUgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLnRhYicpXG4gIHRhYktleUV2ZW50KCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuX2xpc3RJdGVtcy5sYXN0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZEJ5S2V5RXZlbnQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC50YWInKVxuICB0YWJVcEtleUV2ZW50KCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5fbGlzdEl0ZW1zLnJlZHVjZSgoYWNjLCBlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgYWNjID0gaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgLTEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQcmV2ZW50cyBmb2N1cyB0byBiZSBsb3N0IHdoZW4gU0hJRlQgKyBUQUIgaGFzIHJlYWNoZWQgYmVnaW5uaW5nIG9mIG1lbnUgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLnNoaWZ0LnRhYicpXG4gIHNoaWZ0VGFiS2V5RXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fbGlzdEl0ZW1zLmZpcnN0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZEJ5S2V5RXZlbnQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAnaWQnLCB0aGlzLm1lbnVJZCk7XG4gICAgdGhpcy5fbWVudVBvcnRhbCA9IG5ldyBEb21Qb3J0YWwodGhpcy5fbWVudUNvbnRlbnQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0SXRlbXMuZm9yRWFjaChcbiAgICAgIChpdGVtOiBCYW9Ecm9wZG93bk1lbnVJdGVtKTogU3Vic2NyaXB0aW9uID0+XG4gICAgICAgIGl0ZW0uaXRlbUNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuaXNDbG9zZWRCeUtleUV2ZW50LmVtaXQoKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gICAgdGhpcy5fbWVudUNvbnRlbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIGFyaWEtY3VycmVudCBhdHRyaWJ1dGUgdG8gbmV3IGFjdGl2ZSBwYWdlICovXG4gIHB1YmxpYyBzZXROYXZpZ2F0aW9uQXR0cmlidXRlKGFjdGl2ZVBhZ2VFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzQWN0aXZlUGFnZSA9IHRoaXMuX2xpc3RJdGVtcy5maW5kKFxuICAgICAgKGl0ZW06IEJhb0Ryb3Bkb3duTWVudUl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzWydhcmlhLWN1cnJlbnQnXSA9PT0gJ3BhZ2UnO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKHByZXZpb3VzQWN0aXZlUGFnZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoXG4gICAgICAgIHByZXZpb3VzQWN0aXZlUGFnZS5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYXJpYS1jdXJyZW50J1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgIHByZXZpb3VzQWN0aXZlUGFnZS5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYWN0aXZlLWxpbmsnXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShhY3RpdmVQYWdlRWxlbWVudCwgJ2FyaWEtY3VycmVudCcsICdwYWdlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhhY3RpdmVQYWdlRWxlbWVudCwgJ2FjdGl2ZS1saW5rJyk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzTmV4dEl0ZW0obmV4dEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSBuZXh0SW5kZXg7XG4gICAgdGhpcy5fbGlzdEl0ZW1zLmdldChuZXh0SW5kZXgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmV4dCBhY3RpdmFibGUgdGFiIGluZGV4IHdoZW4gbmF2aWdhdGluZyB3aXRoIHVwIGFuZCBkb3duIGFycm93IG9yIFRBQiBrZXlzXG4gICAqIEBwYXJhbSBjdXJyZW50SW5kZXggTGlzdCBpdGVtIGluZGV4IHdoaWNoIGN1cnJlbnRseSBoYXMgZm9jdXNcbiAgICogQHBhcmFtIGlzRG93biBXaGV0aGVyIHRoZSBuYXZpZ2F0aW9uIGlzIGdvaW5nIGluIHRoZSBkb3duIGRpcmVjdGlvbiBvciBub3RcbiAgICogQHBhcmFtIGlzQmFja3dhcmQgSWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGlzIGdvaW5nIGJhY2t3YXJkIGxvb2tpbmcgZm9yIGxhc3QgYWN0aXZhYmxlIGl0ZW0gaW4gbGlzdFxuICAgKiBAcmV0dXJucyBJbmRleCBvZiB0aGUgbmV4dCBpdGVtIHRoYXQgd2lsbCByZWNlaXZlIGZvY3VzXG4gICAqL1xuICBwcml2YXRlIGdldE5leHRBY3RpdmFibGVJdGVtSW5kZXgoXG4gICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgaXNEb3duOiBib29sZWFuXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgaW5pdDogbnVtYmVyW10gPSBbXTtcbiAgICAvLyBHZXQgYWxsIHRoZSBhY3RpdmFibGUgaW5kZXhlc1xuICAgIGNvbnN0IGFjdGl2YWJsZUluZGV4ZXMgPSB0aGlzLl9saXN0SXRlbXMucmVkdWNlKChhY2MsIGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIWVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgICAgYWNjID0gWy4uLmFjYywgaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIGluaXQpO1xuXG4gICAgaWYgKGFjdGl2YWJsZUluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoaXNEb3duKSB7XG4gICAgICAgIC8vIFNlbGVjdCB0aGUgZmlyc3QgZW5hYmxlZCBlbGVtZW50XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2YWJsZUluZGV4ZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIG9ubHkgZW5hYmxlZCBlbGVtZW50XG4gICAgICAgIGlmIChhY3RpdmFibGVJbmRleGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmFibGVJbmRleGVzWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RheSBvbiB0aGUgbGFzdCBlbmFibGVkIGVsZW1lbnRcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gYWN0aXZhYmxlSW5kZXhlc1thY3RpdmFibGVJbmRleGVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlbGVjdCB0aGUgbmV4dCBlbmFibGVkIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIGFjdGl2YWJsZUluZGV4ZXMuZmluZChpbmRleCA9PiBpbmRleCA+IGN1cnJlbnRJbmRleCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzVXAgPSAhaXNEb3duO1xuICAgICAgaWYgKGlzVXApIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyB3aGVuZXZlciBub3RoaW5nIGlzIHNlbGVjdGVkXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlbGVjdCB0aGUgb25seSBlbmFibGVkIGVsZW1lbnRcbiAgICAgICAgaWYgKGFjdGl2YWJsZUluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2YWJsZUluZGV4ZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGF5IG9uIHRoZSBmaXJzdCBlbmFibGVkIGVsZW1lbnRcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gYWN0aXZhYmxlSW5kZXhlc1swXSkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGFib3ZlIGVuYWJsZWQgZWxlbWVudFxuICAgICAgICByZXR1cm4gYWN0aXZhYmxlSW5kZXhlcy5yZXZlcnNlKCkuZmluZChpbmRleCA9PiBpbmRleCA8IGN1cnJlbnRJbmRleCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRGlyZWN0aXZlIHRvIGJlIGFwcGxpZWQgb24gZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBvZiBtZW51LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgJ2Jhby1kcm9wZG93bi1tZW51LXRyaWdnZXIsIFtiYW8tZHJvcGRvd24tbWVudS10cmlnZ2VyXSwgW2Jhb0Ryb3Bkb3duTWVudVRyaWdnZXJGb3JdJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LXRyaWdnZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51VHJpZ2dlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgnYmFvRHJvcGRvd25NZW51VHJpZ2dlckZvcicpIG1lbnU6IEJhb0Ryb3Bkb3duTWVudUNvbXBvbmVudCB8IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNNZW51T3BlbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lc2NhcGUnKVxuICBlc2NhcGVLZXlFdmVudCgpIHtcbiAgICBpZiAodGhpcy5faXNNZW51T3Blbikge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAncm9sZScsICdidXR0b24nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgIHRoaXMubmF0aXZlRWxlbWVudCxcbiAgICAgICdhcmlhLWNvbnRyb2xzJyxcbiAgICAgIGBiYW8tZHJvcGRvd24tbWVudS0ke2Ryb3Bkb3duTWVudVVuaXF1ZUlkfWBcbiAgICApO1xuICAgIHRoaXMubWVudS5pc0Nsb3NlZEJ5S2V5RXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVNZW51KCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9pc01lbnVPcGVuID8gdGhpcy5jbG9zZU1lbnUoKSA6IHRoaXMub3Blbk1lbnUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VNZW51KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTWVudU9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLm1lbnUuY2xvc2UoKTtcbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5NZW51KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICBvdmVybGF5UmVmLmF0dGFjaCh0aGlzLm1lbnUubWVudVBvcnRhbCk7XG4gICAgdGhpcy5faXNNZW51T3BlbiA9IHRydWU7XG4gICAgdGhpcy5tZW51Lm9wZW4oKTtcbiAgICB0aGlzLm1lbnUuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZygpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICB9XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXG4gICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oKVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gdG9wLWxlZnQgb2YgdGhlIG92ZXJsYXkgaXMgY29ubmVjdGVkIHRvIGJvdHRvbS1sZWZ0IG9mIHRoZSBvcmlnaW47XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgIH0gYXMgQ29ubmVjdGVkUG9zaXRpb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gYm90dG9tLWxlZnQgb2YgdGhlIG92ZXJsYXkgaXMgY29ubmVjdGVkIHRvIHRvcC1sZWZ0IG9mIHRoZSBvcmlnaW47XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICAgIH0gYXMgQ29ubmVjdGVkUG9zaXRpb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gdG9wLXJpZ2h0IG9mIHRoZSBvdmVybGF5IGlzIGNvbm5lY3RlZCB0byBib3R0b20tcmlnaHQgb2YgdGhlIG9yaWdpbjtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgICB9IGFzIENvbm5lY3RlZFBvc2l0aW9uLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJvdHRvbS1yaWdodCBvZiB0aGUgb3ZlcmxheSBpcyBjb25uZWN0ZWQgdG8gdG9wLXJpZ2h0IG9mIHRoZSBvcmlnaW47XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvblxuICAgICAgICBdKSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYW8tb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpXG4gICAgfSk7XG4gIH1cbn1cbi8qKlxuICogU2VjdGlvbnMgb2YgbGlzdCBpdGVtcyBpbiBtZW51LiBBcHBseSBwcm9wZXIgc3R5bGluZyB0byBzZWN0aW9uJ3MgdGl0bGUgaWYgdGhlcmUgaXMgb25lLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdiYW8tZHJvcGRvd24tbWVudS1zZWN0aW9uLCBbYmFvLWRyb3Bkb3duLW1lbnUtc2VjdGlvbl0nLFxuICBob3N0OiB7IGNsYXNzOiAnYmFvLWRyb3Bkb3duLW1lbnUtc2VjdGlvbicgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9Ecm9wZG93bk1lbnVTZWN0aW9uIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMpO1xuICAgIGNvbnN0IHRleHRJbmRleCA9IGNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIChjOiBDaGlsZE5vZGUpID0+IGMubm9kZU5hbWUgPT09ICcjdGV4dCdcbiAgICApO1xuICAgIGlmICh0ZXh0SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbnNlcnRUaXRsZShjaGlsZHJlbiwgdGV4dEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluc2VydFRpdGxlKGNoaWxkcmVuOiBDaGlsZE5vZGVbXSwgdHh0SWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2g1Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRpdGxlRWxlbWVudCxcbiAgICAgICd0ZXh0Q29udGVudCcsXG4gICAgICBjaGlsZHJlblt0eHRJZHhdLm5vZGVWYWx1ZVxuICAgICk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLm5hdGl2ZUVsZW1lbnQsIGNoaWxkcmVuW3R4dElkeF0pO1xuICAgIGNvbnN0IGxpc3RJbmRleCA9IGNoaWxkcmVuLmZpbmRJbmRleCgoYzogQ2hpbGROb2RlKSA9PiBjLm5vZGVOYW1lID09PSAnVUwnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgIHRoaXMubmF0aXZlRWxlbWVudCxcbiAgICAgIHRpdGxlRWxlbWVudCxcbiAgICAgIGNoaWxkcmVuW2xpc3RJbmRleF1cbiAgICApO1xuICB9XG59XG4vKipcbiAqIExhYmVsIG9mIGEgbGlzdCBpdGVtLCBhZGQgY3NzIGNsYXNzIHRvIGFwcGx5IHByb3BlciBzdHlsaW5nLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdiYW8tZHJvcGRvd24tbWVudS1pdGVtLWxhYmVsLCBbYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1sYWJlbF0nLFxuICBob3N0OiB7IGNsYXNzOiAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1sYWJlbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9Ecm9wZG93bk1lbnVJdGVtTGFiZWwge31cbi8qKlxuICogRGVzY3JpcHRpb24gb2YgYSBsaXN0IGl0ZW0sIGFkZCBjc3MgY2xhc3MgdG8gYXBwbHkgcHJvcGVyIHN0eWxpbmcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAnYmFvLWRyb3Bkb3duLW1lbnUtaXRlbS1kZXNjcmlwdGlvbiwgW2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tZGVzY3JpcHRpb25dJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LWl0ZW0tZGVzY3JpcHRpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51SXRlbURlc2NyaXB0aW9uIHt9XG4vKipcbiAqIERpdmlkZXIgdG8gc2VwYXJhdGUgc2VjdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYDxociAvPmAsXG4gIHNlbGVjdG9yOiAnYmFvLWRyb3Bkb3duLW1lbnUtZGl2aWRlciwgW2Jhby1kcm9wZG93bi1tZW51LWRpdmlkZXJdJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1kcm9wZG93bi1tZW51LWRpdmlkZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvRHJvcGRvd25NZW51RGl2aWRlciBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAncm9sZScsICdzZXBhcmF0b3InKTtcbiAgfVxufVxuIiwiPGRpdiAjbWVudUNvbnRlbnQgY2xhc3M9XCJiYW8tZHJvcGRvd24tbWVudVwiIHRhYmluZGV4PVwiLTFcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -7,14 +7,14 @@ import { Component, Directive, ViewEncapsulation } from '@angular/core';
7
7
  import * as i0 from "@angular/core";
8
8
  export class BaoListItem {
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoListItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoListItem, selector: "bao-list-item, [bao-list-item]", host: { attributes: { "role": "listitem" }, classAttribute: "bao-list-item" }, ngImport: i0, template: "<div class=\"bao-list-item-header\">\n <ng-content select=\"baoIconItemType, [baoIconItemType]\"></ng-content>\n</div>\n<div class=\"bao-list-item-content\">\n <div class=\"bao-list-item-text\">\n <ng-content></ng-content>\n </div>\n <div class=\"bao-list-item-tag\">\n <ng-content\n select=\"bao-tag, [bao-tag], baoIconTag, [baoIconTag]\"\n ></ng-content>\n </div>\n</div>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-list{padding:0;margin:0}.bao-list>.bao-list-item:last-child{border-radius:.125rem;box-shadow:inset 0 .0625rem #ced4da,inset 0 -.0625rem #ced4da}.bao-list>a.bao-list-item{border-bottom:none}.bao-list>a.bao-list-item:focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#f8f9fa}.bao-list>a.bao-list-item:focus .bao-list-item-title{color:#097d6c}.bao-list>a.bao-list-item:hover{background-color:#f8f9fa}.bao-list>a.bao-list-item:hover .bao-list-item-text,.bao-list>a.bao-list-item:hover .bao-list-item-title{color:#097d6c}.bao-list .bao-list-item{display:flex;padding:1rem;background-color:#fff0;border-radius:.125rem .125rem 0rem 0rem;box-shadow:inset 0 .0625rem #ced4da}.bao-list .bao-list-item>.bao-list-item-header{align-self:flex-start;color:#adb2bd;line-height:0}.bao-list .bao-list-item>.bao-list-item-header .bao-icon{margin-right:1em}.bao-list .bao-list-item>.bao-list-item-content{display:flex;flex-grow:2}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:column}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:row;justify-content:space-between}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text{display:flex;flex-direction:column;color:#212529;font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-title{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{padding:0;margin:0}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{display:inline-flex;flex-wrap:wrap}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{color:#637381;margin-right:0 1rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{font-weight:400;font-size:.875rem;line-height:1.25rem;list-style-type:none}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{display:block}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{margin-bottom:.25rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*:last-child{margin-bottom:0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li{display:inline-flex;align-items:center;margin-bottom:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:before{content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ADB5BD' fill-rule='evenodd'><circle cx='12' cy='12' r='2'/></svg>\");height:1rem;width:1rem;margin:0 .25rem;flex-shrink:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:first-child:before{content:none}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag{line-height:0}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:.5rem 0 0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:0 0 0 1rem}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoListItem, selector: "bao-list-item, [bao-list-item]", host: { attributes: { "role": "listitem" }, classAttribute: "bao-list-item" }, ngImport: i0, template: "<div class=\"bao-list-item-header\">\n <ng-content select=\"baoIconItemType, [baoIconItemType]\"></ng-content>\n</div>\n<div class=\"bao-list-item-content\">\n <div class=\"bao-list-item-text\">\n <ng-content></ng-content>\n </div>\n <div class=\"bao-list-item-tag\">\n <ng-content\n select=\"bao-tag, [bao-tag], baoIconTag, [baoIconTag]\"\n ></ng-content>\n </div>\n</div>\n<div class=\"bao-list-item-actions\">\n <ng-content\n select=\"bao-button, [bao-button], bao-dropdown-menu, [bao-dropdown-menu]\"\n >\n </ng-content>\n</div>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-list{padding:0;margin:0}.bao-list>.bao-list-item:last-child{border-radius:.125rem;box-shadow:inset 0 .0625rem #ced4da,inset 0 -.0625rem #ced4da}.bao-list>a.bao-list-item{border-bottom:none}.bao-list>a.bao-list-item:focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#f8f9fa}.bao-list>a.bao-list-item:focus .bao-list-item-title{color:#097d6c}.bao-list>a.bao-list-item:hover{background-color:#f8f9fa}.bao-list>a.bao-list-item:hover .bao-list-item-text,.bao-list>a.bao-list-item:hover .bao-list-item-title{color:#097d6c}.bao-list .bao-list-item{display:flex;padding:1rem;background-color:#fff0;border-radius:.125rem .125rem 0rem 0rem;box-shadow:inset 0 .0625rem #ced4da}.bao-list .bao-list-item>.bao-list-item-header{align-self:flex-start;color:#adb2bd;line-height:0}.bao-list .bao-list-item>.bao-list-item-header .bao-icon{margin-right:1em}.bao-list .bao-list-item>.bao-list-item-content{display:flex;flex-grow:2}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:column}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:row;justify-content:space-between}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text{display:flex;flex-direction:column;color:#212529;font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-title{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{padding:0;margin:0}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{display:inline-flex;flex-wrap:wrap}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{color:#637381;margin-right:0 1rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{font-weight:400;font-size:.875rem;line-height:1.25rem;list-style-type:none}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{display:block}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{margin-bottom:.25rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*:last-child{margin-bottom:0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li{display:inline-flex;align-items:center;margin-bottom:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:before{content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ADB5BD' fill-rule='evenodd'><circle cx='12' cy='12' r='2'/></svg>\");height:1rem;width:1rem;margin:0 .25rem;flex-shrink:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:first-child:before{content:none}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag{line-height:0}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:.5rem 0 0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:0 0 0 1rem}}.bao-list .bao-list-item>.bao-list-item-actions .bao-button{margin-left:2rem;margin-top:-.5rem}\n"], encapsulation: i0.ViewEncapsulation.None }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoListItem, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'bao-list-item, [bao-list-item]', encapsulation: ViewEncapsulation.None, host: {
15
15
  class: 'bao-list-item',
16
16
  role: 'listitem'
17
- }, template: "<div class=\"bao-list-item-header\">\n <ng-content select=\"baoIconItemType, [baoIconItemType]\"></ng-content>\n</div>\n<div class=\"bao-list-item-content\">\n <div class=\"bao-list-item-text\">\n <ng-content></ng-content>\n </div>\n <div class=\"bao-list-item-tag\">\n <ng-content\n select=\"bao-tag, [bao-tag], baoIconTag, [baoIconTag]\"\n ></ng-content>\n </div>\n</div>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-list{padding:0;margin:0}.bao-list>.bao-list-item:last-child{border-radius:.125rem;box-shadow:inset 0 .0625rem #ced4da,inset 0 -.0625rem #ced4da}.bao-list>a.bao-list-item{border-bottom:none}.bao-list>a.bao-list-item:focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#f8f9fa}.bao-list>a.bao-list-item:focus .bao-list-item-title{color:#097d6c}.bao-list>a.bao-list-item:hover{background-color:#f8f9fa}.bao-list>a.bao-list-item:hover .bao-list-item-text,.bao-list>a.bao-list-item:hover .bao-list-item-title{color:#097d6c}.bao-list .bao-list-item{display:flex;padding:1rem;background-color:#fff0;border-radius:.125rem .125rem 0rem 0rem;box-shadow:inset 0 .0625rem #ced4da}.bao-list .bao-list-item>.bao-list-item-header{align-self:flex-start;color:#adb2bd;line-height:0}.bao-list .bao-list-item>.bao-list-item-header .bao-icon{margin-right:1em}.bao-list .bao-list-item>.bao-list-item-content{display:flex;flex-grow:2}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:column}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:row;justify-content:space-between}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text{display:flex;flex-direction:column;color:#212529;font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-title{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{padding:0;margin:0}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{display:inline-flex;flex-wrap:wrap}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{color:#637381;margin-right:0 1rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{font-weight:400;font-size:.875rem;line-height:1.25rem;list-style-type:none}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{display:block}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{margin-bottom:.25rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*:last-child{margin-bottom:0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li{display:inline-flex;align-items:center;margin-bottom:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:before{content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ADB5BD' fill-rule='evenodd'><circle cx='12' cy='12' r='2'/></svg>\");height:1rem;width:1rem;margin:0 .25rem;flex-shrink:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:first-child:before{content:none}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag{line-height:0}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:.5rem 0 0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:0 0 0 1rem}}\n"] }]
17
+ }, template: "<div class=\"bao-list-item-header\">\n <ng-content select=\"baoIconItemType, [baoIconItemType]\"></ng-content>\n</div>\n<div class=\"bao-list-item-content\">\n <div class=\"bao-list-item-text\">\n <ng-content></ng-content>\n </div>\n <div class=\"bao-list-item-tag\">\n <ng-content\n select=\"bao-tag, [bao-tag], baoIconTag, [baoIconTag]\"\n ></ng-content>\n </div>\n</div>\n<div class=\"bao-list-item-actions\">\n <ng-content\n select=\"bao-button, [bao-button], bao-dropdown-menu, [bao-dropdown-menu]\"\n >\n </ng-content>\n</div>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-list{padding:0;margin:0}.bao-list>.bao-list-item:last-child{border-radius:.125rem;box-shadow:inset 0 .0625rem #ced4da,inset 0 -.0625rem #ced4da}.bao-list>a.bao-list-item{border-bottom:none}.bao-list>a.bao-list-item:focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#f8f9fa}.bao-list>a.bao-list-item:focus .bao-list-item-title{color:#097d6c}.bao-list>a.bao-list-item:hover{background-color:#f8f9fa}.bao-list>a.bao-list-item:hover .bao-list-item-text,.bao-list>a.bao-list-item:hover .bao-list-item-title{color:#097d6c}.bao-list .bao-list-item{display:flex;padding:1rem;background-color:#fff0;border-radius:.125rem .125rem 0rem 0rem;box-shadow:inset 0 .0625rem #ced4da}.bao-list .bao-list-item>.bao-list-item-header{align-self:flex-start;color:#adb2bd;line-height:0}.bao-list .bao-list-item>.bao-list-item-header .bao-icon{margin-right:1em}.bao-list .bao-list-item>.bao-list-item-content{display:flex;flex-grow:2}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:column}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content{flex-direction:row;justify-content:space-between}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text{display:flex;flex-direction:column;color:#212529;font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-title{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{padding:0;margin:0}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>ul.bao-list-item-description{display:inline-flex;flex-wrap:wrap}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{color:#637381;margin-right:0 1rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{font-weight:400;font-size:.875rem;line-height:1.25rem;list-style-type:none}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description{display:block}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*{margin-bottom:.25rem}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>*:last-child{margin-bottom:0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li{display:inline-flex;align-items:center;margin-bottom:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:before{content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ADB5BD' fill-rule='evenodd'><circle cx='12' cy='12' r='2'/></svg>\");height:1rem;width:1rem;margin:0 .25rem;flex-shrink:0}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-text>.bao-list-item-description>li:first-child:before{content:none}}.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag{line-height:0}@media (min-width: 0){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:.5rem 0 0}}@media (min-width: 768px){.bao-list .bao-list-item>.bao-list-item-content>.bao-list-item-tag>*{margin:0 0 0 1rem}}.bao-list .bao-list-item>.bao-list-item-actions .bao-button{margin-left:2rem;margin-top:-.5rem}\n"] }]
18
18
  }] });
19
19
  export class BaoList {
20
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoList, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
70
70
  }
71
71
  }]
72
72
  }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9saXN0L2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWXhFLE1BQU0sT0FBTyxXQUFXOzhHQUFYLFdBQVc7a0dBQVgsV0FBVyxxSkNqQnhCLDRZQWFBOzsyRkRJYSxXQUFXO2tCQVZ2QixTQUFTOytCQUNFLGdDQUFnQyxpQkFHM0IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsZUFBZTt3QkFDdEIsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCOztBQVdILE1BQU0sT0FBTyxPQUFPOzhHQUFQLE9BQU87a0dBQVAsT0FBTzs7MkZBQVAsT0FBTztrQkFQbkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFVBQVU7d0JBQ2pCLElBQUksRUFBRSxNQUFNO3FCQUNiO2lCQUNGOztBQVVELE1BQU0sT0FBTyxVQUFVOzhHQUFWLFVBQVU7a0dBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFQdEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFVBQVU7d0JBQ2pCLElBQUksRUFBRSxZQUFZO3FCQUNuQjtpQkFDRjs7QUFTRCxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7a0dBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFObEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0RBQXdEO29CQUNsRSxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkM7aUJBQ0Y7O0FBU0QsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBTjVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRDQUE0QztvQkFDdEQsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxxQkFBcUI7cUJBQzdCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLWxpc3QtaXRlbSwgW2Jhby1saXN0LWl0ZW1dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWxpc3QtaXRlbScsXG4gICAgcm9sZTogJ2xpc3RpdGVtJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0xpc3RJdGVtIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby1saXN0LCBbYmFvLWxpc3RdJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWxpc3QnLFxuICAgIHJvbGU6ICdsaXN0J1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0xpc3Qge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLW5hdi1saXN0LCBbYmFvLW5hdi1saXN0XScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1saXN0JyxcbiAgICByb2xlOiAnbmF2aWdhdGlvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9OYXZMaXN0IHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby1saXN0LWl0ZW0tZGVzY3JpcHRpb24sIFtiYW8tbGlzdC1pdGVtLWRlc2NyaXB0aW9uXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1saXN0LWl0ZW0tZGVzY3JpcHRpb24nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvTGlzdEl0ZW1EZXNjcmlwdGlvbiB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdiYW8tbGlzdC1pdGVtLXRpdGxlLCBbYmFvLWxpc3QtaXRlbS10aXRsZV0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tbGlzdC1pdGVtLXRpdGxlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0xpc3RJdGVtVGl0bGUge31cbiIsIjxkaXYgY2xhc3M9XCJiYW8tbGlzdC1pdGVtLWhlYWRlclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJiYW9JY29uSXRlbVR5cGUsIFtiYW9JY29uSXRlbVR5cGVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYmFvLWxpc3QtaXRlbS1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiYW8tbGlzdC1pdGVtLXRleHRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYmFvLWxpc3QtaXRlbS10YWdcIj5cbiAgICA8bmctY29udGVudFxuICAgICAgc2VsZWN0PVwiYmFvLXRhZywgW2Jhby10YWddLCBiYW9JY29uVGFnLCBbYmFvSWNvblRhZ11cIlxuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9saXN0L2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWXhFLE1BQU0sT0FBTyxXQUFXOzhHQUFYLFdBQVc7a0dBQVgsV0FBVyxxSkNqQnhCLGlqQkFtQkE7OzJGREZhLFdBQVc7a0JBVnZCLFNBQVM7K0JBQ0UsZ0NBQWdDLGlCQUczQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSxlQUFlO3dCQUN0QixJQUFJLEVBQUUsVUFBVTtxQkFDakI7O0FBV0gsTUFBTSxPQUFPLE9BQU87OEdBQVAsT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQVBuQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsVUFBVTt3QkFDakIsSUFBSSxFQUFFLE1BQU07cUJBQ2I7aUJBQ0Y7O0FBVUQsTUFBTSxPQUFPLFVBQVU7OEdBQVYsVUFBVTtrR0FBVixVQUFVOzsyRkFBVixVQUFVO2tCQVB0QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsVUFBVTt3QkFDakIsSUFBSSxFQUFFLFlBQVk7cUJBQ25CO2lCQUNGOztBQVNELE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3REFBd0Q7b0JBQ2xFLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsMkJBQTJCO3FCQUNuQztpQkFDRjs7QUFTRCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNENBQTRDO29CQUN0RCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLHFCQUFxQjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYW8tbGlzdC1pdGVtLCBbYmFvLWxpc3QtaXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tbGlzdC1pdGVtJyxcbiAgICByb2xlOiAnbGlzdGl0ZW0nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvTGlzdEl0ZW0ge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWxpc3QsIFtiYW8tbGlzdF0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tbGlzdCcsXG4gICAgcm9sZTogJ2xpc3QnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvTGlzdCB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdiYW8tbmF2LWxpc3QsIFtiYW8tbmF2LWxpc3RdJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWxpc3QnLFxuICAgIHJvbGU6ICduYXZpZ2F0aW9uJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb05hdkxpc3Qge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWxpc3QtaXRlbS1kZXNjcmlwdGlvbiwgW2Jhby1saXN0LWl0ZW0tZGVzY3JpcHRpb25dJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWxpc3QtaXRlbS1kZXNjcmlwdGlvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9MaXN0SXRlbURlc2NyaXB0aW9uIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby1saXN0LWl0ZW0tdGl0bGUsIFtiYW8tbGlzdC1pdGVtLXRpdGxlXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1saXN0LWl0ZW0tdGl0bGUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvTGlzdEl0ZW1UaXRsZSB7fVxuIiwiPGRpdiBjbGFzcz1cImJhby1saXN0LWl0ZW0taGVhZGVyXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImJhb0ljb25JdGVtVHlwZSwgW2Jhb0ljb25JdGVtVHlwZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJiYW8tbGlzdC1pdGVtLWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImJhby1saXN0LWl0ZW0tdGV4dFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJiYW8tbGlzdC1pdGVtLXRhZ1wiPlxuICAgIDxuZy1jb250ZW50XG4gICAgICBzZWxlY3Q9XCJiYW8tdGFnLCBbYmFvLXRhZ10sIGJhb0ljb25UYWcsIFtiYW9JY29uVGFnXVwiXG4gICAgPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJiYW8tbGlzdC1pdGVtLWFjdGlvbnNcIj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJiYW8tYnV0dG9uLCBbYmFvLWJ1dHRvbl0sIGJhby1kcm9wZG93bi1tZW51LCBbYmFvLWRyb3Bkb3duLW1lbnVdXCJcbiAgPlxuICA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==