@fundamental-ngx/core 0.35.2-rc.35 → 0.35.2-rc.38

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.
Files changed (138) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/content-density/package.json +3 -3
  16. package/date-picker/package.json +1 -1
  17. package/datetime/package.json +1 -1
  18. package/datetime-picker/package.json +1 -1
  19. package/dialog/package.json +1 -1
  20. package/dynamic-page/package.json +1 -1
  21. package/dynamic-side-content/package.json +1 -1
  22. package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +28 -17
  23. package/esm2020/multi-input/multi-input.component.mjs +3 -1
  24. package/esm2020/time/time-column/time-column.component.mjs +3 -3
  25. package/esm2020/token/token.component.mjs +12 -3
  26. package/esm2020/token/tokenizer.component.mjs +19 -9
  27. package/facets/package.json +1 -1
  28. package/feed-input/package.json +1 -1
  29. package/feed-list-item/package.json +1 -1
  30. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +28 -17
  31. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  32. package/fesm2015/fundamental-ngx-core-multi-input.mjs +2 -0
  33. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  34. package/fesm2015/fundamental-ngx-core-time.mjs +2 -2
  35. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  36. package/fesm2015/fundamental-ngx-core-token.mjs +29 -12
  37. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  38. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +28 -17
  39. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  40. package/fesm2020/fundamental-ngx-core-multi-input.mjs +2 -0
  41. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  42. package/fesm2020/fundamental-ngx-core-time.mjs +2 -2
  43. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  44. package/fesm2020/fundamental-ngx-core-token.mjs +29 -12
  45. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  46. package/file-uploader/package.json +1 -1
  47. package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +28 -17
  48. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +28 -17
  49. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  50. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +28 -17
  51. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  52. package/fixed-card-layout/fixed-card-layout.component.d.ts +9 -2
  53. package/fixed-card-layout/package.json +1 -1
  54. package/flexible-column-layout/package.json +1 -1
  55. package/form/package.json +1 -1
  56. package/formatted-text/package.json +1 -1
  57. package/grid-list/package.json +1 -1
  58. package/icon/package.json +1 -1
  59. package/illustrated-message/package.json +1 -1
  60. package/infinite-scroll/package.json +1 -1
  61. package/info-label/package.json +1 -1
  62. package/inline-help/package.json +1 -1
  63. package/input-group/package.json +1 -1
  64. package/layout-grid/package.json +1 -1
  65. package/layout-panel/package.json +1 -1
  66. package/link/package.json +1 -1
  67. package/list/package.json +1 -1
  68. package/menu/package.json +1 -1
  69. package/message-box/package.json +1 -1
  70. package/message-strip/package.json +1 -1
  71. package/message-toast/package.json +1 -1
  72. package/micro-process-flow/package.json +1 -1
  73. package/mobile-mode/package.json +1 -1
  74. package/multi-input/esm2020/multi-input.component.mjs +3 -1
  75. package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +2 -0
  76. package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  77. package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +2 -0
  78. package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  79. package/multi-input/package.json +1 -1
  80. package/nested-list/package.json +1 -1
  81. package/notification/package.json +1 -1
  82. package/object-identifier/package.json +1 -1
  83. package/object-marker/package.json +1 -1
  84. package/object-number/package.json +1 -1
  85. package/object-status/package.json +1 -1
  86. package/overflow-layout/package.json +13 -13
  87. package/package.json +1 -1
  88. package/pagination/package.json +1 -1
  89. package/panel/package.json +1 -1
  90. package/popover/package.json +1 -1
  91. package/product-switch/package.json +1 -1
  92. package/progress-indicator/package.json +1 -1
  93. package/quick-view/package.json +1 -1
  94. package/radio/package.json +1 -1
  95. package/rating-indicator/package.json +1 -1
  96. package/resizable-card-layout/package.json +1 -1
  97. package/scroll-spy/package.json +1 -1
  98. package/scrollbar/package.json +1 -1
  99. package/segmented-button/package.json +1 -1
  100. package/select/package.json +1 -1
  101. package/shared/package.json +1 -1
  102. package/shellbar/package.json +1 -1
  103. package/side-navigation/package.json +1 -1
  104. package/slider/package.json +1 -1
  105. package/split-button/package.json +1 -1
  106. package/splitter/package.json +1 -1
  107. package/status-indicator/package.json +1 -1
  108. package/step-input/package.json +1 -1
  109. package/switch/package.json +1 -1
  110. package/table/package.json +1 -1
  111. package/tabs/package.json +1 -1
  112. package/text/package.json +1 -1
  113. package/theming/package.json +1 -1
  114. package/tile/package.json +1 -1
  115. package/time/esm2020/time-column/time-column.component.mjs +3 -3
  116. package/time/fesm2015/fundamental-ngx-core-time.mjs +2 -2
  117. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  118. package/time/fesm2020/fundamental-ngx-core-time.mjs +2 -2
  119. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  120. package/time/package.json +1 -1
  121. package/time-picker/package.json +1 -1
  122. package/timeline/package.json +1 -1
  123. package/title/package.json +1 -1
  124. package/token/esm2020/token.component.mjs +12 -3
  125. package/token/esm2020/tokenizer.component.mjs +19 -9
  126. package/token/fesm2015/fundamental-ngx-core-token.mjs +29 -12
  127. package/token/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  128. package/token/fesm2020/fundamental-ngx-core-token.mjs +29 -12
  129. package/token/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  130. package/token/package.json +1 -1
  131. package/token/token.component.d.ts +2 -0
  132. package/token/tokenizer.component.d.ts +3 -1
  133. package/toolbar/package.json +1 -1
  134. package/tree/package.json +1 -1
  135. package/upload-collection/package.json +1 -1
  136. package/utils/package.json +1 -1
  137. package/vertical-navigation/package.json +1 -1
  138. package/wizard/package.json +1 -1
