@theseam/ui-common 0.4.28-beta.0 → 0.4.28-beta.1

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.
@@ -171,7 +171,8 @@ export declare class DatatableComponent implements OnInit, OnDestroy, TheSeamDat
171
171
  */
172
172
  get actionItemColumnPosition(): ActionItemColumnPosition | undefined;
173
173
  set actionItemColumnPosition(value: ActionItemColumnPosition | undefined);
174
- private _actionItemColumnPosition;
174
+ private readonly _actionItemColumnPositionDefault;
175
+ _actionItemColumnPosition: ActionItemColumnPosition | undefined;
175
176
  get columnFilterIcon(): SeamIcon | undefined | null;
176
177
  set columnFilterIcon(value: SeamIcon | undefined | null);
177
178
  private readonly _columnFilterIconDefault;
@@ -1,5 +1,6 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  import { SeamIcon } from "@theseam/ui-common/icon";
3
+ import { ActionItemColumnPosition } from "./action-item-column-position";
3
4
  export interface TheSeamDatatableMessages {
4
5
  /**
5
6
  * Message to show when array is presented, but contains no values.
@@ -86,5 +87,11 @@ export interface TheSeamDatatableConfig {
86
87
  * @default 400
87
88
  */
88
89
  columnFilterUpdateDebounce?: number;
90
+ /**
91
+ * Sets position behavior for optional Action Menu Button column.
92
+ *
93
+ * @default frozenRight
94
+ */
95
+ actionItemColumnPosition?: ActionItemColumnPosition;
89
96
  }
90
97
  export declare const THESEAM_DATATABLE_CONFIG: InjectionToken<TheSeamDatatableConfig>;
@@ -182,9 +182,15 @@ export class DatatableComponent {
182
182
  */
183
183
  get actionItemColumnPosition() { return this._actionItemColumnPosition; }
184
184
  set actionItemColumnPosition(value) {
185
- if (value && isActionItemColumnPosition(value)) {
185
+ if (notNullOrUndefined(value) && isActionItemColumnPosition(value)) {
186
186
  this._actionItemColumnPosition = value;
187
187
  }
188
+ else if (notNullOrUndefined(this._config?.actionItemColumnPosition) && isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
189
+ this._actionItemColumnPosition = this._config?.actionItemColumnPosition;
190
+ }
191
+ else {
192
+ this._actionItemColumnPosition = this._actionItemColumnPositionDefault;
193
+ }
188
194
  this._columnsManager.setActionItemColumnPosition(this._actionItemColumnPosition);
189
195
  }
190
196
  get columnFilterIcon() {
@@ -357,7 +363,7 @@ export class DatatableComponent {
357
363
  this._footerHeightDefault = 40;
358
364
  this.scrollbarV = true;
359
365
  this.scrollbarH = true;
360
- this._actionItemColumnPosition = 'frozenRight';
366
+ this._actionItemColumnPositionDefault = 'frozenRight';
361
367
  this._columnFilterIconDefault = faFilter;
362
368
  this._columnFilterUpdateMethodDefault = 'valueChanges';
363
369
  this._columnFilterUpdateDebounceDefault = 400;
@@ -494,6 +500,9 @@ export class DatatableComponent {
494
500
  if (isNullOrUndefined(this.columnFilterUpdateDebounce)) {
495
501
  this.columnFilterUpdateDebounce = undefined;
496
502
  }
503
+ if (isNullOrUndefined(this.actionItemColumnPosition)) {
504
+ this.actionItemColumnPosition = undefined;
505
+ }
497
506
  }
498
507
  ngOnDestroy() {
499
508
  this._rowDetailToggleSubscription.unsubscribe();
@@ -867,4 +876,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
867
876
  type: HostListener,
868
877
  args: ['dblclick', ['$event']]
869
878
  }] } });