@@ -70,13 +70,15 @@ export class FixedCardLayoutComponent {
70
70
  /** @hidden */
71
71
  this._columnsWidth = new Map();
72
72
  /** @hidden */
73
- this._skipListenResize = false;
73
+ this._listenResize = false;
74
74
  /** @hidden */
75
75
  this._cardMinimumWidth = CARD_MINIMUM_WIDTH;
76
76
  /** @hidden */
77
77
  this._cardsSizeChangeSubscription = new Subscription();
78
78
  /** @hidden An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
79
79
  this._onDestroy$ = new Subject();
80
+ /** @hidden */
81
+ this._sortPredicateFn = (index) => index === 0;
80
82
  /** @hidden For the keyboard drag&drop directive */
81
83
  this._customMoveFn = (group, indexFrom, indexTo) => {
82
84
  const movedCard = group[indexFrom];
@@ -148,11 +150,14 @@ export class FixedCardLayoutComponent {
148
150
  }
149
151
  /** Distribute cards on window resize */
150
152
  updateLayout() {
151
- if (!this._cards.length) {
152
- return;
153
+ this._listenResize = false;
154
+ if (this._cards.length) {
155
+ const possibleNumberOfColumns = getNumberOfColumns(this._availableWidth, this.cardMinimumWidth);
156
+ this._numberOfColumns = Math.min(possibleNumberOfColumns, this._cards.length, this.maxColumns || MAX_COLUMNS, MAX_COLUMNS);
157
+ }
158
+ else {
159
+ this._numberOfColumns = 1;
153
160
  }
154
- const possibleNumberOfColumns = getNumberOfColumns(this._availableWidth, this.cardMinimumWidth);
155
- this._numberOfColumns = Math.min(possibleNumberOfColumns, this._cards.length, this.maxColumns || MAX_COLUMNS, MAX_COLUMNS);
156
161
  this.layoutChange.emit({
157
162
  numberOfColumns: this._numberOfColumns,
158
163
  screenSize: this._availableWidth
@@ -160,6 +165,12 @@ export class FixedCardLayoutComponent {
160
165
  this._setCardColumns();
161
166
  this._setCardColumnsWidth();
162
167
  this._setContainerHeight();
168
+ this._listenResize = true;
169
+ }
170
+ /** @hidden */
171
+ _onDragStarted(event) {
172
+ this._listenResize = false;
173
+ this._hiddenCard = event.source.data;
163
174
  }
164
175
  /** @hidden */
165
176
  _onDropListEntered(event) {
@@ -174,6 +185,7 @@ export class FixedCardLayoutComponent {
174
185
  }
175
186
  /** @hidden */
176
187
  _onDragDropped(event) {
188
+ this._hiddenCard = null;
177
189
  if (event.container.data === event.previousContainer.data) {
178
190
  return;
179
191
  }
@@ -218,13 +230,13 @@ export class FixedCardLayoutComponent {
218
230
  _subscribeToRtl() {
219
231
  this._rtlService?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((isRtl) => {
220
232
  this._dir = isRtl ? 'rtl' : 'ltr';
221
- this._changeDetector.detectChanges();
233
+ this._changeDetector.markForCheck();
222
234
  });
223
235
  }
224
236
  /** @hidden Listen window resize and distribute cards on column change */
225
237
  _listenOnResize() {
226
238
  resizeObservable(this._layout.nativeElement)
227
- .pipe(debounceTime(60), filter(() => this._skipListenResize), takeUntil(this._onDestroy$))
239
+ .pipe(filter(() => this._listenResize), debounceTime(50), takeUntil(this._onDestroy$))
228
240
  .subscribe(() => this.updateLayout());
229
241
  }
230
242
  /** @hidden Listen card change and distribute cards on column change */
@@ -282,19 +294,18 @@ export class FixedCardLayoutComponent {
282
294
  * Parameters used to increase the height of the column where drag'n'drop placeholder currently is
283
295
  */
284
296
  _setContainerHeight(columnIndexToAddSpace = -1, spaceToAdd = 0) {
285
- this._skipListenResize = true;
286
297
  this._changeDetector.detectChanges();
287
298
  const cardColumns = this._cardColumns.map((column) => column
288
- .map((card) => this._dragList.find((drag) => !drag._dragRef.isDragging() && drag.data === card)?.element)
289
- .filter((card) => !!card));
299
+ .map((card) => this._dragList.find((drag) => drag.data === card))
300
+ .filter((cdkDrag) => !cdkDrag?._dragRef.isDragging() && !!cdkDrag?.element?.nativeElement)
301
+ .map((cdkDrag) => cdkDrag?.element));
290
302
  const columnsHeights = cardColumns
291
- .map((column) => column.map((card) => card.nativeElement.getBoundingClientRect().height))
303
+ .map((column) => column.map((cardElRef) => cardElRef?.nativeElement.getBoundingClientRect().height || 0))
292
304
  .map((column, columnIndex) => column.reduce((cardsHeight, height) => (cardsHeight += height + REM_IN_PX), 0) +
293
305
  (columnIndex === columnIndexToAddSpace ? spaceToAdd : 0));
294
306
  // +4px because it's the top & bottom borders of card placeholder
295
- this._containerHeight = Math.max(...columnsHeights) + 4;
307
+ this._containerHeight = Math.ceil(Math.max(...columnsHeights) + 4);
296
308
  this._changeDetector.detectChanges();
297
- this._skipListenResize = false;
298
309
  }
299
310
  /** @hidden */
300
311
  _listenOnCardsSizeChange() {
@@ -306,18 +317,18 @@ export class FixedCardLayoutComponent {
306
317
  .filter((v) => !!v)
307
318
  .forEach((card) => {
308
319
  this._cardsSizeChangeSubscription.add(resizeObservable(card.nativeElement)
309
- .pipe(distinct((resizeEntry) => resizeEntry[0].contentRect.height))
320
+ .pipe(filter(() => this._listenResize), distinct((resizeEntry) => resizeEntry[0].contentRect.height), debounceTime(50))
310
321
  .subscribe(() => this._setContainerHeight()));
311
322
  }));
312
323
  }
313
324
  }
314
325
  FixedCardLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
315
- FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_dragList", predicate: CdkDrag, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.2\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
326
+ FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_dragList", predicate: CdkDrag, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.2\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
316
327
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, decorators: [{
317
328
  type: Component,
318
329
  args: [{ selector: 'fd-fixed-card-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
319
330
  class: 'fd-fixed-card-layout'
320
- }, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.2\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"] }]
331
+ }, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.2\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"] }]
321
332
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{
322
333
  type: Optional
323
334
  }] }]; }, propDecorators: { disableDragDrop: [{
@@ -376,4 +387,4 @@ function adjustCardRank(draggedCard, replacedCard) {
376
387
  draggedCard.fdCardDef = replacedCard.fdCardDef;
377
388
  replacedCard.fdCardDef = draggedCardRank;
378
389
  }
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBNkIsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztBQUN4QyxNQUFNLGtCQUFr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QztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VudGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3QsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlLCBSdGxTZXJ2aWNlLCBnZXREb2N1bWVudEZvbnRTaXplIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY29uc3QgUkVNX0lOX1BYID0gZ2V0RG9jdW1lbnRGb250U2l6ZSgpO1xuY29uc3QgQ0FSRF9NSU5JTVVNX1dJRFRIID0gUkVNX0lOX1BYICogMjA7IC8vIDIwcmVtXG5jb25zdCBDQVJEX0dBUF9XSURUSCA9IFJFTV9JTl9QWDsgLy8gMXJlbVxuY29uc3QgRFJBR19TVEFSVF9ERUxBWSA9IDIwMDsgLy8gaW4gbXNcbmNvbnN0IE1BWF9DT0xVTU5TID0gMTA7XG5cbmxldCBjYXJkUmFuayA9IDE7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZENhcmREZWZdJyB9KVxuZXhwb3J0IGNsYXNzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBCZWhhdmVzIGxpa2UgcmFuayBvZiBjYXJkLlxuICAgICAqIFVzZWZ1bCBpbiBjcmVhdGluZyBsYXlvdXQgYWdhaW4gYWZ0ZXIgZHJhZyBhbmQgZHJvcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmZENhcmREZWYodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZkQ2FyZERlZiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZkQ2FyZERlZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmRDYXJkRGVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmRDYXJkRGVmOiBudW1iZXIgPSBjYXJkUmFuaysrO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0IHtcbiAgICBudW1iZXJPZkNvbHVtbnM/OiBudW1iZXI7XG4gICAgc2NyZWVuU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcmREcm9wcGVkIHtcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gICAgbGF5b3V0Q29sdW1uczogbnVtYmVyO1xuICAgIGl0ZW1zOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xufVxuXG50eXBlIENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMDtcblxuZXhwb3J0IHR5cGUgQ29sdW1uc1dpZHRoQ29uZmlnID0geyBbQyBpbiBDb2x1bW5zXT86IG51bWJlciB9O1xuXG50eXBlIENhcmRDb2x1bW4gPSBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaXhlZENhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogRHJhZyBkcm9wIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZURyYWdEcm9wOiBib29sZWFuO1xuXG4gICAgLyoqIERyYWcgc3RhcnQgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLCBkZWZhdWx0IHRvIDIwMG1zIGZvciBzYWZlIHNjcm9sbGluZyBvbiBtb2JpbGUgd2l0aCB0b3VjaHNjcmVlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ1N0YXJ0RGVsYXkgPSBEUkFHX1NUQVJUX0RFTEFZO1xuXG4gICAgLyoqIENhcmQncyBtaW5pbXVtIHdpZHRoIGluIHBpeGVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkTWluaW11bVdpZHRoKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGNvZXJjZWRWYWx1ZSA8IENBUkRfTUlOSU1VTV9XSURUSCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FyZE1pbmltdW1XaWR0aCA9IGNvZXJjZWRWYWx1ZTtcbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIERlZmF1bHQgaXMgMTAuICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb2x1bW5zID0gTUFYX0NPTFVNTlM7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCwgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPExheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPExheW91dD4oKTtcblxuICAgIC8qKiBFdmVudCB0byBlbWl0IG9uIENhcmQgZHJhZ2dlZCBhbmQgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhcmREcmFnZ2VkRHJvcHBlZDogRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpXG4gICAgX2NhcmRzOiBRdWVyeUxpc3Q8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQpXG4gICAgX2NhcmRDb250YWluZXJzOiBRdWVyeUxpc3Q8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQ2RrRHJhZylcbiAgICBfZHJhZ0xpc3Q6IFF1ZXJ5TGlzdDxDZGtEcmFnPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZHNBcnJheTogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcblxuICAgIC8qKiBAaGlkZGVuIE51bWJlciBvZiBDb2x1bW5zIGluIGxheW91dCAqL1xuICAgIF9udW1iZXJPZkNvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRDb2x1bW5zOiBDYXJkQ29sdW1uW107XG5cbiAgICAvKiogQGhpZGRlbiovXG4gICAgX2NvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gaGFuZGxlcyBydGwgc2VydmljZSAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uc1dpZHRoID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBhdmFpbGFibGUgd2lkdGggZm9yIGZpeGVkIGNhcmQgbGF5b3V0ICovXG4gICAgZ2V0IF9hdmFpbGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2Vob2xkZXJNYXJnaW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9za2lwTGlzdGVuUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmltdW1XaWR0aCA9IENBUkRfTUlOSU1VTV9XSURUSDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eVNldHVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIFNraXAgYWxsIGNoYW5nZXMgdW5sZXNzIHdlIGRvbid0IGhhdmUgaW5pdGlhbCBsYXlvdXQgY3JlYXRlZFxuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbWF4Q29sdW1ucycgaW4gY2hhbmdlcyB8fCAnY2FyZE1pbmltdW1XaWR0aCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkQ29sdW1uc1dpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc1NpemVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEaXN0cmlidXRlIGNhcmRzIG9uIHdpbmRvdyByZXNpemUgKi9cbiAgICB1cGRhdGVMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FyZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NzaWJsZU51bWJlck9mQ29sdW1ucyA9IGdldE51bWJlck9mQ29sdW1ucyh0aGlzLl9hdmFpbGFibGVXaWR0aCwgdGhpcy5jYXJkTWluaW11bVdpZHRoKTtcblxuICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgdGhpcy5fY2FyZHMubGVuZ3RoLFxuICAgICAgICAgICAgdGhpcy5tYXhDb2x1bW5zIHx8IE1BWF9DT0xVTU5TLFxuICAgICAgICAgICAgTUFYX0NPTFVNTlNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxheW91dENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIG51bWJlck9mQ29sdW1uczogdGhpcy5fbnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgc2NyZWVuU2l6ZTogdGhpcy5fYXZhaWxhYmxlV2lkdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB0aGlzLl9zZXRDb250YWluZXJIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1DYXJkRGVmID0gKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcbiAgICAgICAgY29uc3QgZHJhZ0l0ZW1DYXJkRGVmID0gKGV2ZW50Lml0ZW0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuXG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyTWFyZ2luID0gY29udGFpbmVySXRlbUNhcmREZWYgIT09IGRyYWdJdGVtQ2FyZERlZjtcblxuICAgICAgICBjb25zdCBjb2x1bW5JbmRleFRvQWRkU3BhY2UgPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kSW5kZXgoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhID09PSBjYXJkKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzcGFjZVRvQWRkID1cbiAgICAgICAgICAgIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArXG4gICAgICAgICAgICAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKCkubGVuZ3RoID8gUkVNX0lOX1BYIDogMCk7XG5cbiAgICAgICAgLy8gV2hlbiB3ZSBtb3ZlIHRoZSBjYXJkIGludG8gYSBjZXJ0YWluIGNvbHVtbiB3ZSBzaG91bGQgaW5jcmVhc2UgdGhlIGhlaWdodCBvZiB0aGF0IGNvbHVtbiBieSB0aGUgY2FyZCBoZWlnaHRcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSwgc3BhY2VUb0FkZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8bnVtYmVyLCBudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jb250YWluZXIuZGF0YSA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY2Nlc3NpYmlsaXR5U2V0dXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fY2FyZENvbnRhaW5lcnMpLndpdGhXcmFwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiB3aW5kb3cgcmVzaXplIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3NraXBMaXN0ZW5SZXNpemUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxheW91dCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gY2FyZCBjaGFuZ2UgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Byb2Nlc3NDYXJkcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NDYXJkcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheSA9IHRoaXMuX2NhcmRzXG4gICAgICAgICAgICAudG9BcnJheSgpXG4gICAgICAgICAgICAuc29ydCgoZmlyc3RDYXJkLCBzZWNvbmRDYXJkKSA9PiBmaXJzdENhcmQuZmRDYXJkRGVmIC0gc2Vjb25kQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zLmFkZChjb2x1bW5bMF0uZmRDYXJkRGVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuT25DYXJkc1NpemVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENhcmRDb2x1bW5zV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBjb25zdCBjb25maWdQcmVzZW50ID1cbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnICYmXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZykubGVuZ3RoO1xuXG4gICAgICAgIGlmICghY29uZmlnUHJlc2VudCB8fCB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpeGVkV2lkdGhNb2RpZmllcnMgPSBmaXhXaWR0aE1vZGlmaWVycyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZywgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zKTtcbiAgICAgICAgY29uc3QgdG90YWxXaWR0aE1vZGlmaWVycyA9IGZpeGVkV2lkdGhNb2RpZmllcnMucmVkdWNlKChzdW0sIHdpZHRoKSA9PiAoc3VtICs9IHdpZHRoKSwgMCk7XG4gICAgICAgIGNvbnN0IGZyZWVTcGFjZSA9IHRoaXMuX2F2YWlsYWJsZVdpZHRoIC0gdGhpcy5jYXJkTWluaW11bVdpZHRoICogdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKyAoZnJlZVNwYWNlIC8gdG90YWxXaWR0aE1vZGlmaWVycykgKiBmaXhlZFdpZHRoTW9kaWZpZXJzW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKGNhcmQpID0+IHRoaXMuX2NvbHVtbnNXaWR0aC5zZXQoY2FyZC5mZENhcmREZWYsIGNvbHVtbldpZHRoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxjdWxhdGUgY29udGFpbmVyIGhlaWdodCBhY2NvcmRpbmdseSB0byB0aGUgdGhlIGNhcmQgY29sdW1ucyBoZWlnaHRcbiAgICAgKiBQYXJhbWV0ZXJzIHVzZWQgdG8gaW5jcmVhc2UgdGhlIGhlaWdodCBvZiB0aGUgY29sdW1uIHdoZXJlIGRyYWcnbidkcm9wIHBsYWNlaG9sZGVyIGN1cnJlbnRseSBpc1xuICAgICAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckhlaWdodChjb2x1bW5JbmRleFRvQWRkU3BhY2UgPSAtMSwgc3BhY2VUb0FkZCA9IDApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2tpcExpc3RlblJlc2l6ZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IGNhcmRDb2x1bW5zID0gdGhpcy5fY2FyZENvbHVtbnMubWFwKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoY2FyZCkgPT4gdGhpcy5fZHJhZ0xpc3QuZmluZCgoZHJhZykgPT4gIWRyYWcuX2RyYWdSZWYuaXNEcmFnZ2luZygpICYmIGRyYWcuZGF0YSA9PT0gY2FyZCk/LmVsZW1lbnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2FyZCk6IGNhcmQgaXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPT4gISFjYXJkKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnNIZWlnaHRzID0gY2FyZENvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgoY2FyZCkgPT4gY2FyZC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkpXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4ucmVkdWNlKChjYXJkc0hlaWdodCwgaGVpZ2h0KSA9PiAoY2FyZHNIZWlnaHQgKz0gaGVpZ2h0ICsgUkVNX0lOX1BYKSwgMCkgK1xuICAgICAgICAgICAgICAgICAgICAoY29sdW1uSW5kZXggPT09IGNvbHVtbkluZGV4VG9BZGRTcGFjZSA/IHNwYWNlVG9BZGQgOiAwKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyArNHB4IGJlY2F1c2UgaXQncyB0aGUgdG9wICYgYm90dG9tIGJvcmRlcnMgb2YgY2FyZCBwbGFjZWhvbGRlclxuICAgICAgICB0aGlzLl9jb250YWluZXJIZWlnaHQgPSBNYXRoLm1heCguLi5jb2x1bW5zSGVpZ2h0cykgKyA0O1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLl9za2lwTGlzdGVuUmVzaXplID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkNhcmRzU2l6ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgLm1hcCgoY2FyZCkgPT4gdGhpcy5fZHJhZ0xpc3QuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5kYXRhID09PSBjYXJkKT8uZWxlbWVudClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9PiAhIXYpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUoY2FyZC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0KChyZXNpemVFbnRyeSkgPT4gcmVzaXplRW50cnlbMF0uY29udGVudFJlY3QuaGVpZ2h0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldENvbnRhaW5lckhlaWdodCgpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZnVuY3Rpb24gZml4V2lkdGhNb2RpZmllcnMoY29uZmlnOiBDb2x1bW5zV2lkdGhDb25maWcsIG51bWJlck9mQ29sdW1uczogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IG5ldyBBcnJheShudW1iZXJPZkNvbHVtbnMpLmZpbGwoMCk7XG5cbiAgICByZXR1cm4gbW9kaWZpZXJzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGhNb2RpZmllciA9IGNvbmZpZ1tpbmRleCArIDFdO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGhNb2RpZmllciB8fCBjb2x1bW5XaWR0aE1vZGlmaWVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uV2lkdGhNb2RpZmllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gUmV0dXJucyBudW1iZXIgb2YgY29sdW1ucyB0aGF0IGNhbiBmaXQgaW4gY3VycmVudCBhdmFpbGFibGUgd2lkdGggZm9yIGZkLWNhcmQtbGF5b3V0ICovXG5mdW5jdGlvbiBnZXROdW1iZXJPZkNvbHVtbnMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgY2FyZFdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggfHwgMTtcbiAgICBjYXJkV2lkdGggPSBjYXJkV2lkdGggfHwgMTtcblxuICAgIGNvbnN0IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gY2FyZFdpZHRoKSwgMSk7IC8vIEV4YW1wbGU6IDk2MCAvIDMyMCA9IDNcbiAgICBjb25zdCByZXF1aXJlZFdpZHRoV2l0aEdhcCA9IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgKiBjYXJkV2lkdGggKyAobnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEpICogQ0FSRF9HQVBfV0lEVEg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSByZXF1aXJlZFdpZHRoV2l0aEdhcCA+IGNvbnRhaW5lcldpZHRoID8gbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEgOiBudW1iZXJPZkNhcmRzV2l0aE5vR2FwO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KGNvbHVtbkNvdW50LCAxKTtcbn1cblxuLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHVwZGF0ZSByYW5rIGFmdGVyIGNhcmRzIGFyZSBkcmFnZ2VkICovXG5mdW5jdGlvbiBhZGp1c3RDYXJkUmFuayhkcmFnZ2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsIHJlcGxhY2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnZ2VkQ2FyZFJhbmsgPSBkcmFnZ2VkQ2FyZC5mZENhcmREZWY7XG4gICAgZHJhZ2dlZENhcmQuZmRDYXJkRGVmID0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZjtcbiAgICByZXBsYWNlZENhcmQuZmRDYXJkRGVmID0gZHJhZ2dlZENhcmRSYW5rO1xufVxuIiwiPGRpdlxuICAgICNsYXlvdXRcbiAgICBjZGtEcm9wTGlzdEdyb3VwXG4gICAgZmREbmRLZXlib2FyZEdyb3VwXG4gICAgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1sYXlvdXQgZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0LS1jb2x1bW5zLXt7IHRoaXMuX251bWJlck9mQ29sdW1ucyB9fVwiXG4gICAgW3N0eWxlLmhlaWdodF09XCJfY29udGFpbmVySGVpZ2h0ICsgJ3B4J1wiXG4gICAgW2dyb3Vwc109XCJfY2FyZENvbHVtbnNcIlxuICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgW2N1c3RvbU1vdmVGbl09XCJfY3VzdG9tTW92ZUZuXCJcbiAgICBbY3VzdG9tVHJhbnNmZXJGbl09XCJfY3VzdG9tVHJhbnNmZXJGblwiXG4gICAgW2Rpc2FibGVLZXlib2FyZERyYWdEcm9wXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgW2Nka0Ryb3BMaXN0R3JvdXBEaXNhYmxlZF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFthdHRyLmRpcl09XCJfZGlyXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBjYXJkIG9mIF9jYXJkc0FycmF5OyBsZXQgY2FyZEluZGV4ID0gaW5kZXhcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZFxuICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkXCJcbiAgICAgICAgW2NsYXNzLmZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLS1zaW5nbGVdPVwiX3NpbmdsZUl0ZW1Db2x1bW5zLmhhcyhjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIl9jb2x1bW5zV2lkdGguZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjYXJkSW5kZXhcIlxuICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIl9vbkRyb3BMaXN0RW50ZXJlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRJdGVtXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgY2RrRHJhZ1ByZXZpZXdDbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXByZXZpZXdcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNhcmRcIlxuICAgICAgICAgICAgW2Nka0RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5XCJcbiAgICAgICAgICAgIFtpdGVtSW5kZXhdPVwiX2l0ZW1JbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZikhXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKSFcIlxuICAgICAgICAgICAgKGNka0RyYWdEcm9wcGVkKT1cIl9vbkRyYWdEcm9wcGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5yZW1dPVwiK19wbGFjZWhvbGRlck1hcmdpblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBMkMsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztBQUN4QyxNQUFNLGtCQUFr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QWtCLENBQUMsY0FBc0IsRUFBRSxTQUFpQjtJQUNqRSxjQUFjLEdBQUcsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUNyQyxTQUFTLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUUzQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7SUFDN0csTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyxTQUFTLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDaEgsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBRWhILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFTLGNBQWMsQ0FBQyxXQUFvQyxFQUFFLFlBQXFDO0lBQy9GLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDOUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbnRlciwgQ2RrRHJhZ1N0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3QsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlLCBSdGxTZXJ2aWNlLCBnZXREb2N1bWVudEZvbnRTaXplIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9maXhlZC1jYXJkLWxheW91dC1pdGVtL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmNvbnN0IFJFTV9JTl9QWCA9IGdldERvY3VtZW50Rm9udFNpemUoKTtcbmNvbnN0IENBUkRfTUlOSU1VTV9XSURUSCA9IFJFTV9JTl9QWCAqIDIwOyAvLyAyMHJlbVxuY29uc3QgQ0FSRF9HQVBfV0lEVEggPSBSRU1fSU5fUFg7IC8vIDFyZW1cbmNvbnN0IERSQUdfU1RBUlRfREVMQVkgPSAyMDA7IC8vIGluIG1zXG5jb25zdCBNQVhfQ09MVU1OUyA9IDEwO1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRDYXJkRGVmXScgfSlcbmV4cG9ydCBjbGFzcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQmVoYXZlcyBsaWtlIHJhbmsgb2YgY2FyZC5cbiAgICAgKiBVc2VmdWwgaW4gY3JlYXRpbmcgbGF5b3V0IGFnYWluIGFmdGVyIGRyYWcgYW5kIGRyb3AuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRDYXJkRGVmKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mZENhcmREZWYgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBmZENhcmREZWYoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZkQ2FyZERlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZkQ2FyZERlZjogbnVtYmVyID0gY2FyZFJhbmsrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dCB7XG4gICAgbnVtYmVyT2ZDb2x1bW5zPzogbnVtYmVyO1xuICAgIHNjcmVlblNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJkRHJvcHBlZCB7XG4gICAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICAgIGxheW91dENvbHVtbnM6IG51bWJlcjtcbiAgICBpdGVtczogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcbn1cblxudHlwZSBDb2x1bW5zID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTA7XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNXaWR0aENvbmZpZyA9IHsgW0MgaW4gQ29sdW1uc10/OiBudW1iZXIgfTtcblxudHlwZSBDYXJkQ29sdW1uID0gQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1maXhlZC1jYXJkLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRml4ZWRDYXJkTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIERyYWcgZHJvcCBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVEcmFnRHJvcDogYm9vbGVhbjtcblxuICAgIC8qKiBEcmFnIHN0YXJ0IGRlbGF5IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCB0byAyMDBtcyBmb3Igc2FmZSBzY3JvbGxpbmcgb24gbW9iaWxlIHdpdGggdG91Y2hzY3JlZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyYWdTdGFydERlbGF5ID0gRFJBR19TVEFSVF9ERUxBWTtcblxuICAgIC8qKiBDYXJkJ3MgbWluaW11bSB3aWR0aCBpbiBwaXhlbHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmltdW1XaWR0aCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgY29uc3QgY29lcmNlZFZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmIChjb2VyY2VkVmFsdWUgPCBDQVJEX01JTklNVU1fV0lEVEgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGggPSBjb2VyY2VkVmFsdWU7XG4gICAgfVxuICAgIGdldCBjYXJkTWluaW11bVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkTWluaW11bVdpZHRoO1xuICAgIH1cblxuICAgIC8qKiBDb25maWcgd2l0aCB0aGUgd2lkdGggcmF0aW9zIHRoYXQgc2hvdWxkIHRha2UgZXZlcnkgY29sdW1uLiBGbGV4LWdyb3cgcHJpbmNpcGUuIE1pc3NlZCB2YWx1ZXMgc2V0IHRvIDAuIHMqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sdW1uc1dpZHRoQ29uZmlnOiBDb2x1bW5zV2lkdGhDb25maWc7XG5cbiAgICAvKiogTGltaXQgdGhlIG51bWJlciBvZiBjb2x1bW5zLiBEZWZhdWx0IGlzIDEwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4Q29sdW1ucyA9IE1BWF9DT0xVTU5TO1xuXG4gICAgLyoqIEV2ZW50IHRvIGVtaXQsIHdoZW4gbGF5b3V0IGNoYW5nZXMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsYXlvdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxMYXlvdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMYXlvdXQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCBvbiBDYXJkIGRyYWdnZWQgYW5kIGRyb3BwZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBjYXJkRHJhZ2dlZERyb3BwZWQ6IEV2ZW50RW1pdHRlcjxDYXJkRHJvcHBlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKENhcmREZWZpbml0aW9uRGlyZWN0aXZlKVxuICAgIF9jYXJkczogUXVlcnlMaXN0PENhcmREZWZpbml0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50KVxuICAgIF9jYXJkQ29udGFpbmVyczogUXVlcnlMaXN0PEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKENka0RyYWcpXG4gICAgX2RyYWdMaXN0OiBRdWVyeUxpc3Q8Q2RrRHJhZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xheW91dCcpXG4gICAgX2xheW91dDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRzQXJyYXk6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbiAgICAvKiogQGhpZGRlbiBOdW1iZXIgb2YgQ29sdW1ucyBpbiBsYXlvdXQgKi9cbiAgICBfbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYXJkQ29sdW1uczogQ2FyZENvbHVtbltdO1xuXG4gICAgLyoqIEBoaWRkZW4qL1xuICAgIF9jb250YWluZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMgcnRsIHNlcnZpY2UgKi9cbiAgICBfZGlyID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfZ3JvdXBJbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9pdGVtSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm4gYXZhaWxhYmxlIHdpZHRoIGZvciBmaXhlZCBjYXJkIGxheW91dCAqL1xuICAgIGdldCBfYXZhaWxhYmxlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BsYWNlaG9sZGVyTWFyZ2luOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbGlzdGVuUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oaWRkZW5DYXJkOiBOdWxsYWJsZTxDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmltdW1XaWR0aCA9IENBUkRfTUlOSU1VTV9XSURUSDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eVNldHVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIFNraXAgYWxsIGNoYW5nZXMgdW5sZXNzIHdlIGRvbid0IGhhdmUgaW5pdGlhbCBsYXlvdXQgY3JlYXRlZFxuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbWF4Q29sdW1ucycgaW4gY2hhbmdlcyB8fCAnY2FyZE1pbmltdW1XaWR0aCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkQ29sdW1uc1dpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc1NpemVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEaXN0cmlidXRlIGNhcmRzIG9uIHdpbmRvdyByZXNpemUgKi9cbiAgICB1cGRhdGVMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jYXJkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zID0gZ2V0TnVtYmVyT2ZDb2x1bW5zKHRoaXMuX2F2YWlsYWJsZVdpZHRoLCB0aGlzLmNhcmRNaW5pbXVtV2lkdGgpO1xuXG4gICAgICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICBwb3NzaWJsZU51bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXJkcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhDb2x1bW5zIHx8IE1BWF9DT0xVTU5TLFxuICAgICAgICAgICAgICAgIE1BWF9DT0xVTU5TXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zID0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBzY3JlZW5TaXplOiB0aGlzLl9hdmFpbGFibGVXaWR0aFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zZXRDYXJkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLl9zZXRDYXJkQ29sdW1uc1dpZHRoKCk7XG4gICAgICAgIHRoaXMuX3NldENvbnRhaW5lckhlaWdodCgpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblJlc2l6ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9oaWRkZW5DYXJkID0gZXZlbnQuc291cmNlLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ecm9wTGlzdEVudGVyZWQoZXZlbnQ6IENka0RyYWdFbnRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJJdGVtQ2FyZERlZiA9IChldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhIGFzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlKS5mZENhcmREZWY7XG4gICAgICAgIGNvbnN0IGRyYWdJdGVtQ2FyZERlZiA9IChldmVudC5pdGVtLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcblxuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlck1hcmdpbiA9IGNvbnRhaW5lckl0ZW1DYXJkRGVmICE9PSBkcmFnSXRlbUNhcmREZWY7XG5cbiAgICAgICAgY29uc3QgY29sdW1uSW5kZXhUb0FkZFNwYWNlID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSA9PT0gY2FyZClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3BhY2VUb0FkZCA9XG4gICAgICAgICAgICBldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgK1xuICAgICAgICAgICAgKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpLmxlbmd0aCA/IFJFTV9JTl9QWCA6IDApO1xuXG4gICAgICAgIC8vIFdoZW4gd2UgbW92ZSB0aGUgY2FyZCBpbnRvIGEgY2VydGFpbiBjb2x1bW4gd2Ugc2hvdWxkIGluY3JlYXNlIHRoZSBoZWlnaHQgb2YgdGhhdCBjb2x1bW4gYnkgdGhlIGNhcmQgaGVpZ2h0XG4gICAgICAgIHRoaXMuX3NldENvbnRhaW5lckhlaWdodChjb2x1bW5JbmRleFRvQWRkU3BhY2UsIHNwYWNlVG9BZGQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJhZ0Ryb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPG51bWJlciwgbnVtYmVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9oaWRkZW5DYXJkID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQuY29udGFpbmVyLmRhdGEgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyTWFyZ2luID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuXG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZENvbHVtbiA9IHRoaXMuX2NhcmRDb2x1bW5zLmZpbmQoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZilcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSByZXBsYWNlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHdlIGRyYWdnZWQgdGhlIGNhcmQgZnJvbSB0aGUgc2FtZSBjb2x1bW4gYXMgdGhlIGNvbHVtbiB3ZSdyZSBkcm9wcGluZyBpbnRvXG4gICAgICAgIC8vIFRoZXJlIG1heSBiZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgb3JkZXIgc2hvdWxkbid0IGNoYW5nZSBidXQgc2luY2UgdGhlcmUgYXJlIGEgZGlmZmVyZW50IGRyb3AgbGlzdHMgaXQgd2lsbCBjaGFuZ2VcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHByZXZlbnQgdGhpc1xuICAgICAgICBpZiAobW92ZWRDYXJkQ29sdW1uID09PSByZXBsYWNlZENhcmRDb2x1bW4gJiYgbW92ZWRDYXJkQ29sdW1uPy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGlmIChtb3ZlZENhcmQuZmRDYXJkRGVmIDwgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiAmJiBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhIDwgZXZlbnQuY29udGFpbmVyLmRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtb3ZlZENhcmQuZmRDYXJkRGVmID4gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiAmJiBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhID4gZXZlbnQuY29udGFpbmVyLmRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcm9jZXNzRHJhZ0Ryb3AoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zb3J0UHJlZGljYXRlRm4gPSAoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4gPT4gaW5kZXggPT09IDA7XG5cbiAgICAvKiogQGhpZGRlbiBGb3IgdGhlIGtleWJvYXJkIGRyYWcmZHJvcCBkaXJlY3RpdmUgKi9cbiAgICBfY3VzdG9tTW92ZUZuID0gKGdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IGdyb3VwW2luZGV4RnJvbV07XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGdyb3VwW2luZGV4VG9dO1xuXG4gICAgICAgIGNvbnN0IGluZGV4RnJvbUFycmF5ID0gdGhpcy5fY2FyZHNBcnJheS5maW5kSW5kZXgoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKTtcbiAgICAgICAgY29uc3QgaW5kZXhUb0FycmF5ID0gdGhpcy5fY2FyZHNBcnJheS5maW5kSW5kZXgoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSByZXBsYWNlZENhcmQuZmRDYXJkRGVmKTtcblxuICAgICAgICB0aGlzLl9wcm9jZXNzRHJhZ0Ryb3AoaW5kZXhGcm9tQXJyYXksIGluZGV4VG9BcnJheSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBGb3IgdGhlIGtleWJvYXJkIGRyYWcmZHJvcCBkaXJlY3RpdmUgKi9cbiAgICBfY3VzdG9tVHJhbnNmZXJGbiA9IChwcmV2R3JvdXA6IENhcmRDb2x1bW4sIG5leHRHcm91cDogQ2FyZENvbHVtbiwgaW5kZXhGcm9tOiBudW1iZXIsIGluZGV4VG86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBwcmV2R3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gbmV4dEdyb3VwW2luZGV4VG9dO1xuXG4gICAgICAgIGNvbnN0IGluZGV4RnJvbUFycmF5ID0gdGhpcy5fY2FyZHNBcnJheS5maW5kSW5kZXgoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKTtcbiAgICAgICAgY29uc3QgaW5kZXhUb0FycmF5ID0gdGhpcy5fY2FyZHNBcnJheS5maW5kSW5kZXgoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSByZXBsYWNlZENhcmQuZmRDYXJkRGVmKTtcblxuICAgICAgICB0aGlzLl9wcm9jZXNzRHJhZ0Ryb3AoaW5kZXhGcm9tQXJyYXksIGluZGV4VG9BcnJheSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBBcnJhbmdlcyBjYXJkcyBvbiBkcm9wIG9mIGRyYWdnZWQgY2FyZCAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NEcmFnRHJvcChcbiAgICAgICAgcHJldkluZGV4OiBudW1iZXIsXG4gICAgICAgIG5ld0luZGV4OiBudW1iZXIsXG4gICAgICAgIHByZXZDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSxcbiAgICAgICAgbmV3Q2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVcbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gbW92ZUl0ZW1JbkFycmF5IGZyb20gQ0RLIHdvbid0IHdvcmsgYXMgaXQgY2hhbmdlcyBvcmRlciBvZiBvdGhlciBjYXJkc1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtuZXdJbmRleF0gPSB0aGlzLl9jYXJkc0FycmF5W3ByZXZJbmRleF07XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XSA9IHJlcGxhY2VkQ2FyZDtcblxuICAgICAgICBhZGp1c3RDYXJkUmFuayhwcmV2Q2FyZCwgbmV3Q2FyZCk7XG5cbiAgICAgICAgdGhpcy5jYXJkRHJhZ2dlZERyb3BwZWQuZW1pdCh7XG4gICAgICAgICAgICBwcmV2aW91c0luZGV4OiBwcmV2SW5kZXgsXG4gICAgICAgICAgICBjdXJyZW50SW5kZXg6IG5ld0luZGV4LFxuICAgICAgICAgICAgbGF5b3V0Q29sdW1uczogdGhpcy5fbnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgaXRlbXM6IHRoaXMuX2NhcmRzLnRvQXJyYXkoKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWNjZXNzaWJpbGl0eVNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiB3aW5kb3cgcmVzaXplIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLl9saXN0ZW5SZXNpemUpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlTGF5b3V0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBjYXJkIGNoYW5nZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcHJvY2Vzc0NhcmRzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBEaXN0cmlidXRlIGNhcmRzIGFtb25nIGNvbHVtbnMgdG8gYXJyYW5nZSB0aGVtIGluIFwiWlwiIGZsb3cgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JvdXBJbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENhcmRDb2x1bW5bXSA9IG5ldyBBcnJheSh0aGlzLl9udW1iZXJPZkNvbHVtbnMpLmZpbGwoMCkubWFwKCgpID0+IG5ldyBBcnJheSgwKSk7XG5cbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheS5mb3JFYWNoKChjYXJkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyQ29sdW1uSW5kZXggPSBpICUgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLmxlbmd0aDtcblxuICAgICAgICAgICAgY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLnB1c2goY2FyZCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGN1cnJDb2x1bW5JbmRleCk7XG4gICAgICAgICAgICB0aGlzLl9pdGVtSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGl0ZW1JbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zID0gY29sdW1ucztcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMuYWRkKGNvbHVtblswXS5mZENhcmREZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PbkNhcmRzU2l6ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc1dpZHRoID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1ByZXNlbnQgPVxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgJiZcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbHVtbnNXaWR0aENvbmZpZyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFjb25maWdQcmVzZW50IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGFjY29yZGluZ2x5IHRvIHRoZSB0aGUgY2FyZCBjb2x1bW5zIGhlaWdodFxuICAgICAqIFBhcmFtZXRlcnMgdXNlZCB0byBpbmNyZWFzZSB0aGUgaGVpZ2h0IG9mIHRoZSBjb2x1bW4gd2hlcmUgZHJhZyduJ2Ryb3AgcGxhY2Vob2xkZXIgY3VycmVudGx5IGlzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSA9IC0xLCBzcGFjZVRvQWRkID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgY2FyZENvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgIC5tYXAoKGNhcmQpID0+IHRoaXMuX2RyYWdMaXN0LmZpbmQoKGRyYWcpID0+IGRyYWcuZGF0YSA9PT0gY2FyZCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2RrRHJhZykgPT4gIWNka0RyYWc/Ll9kcmFnUmVmLmlzRHJhZ2dpbmcoKSAmJiAhIWNka0RyYWc/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2RrRHJhZykgPT4gY2RrRHJhZz8uZWxlbWVudClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zSGVpZ2h0cyA9IGNhcmRDb2x1bW5zXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5tYXAoKGNhcmRFbFJlZikgPT4gY2FyZEVsUmVmPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCAwKSlcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5yZWR1Y2UoKGNhcmRzSGVpZ2h0LCBoZWlnaHQpID0+IChjYXJkc0hlaWdodCArPSBoZWlnaHQgKyBSRU1fSU5fUFgpLCAwKSArXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5JbmRleCA9PT0gY29sdW1uSW5kZXhUb0FkZFNwYWNlID8gc3BhY2VUb0FkZCA6IDApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIC8vICs0cHggYmVjYXVzZSBpdCdzIHRoZSB0b3AgJiBib3R0b20gYm9yZGVycyBvZiBjYXJkIHBsYWNlaG9sZGVyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lckhlaWdodCA9IE1hdGguY2VpbChNYXRoLm1heCguLi5jb2x1bW5zSGVpZ2h0cykgKyA0KTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkNhcmRzU2l6ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgLm1hcCgoY2FyZCkgPT4gdGhpcy5fZHJhZ0xpc3QuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5kYXRhID09PSBjYXJkKT8uZWxlbWVudClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9PiAhIXYpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUoY2FyZC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fbGlzdGVuUmVzaXplKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3QoKHJlc2l6ZUVudHJ5KSA9PiByZXNpemVFbnRyeVswXS5jb250ZW50UmVjdC5oZWlnaHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KCkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5mdW5jdGlvbiBmaXhXaWR0aE1vZGlmaWVycyhjb25maWc6IENvbHVtbnNXaWR0aENvbmZpZywgbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gbmV3IEFycmF5KG51bWJlck9mQ29sdW1ucykuZmlsbCgwKTtcblxuICAgIHJldHVybiBtb2RpZmllcnMubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aE1vZGlmaWVyID0gY29uZmlnW2luZGV4ICsgMV07XG5cbiAgICAgICAgaWYgKCFjb2x1bW5XaWR0aE1vZGlmaWVyIHx8IGNvbHVtbldpZHRoTW9kaWZpZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5XaWR0aE1vZGlmaWVyO1xuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiBSZXR1cm5zIG51bWJlciBvZiBjb2x1bW5zIHRoYXQgY2FuIGZpdCBpbiBjdXJyZW50IGF2YWlsYWJsZSB3aWR0aCBmb3IgZmQtY2FyZC1sYXlvdXQgKi9cbmZ1bmN0aW9uIGdldE51bWJlck9mQ29sdW1ucyhjb250YWluZXJXaWR0aDogbnVtYmVyLCBjYXJkV2lkdGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29udGFpbmVyV2lkdGggPSBjb250YWluZXJXaWR0aCB8fCAxO1xuICAgIGNhcmRXaWR0aCA9IGNhcmRXaWR0aCB8fCAxO1xuXG4gICAgY29uc3QgbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyBjYXJkV2lkdGgpLCAxKTsgLy8gRXhhbXBsZTogOTYwIC8gMzIwID0gM1xuICAgIGNvbnN0IHJlcXVpcmVkV2lkdGhXaXRoR2FwID0gbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAqIGNhcmRXaWR0aCArIChudW1iZXJPZkNhcmRzV2l0aE5vR2FwIC0gMSkgKiBDQVJEX0dBUF9XSURUSDtcbiAgICBjb25zdCBjb2x1bW5Db3VudCA9IHJlcXVpcmVkV2lkdGhXaXRoR2FwID4gY29udGFpbmVyV2lkdGggPyBudW1iZXJPZkNhcmRzV2l0aE5vR2FwIC0gMSA6IG51bWJlck9mQ2FyZHNXaXRoTm9HYXA7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgoY29sdW1uQ291bnQsIDEpO1xufVxuXG4vKiogQGhpZGRlbiBNZXRob2QgdG8gdXBkYXRlIHJhbmsgYWZ0ZXIgY2FyZHMgYXJlIGRyYWdnZWQgKi9cbmZ1bmN0aW9uIGFkanVzdENhcmRSYW5rKGRyYWdnZWRDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSwgcmVwbGFjZWRDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGNvbnN0IGRyYWdnZWRDYXJkUmFuayA9IGRyYWdnZWRDYXJkLmZkQ2FyZERlZjtcbiAgICBkcmFnZ2VkQ2FyZC5mZENhcmREZWYgPSByZXBsYWNlZENhcmQuZmRDYXJkRGVmO1xuICAgIHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgPSBkcmFnZ2VkQ2FyZFJhbms7XG59XG4iLCI8ZGl2XG4gICAgI2xheW91dFxuICAgIGNka0Ryb3BMaXN0R3JvdXBcbiAgICBmZERuZEtleWJvYXJkR3JvdXBcbiAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dCBmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1sYXlvdXQtLWNvbHVtbnMte3sgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zIH19XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIl9jb250YWluZXJIZWlnaHQgKyAncHgnXCJcbiAgICBbZ3JvdXBzXT1cIl9jYXJkQ29sdW1uc1wiXG4gICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICBbY3VzdG9tTW92ZUZuXT1cIl9jdXN0b21Nb3ZlRm5cIlxuICAgIFtjdXN0b21UcmFuc2ZlckZuXT1cIl9jdXN0b21UcmFuc2ZlckZuXCJcbiAgICBbZGlzYWJsZUtleWJvYXJkRHJhZ0Ryb3BdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbY2RrRHJvcExpc3RHcm91cERpc2FibGVkXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgW2F0dHIuZGlyXT1cIl9kaXJcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJfaGlkZGVuQ2FyZCA9PT0gY2FyZCA/ICdub25lJyA6ICdibG9jaydcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdFNvcnRQcmVkaWNhdGVdPVwiX3NvcnRQcmVkaWNhdGVGblwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgZmREbmRLZXlib2FyZEl0ZW1cbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBjZGtEcmFnUHJldmlld0NsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtcHJldmlld1wiXG4gICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2FyZFwiXG4gICAgICAgICAgICBbY2RrRHJhZ1N0YXJ0RGVsYXldPVwiZHJhZ1N0YXJ0RGVsYXlcIlxuICAgICAgICAgICAgW2l0ZW1JbmRleF09XCJfaXRlbUluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKSFcIlxuICAgICAgICAgICAgW2dyb3VwSW5kZXhdPVwiX2dyb3VwSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpIVwiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiX29uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2RrRHJhZ0Ryb3BwZWQpPVwiX29uRHJhZ0Ryb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1maXhlZC1jYXJkLWxheW91dC1pdGVtPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkPy50ZW1wbGF0ZSB8fCBudWxsXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1maXhlZC1jYXJkLWxheW91dC1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW4tYm90dG9tLnJlbV09XCIrX3BsYWNlaG9sZGVyTWFyZ2luXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIF9jYXJkQ29sdW1uczsgbGV0IGxhc3QgPSBsYXN0OyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxhc3RcIiBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jbGVhcmZpeFwiIFtzdHlsZS5vcmRlcl09XCJpbmRleCArIDFcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19