870
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFBZ0MsWUFBWSxFQUFhLE1BQU0sMEJBQTBCLENBQUE7QUFDaEcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsU0FBUyxFQUlULFFBQVEsRUFDUixNQUFNLEVBR04sU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUN0RyxPQUFP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bWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlLCBpc0RhdGFTb3VyY2UsIExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucydcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25SaWdodCwgZmFGaWx0ZXIsIGZhU3Bpbm5lciB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcbmltcG9ydCB7XG4gIENvbHVtbk1vZGUsXG4gIENvbnRleHRtZW51VHlwZSxcbiAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gIERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSxcbiAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICBEYXRhdGFibGVDb21wb25lbnQgYXMgTmd4RGF0YXRhYmxlQ29tcG9uZW50LFxuICBEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUsXG4gIFNvcnRUeXBlLFxuICBUcmVlU3RhdHVzXG59IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uVHlwZSB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgY29tcG9zZURhdGFGaWx0ZXJzLCBjb21wb3NlRGF0YUZpbHRlclN0YXRlcywgRGF0YUZpbHRlciwgRGF0YUZpbHRlclN0YXRlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IElFbGVtZW50UmVzaXplZEV2ZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3NoYXJlZCdcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCBub3ROdWxsT3JVbmRlZmluZWQsIHdhaXRPbkNvbmRpdGlvbkFzeW5jIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLWFjdGlvbi1tZW51L2RhdGF0YWJsZS1hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtY29sdW1uL2RhdGF0YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RhdGF0YWJsZS1mb290ZXIvZGF0YXRhYmxlLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLW1lbnUtYmFyL2RhdGF0YWJsZS1tZW51LWJhci5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLXJvdy1hY3Rpb24taXRlbS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgRGF0YXRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBUaGVTZWFtUGFnZUluZm8gfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1pbmZvJ1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL21vZGVscy9zb3J0LWl0ZW0nXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbidcbmltcG9ydCB7IENvbHVtbnNNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhdGFibGUtY29sdW1uLWNoYW5nZXMuc2VydmljZSdcbmltcG9ydCB7IERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IgfSBmcm9tICcuLi90b2tlbnMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgcmVtb3ZlVW51c2VkRGlmZnMgfSBmcm9tICcuLi91dGlscy9yZW1vdmUtdW51c2VkLWRpZmZzJ1xuaW1wb3J0IHsgdHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNsYXRlLXRlbXBsYXRlcydcbmltcG9ydCB7IENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sdW1ucy1hbHRlcmF0aW9ucy1tYW5hZ2VyLnNlcnZpY2UnXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXG5pbXBvcnQgeyBtYXBDb2x1bW5zQWx0ZXJhdGlvbnNTdGF0ZXMgfSBmcm9tICcuLi91dGlscy9tYXAtY29sdW1ucy1hbHRlcmF0aW9ucy1zdGF0ZXMnXG5pbXBvcnQgeyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvd2lkdGguY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgZ2V0Q29sdW1uUHJvcCB9IGZyb20gJy4uL3V0aWxzL2dldC1jb2x1bW4tcHJvcCdcbmltcG9ydCB7IE9yZGVyQ29sdW1uc0FsdGVyYXRpb24sIE9yZGVyQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL29yZGVyLmNvbHVtbnMtYWx0ZXJhdGlvbidcbmltcG9ydCB7IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uLCBpc0FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9hY3Rpb24taXRlbS1jb2x1bW4tcG9zaXRpb24nXG5pbXBvcnQgeyBDb2x1bW5zRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2x1bW5zLWZpbHRlcnMuc2VydmljZSdcbmltcG9ydCB7IFRIRVNFQU1fREFUQVRBQkxFX0NPTkZJRywgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCwgVGhlU2VhbURhdGF0YWJsZUNvbmZpZywgVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGF0YWJsZS1jb25maWcnXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXIuZGlyZWN0aXZlJ1xuXG4vKipcbiAqIE5PVEU6IFRoaXMgaXMgc3RpbGwgYmVpbmcgd29ya2VkIG9uLiBJIGFtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoaXMgbW9kZWxcbiAqIGJlY2F1c2UgYG5neC1kYXRhdGFibGVgIGp1c3QgdXNlcyBhbiB1bnR5cGVkIG9iamVjdCBhbmQgc2V0cyBwcm9wZXJ0aWVzIGluXG4gKiBtdWx0aXBsZSBwbGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNlbGxDb250ZXh0IHtcbiAgYWxsUm93c1NlbGVjdGVkOiBmYWxzZVxuXG4gIHNlbGVjdEZuOiAoKSA9PiBhbnlcbiAgc29ydERpcj86ICdhc2MnIHwgJ2Rlc2MnXG4gIHNvcnRGbjogKCkgPT4gYW55XG5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG5cbiAgb25DaGVja2JveENoYW5nZUZuPzogYW55XG4gIGFjdGl2YXRlRm4/OiBhbnlcbiAgcm93PzogYW55XG4gIGdyb3VwPzogYW55XG4gIHZhbHVlPzogYW55XG4gIGNvbHVtbj86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5cbiAgcm93SGVpZ2h0PzogbnVtYmVyXG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuXG4gIHJvd0luZGV4PzogbnVtYmVyXG4gIHRyZWVTdGF0dXM/OiBUcmVlU3RhdHVzXG4gIG9uVHJlZUFjdGlvbj86IGFueVxufVxuXG4vKipcbiAqIEludGVuZGVkIGZvciBpbnRlcm5hbCBjbGFzc2VzIGRlY2xhcmVkIGJ5IHRoZSBgVGhlU2VhbURhdGF0YWJsZU1vZHVsZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0RBVEFUQUJMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXRhRmlsdGVyPignTGliRGF0YXRhYmxlJylcblxuZXhwb3J0IGNvbnN0IF9USEVTRUFNX0RBVEFUQUJMRTogYW55ID0ge1xuICBwcm92aWRlOiBUSEVTRUFNX0RBVEFUQUJMRSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhdGFibGVDb21wb25lbnQpXG59XG5cbmV4cG9ydCBjb25zdCBfVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXRhYmxlQ29tcG9uZW50KVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWRhdGF0YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScsIG9wYWNpdHk6ICcwJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknLCBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgXSlcbiAgICBdKVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBfVEhFU0VBTV9EQVRBVEFCTEUsXG4gICAgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICAgX1RIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SLFxuICAgIENvbHVtbnNNYW5hZ2VyU2VydmljZSxcbiAgICBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSxcbiAgICBDb2x1bW5zRmlsdGVyc1NlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yLCBDb2xsZWN0aW9uVmlld2VyIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsUGFnaW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsU29ydGluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHRlcm5hbEZpbHRlcmluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sb2FkaW5nSW5kaWNhdG9yOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Jlb3JkZXJhYmxlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N3YXBDb2x1bW5zOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyb3VwRXhwYW5zaW9uRGVmYXVsdDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWxlY3RBbGxSb3dzT25QYWdlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N1bW1hcnlSb3c6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlydHVhbGl6YXRpb246IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYmFyVjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zY3JvbGxiYXJIOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xpbWl0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY291bnQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9vZmZzZXQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oZWFkZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yb3dIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mb290ZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdW1tYXJ5SGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc29ydHM6IFNvcnRJdGVtW10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgcmVhZG9ubHkgX2ZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duXG4gIHJlYWRvbmx5IF9mYUNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0XG4gIHJlYWRvbmx5IF9mYVNwaW5uZXIgPSBmYVNwaW5uZXJcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9tZW51QmFyc0ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhRmlsdGVyW10+KFtdKVxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBwcml2YXRlIF9yZXNpemluZzogeyBbcHJvcDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGVzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZVtdPlxuXG4gIGdldCBmaWx0ZXJzKCk6IERhdGFGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuX21lbnVCYXJzRmlsdGVyc1N1YmplY3QudmFsdWUsXG4gICAgICAuLi50aGlzLl9jb2x1bW5zRmlsdGVycy5maWx0ZXJzKClcbiAgICBdXG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVycyQ6IE9ic2VydmFibGU8RGF0YUZpbHRlcltdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBwcmVmZXJlbmNlc0tleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnZhbHVlIH1cbiAgc2V0IHByZWZlcmVuY2VzS2V5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX3ByZWZlcmVuY2VzS2V5Lm5leHQodmFsdWUgfHwgdW5kZWZpbmVkKSB9XG4gIHByaXZhdGUgX3ByZWZlcmVuY2VzS2V5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG5cbiAgQElucHV0KCkgdGFyZ2V0TWFya2VyVGVtcGxhdGU6IGFueVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjb2x1bW5zKHZhbHVlOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRJbnB1dENvbHVtbnMoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdKVxuICAgIHRoaXMuX2NvbHVtbnNGaWx0ZXJzLnJlZ2lzdGVyQ29sdW1uRmlsdGVycyhBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10pXG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcm93cygpOiBhbnlbXSB7IHJldHVybiB0aGlzLl9yb3dzLnZhbHVlIH1cbiAgc2V0IHJvd3ModmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fcm93cy5uZXh0KHZhbHVlIHx8IFtdKVxuICB9XG4gIHByaXZhdGUgX3Jvd3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSlcblxuICBwdWJsaWMgcm93cyQ6IE9ic2VydmFibGU8YW55W10+XG5cbiAgQElucHV0KCkgY29sdW1uTW9kZTogQ29sdW1uTW9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBDb2x1bW5Nb2RlLmZvcmNlXG5cbiAgQElucHV0KCkgZ3JvdXBSb3dzQnk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZ3JvdXBlZFJvd3M6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSBbXVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFBhZ2luZyA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFNvcnRpbmcgPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZXh0ZXJuYWxGaWx0ZXJpbmcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDApIGNvdW50ID0gMFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgb2Zmc2V0ID0gMFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBsb2FkaW5nSW5kaWNhdG9yID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0aW9uVHlwZSgpOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9jb2x1bW5zTWFuYWdlci5nZXRTZWxlY3Rpb25UeXBlKCkgfVxuICBzZXQgc2VsZWN0aW9uVHlwZSh2YWx1ZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRTZWxlY3Rpb25UeXBlKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZW9yZGVyYWJsZSA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN3YXBDb2x1bW5zID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc29ydFR5cGUoKTogU29ydFR5cGUgeyByZXR1cm4gdGhpcy5fc29ydFR5cGUgfVxuICBzZXQgc29ydFR5cGUodmFsdWU6IFNvcnRUeXBlKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgKHZhbHVlID09PSBTb3J0VHlwZS5zaW5nbGUgfHwgdmFsdWUgPT09IFNvcnRUeXBlLm11bHRpKSkge1xuICAgICAgdGhpcy5fc29ydFR5cGUgPSB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zb3J0VHlwZSA9IFNvcnRUeXBlLnNpbmdsZVxuICAgIH1cbiAgfVxuICBfc29ydFR5cGU6IFNvcnRUeXBlID0gU29ydFR5cGUuc2luZ2xlXG5cbiAgQElucHV0KClcbiAgZ2V0IHNvcnRzKCk6IFNvcnRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZSA/IHRoaXMubmd4RGF0YXRhYmxlLnNvcnRzIDogdGhpcy5fc29ydHNcbiAgfVxuICBzZXQgc29ydHModmFsdWU6IFNvcnRJdGVtW10pIHtcbiAgICB0aGlzLl9zb3J0cyA9IG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyBjb2VyY2VBcnJheSh2YWx1ZSkgOiBbXVxuICB9XG4gIF9zb3J0czogU29ydEl0ZW1bXSA9IFtdXG5cbiAgQElucHV0KCkgZ2V0IGNzc0NsYXNzZXMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jc3NDbGFzc2VzXG4gIH1cbiAgc2V0IGNzc0NsYXNzZXModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2Nzc0NsYXNzZXMgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5jc3NDbGFzc2VzKSkge1xuICAgICAgdGhpcy5fY3NzQ2xhc3NlcyA9IHRoaXMuX2NvbmZpZz8uY3NzQ2xhc3Nlc1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Nzc0NsYXNzZXMgPSB0aGlzLl9jc3NDbGFzc2VzRGVmYXVsdFxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jc3NDbGFzc2VzRGVmYXVsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBzb3J0QXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tdXAnLFxuICAgIHNvcnREZXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tZG93bicsXG4gICAgcGFnZXJMZWZ0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1sZWZ0JyxcbiAgICBwYWdlclJpZ2h0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1yaWdodCcsXG4gICAgcGFnZXJQcmV2aW91czogJ2RhdGF0YWJsZS1pY29uLXByZXYnLFxuICAgIHBhZ2VyTmV4dDogJ2RhdGF0YWJsZS1pY29uLXNraXAnXG4gIH1cbiAgX2Nzc0NsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgZ2V0IG1lc3NhZ2VzKCk6IFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlc1xuICB9XG4gIHNldCBtZXNzYWdlcyh2YWx1ZTogVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9tZXNzYWdlcyA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/Lm1lc3NhZ2VzKSkge1xuICAgICAgdGhpcy5fbWVzc2FnZXMgPSB7XG4gICAgICAgIC4uLnRoaXMuX21lc3NhZ2VzRGVmYXVsdCxcbiAgICAgICAgLi4udGhpcy5fY29uZmlnPy5tZXNzYWdlc1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX21lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXNEZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX21lc3NhZ2VzRGVmYXVsdDogVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzID0ge1xuICAgIC8vIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIGFycmF5IGlzIHByZXNlbnRlZFxuICAgIC8vIGJ1dCBjb250YWlucyBubyB2YWx1ZXNcbiAgICBlbXB0eU1lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kJyxcblxuICAgIC8vIEZvb3RlciB0b3RhbCBtZXNzYWdlXG4gICAgdG90YWxNZXNzYWdlOiAndG90YWwnLFxuXG4gICAgLy8gRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2VcbiAgICBzZWxlY3RlZE1lc3NhZ2U6ICdzZWxlY3RlZCdcbiAgfVxuICBfbWVzc2FnZXM6IFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSByb3dJZGVudGl0eTogKCh4OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQgfCBudWxsID0gKHg6IGFueSkgPT4geFxuXG4gIEBJbnB1dCgpIHJvd0NsYXNzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0Q2hlY2s6IGFueSB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZGlzcGxheUNoZWNrOiAoKHJvdzogYW55LCBjb2x1bW4/OiBhbnksIHZhbHVlPzogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JvdXBFeHBhbnNpb25EZWZhdWx0ID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmFja0J5UHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWxlY3RBbGxSb3dzT25QYWdlID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmVlRnJvbVJlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHRyZWVUb1JlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdW1tYXJ5Um93ID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgc3VtbWFyeUhlaWdodCA9IDMwXG4gIEBJbnB1dCgpIHN1bW1hcnlQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICd0b3AnXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHZpcnR1YWxpemF0aW9uID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpXG4gIGdldCBoZWFkZXJIZWlnaHQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlckhlaWdodFxuICB9XG4gIHNldCBoZWFkZXJIZWlnaHQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5faGVhZGVySGVpZ2h0ID0gdmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2NvbmZpZz8uaGVhZGVySGVpZ2h0KSkge1xuICAgICAgdGhpcy5faGVhZGVySGVpZ2h0ID0gdGhpcy5fY29uZmlnPy5oZWFkZXJIZWlnaHRcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJIZWlnaHQgPSB0aGlzLl9oZWFkZXJIZWlnaHREZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlckhlaWdodERlZmF1bHQ6IG51bWJlciA9IDUwXG4gIF9oZWFkZXJIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKVxuICBnZXQgcm93SGVpZ2h0KCk6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9yb3dIZWlnaHRcbiAgfVxuICBzZXQgcm93SGVpZ2h0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/LnJvd0hlaWdodCkpIHtcbiAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHRoaXMuX2NvbmZpZz8ucm93SGVpZ2h0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fcm93SGVpZ2h0ID0gdGhpcy5fcm93SGVpZ2h0RGVmYXVsdFxuICAgIH1cbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dIZWlnaHREZWZhdWx0OiBudW1iZXIgPSA1MFxuICBfcm93SGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKClcbiAgZ2V0IGZvb3RlckhlaWdodCgpOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZm9vdGVySGVpZ2h0XG4gIH1cbiAgc2V0IGZvb3RlckhlaWdodCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9mb290ZXJIZWlnaHQgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5mb290ZXJIZWlnaHQpKSB7XG4gICAgICB0aGlzLl9mb290ZXJIZWlnaHQgPSB0aGlzLl9jb25maWc/LmZvb3RlckhlaWdodFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvb3RlckhlaWdodCA9IHRoaXMuX2Zvb3RlckhlaWdodERlZmF1bHRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9vdGVySGVpZ2h0RGVmYXVsdDogbnVtYmVyID0gNDBcbiAgX2Zvb3RlckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzY3JvbGxiYXJWID0gdHJ1ZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2Nyb2xsYmFySCA9IHRydWVcblxuICBASW5wdXQoKVxuICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogRGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0YXRhYmxlRGF0YVNvdXJjZSkge1xuICAgICAgdmFsdWUuc2V0RGF0YXRhYmxlQWNjZXNzb3IodGhpcylcbiAgICB9XG4gICAgdGhpcy5fZGF0YVNvdXJjZVN1YmplY3QubmV4dCh2YWx1ZSB8fCB1bmRlZmluZWQpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBwb3NpdGlvbiBiZWhhdmlvciBmb3Igb3B0aW9uYWwgQWN0aW9uIE1lbnUgQnV0dG9uIGNvbHVtbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZyb3plblJpZ2h0YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBhY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24oKTogQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB9XG4gIHNldCBhY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24odmFsdWU6IEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiBpc0FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiA9IHZhbHVlXG4gICAgfVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbih0aGlzLl9hY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24pXG4gIH1cbiAgcHJpdmF0ZSBfYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uOiBBY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24gfCB1bmRlZmluZWQgPSAnZnJvemVuUmlnaHQnXG5cbiAgQElucHV0KCkgZ2V0IGNvbHVtbkZpbHRlckljb24oKTogU2VhbUljb24gfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uRmlsdGVySWNvblxuICB9XG4gIHNldCBjb2x1bW5GaWx0ZXJJY29uKHZhbHVlOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVySWNvbiA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/LmNvbHVtbkZpbHRlckljb24pKSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJJY29uID0gdGhpcy5fY29uZmlnPy5jb2x1bW5GaWx0ZXJJY29uXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVySWNvbiA9IHRoaXMuX2NvbHVtbkZpbHRlckljb25EZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbkZpbHRlckljb25EZWZhdWx0OiBTZWFtSWNvbiA9IGZhRmlsdGVyXG4gIF9jb2x1bW5GaWx0ZXJJY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBnZXQgY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kKCk6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kXG4gIH1cbiAgc2V0IGNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCh2YWx1ZTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kID0gdmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2NvbmZpZz8uY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kKSkge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kID0gdGhpcy5fY29uZmlnPy5jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2RcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2REZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZERlZmF1bHQ6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSAndmFsdWVDaGFuZ2VzJ1xuICBfY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGdldCBjb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZSgpOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VcbiAgfVxuICBzZXQgY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2UodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2UgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZSkpIHtcbiAgICAgIHRoaXMuX2NvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlID0gdGhpcy5fY29uZmlnPy5jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlID0gdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VEZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlRGVmYXVsdDogbnVtYmVyID0gNDAwXG4gIF9jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVTZWFtUGFnZUluZm8+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlb3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSB0YWJsZUNvbnRleHRtZW51ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50LCB0eXBlOiBDb250ZXh0bWVudVR5cGUsIGNvbnRlbnQ6IGFueSB9PihmYWxzZSlcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRyZWVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3Rpb25SZWZyZXNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGlkZGVuQ29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICBAQ29udGVudENoaWxkcmVuKERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudClcbiAgc2V0IGNvbHVtbkNvbXBvbmVudHModmFsdWU6IFF1ZXJ5TGlzdDxEYXRhdGFibGVDb2x1bW5Db21wb25lbnQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0VGVtcGxhdGVDb2x1bW5zKHRyYW5zbGF0ZVRlbXBsYXRlQ29sdW1ucyh2YWx1ZT8udG9BcnJheSgpID8/IFtdKSlcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlQWN0aW9uTWVudUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uTWVudT86IERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnRcbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlKVxuICBnZXQgcm93QWN0aW9uSXRlbSgpOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3Jvd0FjdGlvbkl0ZW0gfVxuICBzZXQgcm93QWN0aW9uSXRlbSh2YWx1ZTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Jvd0FjdGlvbkl0ZW0gPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFJvd0FjdGlvbkl0ZW0obm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX3Jvd0FjdGlvbkl0ZW06IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWRcblxuICBAQ29udGVudENoaWxkKFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJvd0RldGFpbD86IFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmVcbiAgQENvbnRlbnRDaGlsZChUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmb290ZXI/OiBUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlXG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50KVxuICBnZXQgbWVudUJhckNvbXBvbmVudCgpOiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX21lbnVCYXJDb21wb25lbnQgfVxuICBzZXQgbWVudUJhckNvbXBvbmVudCh2YWx1ZTogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX21lbnVCYXJDb21wb25lbnQgPSB2YWx1ZVxuXG4gICAgaWYgKHRoaXMuX21lbnVCYXJTdWIpIHsgdGhpcy5fbWVudUJhclN1Yi51bnN1YnNjcmliZSgpIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fc2V0TWVudUJhckZpbHRlcnModmFsdWUuZmlsdGVycygpKVxuXG4gICAgICB0aGlzLl9tZW51QmFyU3ViID0gdGhpcy5fbWVudUJhckNvbXBvbmVudD8uZmlsdGVyc0NoYW5nZWRcbiAgICAgICAgLnN1YnNjcmliZSh2ID0+IHsgdGhpcy5fc2V0TWVudUJhckZpbHRlcnModmFsdWUuZmlsdGVycygpKSB9KVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9tZW51QmFyQ29tcG9uZW50OiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX21lbnVCYXJTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlckRpcmVjdGl2ZSlcbiAgc2V0IGNvbHVtbkZpbHRlclRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY29sdW1uc0ZpbHRlcnMuc2V0RmlsdGVyVGVtcGxhdGVzKHZhbHVlPy50b0FycmF5KCkgPz8gW10pXG4gIH1cblxuICBAVmlld0NoaWxkKE5neERhdGF0YWJsZUNvbXBvbmVudCkgbmd4RGF0YXRhYmxlPzogTmd4RGF0YXRhYmxlQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoTmd4RGF0YXRhYmxlQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbmd4RGF0YXRhYmxlRWxlbWVudD86IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZChEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUpIG5neFJvd0RldGFpbD86IERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuXG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbk1lbnVDZWxsVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGFjdGlvbk1lbnVDZWxsVHBsKCk6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fYWN0aW9uTWVudUNlbGxUcGwgfVxuICBzZXQgYWN0aW9uTWVudUNlbGxUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hY3Rpb25NZW51Q2VsbFRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0QWN0aW9uTWVudUNlbGxUcGwobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX2FjdGlvbk1lbnVDZWxsVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgndHJlZVRvZ2dsZVRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCB0cmVlVG9nZ2xlVHBsKCk6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl90cmVlVG9nZ2xlVHBsIH1cbiAgc2V0IHRyZWVUb2dnbGVUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RyZWVUb2dnbGVUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFRyZWVUb2dnbGVUcGwobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX3RyZWVUb2dnbGVUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCBoZWFkZXJUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9oZWFkZXJUcGwgfVxuICBzZXQgaGVhZGVyVHBsKHZhbHVlOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5faGVhZGVyVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRIZWFkZXJUcGwobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX2hlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ2JsYW5rSGVhZGVyVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGJsYW5rSGVhZGVyVHBsKCk6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fYmxhbmtIZWFkZXJUcGwgfVxuICBzZXQgYmxhbmtIZWFkZXJUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ibGFua0hlYWRlclRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0QmxhbmtIZWFkZXJUcGwobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX2JsYW5rSGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnY2VsbFR5cGVTZWxlY3RvclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCBjZWxsVHlwZVNlbGVjdG9yVHBsKCk6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY2VsbFR5cGVTZWxlY3RvclRwbCB9XG4gIHNldCBjZWxsVHlwZVNlbGVjdG9yVHBsKHZhbHVlOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2VsbFR5cGVTZWxlY3RvclRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0Q2VsbFR5cGVTZWxlY3RvclRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfY2VsbFR5cGVTZWxlY3RvclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuXG4gIHB1YmxpYyBjb2x1bW5Db21wb25lbnRzJD86IE9ic2VydmFibGU8RGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W10+XG4gIHByaXZhdGUgX2NvbERpZmZlcnNJbnA6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4gfSA9IHt9XG4gIHByaXZhdGUgX2NvbERpZmZlcnNUcGw6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4gfSA9IHt9XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlDb2x1bW5zJDogT2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+XG5cbiAgdmlld0NoYW5nZTogT2JzZXJ2YWJsZTxMaXN0UmFuZ2U+XG5cbiAgcHJpdmF0ZSBfcm93RGV0YWlsVG9nZ2xlU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZXG5cbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgRE9NLWRlcGVuZGVudCBjb2RlIHdoZW4gYSB3YXkgdG8gcHJvcGVydHkgbGlzdGVuIGZvclxuICAvLyBkYmxjbGljayBvbiB0aGUgaGVhZGVyIHJlYXNpemUgaGFuZGxlcy5cbiAgQEhvc3RMaXN0ZW5lcignZGJsY2xpY2snLCBbICckZXZlbnQnIF0pXG4gIF9kYmxDbGljayhldmVudDogYW55KSB7XG4gICAgY29uc3QgaXNIYW5kbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2l6ZS1oYW5kbGUnKVxuICAgIGlmIChpc0hhbmRsZSkge1xuICAgICAgY29uc3QgaXNSZXNpemVhYmxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNpemVhYmxlJylcbiAgICAgIGlmIChpc1Jlc2l6ZWFibGUpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgY29uc3QgaWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yKCcuZGF0YXRhYmxlLWNvbHVtbi1oZWFkZXItc2VwYXJhdG9yJylcbiAgICAgICAgICA/LmdldEF0dHJpYnV0ZSgnZGF0YS1jb2x1bW4taWQnKVxuICAgICAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5jb2x1bW5zJC5waXBlKFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICkuc3Vic2NyaWJlKGNvbHVtbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChjID0+IGMuJCRpZCA9PT0gaWQpXG4gICAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uUHJvcCA9IGdldENvbHVtblByb3AoY29sdW1uKVxuICAgICAgICAgICAgaWYgKGNvbHVtblByb3ApIHtcbiAgICAgICAgICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uKHsgY29sdW1uUHJvcCwgY2FuQXV0b1Jlc2l6ZTogdHJ1ZSB9LCBmYWxzZSlcbiAgICAgICAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZlcmVuY2VzOiBEYXRhdGFibGVQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uc01hbmFnZXI6IENvbHVtbnNNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyOiBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zRmlsdGVyczogQ29sdW1uc0ZpbHRlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9EQVRBVEFCTEVfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc/OiBUaGVTZWFtRGF0YXRhYmxlQ29uZmlnXG4gICkge1xuICAgIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKGtleSA9PiB7XG4gICAgICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKGtleSkgfHwga2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJvbSh3YWl0T25Db25kaXRpb25Bc3luYygoKSA9PiB0aGlzLl9wcmVmZXJlbmNlcy5pc0xvYWRlZChrZXkpKSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnNldEFsdGVyYXRpb25zKGtleSwgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5nZXQoKSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIGNvbnN0IGFwcGx5UHJlZnMgPSAoY29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKSA9PiB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hcHBseShjb2xzLCB0aGlzKVxuICAgICAgICByZXR1cm4gY29sc1xuICAgICAgfSksXG4gICAgKVxuXG4gICAgdGhpcy5fcHJlZmVyZW5jZXNLZXkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAocHJlZnNLZXkgPT4ge1xuICAgICAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChwcmVmc0tleSkpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlcy5wcmVmZXJlbmNlcyhwcmVmc0tleSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcHJlZmVyZW5jZXMgPT4ge1xuICAgICAgICAgICAgYXdhaXQgd2FpdE9uQ29uZGl0aW9uQXN5bmMoKCkgPT4gdGhpcy5fcHJlZmVyZW5jZXMuaXNMb2FkZWQocHJlZnNLZXkpKVxuICAgICAgICAgICAgcmV0dXJuIHByZWZlcmVuY2VzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICBtYXAocHJlZmVyZW5jZXMgPT4ge1xuICAgICAgICAgICAgbGV0IGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvbltdID0gW11cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGFsdGVyYXRpb25zID0gbWFwQ29sdW1uc0FsdGVyYXRpb25zU3RhdGVzKHByZWZlcmVuY2VzLmFsdGVyYXRpb25zKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIG1hcCBjb2x1bW5zIGFsdGVyYXRpb25zIHN0YXRlcycpXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChhbHRlcmF0aW9ucylcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuY29sdW1ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb2x1bW5zTWFuYWdlci5jb2x1bW5zJCwgdGhpcy5fY29sdW1uc0ZpbHRlcnMuY29sdW1uQWN0aXZlRmlsdGVyUHJvcHMkXSkucGlwZShcbiAgICAgIG1hcCgoWyBjb2x1bW5zLCBjb2x1bW5BY3RpdmVGaWx0ZXJQcm9wcyBdKSA9PiBjb2x1bW5zLm1hcChjb2wgPT4gKHtcbiAgICAgICAgLi4uY29sLFxuICAgICAgICBmaWx0ZXJBY3RpdmU6IGNvbHVtbkFjdGl2ZUZpbHRlclByb3BzLmluY2x1ZGVzKHRoaXMuX2NvbHVtbnNGaWx0ZXJzLmdldENvbHVtbkZpbHRlclByb3AoY29sKSB8fCAnJylcbiAgICAgIH0pKSlcbiAgICApXG5cbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zJCA9IHRoaXMuY29sdW1ucyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjb2xzID0+IGFwcGx5UHJlZnMoY29scykpLFxuICAgICAgbWFwKGNvbHMgPT4gY29scy5maWx0ZXIoYyA9PiAhYy5oaWRkZW4pKSxcbiAgICAgIHRhcCh2ID0+IHJlbW92ZVVudXNlZERpZmZzKHYsIHRoaXMuX2NvbERpZmZlcnNJbnAsIHRoaXMuX2NvbERpZmZlcnNUcGwpKSxcbiAgICApXG5cbiAgICB0aGlzLmZpbHRlcnMkID0gY29tYmluZUxhdGVzdChbIHRoaXMuX21lbnVCYXJzRmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCksIHRoaXMuX2NvbHVtbnNGaWx0ZXJzLmNvbHVtbnNGaWx0ZXJzJCBdKS5waXBlKFxuICAgICAgbWFwKChbIG1lbnVGaWx0ZXJzLCBjb2x1bW5zRmlsdGVycyBdKSA9PiBbIC4uLm1lbnVGaWx0ZXJzLCAuLi5jb2x1bW5zRmlsdGVycyBdKVxuICAgIClcblxuICAgIHRoaXMuZmlsdGVyU3RhdGVzID0gdGhpcy5maWx0ZXJzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGZpbHRlcnMgPT4gY29tcG9zZURhdGFGaWx0ZXJTdGF0ZXMoZmlsdGVycykpXG4gICAgKVxuXG4gICAgdGhpcy5yb3dzJCA9IHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGF0YVNvdXJjZSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhU291cmNlJywgZGF0YVNvdXJjZSlcbiAgICAgICAgbGV0IGRhdGFTdHJlYW06IE9ic2VydmFibGU8YW55W10+XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+ZGF0YXNvdXJjZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UuY29ubmVjdCh0aGlzKSBhcyBhbnlcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfm9ic2VydmFibGUnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU291cmNlIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfmFycmF5JylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gb2YoZGF0YVNvdXJjZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfnJvd3MgZmFsbGJhY2snKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygncm93c34nLCB2KSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IHVzaW5nIGV4dGVybmFsRmlsdGVyaW5nJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJvd3MgPT4gdGhpcy5maWx0ZXJzJC5waXBlKFxuICAgICAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAgICAgY29uY2F0TWFwKGZpbHRlcnMgPT4gb2Yocm93cykucGlwZShjb21wb3NlRGF0YUZpbHRlcnMoZmlsdGVycykpKSxcbiAgICAgICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2NvbXBvc2VkIGZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgICApKVxuICAgICAgICAgIClcblxuICAgICAgICAgIC8vIGRhdGFTdHJlYW0gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5waXBlKFxuICAgICAgICAgIC8vICAgdGFwKHYgPT4gY29uc29sZS5sb2coJ2ZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgLy8gICBjb25jYXRNYXAoZmlsdGVycyA9PiBkYXRhU3RyZWFtLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKSksXG4gICAgICAgICAgLy8gICB0YXAodiA9PiBjb25zb2xlLmxvZygnY29tcG9zZWQgZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAvLyApXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdzdHJlYW0nLCB2KSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHZpZXdDaGFuZ2UgZm9yIENvbGxlY3Rpb25WaWV3ZXIuXG4gICAgdGhpcy52aWV3Q2hhbmdlID0gdGhpcy5wYWdlLnBpcGUobWFwKHAgPT4gKHsgc3RhcnQ6IDAsIGVuZDogcC5jb3VudCB9KSkpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5yb3dEZXRhaWwpIHtcbiAgICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbiA9IHRoaXMucm93RGV0YWlsLl90b2dnbGUuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMubmd4Um93RGV0YWlsKSB7XG4gICAgICAgICAgdGhpcy5uZ3hSb3dEZXRhaWwudG9nZ2xlLmVtaXQoZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5fc2V0RGF0YXRhYmxlQ29uZmlnT3JEZWZhdWx0KClcbiAgfVxuXG4gIC8qKiBTZXRzIG1pc3NpbmcgaW5wdXRzIGZyb20gY29uZmlnICovXG4gIHByaXZhdGUgX3NldERhdGF0YWJsZUNvbmZpZ09yRGVmYXVsdCgpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5tZXNzYWdlcykpIHtcbiAgICAgIHRoaXMubWVzc2FnZXMgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuaGVhZGVySGVpZ2h0KSkge1xuICAgICAgdGhpcy5oZWFkZXJIZWlnaHQgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucm93SGVpZ2h0KSkge1xuICAgICAgdGhpcy5yb3dIZWlnaHQgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuZm9vdGVySGVpZ2h0KSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuY3NzQ2xhc3NlcykpIHtcbiAgICAgIHRoaXMuY3NzQ2xhc3NlcyA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb2x1bW5GaWx0ZXJJY29uKSkge1xuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJJY29uID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCkpIHtcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlKSkge1xuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gIH1cblxuICBwcml2YXRlIF9zZXRNZW51QmFyRmlsdGVycyhmaWx0ZXJzOiBEYXRhRmlsdGVyW10pIHtcbiAgICB0aGlzLl9tZW51QmFyc0ZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyB8fCBbXSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5Db21wb25lbnQocHJvcE5hbWU6IHN0cmluZyk6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb2x1bW5Db21wb25lbnRzIHx8IHRoaXMuY29sdW1uQ29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgdHBsID0gdGhpcy5jb2x1bW5Db21wb25lbnRzLmZpbmQodCA9PiB0LnByb3AgPT09IHByb3BOYW1lKVxuICAgIGlmICh0cGwpIHtcbiAgICAgIHJldHVybiB0cGxcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgX2NvbHVtbkRhdGEoY29sOiBhbnkpOiB7IGNvbDogYW55LCBjb21wOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfCBudWxsIH0ge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmdldENvbHVtbkNvbXBvbmVudChjb2wucHJvcClcbiAgICByZXR1cm4geyBjb2wsIGNvbXAgfVxuICB9XG5cbiAgX2dldFJvd0V4cGFuZGVkKHJvdzogYW55KSB7XG4gICAgaWYgKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLmJvZHlDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZS5ib2R5Q29tcG9uZW50LmdldFJvd0V4cGFuZGVkKHJvdylcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUZuQ29sdW1uKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLnByb3BcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGF0YWJsZVJlc2l6ZShldmVudDogSUVsZW1lbnRSZXNpemVkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5uZ3hEYXRhdGFibGUgJiYgdGhpcy5uZ3hEYXRhdGFibGVFbGVtZW50ICYmIHRoaXMubmd4RGF0YXRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciBpbnRlZ3JhdGluZyB0aGlzIGludG8gdGhlIG5neC1kYXRhdGFibGUgbGlicmFyeSB0byBhdm9pZFxuICAgICAgLy8gbXVsdGlwbGUgcmVzaXplIGNhbGxzIHdoZW4gdGhlIHRhYmxlIHJlc2l6ZXMgaXRzZWxmLlxuICAgICAgdGhpcy5uZ3hEYXRhdGFibGUucmVjYWxjdWxhdGUoKVxuICAgIH1cbiAgfVxuXG4gIF9vblJlc2l6ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNpemUuZW1pdChldmVudClcblxuICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKGV2ZW50LmNvbHVtbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtblByb3AgPSBnZXRDb2x1bW5Qcm9wKGV2ZW50LmNvbHVtbilcbiAgICBpZiAoY29sdW1uUHJvcCkge1xuICAgICAgbGV0IGFkZEFsdGVyYXRpb24gPSBmYWxzZVxuXG4gICAgICBpZiAoIXRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdKSB7XG4gICAgICAgIHRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdID0gdHJ1ZVxuICAgICAgICBhZGRBbHRlcmF0aW9uID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQuaXNEb25lKSB7XG4gICAgICAgIHRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdID0gZmFsc2VcbiAgICAgICAgYWRkQWx0ZXJhdGlvbiA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZEFsdGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uKHtcbiAgICAgICAgICBjb2x1bW5Qcm9wLFxuICAgICAgICAgIHdpZHRoOiBldmVudC5jb2x1bW4ud2lkdGgsXG4gICAgICAgICAgY2FuQXV0b1Jlc2l6ZTogZmFsc2VcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX29uUmVvcmRlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZW9yZGVyLmVtaXQoZXZlbnQpXG5cbiAgICBjb25zdCBjb2x1bW5Qcm9wID0gZ2V0Q29sdW1uUHJvcChldmVudC5jb2x1bW4pXG4gICAgaWYgKGNvbHVtblByb3ApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlckFsdGVyYXRpb24gPSB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmdldCgpLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdvcmRlcicpXG4gICAgICBjb25zdCBzdGF0ZTogT3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlID0ge1xuICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgLi4uKGN1cnJlbnRPcmRlckFsdGVyYXRpb24/LnN0YXRlLmNvbHVtbnMgfHwgW10pLmZpbHRlcigoeDogYW55KSA9PiB4LmNvbHVtblByb3AgIT09IGNvbHVtblByb3ApLFxuICAgICAgICAgIHsgY29sdW1uUHJvcCwgaW5kZXg6IGV2ZW50Lm5ld1ZhbHVlIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBPcmRlckNvbHVtbnNBbHRlcmF0aW9uKHN0YXRlLCB0cnVlKVxuICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gICAgfVxuICB9XG5cbiAgX29uU29ydChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zb3J0LmVtaXQoZXZlbnQpXG5cbiAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbih7IHNvcnRzOiBldmVudC5zb3J0cyB9LCB0cnVlKVxuICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKFsgYWx0ZXJhdGlvbiBdKVxuICB9XG5cbiAgX29uVHJlZUFjdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSBldmVudC5yb3dJbmRleFxuICAgIGNvbnN0IHJvdyA9IGV2ZW50LnJvd1xuICAgIGlmIChyb3cudHJlZVN0YXR1cyA9PT0gJ2NvbGxhcHNlZCcpIHtcbiAgICAgIHJvdy50cmVlU3RhdHVzID0gJ2V4cGFuZGVkJ1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cudHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnXG4gICAgfVxuICAgIHRoaXMucm93cyA9IFsgLi4udGhpcy5yb3dzIF1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYWdlIGluZm8gZnJvbSB0aGUgd3JhcHBlZCBOZ3hEYXRhdGFibGUgaW5zdGFuY2Ugb3IgZGVmYXVsdHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhZ2VJbmZvKCk6IFRoZVNlYW1QYWdlSW5mbyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldDogdGhpcy5uZ3hEYXRhdGFibGU/Lm9mZnNldCA/PyAwLFxuICAgICAgcGFnZVNpemU6IHRoaXMubmd4RGF0YXRhYmxlPy5wYWdlU2l6ZSA/PyAwLFxuICAgICAgbGltaXQ6IHRoaXMubmd4RGF0YXRhYmxlPy5saW1pdCxcbiAgICAgIGNvdW50OiB0aGlzLm5neERhdGF0YWJsZT8uY291bnQgPz8gMFxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0YXRhYmxlLXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2VhbS1kYXRhdGFibGUtbWVudS1iYXJcIj48L25nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtdGFibGUtd3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8bmd4LWRhdGF0YWJsZVxuICAgICAgICBbY29sdW1uTW9kZV09XCIkYW55KGNvbHVtbk1vZGUpXCJcbiAgICAgICAgW3Njcm9sbGJhclZdPVwic2Nyb2xsYmFyVlwiXG4gICAgICAgIFtzY3JvbGxiYXJIXT1cInNjcm9sbGJhckhcIlxuICAgICAgICBbdmlydHVhbGl6YXRpb25dPVwidmlydHVhbGl6YXRpb25cIlxuICAgICAgICBbdGFyZ2V0TWFya2VyVGVtcGxhdGVdPVwidGFyZ2V0TWFya2VyVGVtcGxhdGVcIlxuICAgICAgICBbZ3JvdXBSb3dzQnldPVwiJGFueShncm91cFJvd3NCeSlcIlxuICAgICAgICBbZ3JvdXBlZFJvd3NdPVwiJGFueShncm91cGVkUm93cylcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiJGFueShzZWxlY3RlZClcIlxuICAgICAgICBbZXh0ZXJuYWxQYWdpbmddPVwiZXh0ZXJuYWxQYWdpbmdcIlxuICAgICAgICBbZXh0ZXJuYWxTb3J0aW5nXT1cImV4dGVybmFsU29ydGluZ1wiXG4gICAgICAgIFtsaW1pdF09XCIkYW55KGxpbWl0KVwiXG4gICAgICAgIFtjb3VudF09XCIkYW55KGNvdW50KVwiXG4gICAgICAgIFtvZmZzZXRdPVwiJGFueShvZmZzZXQpXCJcbiAgICAgICAgW2xvYWRpbmdJbmRpY2F0b3JdPVwibG9hZGluZ0luZGljYXRvclwiXG4gICAgICAgIFtzZWxlY3Rpb25UeXBlXT1cIiRhbnkoc2VsZWN0aW9uVHlwZSlcIlxuICAgICAgICBbcmVvcmRlcmFibGVdPVwicmVvcmRlcmFibGVcIlxuICAgICAgICBbc3dhcENvbHVtbnNdPVwic3dhcENvbHVtbnNcIlxuICAgICAgICBbc29ydFR5cGVdPVwiJGFueShzb3J0VHlwZSlcIlxuICAgICAgICBbc29ydHNdPVwiJGFueShfc29ydHMpXCJcbiAgICAgICAgW2Nzc0NsYXNzZXNdPVwiY3NzQ2xhc3Nlc1wiXG4gICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlc1wiXG4gICAgICAgIFtyb3dJZGVudGl0eV09XCIkYW55KHJvd0lkZW50aXR5KVwiXG4gICAgICAgIFtyb3dDbGFzc109XCJyb3dDbGFzc1wiXG4gICAgICAgIFtzZWxlY3RDaGVja109XCJzZWxlY3RDaGVja1wiXG4gICAgICAgIFtkaXNwbGF5Q2hlY2tdPVwiJGFueShkaXNwbGF5Q2hlY2spXCJcbiAgICAgICAgW2dyb3VwRXhwYW5zaW9uRGVmYXVsdF09XCJncm91cEV4cGFuc2lvbkRlZmF1bHRcIlxuICAgICAgICBbdHJhY2tCeVByb3BdPVwiJGFueSh0cmFja0J5UHJvcClcIlxuICAgICAgICBbc2VsZWN0QWxsUm93c09uUGFnZV09XCJzZWxlY3RBbGxSb3dzT25QYWdlXCJcbiAgICAgICAgW3RyZWVGcm9tUmVsYXRpb25dPVwiJGFueSh0cmVlRnJvbVJlbGF0aW9uKVwiXG4gICAgICAgIFt0cmVlVG9SZWxhdGlvbl09XCIkYW55KHRyZWVUb1JlbGF0aW9uKVwiXG4gICAgICAgIFtzdW1tYXJ5Um93XT1cInN1bW1hcnlSb3dcIlxuICAgICAgICBbc3VtbWFyeUhlaWdodF09XCIkYW55KHN1bW1hcnlIZWlnaHQpXCJcbiAgICAgICAgW3N1bW1hcnlQb3NpdGlvbl09XCIkYW55KHN1bW1hcnlQb3NpdGlvbilcIlxuICAgICAgICBbcm93c109XCJyb3dzJCB8IGFzeW5jXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiJGFueShkaXNwbGF5Q29sdW1ucyQgfCBhc3luYylcIlxuICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIiRhbnkoaGVhZGVySGVpZ2h0KVwiXG4gICAgICAgIFtyb3dIZWlnaHRdPVwiJGFueShyb3dIZWlnaHQpXCJcbiAgICAgICAgW2Zvb3RlckhlaWdodF09XCIkYW55KGZvb3RlckhlaWdodClcIlxuICAgICAgICAoc2Nyb2xsKT1cInNjcm9sbC5lbWl0KCRldmVudClcIlxuICAgICAgICAoYWN0aXZhdGUpPVwiYWN0aXZhdGUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNvcnQpPVwiX29uU29ydCgkZXZlbnQpXCJcbiAgICAgICAgKHBhZ2UpPVwicGFnZS5lbWl0KCRldmVudClcIlxuICAgICAgICAocmVvcmRlcik9XCJfb25SZW9yZGVyKCRldmVudClcIlxuICAgICAgICAocmVzaXplKT1cIl9vblJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgKHRhYmxlQ29udGV4dG1lbnUpPVwidGFibGVDb250ZXh0bWVudS5lbWl0KCRldmVudClcIlxuICAgICAgICAodHJlZUFjdGlvbik9XCJ0cmVlQWN0aW9uLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzZWFtRWxlbVJlc2l6ZWQpPVwib25EYXRhdGFibGVSZXNpemUoJGV2ZW50KVwiXG4gICAgICAgICh0cmVlQWN0aW9uKT1cIl9vblRyZWVBY3Rpb24oJGV2ZW50KVwiPlxuXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlciBbcm93SGVpZ2h0XT1cIjUwXCIgI215R3JvdXBIZWFkZXIgKm5nSWY9XCJncm91cFJvd3NCeVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXA9XCJncm91cFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCIgbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXItdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgYmctbGlnaHQgcC0xXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1ib3R0b21dPVwiIWV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLXJpZ2h0XT1cIiFleHBhbmRlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1kb3duXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJFeHBhbmQvQ29sbGFwc2UgR3JvdXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibmd4RGF0YXRhYmxlPy5ncm91cEhlYWRlcj8udG9nZ2xlRXhwYW5kR3JvdXAoZ3JvdXApXCI+XG4gICAgICAgICAgICAgIDxiPkFnZToge3sgZ3JvdXAuYWdlIH19PC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlcj5cblxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1yb3ctZGV0YWlsICpuZ0lmPVwicm93RGV0YWlsICYmIHJvd0RldGFpbC50ZW1wbGF0ZVwiXG4gICAgICAgICAgW3Jvd0hlaWdodF09XCJyb3dEZXRhaWwucm93SGVpZ2h0IHx8IDBcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCIkYW55KHJvd0RldGFpbC50ZW1wbGF0ZSlcIlxuICAgICAgICAgICh0b2dnbGUpPVwicm93RGV0YWlsLnRvZ2dsZS5lbWl0KCRldmVudClcIj5cbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLXJvdy1kZXRhaWw+XG5cbiAgICAgICAgPG5neC1kYXRhdGFibGUtZm9vdGVyICpuZ0lmPVwiZm9vdGVyICYmIGZvb3Rlci50ZW1wbGF0ZVwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIiRhbnkoZm9vdGVyLnRlbXBsYXRlKVwiPlxuICAgICAgICA8L25neC1kYXRhdGFibGUtZm9vdGVyPlxuICAgICAgPC9uZ3gtZGF0YXRhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2JsYW5rSGVhZGVyVHBsIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlPjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjaGVhZGVyVHBsXG4gIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlXG4gIGxldC1jb2x1bW49XCJjb2x1bW5cIlxuICBsZXQtc29ydEZuPVwic29ydEZuXCJcbj5cbiAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5maWx0ZXJhYmxlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHNlYW1JY29uQnRuXG4gICAgICAgIFtpY29uXT1cImNvbHVtbkZpbHRlckljb25cIlxuICAgICAgICBzaXplPVwic21cIlxuICAgICAgICBbc2VhbVBvcG92ZXJdPVwiZmlsdGVyTWVudVwiXG4gICAgICAgIFtzZWFtUG9wb3ZlckJhc2VXaWR0aF09XCIzMDBcIlxuICAgICAgICBjbGFzcz1cImRhdGF0YWJsZS1jb2x1bW4taGVhZGVyLWZpbHRlci1idXR0b24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtci0yXCJcbiAgICAgICAgW2NsYXNzLmRhdGF0YWJsZS1jb2x1bW4taGVhZGVyLWZpbHRlci1idXR0b24tYWN0aXZlXT1cImNvbHVtbi5maWx0ZXJBY3RpdmVcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxcmVtO1wiXG4gICAgICAgIHRpdGxlPVwiQ2xpY2sgdG8gc2VlIGZpbHRlciBvcHRpb25zXCI+PC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHN0cm9uZyAqbmdJZj1cIiFjb2x1bW4uc29ydGFibGVcIiBjbGFzcz1cImRyYWdnYWJsZVwiPnt7Y29sdW1uLm5hbWV9fTwvc3Ryb25nPlxuICAgIDxidXR0b25cbiAgICAgIHNlYW1CdXR0b25cbiAgICAgICpuZ0lmPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLXNvcnQtdGFyZ2V0IGRyYWdnYWJsZSBwLTBcIlxuICAgICAgKGNsaWNrKT1cInNvcnRGbigpXCJcbiAgICAgIHRpdGxlPVwiQ2xpY2sgdG8gc29ydFwiPlxuICAgICAgPHN0cm9uZz57e2NvbHVtbi5uYW1lfX08L3N0cm9uZz5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YXRhYmxlLWNvbHVtbi1oZWFkZXItc2VwYXJhdG9yXCIgW2F0dHIuZGF0YS1jb2x1bW4taWRdPVwiY29sdW1uLiQkaWRcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZmlsdGVyTWVudSBsZXQtcG9wb3Zlcj1cInBvcG92ZXJcIj5cbiAgICA8c2VhbS1kYXRhdGFibGUtY29sdW1uLWZpbHRlci1tZW51XG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbdXBkYXRlTWV0aG9kXT1cImNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZFwiXG4gICAgICBbZGVib3VuY2VdPVwiY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VcIlxuICAgICAgKGNsb3NlUG9wb3Zlcik9XCJwb3BvdmVyPy5jbG9zZVBvcG92ZXIoKVwiPjwvc2VhbS1kYXRhdGFibGUtY29sdW1uLWZpbHRlci1tZW51PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjZWxsVHlwZVNlbGVjdG9yVHBsIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZVxuICBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LXJvdz1cInJvd1wiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPHNlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yICpuZ0lmPVwicm93XCJcbiAgICBbdHlwZV09XCJjb2x1bW4uY2VsbFR5cGVcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW3Jvd0luZGV4XT1cInJvd0luZGV4XCJcbiAgICBbcm93XT1cInJvd1wiXG4gICAgW2NvbERhdGFdPVwiY29sdW1uXCI+XG4gIDwvc2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3I+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FjdGlvbk1lbnVDZWxsVHBsIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZVxuICBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LXJvdz1cInJvd1wiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgJiYgcm93QWN0aW9uSXRlbT8udGVtcGxhdGVcIj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkocm93QWN0aW9uSXRlbT8udGVtcGxhdGUpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmVlVG9nZ2xlVHBsIG5neC1kYXRhdGFibGUtdHJlZS10b2dnbGUgbGV0LXRyZWU9XCJjZWxsQ29udGV4dFwiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJwLTAgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYnRuXCJcbiAgICBbZGlzYWJsZWRdPVwidHJlZS50cmVlU3RhdHVzPT09J2Rpc2FibGVkJ1wiXG4gICAgKGNsaWNrKT1cInRyZWUub25UcmVlQWN0aW9uKClcIj5cbiAgICA8c3BhbiAqbmdJZj1cInRyZWUudHJlZVN0YXR1cz09PSdsb2FkaW5nJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhU3Bpbm5lclwiPjwvZmEtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJ0cmVlLnRyZWVTdGF0dXM9PT0nY29sbGFwc2VkJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhQ2hldnJvblJpZ2h0XCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInRyZWUudHJlZVN0YXR1cz09PSdleHBhbmRlZCdcIj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIl9mYUNoZXZyb25Eb3duXCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInRyZWUudHJlZVN0YXR1cz09PSdkaXNhYmxlZCdcIj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIl9mYUNoZXZyb25SaWdodFwiPjwvZmEtaWNvbj5cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
879
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFBZ0MsWUFBWSxFQUFhLE1BQU0sMEJBQTBCLENBQUE7QUFDaEcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsU0FBUyxFQUlULFFBQVEsRUFDUixNQUFNLEVBR04sU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUN0RyxPQUFP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YUFBYTtzQkFEaEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVN4QyxTQUFTO3NCQURaLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTcEMsY0FBYztzQkFEakIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pDLG1CQUFtQjtzQkFEdEIsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBc0JsRCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUUsUUFBUSxDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlLCBpc0RhdGFTb3VyY2UsIExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucydcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25SaWdodCwgZmFGaWx0ZXIsIGZhU3Bpbm5lciB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcbmltcG9ydCB7XG4gIENvbHVtbk1vZGUsXG4gIENvbnRleHRtZW51VHlwZSxcbiAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gIERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSxcbiAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICBEYXRhdGFibGVDb21wb25lbnQgYXMgTmd4RGF0YXRhYmxlQ29tcG9uZW50LFxuICBEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUsXG4gIFNvcnRUeXBlLFxuICBUcmVlU3RhdHVzXG59IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uVHlwZSB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgY29tcG9zZURhdGFGaWx0ZXJzLCBjb21wb3NlRGF0YUZpbHRlclN0YXRlcywgRGF0YUZpbHRlciwgRGF0YUZpbHRlclN0YXRlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IElFbGVtZW50UmVzaXplZEV2ZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3NoYXJlZCdcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCBub3ROdWxsT3JVbmRlZmluZWQsIHdhaXRPbkNvbmRpdGlvbkFzeW5jIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLWFjdGlvbi1tZW51L2RhdGF0YWJsZS1hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtY29sdW1uL2RhdGF0YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RhdGF0YWJsZS1mb290ZXIvZGF0YXRhYmxlLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLW1lbnUtYmFyL2RhdGF0YWJsZS1tZW51LWJhci5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLXJvdy1hY3Rpb24taXRlbS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgRGF0YXRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBUaGVTZWFtUGFnZUluZm8gfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1pbmZvJ1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL21vZGVscy9zb3J0LWl0ZW0nXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbidcbmltcG9ydCB7IENvbHVtbnNNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhdGFibGUtY29sdW1uLWNoYW5nZXMuc2VydmljZSdcbmltcG9ydCB7IERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IgfSBmcm9tICcuLi90b2tlbnMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgcmVtb3ZlVW51c2VkRGlmZnMgfSBmcm9tICcuLi91dGlscy9yZW1vdmUtdW51c2VkLWRpZmZzJ1xuaW1wb3J0IHsgdHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNsYXRlLXRlbXBsYXRlcydcbmltcG9ydCB7IENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sdW1ucy1hbHRlcmF0aW9ucy1tYW5hZ2VyLnNlcnZpY2UnXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXG5pbXBvcnQgeyBtYXBDb2x1bW5zQWx0ZXJhdGlvbnNTdGF0ZXMgfSBmcm9tICcuLi91dGlscy9tYXAtY29sdW1ucy1hbHRlcmF0aW9ucy1zdGF0ZXMnXG5pbXBvcnQgeyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvd2lkdGguY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgZ2V0Q29sdW1uUHJvcCB9IGZyb20gJy4uL3V0aWxzL2dldC1jb2x1bW4tcHJvcCdcbmltcG9ydCB7IE9yZGVyQ29sdW1uc0FsdGVyYXRpb24sIE9yZGVyQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL29yZGVyLmNvbHVtbnMtYWx0ZXJhdGlvbidcbmltcG9ydCB7IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uLCBpc0FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9hY3Rpb24taXRlbS1jb2x1bW4tcG9zaXRpb24nXG5pbXBvcnQgeyBDb2x1bW5zRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2x1bW5zLWZpbHRlcnMuc2VydmljZSdcbmltcG9ydCB7IFRIRVNFQU1fREFUQVRBQkxFX0NPTkZJRywgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCwgVGhlU2VhbURhdGF0YWJsZUNvbmZpZywgVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGF0YWJsZS1jb25maWcnXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXIuZGlyZWN0aXZlJ1xuXG4vKipcbiAqIE5PVEU6IFRoaXMgaXMgc3RpbGwgYmVpbmcgd29ya2VkIG9uLiBJIGFtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoaXMgbW9kZWxcbiAqIGJlY2F1c2UgYG5neC1kYXRhdGFibGVgIGp1c3QgdXNlcyBhbiB1bnR5cGVkIG9iamVjdCBhbmQgc2V0cyBwcm9wZXJ0aWVzIGluXG4gKiBtdWx0aXBsZSBwbGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNlbGxDb250ZXh0IHtcbiAgYWxsUm93c1NlbGVjdGVkOiBmYWxzZVxuXG4gIHNlbGVjdEZuOiAoKSA9PiBhbnlcbiAgc29ydERpcj86ICdhc2MnIHwgJ2Rlc2MnXG4gIHNvcnRGbjogKCkgPT4gYW55XG5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG5cbiAgb25DaGVja2JveENoYW5nZUZuPzogYW55XG4gIGFjdGl2YXRlRm4/OiBhbnlcbiAgcm93PzogYW55XG4gIGdyb3VwPzogYW55XG4gIHZhbHVlPzogYW55XG4gIGNvbHVtbj86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5cbiAgcm93SGVpZ2h0PzogbnVtYmVyXG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuXG4gIHJvd0luZGV4PzogbnVtYmVyXG4gIHRyZWVTdGF0dXM/OiBUcmVlU3RhdHVzXG4gIG9uVHJlZUFjdGlvbj86IGFueVxufVxuXG4vKipcbiAqIEludGVuZGVkIGZvciBpbnRlcm5hbCBjbGFzc2VzIGRlY2xhcmVkIGJ5IHRoZSBgVGhlU2VhbURhdGF0YWJsZU1vZHVsZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0RBVEFUQUJMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXRhRmlsdGVyPignTGliRGF0YXRhYmxlJylcblxuZXhwb3J0IGNvbnN0IF9USEVTRUFNX0RBVEFUQUJMRTogYW55ID0ge1xuICBwcm92aWRlOiBUSEVTRUFNX0RBVEFUQUJMRSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhdGFibGVDb21wb25lbnQpXG59XG5cbmV4cG9ydCBjb25zdCBfVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXRhYmxlQ29tcG9uZW50KVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWRhdGF0YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScsIG9wYWNpdHk6ICcwJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknLCBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgXSlcbiAgICBdKVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBfVEhFU0VBTV9EQVRBVEFCTEUsXG4gICAgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICAgX1RIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SLFxuICAgIENvbHVtbnNNYW5hZ2VyU2VydmljZSxcbiAgICBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSxcbiAgICBDb2x1bW5zRmlsdGVyc1NlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yLCBDb2xsZWN0aW9uVmlld2VyIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsUGFnaW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsU29ydGluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHRlcm5hbEZpbHRlcmluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sb2FkaW5nSW5kaWNhdG9yOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Jlb3JkZXJhYmxlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N3YXBDb2x1bW5zOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyb3VwRXhwYW5zaW9uRGVmYXVsdDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWxlY3RBbGxSb3dzT25QYWdlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N1bW1hcnlSb3c6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlydHVhbGl6YXRpb246IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYmFyVjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zY3JvbGxiYXJIOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xpbWl0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY291bnQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9vZmZzZXQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oZWFkZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yb3dIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mb290ZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdW1tYXJ5SGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc29ydHM6IFNvcnRJdGVtW10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgcmVhZG9ubHkgX2ZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duXG4gIHJlYWRvbmx5IF9mYUNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0XG4gIHJlYWRvbmx5IF9mYVNwaW5uZXIgPSBmYVNwaW5uZXJcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9tZW51QmFyc0ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhRmlsdGVyW10+KFtdKVxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBwcml2YXRlIF9yZXNpemluZzogeyBbcHJvcDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGVzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZVtdPlxuXG4gIGdldCBmaWx0ZXJzKCk6IERhdGFGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuX21lbnVCYXJzRmlsdGVyc1N1YmplY3QudmFsdWUsXG4gICAgICAuLi50aGlzLl9jb2x1bW5zRmlsdGVycy5maWx0ZXJzKClcbiAgICBdXG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVycyQ6IE9ic2VydmFibGU8RGF0YUZpbHRlcltdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBwcmVmZXJlbmNlc0tleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnZhbHVlIH1cbiAgc2V0IHByZWZlcmVuY2VzS2V5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX3ByZWZlcmVuY2VzS2V5Lm5leHQodmFsdWUgfHwgdW5kZWZpbmVkKSB9XG4gIHByaXZhdGUgX3ByZWZlcmVuY2VzS2V5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG5cbiAgQElucHV0KCkgdGFyZ2V0TWFya2VyVGVtcGxhdGU6IGFueVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjb2x1bW5zKHZhbHVlOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRJbnB1dENvbHVtbnMoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdKVxuICAgIHRoaXMuX2NvbHVtbnNGaWx0ZXJzLnJlZ2lzdGVyQ29sdW1uRmlsdGVycyhBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10pXG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcm93cygpOiBhbnlbXSB7IHJldHVybiB0aGlzLl9yb3dzLnZhbHVlIH1cbiAgc2V0IHJvd3ModmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fcm93cy5uZXh0KHZhbHVlIHx8IFtdKVxuICB9XG4gIHByaXZhdGUgX3Jvd3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSlcblxuICBwdWJsaWMgcm93cyQ6IE9ic2VydmFibGU8YW55W10+XG5cbiAgQElucHV0KCkgY29sdW1uTW9kZTogQ29sdW1uTW9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBDb2x1bW5Nb2RlLmZvcmNlXG5cbiAgQElucHV0KCkgZ3JvdXBSb3dzQnk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZ3JvdXBlZFJvd3M6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSBbXVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFBhZ2luZyA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFNvcnRpbmcgPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZXh0ZXJuYWxGaWx0ZXJpbmcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDApIGNvdW50ID0gMFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgb2Zmc2V0ID0gMFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBsb2FkaW5nSW5kaWNhdG9yID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0aW9uVHlwZSgpOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9jb2x1bW5zTWFuYWdlci5nZXRTZWxlY3Rpb25UeXBlKCkgfVxuICBzZXQgc2VsZWN0aW9uVHlwZSh2YWx1ZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRTZWxlY3Rpb25UeXBlKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZW9yZGVyYWJsZSA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN3YXBDb2x1bW5zID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc29ydFR5cGUoKTogU29ydFR5cGUgeyByZXR1cm4gdGhpcy5fc29ydFR5cGUgfVxuICBzZXQgc29ydFR5cGUodmFsdWU6IFNvcnRUeXBlKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgKHZhbHVlID09PSBTb3J0VHlwZS5zaW5nbGUgfHwgdmFsdWUgPT09IFNvcnRUeXBlLm11bHRpKSkge1xuICAgICAgdGhpcy5fc29ydFR5cGUgPSB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zb3J0VHlwZSA9IFNvcnRUeXBlLnNpbmdsZVxuICAgIH1cbiAgfVxuICBfc29ydFR5cGU6IFNvcnRUeXBlID0gU29ydFR5cGUuc2luZ2xlXG5cbiAgQElucHV0KClcbiAgZ2V0IHNvcnRzKCk6IFNvcnRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZSA/IHRoaXMubmd4RGF0YXRhYmxlLnNvcnRzIDogdGhpcy5fc29ydHNcbiAgfVxuICBzZXQgc29ydHModmFsdWU6IFNvcnRJdGVtW10pIHtcbiAgICB0aGlzLl9zb3J0cyA9IG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyBjb2VyY2VBcnJheSh2YWx1ZSkgOiBbXVxuICB9XG4gIF9zb3J0czogU29ydEl0ZW1bXSA9IFtdXG5cbiAgQElucHV0KCkgZ2V0IGNzc0NsYXNzZXMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jc3NDbGFzc2VzXG4gIH1cbiAgc2V0IGNzc0NsYXNzZXModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2Nzc0NsYXNzZXMgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5jc3NDbGFzc2VzKSkge1xuICAgICAgdGhpcy5fY3NzQ2xhc3NlcyA9IHRoaXMuX2NvbmZpZz8uY3NzQ2xhc3Nlc1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Nzc0NsYXNzZXMgPSB0aGlzLl9jc3NDbGFzc2VzRGVmYXVsdFxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jc3NDbGFzc2VzRGVmYXVsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBzb3J0QXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tdXAnLFxuICAgIHNvcnREZXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tZG93bicsXG4gICAgcGFnZXJMZWZ0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1sZWZ0JyxcbiAgICBwYWdlclJpZ2h0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1yaWdodCcsXG4gICAgcGFnZXJQcmV2aW91czogJ2RhdGF0YWJsZS1pY29uLXByZXYnLFxuICAgIHBhZ2VyTmV4dDogJ2RhdGF0YWJsZS1pY29uLXNraXAnXG4gIH1cbiAgX2Nzc0NsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgZ2V0IG1lc3NhZ2VzKCk6IFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlc1xuICB9XG4gIHNldCBtZXNzYWdlcyh2YWx1ZTogVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9tZXNzYWdlcyA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/Lm1lc3NhZ2VzKSkge1xuICAgICAgdGhpcy5fbWVzc2FnZXMgPSB7XG4gICAgICAgIC4uLnRoaXMuX21lc3NhZ2VzRGVmYXVsdCxcbiAgICAgICAgLi4udGhpcy5fY29uZmlnPy5tZXNzYWdlc1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX21lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXNEZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX21lc3NhZ2VzRGVmYXVsdDogVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzID0ge1xuICAgIC8vIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIGFycmF5IGlzIHByZXNlbnRlZFxuICAgIC8vIGJ1dCBjb250YWlucyBubyB2YWx1ZXNcbiAgICBlbXB0eU1lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kJyxcblxuICAgIC8vIEZvb3RlciB0b3RhbCBtZXNzYWdlXG4gICAgdG90YWxNZXNzYWdlOiAndG90YWwnLFxuXG4gICAgLy8gRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2VcbiAgICBzZWxlY3RlZE1lc3NhZ2U6ICdzZWxlY3RlZCdcbiAgfVxuICBfbWVzc2FnZXM6IFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSByb3dJZGVudGl0eTogKCh4OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQgfCBudWxsID0gKHg6IGFueSkgPT4geFxuXG4gIEBJbnB1dCgpIHJvd0NsYXNzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0Q2hlY2s6IGFueSB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZGlzcGxheUNoZWNrOiAoKHJvdzogYW55LCBjb2x1bW4/OiBhbnksIHZhbHVlPzogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JvdXBFeHBhbnNpb25EZWZhdWx0ID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmFja0J5UHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWxlY3RBbGxSb3dzT25QYWdlID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmVlRnJvbVJlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHRyZWVUb1JlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdW1tYXJ5Um93ID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgc3VtbWFyeUhlaWdodCA9IDMwXG4gIEBJbnB1dCgpIHN1bW1hcnlQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICd0b3AnXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHZpcnR1YWxpemF0aW9uID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpXG4gIGdldCBoZWFkZXJIZWlnaHQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlckhlaWdodFxuICB9XG4gIHNldCBoZWFkZXJIZWlnaHQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5faGVhZGVySGVpZ2h0ID0gdmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2NvbmZpZz8uaGVhZGVySGVpZ2h0KSkge1xuICAgICAgdGhpcy5faGVhZGVySGVpZ2h0ID0gdGhpcy5fY29uZmlnPy5oZWFkZXJIZWlnaHRcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJIZWlnaHQgPSB0aGlzLl9oZWFkZXJIZWlnaHREZWZhdWx0XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlckhlaWdodERlZmF1bHQ6IG51bWJlciA9IDUwXG4gIF9oZWFkZXJIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKVxuICBnZXQgcm93SGVpZ2h0KCk6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9yb3dIZWlnaHRcbiAgfVxuICBzZXQgcm93SGVpZ2h0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/LnJvd0hlaWdodCkpIHtcbiAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHRoaXMuX2NvbmZpZz8ucm93SGVpZ2h0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fcm93SGVpZ2h0ID0gdGhpcy5fcm93SGVpZ2h0RGVmYXVsdFxuICAgIH1cbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dIZWlnaHREZWZhdWx0OiBudW1iZXIgPSA1MFxuICBfcm93SGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKClcbiAgZ2V0IGZvb3RlckhlaWdodCgpOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZm9vdGVySGVpZ2h0XG4gIH1cbiAgc2V0IGZvb3RlckhlaWdodCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9mb290ZXJIZWlnaHQgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5mb290ZXJIZWlnaHQpKSB7XG4gICAgICB0aGlzLl9mb290ZXJIZWlnaHQgPSB0aGlzLl9jb25maWc/LmZvb3RlckhlaWdodFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvb3RlckhlaWdodCA9IHRoaXMuX2Zvb3RlckhlaWdodERlZmF1bHRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9vdGVySGVpZ2h0RGVmYXVsdDogbnVtYmVyID0gNDBcbiAgX2Zvb3RlckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzY3JvbGxiYXJWID0gdHJ1ZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2Nyb2xsYmFySCA9IHRydWVcblxuICBASW5wdXQoKVxuICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogRGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0YXRhYmxlRGF0YVNvdXJjZSkge1xuICAgICAgdmFsdWUuc2V0RGF0YXRhYmxlQWNjZXNzb3IodGhpcylcbiAgICB9XG4gICAgdGhpcy5fZGF0YVNvdXJjZVN1YmplY3QubmV4dCh2YWx1ZSB8fCB1bmRlZmluZWQpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBwb3NpdGlvbiBiZWhhdmlvciBmb3Igb3B0aW9uYWwgQWN0aW9uIE1lbnUgQnV0dG9uIGNvbHVtbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZyb3plblJpZ2h0YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBhY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24oKTogQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB9XG4gIHNldCBhY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24odmFsdWU6IEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpICYmIGlzQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uKHZhbHVlKSkge1xuICAgICAgdGhpcy5fYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID0gdmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2NvbmZpZz8uYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uKSAmJiBpc0FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbih0aGlzLl9jb25maWc/LmFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiA9IHRoaXMuX2NvbmZpZz8uYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID0gdGhpcy5fYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uRGVmYXVsdFxuICAgIH1cblxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbih0aGlzLl9hY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24pXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uRGVmYXVsdDogQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID0gJ2Zyb3plblJpZ2h0J1xuICBfYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uOiBBY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24gfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBnZXQgY29sdW1uRmlsdGVySWNvbigpOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5GaWx0ZXJJY29uXG4gIH1cbiAgc2V0IGNvbHVtbkZpbHRlckljb24odmFsdWU6IFNlYW1JY29uIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJJY29uID0gdmFsdWVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2NvbmZpZz8uY29sdW1uRmlsdGVySWNvbikpIHtcbiAgICAgIHRoaXMuX2NvbHVtbkZpbHRlckljb24gPSB0aGlzLl9jb25maWc/LmNvbHVtbkZpbHRlckljb25cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJJY29uID0gdGhpcy5fY29sdW1uRmlsdGVySWNvbkRlZmF1bHRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uRmlsdGVySWNvbkRlZmF1bHQ6IFNlYW1JY29uID0gZmFGaWx0ZXJcbiAgX2NvbHVtbkZpbHRlckljb246IFNlYW1JY29uIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGdldCBjb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QoKTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2RcbiAgfVxuICBzZXQgY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kKHZhbHVlOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5fY29uZmlnPy5jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QpKSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSB0aGlzLl9jb25maWc/LmNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCA9IHRoaXMuX2NvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZERlZmF1bHRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kRGVmYXVsdDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZCA9ICd2YWx1ZUNoYW5nZXMnXG4gIF9jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2Q6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgZ2V0IGNvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlKCk6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZVxuICB9XG4gIHNldCBjb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZSA9IHZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0aGlzLl9jb25maWc/LmNvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlKSkge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2UgPSB0aGlzLl9jb25maWc/LmNvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2UgPSB0aGlzLl9jb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZURlZmF1bHRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VEZWZhdWx0OiBudW1iZXIgPSA0MDBcbiAgX2NvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSByZWFkb25seSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgYWN0aXZhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBzb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RXZlbnQ+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoZVNlYW1QYWdlSW5mbz4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVvcmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRhYmxlQ29udGV4dG1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6IENvbnRleHRtZW51VHlwZSwgY29udGVudDogYW55IH0+KGZhbHNlKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdHJlZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGlvblJlZnJlc2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBoaWRkZW5Db2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50KVxuICBzZXQgY29sdW1uQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRUZW1wbGF0ZUNvbHVtbnModHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zKHZhbHVlPy50b0FycmF5KCkgPz8gW10pKVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBhY3Rpb25NZW51PzogRGF0YXRhYmxlQWN0aW9uTWVudUNvbXBvbmVudFxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUpXG4gIGdldCByb3dBY3Rpb25JdGVtKCk6IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fcm93QWN0aW9uSXRlbSB9XG4gIHNldCByb3dBY3Rpb25JdGVtKHZhbHVlOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcm93QWN0aW9uSXRlbSA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0Um93QWN0aW9uSXRlbShub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfcm93QWN0aW9uSXRlbTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGQoVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcm93RGV0YWlsPzogVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuICBAQ29udGVudENoaWxkKFRoZVNlYW1EYXRhdGFibGVGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGZvb3Rlcj86IFRoZVNlYW1EYXRhdGFibGVGb290ZXJEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQpXG4gIGdldCBtZW51QmFyQ29tcG9uZW50KCk6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fbWVudUJhckNvbXBvbmVudCB9XG4gIHNldCBtZW51QmFyQ29tcG9uZW50KHZhbHVlOiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbWVudUJhckNvbXBvbmVudCA9IHZhbHVlXG5cbiAgICBpZiAodGhpcy5fbWVudUJhclN1YikgeyB0aGlzLl9tZW51QmFyU3ViLnVuc3Vic2NyaWJlKCkgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zZXRNZW51QmFyRmlsdGVycyh2YWx1ZS5maWx0ZXJzKCkpXG5cbiAgICAgIHRoaXMuX21lbnVCYXJTdWIgPSB0aGlzLl9tZW51QmFyQ29tcG9uZW50Py5maWx0ZXJzQ2hhbmdlZFxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4geyB0aGlzLl9zZXRNZW51QmFyRmlsdGVycyh2YWx1ZS5maWx0ZXJzKCkpIH0pXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX21lbnVCYXJDb21wb25lbnQ6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfbWVudUJhclN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkXG5cbiAgQENvbnRlbnRDaGlsZHJlbihUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyRGlyZWN0aXZlKVxuICBzZXQgY29sdW1uRmlsdGVyVGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8VGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jb2x1bW5zRmlsdGVycy5zZXRGaWx0ZXJUZW1wbGF0ZXModmFsdWU/LnRvQXJyYXkoKSA/PyBbXSlcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoTmd4RGF0YXRhYmxlQ29tcG9uZW50KSBuZ3hEYXRhdGFibGU/OiBOZ3hEYXRhdGFibGVDb21wb25lbnRcbiAgQFZpZXdDaGlsZChOZ3hEYXRhdGFibGVDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBuZ3hEYXRhdGFibGVFbGVtZW50PzogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSkgbmd4Um93RGV0YWlsPzogRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlXG5cbiAgQFZpZXdDaGlsZCgnYWN0aW9uTWVudUNlbGxUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgYWN0aW9uTWVudUNlbGxUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9hY3Rpb25NZW51Q2VsbFRwbCB9XG4gIHNldCBhY3Rpb25NZW51Q2VsbFRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRBY3Rpb25NZW51Q2VsbFRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfYWN0aW9uTWVudUNlbGxUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCd0cmVlVG9nZ2xlVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IHRyZWVUb2dnbGVUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3RyZWVUb2dnbGVUcGwgfVxuICBzZXQgdHJlZVRvZ2dsZVRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdHJlZVRvZ2dsZVRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0VHJlZVRvZ2dsZVRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfdHJlZVRvZ2dsZVRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnaGVhZGVyVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGhlYWRlclRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2hlYWRlclRwbCB9XG4gIHNldCBoZWFkZXJUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9oZWFkZXJUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEhlYWRlclRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfaGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnYmxhbmtIZWFkZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgYmxhbmtIZWFkZXJUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9ibGFua0hlYWRlclRwbCB9XG4gIHNldCBibGFua0hlYWRlclRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2JsYW5rSGVhZGVyVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRCbGFua0hlYWRlclRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfYmxhbmtIZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCdjZWxsVHlwZVNlbGVjdG9yVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGNlbGxUeXBlU2VsZWN0b3JUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsIH1cbiAgc2V0IGNlbGxUeXBlU2VsZWN0b3JUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRDZWxsVHlwZVNlbGVjdG9yVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF9jZWxsVHlwZVNlbGVjdG9yVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgcHVibGljIGNvbHVtbkNvbXBvbmVudHMkPzogT2JzZXJ2YWJsZTxEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXT5cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc0lucDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc1RwbDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheUNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICB2aWV3Q2hhbmdlOiBPYnNlcnZhYmxlPExpc3RSYW5nZT5cblxuICBwcml2YXRlIF9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcblxuICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBET00tZGVwZW5kZW50IGNvZGUgd2hlbiBhIHdheSB0byBwcm9wZXJ0eSBsaXN0ZW4gZm9yXG4gIC8vIGRibGNsaWNrIG9uIHRoZSBoZWFkZXIgcmVhc2l6ZSBoYW5kbGVzLlxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsgJyRldmVudCcgXSlcbiAgX2RibENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpc0hhbmRsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygncmVzaXplLWhhbmRsZScpXG4gICAgaWYgKGlzSGFuZGxlKSB7XG4gICAgICBjb25zdCBpc1Jlc2l6ZWFibGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2l6ZWFibGUnKVxuICAgICAgaWYgKGlzUmVzaXplYWJsZSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBjb25zdCBpZCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnRcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJy5kYXRhdGFibGUtY29sdW1uLWhlYWRlci1zZXBhcmF0b3InKVxuICAgICAgICAgID8uZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbi1pZCcpXG4gICAgICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLmNvbHVtbnMkLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoY29sdW1ucyA9PiB7XG4gICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKGMgPT4gYy4kJGlkID09PSBpZClcbiAgICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5Qcm9wID0gZ2V0Q29sdW1uUHJvcChjb2x1bW4pXG4gICAgICAgICAgICBpZiAoY29sdW1uUHJvcCkge1xuICAgICAgICAgICAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IFdpZHRoQ29sdW1uc0FsdGVyYXRpb24oeyBjb2x1bW5Qcm9wLCBjYW5BdXRvUmVzaXplOiB0cnVlIH0sIGZhbHNlKVxuICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChbIGFsdGVyYXRpb24gXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJlZmVyZW5jZXM6IERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zTWFuYWdlcjogQ29sdW1uc01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXI6IENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnNGaWx0ZXJzOiBDb2x1bW5zRmlsdGVyc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0RBVEFUQUJMRV9DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZz86IFRoZVNlYW1EYXRhdGFibGVDb25maWdcbiAgKSB7XG4gICAgdGhpcy5fcHJlZmVyZW5jZXNLZXkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoa2V5ID0+IHtcbiAgICAgICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQoa2V5KSB8fCBrZXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcm9tKHdhaXRPbkNvbmRpdGlvbkFzeW5jKCgpID0+IHRoaXMuX3ByZWZlcmVuY2VzLmlzTG9hZGVkKGtleSkpKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMuc2V0QWx0ZXJhdGlvbnMoa2V5LCB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmdldCgpKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSlcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSksXG4gICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgY29uc3QgYXBwbHlQcmVmcyA9IChjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pID0+IHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuY2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFwcGx5KGNvbHMsIHRoaXMpXG4gICAgICAgIHJldHVybiBjb2xzXG4gICAgICB9KSxcbiAgICApXG5cbiAgICB0aGlzLl9wcmVmZXJlbmNlc0tleS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHN3aXRjaE1hcChwcmVmc0tleSA9PiB7XG4gICAgICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKHByZWZzS2V5KSkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VzLnByZWZlcmVuY2VzKHByZWZzS2V5KS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChhc3luYyBwcmVmZXJlbmNlcyA9PiB7XG4gICAgICAgICAgICBhd2FpdCB3YWl0T25Db25kaXRpb25Bc3luYygoKSA9PiB0aGlzLl9wcmVmZXJlbmNlcy5pc0xvYWRlZChwcmVmc0tleSkpXG4gICAgICAgICAgICByZXR1cm4gcHJlZmVyZW5jZXNcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIG1hcChwcmVmZXJlbmNlcyA9PiB7XG4gICAgICAgICAgICBsZXQgYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uW10gPSBbXVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYWx0ZXJhdGlvbnMgPSBtYXBDb2x1bW5zQWx0ZXJhdGlvbnNTdGF0ZXMocHJlZmVyZW5jZXMuYWx0ZXJhdGlvbnMpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gbWFwIGNvbHVtbnMgYWx0ZXJhdGlvbnMgc3RhdGVzJylcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKGFsdGVyYXRpb25zKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpXG4gICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgdGhpcy5jb2x1bW5zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbHVtbnNNYW5hZ2VyLmNvbHVtbnMkLCB0aGlzLl9jb2x1bW5zRmlsdGVycy5jb2x1bW5BY3RpdmVGaWx0ZXJQcm9wcyRdKS5waXBlKFxuICAgICAgbWFwKChbIGNvbHVtbnMsIGNvbHVtbkFjdGl2ZUZpbHRlclByb3BzIF0pID0+IGNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAuLi5jb2wsXG4gICAgICAgIGZpbHRlckFjdGl2ZTogY29sdW1uQWN0aXZlRmlsdGVyUHJvcHMuaW5jbHVkZXModGhpcy5fY29sdW1uc0ZpbHRlcnMuZ2V0Q29sdW1uRmlsdGVyUHJvcChjb2wpIHx8ICcnKVxuICAgICAgfSkpKVxuICAgIClcblxuICAgIHRoaXMuZGlzcGxheUNvbHVtbnMkID0gdGhpcy5jb2x1bW5zJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbHMgPT4gYXBwbHlQcmVmcyhjb2xzKSksXG4gICAgICBtYXAoY29scyA9PiBjb2xzLmZpbHRlcihjID0+ICFjLmhpZGRlbikpLFxuICAgICAgdGFwKHYgPT4gcmVtb3ZlVW51c2VkRGlmZnModiwgdGhpcy5fY29sRGlmZmVyc0lucCwgdGhpcy5fY29sRGlmZmVyc1RwbCkpLFxuICAgIClcblxuICAgIHRoaXMuZmlsdGVycyQgPSBjb21iaW5lTGF0ZXN0KFsgdGhpcy5fbWVudUJhcnNGaWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKSwgdGhpcy5fY29sdW1uc0ZpbHRlcnMuY29sdW1uc0ZpbHRlcnMkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgbWVudUZpbHRlcnMsIGNvbHVtbnNGaWx0ZXJzIF0pID0+IFsgLi4ubWVudUZpbHRlcnMsIC4uLmNvbHVtbnNGaWx0ZXJzIF0pXG4gICAgKVxuXG4gICAgdGhpcy5maWx0ZXJTdGF0ZXMgPSB0aGlzLmZpbHRlcnMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiBjb21wb3NlRGF0YUZpbHRlclN0YXRlcyhmaWx0ZXJzKSlcbiAgICApXG5cbiAgICB0aGlzLnJvd3MkID0gdGhpcy5fZGF0YVNvdXJjZVN1YmplY3QucGlwZShcbiAgICAgIHN3aXRjaE1hcChkYXRhU291cmNlID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGFTb3VyY2UnLCBkYXRhU291cmNlKVxuICAgICAgICBsZXQgZGF0YVN0cmVhbTogT2JzZXJ2YWJsZTxhbnlbXT5cblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ35kYXRhc291cmNlJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+b2JzZXJ2YWJsZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UgYXMgYW55XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+YXJyYXknKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBvZihkYXRhU291cmNlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+cm93cyBmYWxsYmFjaycpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IHRoaXMuX3Jvd3MuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC8vIC5waXBlKHRhcCh2ID0+IGNvbnNvbGUubG9nKCdyb3dzficsIHYpKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5leHRlcm5hbEZpbHRlcmluZykge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdub3QgdXNpbmcgZXh0ZXJuYWxGaWx0ZXJpbmcnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU3RyZWFtLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAocm93cyA9PiB0aGlzLmZpbHRlcnMkLnBpcGUoXG4gICAgICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdmaWx0ZXJzJywgdikpLFxuICAgICAgICAgICAgICBjb25jYXRNYXAoZmlsdGVycyA9PiBvZihyb3dzKS5waXBlKGNvbXBvc2VEYXRhRmlsdGVycyhmaWx0ZXJzKSkpLFxuICAgICAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnY29tcG9zZWQgZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gZGF0YVN0cmVhbSA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgLy8gICB0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAvLyAgIGNvbmNhdE1hcChmaWx0ZXJzID0+IGRhdGFTdHJlYW0ucGlwZShjb21wb3NlRGF0YUZpbHRlcnMoZmlsdGVycykpKSxcbiAgICAgICAgICAvLyAgIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb21wb3NlZCBmaWx0ZXJzJywgdikpLFxuICAgICAgICAgIC8vIClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhU3RyZWFtLnBpcGUoXG4gICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ3N0cmVhbScsIHYpKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdmlld0NoYW5nZSBmb3IgQ29sbGVjdGlvblZpZXdlci5cbiAgICB0aGlzLnZpZXdDaGFuZ2UgPSB0aGlzLnBhZ2UucGlwZShtYXAocCA9PiAoeyBzdGFydDogMCwgZW5kOiBwLmNvdW50IH0pKSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvd0RldGFpbCkge1xuICAgICAgdGhpcy5fcm93RGV0YWlsVG9nZ2xlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3dEZXRhaWwuX3RvZ2dsZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5uZ3hSb3dEZXRhaWwpIHtcbiAgICAgICAgICB0aGlzLm5neFJvd0RldGFpbC50b2dnbGUuZW1pdChldmVudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLl9zZXREYXRhdGFibGVDb25maWdPckRlZmF1bHQoKVxuICB9XG5cbiAgLyoqIFNldHMgbWlzc2luZyBpbnB1dHMgZnJvbSBjb25maWcgKi9cbiAgcHJpdmF0ZSBfc2V0RGF0YXRhYmxlQ29uZmlnT3JEZWZhdWx0KCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLm1lc3NhZ2VzKSkge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5oZWFkZXJIZWlnaHQpKSB7XG4gICAgICB0aGlzLmhlYWRlckhlaWdodCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5yb3dIZWlnaHQpKSB7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5mb290ZXJIZWlnaHQpKSB7XG4gICAgICB0aGlzLmZvb3RlckhlaWdodCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jc3NDbGFzc2VzKSkge1xuICAgICAgdGhpcy5jc3NDbGFzc2VzID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbHVtbkZpbHRlckljb24pKSB7XG4gICAgICB0aGlzLmNvbHVtbkZpbHRlckljb24gPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kKSkge1xuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2UpKSB7XG4gICAgICB0aGlzLmNvbHVtbkZpbHRlclVwZGF0ZURlYm91bmNlID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcm93RGV0YWlsVG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1lbnVCYXJGaWx0ZXJzKGZpbHRlcnM6IERhdGFGaWx0ZXJbXSkge1xuICAgIHRoaXMuX21lbnVCYXJzRmlsdGVyc1N1YmplY3QubmV4dChmaWx0ZXJzIHx8IFtdKVxuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkNvbXBvbmVudChwcm9wTmFtZTogc3RyaW5nKTogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbXBvbmVudHMgfHwgdGhpcy5jb2x1bW5Db21wb25lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB0cGwgPSB0aGlzLmNvbHVtbkNvbXBvbmVudHMuZmluZCh0ID0+IHQucHJvcCA9PT0gcHJvcE5hbWUpXG4gICAgaWYgKHRwbCkge1xuICAgICAgcmV0dXJuIHRwbFxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBfY29sdW1uRGF0YShjb2w6IGFueSk6IHsgY29sOiBhbnksIGNvbXA6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB8IG51bGwgfSB7XG4gICAgY29uc3QgY29tcCA9IHRoaXMuZ2V0Q29sdW1uQ29tcG9uZW50KGNvbC5wcm9wKVxuICAgIHJldHVybiB7IGNvbCwgY29tcCB9XG4gIH1cblxuICBfZ2V0Um93RXhwYW5kZWQocm93OiBhbnkpIHtcbiAgICBpZiAodGhpcy5uZ3hEYXRhdGFibGUgJiYgdGhpcy5uZ3hEYXRhdGFibGUuYm9keUNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMubmd4RGF0YXRhYmxlLmJvZHlDb21wb25lbnQuZ2V0Um93RXhwYW5kZWQocm93KVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5Rm5Db2x1bW4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0ucHJvcFxuICB9XG5cbiAgcHVibGljIG9uRGF0YXRhYmxlUmVzaXplKGV2ZW50OiBJRWxlbWVudFJlc2l6ZWRFdmVudCkge1xuICAgIGlmICh0aGlzLm5neERhdGF0YWJsZSAmJiB0aGlzLm5neERhdGF0YWJsZUVsZW1lbnQgJiYgdGhpcy5uZ3hEYXRhdGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIC8vIFRPRE86IENvbnNpZGVyIGludGVncmF0aW5nIHRoaXMgaW50byB0aGUgbmd4LWRhdGF0YWJsZSBsaWJyYXJ5IHRvIGF2b2lkXG4gICAgICAvLyBtdWx0aXBsZSByZXNpemUgY2FsbHMgd2hlbiB0aGUgdGFibGUgcmVzaXplcyBpdHNlbGYuXG4gICAgICB0aGlzLm5neERhdGF0YWJsZS5yZWNhbGN1bGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgX29uUmVzaXplKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc2l6ZS5lbWl0KGV2ZW50KVxuXG4gICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQoZXZlbnQuY29sdW1uKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uUHJvcCA9IGdldENvbHVtblByb3AoZXZlbnQuY29sdW1uKVxuICAgIGlmIChjb2x1bW5Qcm9wKSB7XG4gICAgICBsZXQgYWRkQWx0ZXJhdGlvbiA9IGZhbHNlXG5cbiAgICAgIGlmICghdGhpcy5fcmVzaXppbmdbY29sdW1uUHJvcF0pIHtcbiAgICAgICAgdGhpcy5fcmVzaXppbmdbY29sdW1uUHJvcF0gPSB0cnVlXG4gICAgICAgIGFkZEFsdGVyYXRpb24gPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5pc0RvbmUpIHtcbiAgICAgICAgdGhpcy5fcmVzaXppbmdbY29sdW1uUHJvcF0gPSBmYWxzZVxuICAgICAgICBhZGRBbHRlcmF0aW9uID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRkQWx0ZXJhdGlvbikge1xuICAgICAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IFdpZHRoQ29sdW1uc0FsdGVyYXRpb24oe1xuICAgICAgICAgIGNvbHVtblByb3AsXG4gICAgICAgICAgd2lkdGg6IGV2ZW50LmNvbHVtbi53aWR0aCxcbiAgICAgICAgICBjYW5BdXRvUmVzaXplOiBmYWxzZVxuICAgICAgICB9LCB0cnVlKVxuICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChbIGFsdGVyYXRpb24gXSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfb25SZW9yZGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlb3JkZXIuZW1pdChldmVudClcblxuICAgIGNvbnN0IGNvbHVtblByb3AgPSBnZXRDb2x1bW5Qcm9wKGV2ZW50LmNvbHVtbilcbiAgICBpZiAoY29sdW1uUHJvcCkge1xuICAgICAgY29uc3QgY3VycmVudE9yZGVyQWx0ZXJhdGlvbiA9IHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuZ2V0KCkuZmluZCh4ID0+IHgudHlwZSA9PT0gJ29yZGVyJylcbiAgICAgIGNvbnN0IHN0YXRlOiBPcmRlckNvbHVtbnNBbHRlcmF0aW9uU3RhdGUgPSB7XG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAuLi4oY3VycmVudE9yZGVyQWx0ZXJhdGlvbj8uc3RhdGUuY29sdW1ucyB8fCBbXSkuZmlsdGVyKCh4OiBhbnkpID0+IHguY29sdW1uUHJvcCAhPT0gY29sdW1uUHJvcCksXG4gICAgICAgICAgeyBjb2x1bW5Qcm9wLCBpbmRleDogZXZlbnQubmV3VmFsdWUgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IE9yZGVyQ29sdW1uc0FsdGVyYXRpb24oc3RhdGUsIHRydWUpXG4gICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChbIGFsdGVyYXRpb24gXSlcbiAgICB9XG4gIH1cblxuICBfb25Tb3J0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnQuZW1pdChldmVudClcblxuICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgU29ydENvbHVtbnNBbHRlcmF0aW9uKHsgc29ydHM6IGV2ZW50LnNvcnRzIH0sIHRydWUpXG4gICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gIH1cblxuICBfb25UcmVlQWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IGV2ZW50LnJvd0luZGV4XG4gICAgY29uc3Qgcm93ID0gZXZlbnQucm93XG4gICAgaWYgKHJvdy50cmVlU3RhdHVzID09PSAnY29sbGFwc2VkJykge1xuICAgICAgcm93LnRyZWVTdGF0dXMgPSAnZXhwYW5kZWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy50cmVlU3RhdHVzID0gJ2NvbGxhcHNlZCdcbiAgICB9XG4gICAgdGhpcy5yb3dzID0gWyAuLi50aGlzLnJvd3MgXVxuICB9XG5cbiAgcHVibGljIHRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpIHtcbiAgICB0aGlzLmFjdGlvblJlZnJlc2hSZXF1ZXN0LmVtaXQodW5kZWZpbmVkKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhZ2UgaW5mbyBmcm9tIHRoZSB3cmFwcGVkIE5neERhdGF0YWJsZSBpbnN0YW5jZSBvciBkZWZhdWx0cy5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGFnZUluZm8oKTogVGhlU2VhbVBhZ2VJbmZvIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiB0aGlzLm5neERhdGF0YWJsZT8ub2Zmc2V0ID8/IDAsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5uZ3hEYXRhdGFibGU/LnBhZ2VTaXplID8/IDAsXG4gICAgICBsaW1pdDogdGhpcy5uZ3hEYXRhdGFibGU/LmxpbWl0LFxuICAgICAgY291bnQ6IHRoaXMubmd4RGF0YXRhYmxlPy5jb3VudCA/PyAwXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRhdGFibGUtd3JhcHBlclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJzZWFtLWRhdGF0YWJsZS1tZW51LWJhclwiPjwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImRhdGF0YWJsZS10YWJsZS13cmFwcGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIDxuZ3gtZGF0YXRhYmxlXG4gICAgICAgIFtjb2x1bW5Nb2RlXT1cIiRhbnkoY29sdW1uTW9kZSlcIlxuICAgICAgICBbc2Nyb2xsYmFyVl09XCJzY3JvbGxiYXJWXCJcbiAgICAgICAgW3Njcm9sbGJhckhdPVwic2Nyb2xsYmFySFwiXG4gICAgICAgIFt2aXJ0dWFsaXphdGlvbl09XCJ2aXJ0dWFsaXphdGlvblwiXG4gICAgICAgIFt0YXJnZXRNYXJrZXJUZW1wbGF0ZV09XCJ0YXJnZXRNYXJrZXJUZW1wbGF0ZVwiXG4gICAgICAgIFtncm91cFJvd3NCeV09XCIkYW55KGdyb3VwUm93c0J5KVwiXG4gICAgICAgIFtncm91cGVkUm93c109XCIkYW55KGdyb3VwZWRSb3dzKVwiXG4gICAgICAgIFtzZWxlY3RlZF09XCIkYW55KHNlbGVjdGVkKVwiXG4gICAgICAgIFtleHRlcm5hbFBhZ2luZ109XCJleHRlcm5hbFBhZ2luZ1wiXG4gICAgICAgIFtleHRlcm5hbFNvcnRpbmddPVwiZXh0ZXJuYWxTb3J0aW5nXCJcbiAgICAgICAgW2xpbWl0XT1cIiRhbnkobGltaXQpXCJcbiAgICAgICAgW2NvdW50XT1cIiRhbnkoY291bnQpXCJcbiAgICAgICAgW29mZnNldF09XCIkYW55KG9mZnNldClcIlxuICAgICAgICBbbG9hZGluZ0luZGljYXRvcl09XCJsb2FkaW5nSW5kaWNhdG9yXCJcbiAgICAgICAgW3NlbGVjdGlvblR5cGVdPVwiJGFueShzZWxlY3Rpb25UeXBlKVwiXG4gICAgICAgIFtyZW9yZGVyYWJsZV09XCJyZW9yZGVyYWJsZVwiXG4gICAgICAgIFtzd2FwQ29sdW1uc109XCJzd2FwQ29sdW1uc1wiXG4gICAgICAgIFtzb3J0VHlwZV09XCIkYW55KHNvcnRUeXBlKVwiXG4gICAgICAgIFtzb3J0c109XCIkYW55KF9zb3J0cylcIlxuICAgICAgICBbY3NzQ2xhc3Nlc109XCJjc3NDbGFzc2VzXCJcbiAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCJcbiAgICAgICAgW3Jvd0lkZW50aXR5XT1cIiRhbnkocm93SWRlbnRpdHkpXCJcbiAgICAgICAgW3Jvd0NsYXNzXT1cInJvd0NsYXNzXCJcbiAgICAgICAgW3NlbGVjdENoZWNrXT1cInNlbGVjdENoZWNrXCJcbiAgICAgICAgW2Rpc3BsYXlDaGVja109XCIkYW55KGRpc3BsYXlDaGVjaylcIlxuICAgICAgICBbZ3JvdXBFeHBhbnNpb25EZWZhdWx0XT1cImdyb3VwRXhwYW5zaW9uRGVmYXVsdFwiXG4gICAgICAgIFt0cmFja0J5UHJvcF09XCIkYW55KHRyYWNrQnlQcm9wKVwiXG4gICAgICAgIFtzZWxlY3RBbGxSb3dzT25QYWdlXT1cInNlbGVjdEFsbFJvd3NPblBhZ2VcIlxuICAgICAgICBbdHJlZUZyb21SZWxhdGlvbl09XCIkYW55KHRyZWVGcm9tUmVsYXRpb24pXCJcbiAgICAgICAgW3RyZWVUb1JlbGF0aW9uXT1cIiRhbnkodHJlZVRvUmVsYXRpb24pXCJcbiAgICAgICAgW3N1bW1hcnlSb3ddPVwic3VtbWFyeVJvd1wiXG4gICAgICAgIFtzdW1tYXJ5SGVpZ2h0XT1cIiRhbnkoc3VtbWFyeUhlaWdodClcIlxuICAgICAgICBbc3VtbWFyeVBvc2l0aW9uXT1cIiRhbnkoc3VtbWFyeVBvc2l0aW9uKVwiXG4gICAgICAgIFtyb3dzXT1cInJvd3MkIHwgYXN5bmNcIlxuICAgICAgICBbY29sdW1uc109XCIkYW55KGRpc3BsYXlDb2x1bW5zJCB8IGFzeW5jKVwiXG4gICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiJGFueShoZWFkZXJIZWlnaHQpXCJcbiAgICAgICAgW3Jvd0hlaWdodF09XCIkYW55KHJvd0hlaWdodClcIlxuICAgICAgICBbZm9vdGVySGVpZ2h0XT1cIiRhbnkoZm9vdGVySGVpZ2h0KVwiXG4gICAgICAgIChzY3JvbGwpPVwic2Nyb2xsLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChhY3RpdmF0ZSk9XCJhY3RpdmF0ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoc2VsZWN0KT1cInNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgICAgICAoc29ydCk9XCJfb25Tb3J0KCRldmVudClcIlxuICAgICAgICAocGFnZSk9XCJwYWdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZW9yZGVyKT1cIl9vblJlb3JkZXIoJGV2ZW50KVwiXG4gICAgICAgIChyZXNpemUpPVwiX29uUmVzaXplKCRldmVudClcIlxuICAgICAgICAodGFibGVDb250ZXh0bWVudSk9XCJ0YWJsZUNvbnRleHRtZW51LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICh0cmVlQWN0aW9uKT1cInRyZWVBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlYW1FbGVtUmVzaXplZCk9XCJvbkRhdGF0YWJsZVJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgKHRyZWVBY3Rpb24pPVwiX29uVHJlZUFjdGlvbigkZXZlbnQpXCI+XG5cbiAgICAgICAgPG5neC1kYXRhdGFibGUtZ3JvdXAtaGVhZGVyIFtyb3dIZWlnaHRdPVwiNTBcIiAjbXlHcm91cEhlYWRlciAqbmdJZj1cImdyb3VwUm93c0J5XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ncm91cD1cImdyb3VwXCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIiBuZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlci10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBiZy1saWdodCBwLTFcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJvdHRvbV09XCIhZXhwYW5kZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGF0YXRhYmxlLWljb24tcmlnaHRdPVwiIWV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLWRvd25dPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgICB0aXRsZT1cIkV4cGFuZC9Db2xsYXBzZSBHcm91cFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJuZ3hEYXRhdGFibGU/Lmdyb3VwSGVhZGVyPy50b2dnbGVFeHBhbmRHcm91cChncm91cClcIj5cbiAgICAgICAgICAgICAgPGI+QWdlOiB7eyBncm91cC5hZ2UgfX08L2I+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25neC1kYXRhdGFibGUtZ3JvdXAtaGVhZGVyPlxuXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLXJvdy1kZXRhaWwgKm5nSWY9XCJyb3dEZXRhaWwgJiYgcm93RGV0YWlsLnRlbXBsYXRlXCJcbiAgICAgICAgICBbcm93SGVpZ2h0XT1cInJvd0RldGFpbC5yb3dIZWlnaHQgfHwgMFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIiRhbnkocm93RGV0YWlsLnRlbXBsYXRlKVwiXG4gICAgICAgICAgKHRvZ2dsZSk9XCJyb3dEZXRhaWwudG9nZ2xlLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICA8L25neC1kYXRhdGFibGUtcm93LWRldGFpbD5cblxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1mb290ZXIgKm5nSWY9XCJmb290ZXIgJiYgZm9vdGVyLnRlbXBsYXRlXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiJGFueShmb290ZXIudGVtcGxhdGUpXCI+XG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1mb290ZXI+XG4gICAgICA8L25neC1kYXRhdGFibGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYmxhbmtIZWFkZXJUcGwgbmd4LWRhdGF0YWJsZS1oZWFkZXItdGVtcGxhdGU+PC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNoZWFkZXJUcGxcbiAgbmd4LWRhdGF0YWJsZS1oZWFkZXItdGVtcGxhdGVcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gIGxldC1zb3J0Rm49XCJzb3J0Rm5cIlxuPlxuICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmZpbHRlcmFibGVcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgc2VhbUljb25CdG5cbiAgICAgICAgW2ljb25dPVwiY29sdW1uRmlsdGVySWNvblwiXG4gICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgIFtzZWFtUG9wb3Zlcl09XCJmaWx0ZXJNZW51XCJcbiAgICAgICAgW3NlYW1Qb3BvdmVyQmFzZVdpZHRoXT1cIjMwMFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLWNvbHVtbi1oZWFkZXItZmlsdGVyLWJ1dHRvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1yLTJcIlxuICAgICAgICBbY2xhc3MuZGF0YXRhYmxlLWNvbHVtbi1oZWFkZXItZmlsdGVyLWJ1dHRvbi1hY3RpdmVdPVwiY29sdW1uLmZpbHRlckFjdGl2ZVwiXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDFyZW07XCJcbiAgICAgICAgdGl0bGU9XCJDbGljayB0byBzZWUgZmlsdGVyIG9wdGlvbnNcIj48L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3Ryb25nICpuZ0lmPVwiIWNvbHVtbi5zb3J0YWJsZVwiIGNsYXNzPVwiZHJhZ2dhYmxlXCI+e3tjb2x1bW4ubmFtZX19PC9zdHJvbmc+XG4gICAgPGJ1dHRvblxuICAgICAgc2VhbUJ1dHRvblxuICAgICAgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgY2xhc3M9XCJkYXRhdGFibGUtc29ydC10YXJnZXQgZHJhZ2dhYmxlIHAtMFwiXG4gICAgICAoY2xpY2spPVwic29ydEZuKClcIlxuICAgICAgdGl0bGU9XCJDbGljayB0byBzb3J0XCI+XG4gICAgICA8c3Ryb25nPnt7Y29sdW1uLm5hbWV9fTwvc3Ryb25nPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtY29sdW1uLWhlYWRlci1zZXBhcmF0b3JcIiBbYXR0ci5kYXRhLWNvbHVtbi1pZF09XCJjb2x1bW4uJCRpZFwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNmaWx0ZXJNZW51IGxldC1wb3BvdmVyPVwicG9wb3ZlclwiPlxuICAgIDxzZWFtLWRhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLW1lbnVcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFt1cGRhdGVNZXRob2RdPVwiY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kXCJcbiAgICAgIFtkZWJvdW5jZV09XCJjb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZVwiXG4gICAgICAoY2xvc2VQb3BvdmVyKT1cInBvcG92ZXI/LmNsb3NlUG9wb3ZlcigpXCI+PC9zZWFtLWRhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLW1lbnU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NlbGxUeXBlU2VsZWN0b3JUcGwgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlXG4gIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIiBsZXQtcm93PVwicm93XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8c2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3IgKm5nSWY9XCJyb3dcIlxuICAgIFt0eXBlXT1cImNvbHVtbi5jZWxsVHlwZVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgIFtyb3ddPVwicm93XCJcbiAgICBbY29sRGF0YV09XCJjb2x1bW5cIj5cbiAgPC9zZWFtLXRhYmxlLWNlbGwtdHlwZS1zZWxlY3Rvcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0aW9uTWVudUNlbGxUcGwgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlXG4gIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIiBsZXQtcm93PVwicm93XCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdyAmJiByb3dBY3Rpb25JdGVtPy50ZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShyb3dBY3Rpb25JdGVtPy50ZW1wbGF0ZSlcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyZWVUb2dnbGVUcGwgbmd4LWRhdGF0YWJsZS10cmVlLXRvZ2dsZSBsZXQtdHJlZT1cImNlbGxDb250ZXh0XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInAtMCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBidG5cIlxuICAgIFtkaXNhYmxlZF09XCJ0cmVlLnRyZWVTdGF0dXM9PT0nZGlzYWJsZWQnXCJcbiAgICAoY2xpY2spPVwidHJlZS5vblRyZWVBY3Rpb24oKVwiPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2xvYWRpbmcnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFTcGlubmVyXCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInRyZWUudHJlZVN0YXR1cz09PSdjb2xsYXBzZWQnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFDaGV2cm9uUmlnaHRcIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2V4cGFuZGVkJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhQ2hldnJvbkRvd25cIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2Rpc2FibGVkJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhQ2hldnJvblJpZ2h0XCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  export const THESEAM_DATATABLE_CONFIG = new InjectionToken('TheSeamDatatableConfig');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvbW9kZWxzL2RhdGF0YWJsZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXFHL0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXlCLHdCQUF3QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gXCJAdGhlc2VhbS91aS1jb21tb24vaWNvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB7XG4gIC8qKlxuICAgKiBNZXNzYWdlIHRvIHNob3cgd2hlbiBhcnJheSBpcyBwcmVzZW50ZWQsIGJ1dCBjb250YWlucyBubyB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdObyByZWNvcmRzIGZvdW5kJ1xuICAgKi9cbiAgZW1wdHlNZXNzYWdlOiBzdHJpbmdcblxuICAvKipcbiAgICogRm9vdGVyIHRvdGFsIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd0b3RhbCdcbiAgICovXG4gIHRvdGFsTWVzc2FnZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEZvb3RlciBzZWxlY3RlZCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnc2VsZWN0ZWQnXG4gICAqL1xuICBzZWxlY3RlZE1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kID0gJ3ZhbHVlQ2hhbmdlcycgfCAnc3VibWl0J1xuXG4vKipcbiAqIEEgY29uZmlnIG9iamVjdCB0aGF0IGNhbiBiZSBpbmplY3RlZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgcHJvamVjdFxuICogdG8gYXBwbHkgc3BlY2lmaWMgVGhlU2VhbURhdGF0YWJsZSBzZXR0aW5ncyBzaXRlLXdpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZUNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFNlZSBgVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzYC5cbiAgICovXG4gIG1lc3NhZ2VzPzogUGFydGlhbDxUaGVTZWFtRGF0YXRhYmxlTWVzc2FnZXM+IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGhlYWRlciBoZWlnaHQgaW4gcGl4ZWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgaGVhZGVySGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBSb3cgaGVpZ2h0IGluIHBpeGVscywgbmVjZXNzYXJ5IGZvciBjYWxjdWxhdGluZyBzY3JvbGwgaGVpZ2h0LlxuICAgKlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgcm93SGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGZvb3RlciBoZWlnaHQgaW4gcGl4ZWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgZm9vdGVySGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3NlcyBmb3IgdmFyaW91cyBpY29uIGJ1dHRvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0XG4gICAqICAgc29ydEFzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLXVwJyxcbiAgICogICBzb3J0RGVzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLWRvd24nLFxuICAgKiAgIHBhZ2VyTGVmdEFycm93OiAnZGF0YXRhYmxlLWljb24tbGVmdCcsXG4gICAqICAgcGFnZXJSaWdodEFycm93OiAnZGF0YXRhYmxlLWljb24tcmlnaHQnLFxuICAgKiAgIHBhZ2VyUHJldmlvdXM6ICdkYXRhdGFibGUtaWNvbi1wcmV2JyxcbiAgICogICBwYWdlck5leHQ6ICdkYXRhdGFibGUtaWNvbi1za2lwJ1xuICAgKi9cbiAgY3NzQ2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cblxuICAvKipcbiAgICogSWNvbiB0byBkaXNwbGF5IHRvIHRoZSBsZWZ0IG9mIHRoZSBjb2x1bW4gaGVhZGVyXG4gICAqIHdoZW4gYSBjb2x1bW4gaXMgbWFya2VkIFwiZmlsdGVyYWJsZVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYUZpbHRlclxuICAgKi9cbiAgY29sdW1uRmlsdGVySWNvbj86IFNlYW1JY29uXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hhdCBraW5kIG9mIGFjdGlvbiBjYXVzZXMgYSBmaWx0ZXIgY29sdW1uIHRvIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIGB2YWx1ZUNoYW5nZXNgOiBGaWx0ZXIgaXMgYXBwbGllZCBvbiBmb3JtIGB2YWx1ZUNoYW5nZXNgIGV2ZW50LCB3aXRoIGFuIG9wdGlvbmFsIGRlYm91bmNlIHNldCBvbiBgY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VgLlxuICAgKlxuICAgKiBgc3VibWl0YDogRmlsdGVyIGlzIGFwcGxpZWQgb24gZm9ybSBzdWJtaXQuIE5vIGRlYm91bmNlIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidmFsdWVDaGFuZ2VzXCJcbiAgICovXG4gIGNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZD86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2RcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWJvdW5jZSBhIGZpbHRlciBmb3JtIGlucHV0IGJlZm9yZSBhcHBseWluZyB0aGUgZmlsdGVyIGNoYW5nZS5cbiAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gYGNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZGAgaXMgYHZhbHVlQ2hhbmdlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwMFxuICAgKi9cbiAgY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2U/OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUaGVTZWFtRGF0YXRhYmxlQ29uZmlnPignVGhlU2VhbURhdGF0YWJsZUNvbmZpZycpXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvbW9kZWxzL2RhdGF0YWJsZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTZHL0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXlCLHdCQUF3QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gXCJAdGhlc2VhbS91aS1jb21tb24vaWNvblwiO1xuaW1wb3J0IHsgQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uIH0gZnJvbSBcIi4vYWN0aW9uLWl0ZW0tY29sdW1uLXBvc2l0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzIHtcbiAgLyoqXG4gICAqIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIGFycmF5IGlzIHByZXNlbnRlZCwgYnV0IGNvbnRhaW5zIG5vIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ05vIHJlY29yZHMgZm91bmQnXG4gICAqL1xuICBlbXB0eU1lc3NhZ2U6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBGb290ZXIgdG90YWwgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3RvdGFsJ1xuICAgKi9cbiAgdG90YWxNZXNzYWdlOiBzdHJpbmdcblxuICAvKipcbiAgICogRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdzZWxlY3RlZCdcbiAgICovXG4gIHNlbGVjdGVkTWVzc2FnZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2QgPSAndmFsdWVDaGFuZ2VzJyB8ICdzdWJtaXQnXG5cbi8qKlxuICogQSBjb25maWcgb2JqZWN0IHRoYXQgY2FuIGJlIGluamVjdGVkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBwcm9qZWN0XG4gKiB0byBhcHBseSBzcGVjaWZpYyBUaGVTZWFtRGF0YXRhYmxlIHNldHRpbmdzIHNpdGUtd2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlQ29uZmlnIHtcblxuICAvKipcbiAgICogU2VlIGBUaGVTZWFtRGF0YXRhYmxlTWVzc2FnZXNgLlxuICAgKi9cbiAgbWVzc2FnZXM/OiBQYXJ0aWFsPFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcz4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqXG4gICAqIE1pbmltdW0gaGVhZGVyIGhlaWdodCBpbiBwaXhlbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwXG4gICAqL1xuICBoZWFkZXJIZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqXG4gICAqIFJvdyBoZWlnaHQgaW4gcGl4ZWxzLCBuZWNlc3NhcnkgZm9yIGNhbGN1bGF0aW5nIHNjcm9sbCBoZWlnaHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwXG4gICAqL1xuICByb3dIZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqXG4gICAqIE1pbmltdW0gZm9vdGVyIGhlaWdodCBpbiBwaXhlbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBmb290ZXJIZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqXG4gICAqIENTUyBjbGFzc2VzIGZvciB2YXJpb3VzIGljb24gYnV0dG9ucy5cbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICogICBzb3J0QXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tdXAnLFxuICAgKiAgIHNvcnREZXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tZG93bicsXG4gICAqICAgcGFnZXJMZWZ0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1sZWZ0JyxcbiAgICogICBwYWdlclJpZ2h0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1yaWdodCcsXG4gICAqICAgcGFnZXJQcmV2aW91czogJ2RhdGF0YWJsZS1pY29uLXByZXYnLFxuICAgKiAgIHBhZ2VyTmV4dDogJ2RhdGF0YWJsZS1pY29uLXNraXAnXG4gICAqL1xuICBjc3NDbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuXG4gIC8qKlxuICAgKiBJY29uIHRvIGRpc3BsYXkgdG8gdGhlIGxlZnQgb2YgdGhlIGNvbHVtbiBoZWFkZXJcbiAgICogd2hlbiBhIGNvbHVtbiBpcyBtYXJrZWQgXCJmaWx0ZXJhYmxlXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhRmlsdGVyXG4gICAqL1xuICBjb2x1bW5GaWx0ZXJJY29uPzogU2VhbUljb25cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGF0IGtpbmQgb2YgYWN0aW9uIGNhdXNlcyBhIGZpbHRlciBjb2x1bW4gdG8gYmUgYXBwbGllZC5cbiAgICpcbiAgICogYHZhbHVlQ2hhbmdlc2A6IEZpbHRlciBpcyBhcHBsaWVkIG9uIGZvcm0gYHZhbHVlQ2hhbmdlc2AgZXZlbnQsIHdpdGggYW4gb3B0aW9uYWwgZGVib3VuY2Ugc2V0IG9uIGBjb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZWAuXG4gICAqXG4gICAqIGBzdWJtaXRgOiBGaWx0ZXIgaXMgYXBwbGllZCBvbiBmb3JtIHN1Ym1pdC4gTm8gZGVib3VuY2UgaXMgYXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ2YWx1ZUNoYW5nZXNcIlxuICAgKi9cbiAgY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kPzogVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZFxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlYm91bmNlIGEgZmlsdGVyIGZvcm0gaW5wdXQgYmVmb3JlIGFwcGx5aW5nIHRoZSBmaWx0ZXIgY2hhbmdlLlxuICAgKiBPbmx5IGFwcGxpY2FibGUgd2hlbiBgY29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kYCBpcyBgdmFsdWVDaGFuZ2VzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgNDAwXG4gICAqL1xuICBjb2x1bW5GaWx0ZXJVcGRhdGVEZWJvdW5jZT86IG51bWJlclxuXG4gIC8qKlxuICAgKiBTZXRzIHBvc2l0aW9uIGJlaGF2aW9yIGZvciBvcHRpb25hbCBBY3Rpb24gTWVudSBCdXR0b24gY29sdW1uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmcm96ZW5SaWdodFxuICAgKi9cbiAgYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uPzogQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uXG59XG5cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0RBVEFUQUJMRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGhlU2VhbURhdGF0YWJsZUNvbmZpZz4oJ1RoZVNlYW1EYXRhdGFibGVDb25maWcnKVxuIl19
@@ -2260,9 +2260,16 @@ class DatatableComponent {
2260
2260
  */
2261
2261
  get actionItemColumnPosition() { return this._actionItemColumnPosition; }
2262
2262
  set actionItemColumnPosition(value) {
2263
- if (value && isActionItemColumnPosition(value)) {
2263
+ var _a, _b, _c;
2264
+ if (notNullOrUndefined(value) && isActionItemColumnPosition(value)) {
2264
2265
  this._actionItemColumnPosition = value;
2265
2266
  }
2267
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.actionItemColumnPosition) && isActionItemColumnPosition((_b = this._config) === null || _b === void 0 ? void 0 : _b.actionItemColumnPosition)) {
2268
+ this._actionItemColumnPosition = (_c = this._config) === null || _c === void 0 ? void 0 : _c.actionItemColumnPosition;
2269
+ }
2270
+ else {
2271
+ this._actionItemColumnPosition = this._actionItemColumnPositionDefault;
2272
+ }
2266
2273
  this._columnsManager.setActionItemColumnPosition(this._actionItemColumnPosition);
2267
2274
  }
2268
2275
  get columnFilterIcon() {
@@ -2439,7 +2446,7 @@ class DatatableComponent {
2439
2446
  this._footerHeightDefault = 40;
2440
2447
  this.scrollbarV = true;
2441
2448
  this.scrollbarH = true;
2442
- this._actionItemColumnPosition = 'frozenRight';
2449
+ this._actionItemColumnPositionDefault = 'frozenRight';
2443
2450
  this._columnFilterIconDefault = faFilter;
2444
2451
  this._columnFilterUpdateMethodDefault = 'valueChanges';
2445
2452
  this._columnFilterUpdateDebounceDefault = 400;
@@ -2573,6 +2580,9 @@ class DatatableComponent {
2573
2580
  if (isNullOrUndefined(this.columnFilterUpdateDebounce)) {
2574
2581
  this.columnFilterUpdateDebounce = undefined;
2575
2582
  }
2583
+ if (isNullOrUndefined(this.actionItemColumnPosition)) {
2584
+ this.actionItemColumnPosition = undefined;
2585
+ }
2576
2586
  }
2577
2587
  ngOnDestroy() {
2578
2588
  this._rowDetailToggleSubscription.unsubscribe();