@senior-gestao-pessoas/payroll-core 9.4.0-a9314477-d301-4380-b67e-31e2d2abb4e5 → 9.4.0-af2cbed0-5ed8-4fa0-b302-d4f7bfe8c238

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.
@@ -35,6 +35,7 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
35
35
  private historicalPixAccountList;
36
36
  private orderBy;
37
37
  private _visible;
38
+ enableAction: boolean;
38
39
  pixAccountItemInput: object;
39
40
  totalRecords: number;
40
41
  actionLabel: string;
@@ -21,6 +21,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
21
21
  keyPayload: string;
22
22
  withSidebar: boolean;
23
23
  isOnlyView: EventEmitter<any>;
24
+ isOnlyEdit: EventEmitter<any>;
24
25
  enableView: EventEmitter<any>;
25
26
  private lastRecord;
26
27
  private ngUnsubscribe;
@@ -36,7 +37,6 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
36
37
  ngOnDestroy(): void;
37
38
  ngAfterViewInit(): void;
38
39
  onLazyLoad(payload: any): void;
39
- private formatPixKeyByType;
40
40
  getMenuActions(rowData: any): {
41
41
  label: any;
42
42
  command: () => void;
@@ -48,6 +48,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
48
48
  private readonly isAllowToAddHistorical;
49
49
  private readonly isAllowToDeleteHistorical;
50
50
  private readonly isAllowToViewHistorical;
51
+ private readonly isAllowToEditHistorical;
51
52
  readonly scopedActions: any;
52
53
  reloadList: boolean;
53
54
  }
@@ -31,6 +31,7 @@ let HistoricalPixAccountComponent = class HistoricalPixAccountComponent {
31
31
  field: "dateChange",
32
32
  direction: DirectionEnumeration.DESC,
33
33
  };
34
+ this.enableAction = true;
34
35
  this.pixAccountItemInput = {};
35
36
  this.totalRecords = 0;
36
37
  this.actionLabel = this.translateService.instant("hcm.payroll.entries_query_actions_total_title");
@@ -109,6 +110,9 @@ let HistoricalPixAccountComponent = class HistoricalPixAccountComponent {
109
110
  }
110
111
  ngOnInit() {
111
112
  this.formGroup.setControl(this.fieldFormGroup, this.historicalPixAccountList);
113
+ if (!this.isViewMode) {
114
+ this.enableAction = false;
115
+ }
112
116
  }
113
117
  ngOnChanges(changes) {
114
118
  if (changes['listDataReciever'] && changes['listDataReciever'].currentValue) {
@@ -390,9 +394,9 @@ HistoricalPixAccountComponent = tslib_1.__decorate([
390
394
  Component({
391
395
  // tslint:disable-next-line:component-selector
392
396
  selector: "c-historical-pix-account",
393
- template: "<s-sidebar *ngIf=\"withSideBar\" [visible]=\"visible\" (visibleChange)=\"close()\"\n header=\"{{'hcm.payroll.historical_pix_account_title_form'|translate}}\">\n<pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</s-sidebar>\n\n<div *ngIf=\"!withSideBar\">\n <pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [withSideBar]=\"false\"\n [isViewMode]=\"isViewMode\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</div>\n\n<div class=\"ui-g-1\" *ngIf=\"withSideBar && !isEditMode\">\n <div class=\"form-group \">\n <s-button id=\"ta-addPayAnnuity\"\n [disabled]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n (onClick)=\"add()\"\n [pTooltip]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n tooltipPosition=\"top\"\n label=\"{{'hcm.payroll.historical_pix_account_add'|translate}}\"></s-button>\n </div>\n</div>\n<div class=\"ui-g-12\">\n <p-table\n id=\"table-annuity\"\n [value]=\"listData\"\n [columns]=\"cols\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [sortMode]=\"'multiple'\"\n *sLoadingState=\"loading\"\n [rows]=\"recordByRow\"\n dataKey=\"id\">\n <ng-template pTemplate=\"colgroup\" let-coumns>\n <colgroup>\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-s'\">\n <col [ngClass]=\"'col-action'\">\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <!-- Cabe\u00E7alhos quando da table \u00E9 permitido ordenar as colunas -->\n <tr>\n <!-- Cabe\u00E7alhos das colunas da tabela -->\n <th\n [pSortableColumn]=\"'pixKeyType'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\" id=\"table-0\">\n <span\n id=\"table-annuity-s-0\">{{ 'hcm.payroll.employees_addition_pix_key_type' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'pixKey'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.employees_addition_pix_key' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'percentage'\"\n [pTooltip]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.historical_pix_account_label_percentage' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"></p-sortIcon>\n </div>\n </th>\n <!-- Cabe\u00E7alho da coluna de a\u00E7\u00F5es -->\n <th id=\"col-actions\"></th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-key=\"rowIndex\">\n\n <tr [ngClass]=\"'row'+key\" [pSelectableRow]=\"rowData\">\n <td [pTooltip]=\"rowData?.pixKeyType.value\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKeyType.value }}</span>\n </td>\n\n <ng-container [ngSwitch]=\"rowData?.pixKeyType.key\">\n <td *ngSwitchCase=\"'TELEPHONE'\"\n [pTooltip]=\"getFormattedTelephoneNumber(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedTelephoneNumber(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CPF'\"\n [pTooltip]=\"getFormattedCpf(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCpf(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CNPJ'\"\n [pTooltip]=\"getFormattedCnpj(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCnpj(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchDefault\n [pTooltip]=\"rowData?.pixKey\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKey }}</span>\n </td>\n </ng-container>\n <td [pTooltip]=\"getFormattedPercentage(rowData?.percentage)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedPercentage(rowData?.percentage) }}</span>\n </td>\n <td id=\"col-actions-{{key}}\" class=\"col-actions \"\n *ngIf=\"actions && actions(rowData, key)?.length\">\n <s-button id=\"table-admission-btn-actions-{{key}}\"\n *ngIf=\"actions(rowData, key).length > 1\" [label]=\"actionLabel\"\n priority=\"default\" [model]=\"scopedActions(rowData, key)\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n\n <s-button id=\"table-admission-btn-action-{{key}}\"\n *ngIf=\"actions(rowData, key).length <= 1\"\n [label]=\"scopedActions(rowData, key)[0].label\"\n priority=\"default\"\n (click)=\"scopedActions(rowData, key)[0].command()\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length +2\">\n {{'hcm.payroll.admission_empty_message'|translate}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span *ngIf=\"totalRecords\">{{recordsMessage}}</span>\n </ng-template>\n </p-table>\n</div>\n",
397
+ template: "<s-sidebar *ngIf=\"withSideBar\" [visible]=\"visible\" (visibleChange)=\"close()\"\n header=\"{{'hcm.payroll.historical_pix_account_title_form'|translate}}\">\n<pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</s-sidebar>\n\n<div *ngIf=\"!withSideBar\">\n <pix-account [(visible)]=\"visible\"\n [isEditAndViewValue]=\"pixAccountItemInput\"\n [currency]=\"currency\"\n [customEntity]=\"customEntity\"\n [customService]=\"customService\"\n [getListPixAccount]=\"listDataNoPage\"\n [withSideBar]=\"false\"\n [isViewMode]=\"isViewMode\"\n [paramsForm]=\"paramsForm\"\n (pixAccountItemToList)=\"addItemInList($event)\"\n [defaultCpfNumber]=\"defaultCpfNumber\"></pix-account>\n</div>\n\n<div class=\"ui-g-1\" *ngIf=\"withSideBar && !isEditMode\">\n <div class=\"form-group \">\n <s-button id=\"ta-addPayAnnuity\"\n [disabled]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n (onClick)=\"add()\"\n [pTooltip]=\"getTooltipAndDisableButtonAdd || msgTotalLimitByPercentage\"\n tooltipPosition=\"top\"\n label=\"{{'hcm.payroll.historical_pix_account_add'|translate}}\"></s-button>\n </div>\n</div>\n<div class=\"ui-g-12\">\n <p-table\n id=\"table-annuity\"\n [value]=\"listData\"\n [columns]=\"cols\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [sortMode]=\"'multiple'\"\n *sLoadingState=\"loading\"\n [rows]=\"recordByRow\"\n dataKey=\"id\">\n <ng-template pTemplate=\"colgroup\" let-coumns>\n <colgroup>\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-m'\">\n <col [ngClass]=\"'col-default-s'\">\n <col [ngClass]=\"'col-action'\">\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <!-- Cabe\u00E7alhos quando da table \u00E9 permitido ordenar as colunas -->\n <tr>\n <!-- Cabe\u00E7alhos das colunas da tabela -->\n <th\n [pSortableColumn]=\"'pixKeyType'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\" id=\"table-0\">\n <span\n id=\"table-annuity-s-0\">{{ 'hcm.payroll.employees_addition_pix_key_type' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key_type' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'pixKey'\"\n [pTooltip]=\"'hcm.payroll.employees_addition_pix_key' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.employees_addition_pix_key' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.employees_addition_pix_key' | translate\"></p-sortIcon>\n </div>\n </th>\n\n <th\n [pSortableColumn]=\"'percentage'\"\n [pTooltip]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n <div class=\"senior-header\">\n <span>{{ 'hcm.payroll.historical_pix_account_label_percentage' | translate }}</span>\n <p-sortIcon class=\"p-sorticon-status\"\n [field]=\"'hcm.payroll.historical_pix_account_label_percentage' | translate\"></p-sortIcon>\n </div>\n </th>\n <!-- Cabe\u00E7alho da coluna de a\u00E7\u00F5es -->\n <th id=\"col-actions\"></th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-key=\"rowIndex\">\n\n <tr [ngClass]=\"'row'+key\" [pSelectableRow]=\"rowData\">\n <td [pTooltip]=\"rowData?.pixKeyType.value\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKeyType.value }}</span>\n </td>\n\n <ng-container [ngSwitch]=\"rowData?.pixKeyType.key\">\n <td *ngSwitchCase=\"'TELEPHONE'\"\n [pTooltip]=\"getFormattedTelephoneNumber(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedTelephoneNumber(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CPF'\"\n [pTooltip]=\"getFormattedCpf(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCpf(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchCase=\"'CNPJ'\"\n [pTooltip]=\"getFormattedCnpj(rowData?.pixKey)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedCnpj(rowData?.pixKey) }}</span>\n </td>\n <td *ngSwitchDefault\n [pTooltip]=\"rowData?.pixKey\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ rowData?.pixKey }}</span>\n </td>\n </ng-container>\n <td [pTooltip]=\"getFormattedPercentage(rowData?.percentage)\" tooltipPosition=\"top\"\n showDelay=\"500\">\n <span>{{ getFormattedPercentage(rowData?.percentage) }}</span>\n </td>\n <td id=\"col-actions-{{key}}\" class=\"col-actions \"\n *ngIf=\"actions && actions(rowData, key)?.length\">\n <s-button id=\"table-admission-btn-actions-{{key}}\"\n *ngIf=\"!isViewMode && actions(rowData, key).length > 1\" [label]=\"actionLabel\"\n priority=\"default\" [model]=\"scopedActions(rowData, key)\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n\n <s-button id=\"table-admission-btn-action-{{key}}\"\n *ngIf=\"!isViewMode && actions(rowData, key).length <= 1\"\n [label]=\"scopedActions(rowData, key)[0].label\"\n priority=\"default\"\n (click)=\"scopedActions(rowData, key)[0].command()\"\n [disabled]=\"false\" [auxiliary]=\"true\"></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length +2\">\n {{'hcm.payroll.admission_empty_message'|translate}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span *ngIf=\"totalRecords\">{{recordsMessage}}</span>\n </ng-template>\n </p-table>\n</div>\n",
394
398
  styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}"]
395
399
  })
396
400
  ], HistoricalPixAccountComponent);
397
401
  export { HistoricalPixAccountComponent };
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxhQUFhLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUTdDLElBQWEsNkJBQTZCLEdBQTFDLE1BQWEsNkJBQTZCO0lBaUl0QyxZQUNZLGdCQUFrQyxFQUNsQyxFQUFxQixFQUNyQixXQUF3QixFQUN4QixjQUE4QjtRQUg5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FB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UDtBQVVEO0lBREMsS0FBSyxFQUFFO2dFQU1QO0FBR0Q7SUFEQyxLQUFLLEVBQUU7NERBR1A7QUFuVlEsNkJBQTZCO0lBTnpDLFNBQVMsQ0FBQztRQUNQLDhDQUE4QztRQUM5QyxRQUFRLEVBQUUsMEJBQTBCO1FBQ3BDLDRyUUFBc0Q7O0tBRXpELENBQUM7R0FDVyw2QkFBNkIsQ0FvWXpDO1NBcFlZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgSW5wdXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRzQ29tcG9uZW50LCBOdW1iZXJMb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IGNvbXBhcmVWYWx1ZXMsIGlzVmFsaWQsIG1vdW50Q3VzdG9tVG9TYXZlIH0gZnJvbSBcIi4uL3V0aWxzL2hlbHBlcnNcIjtcbmltcG9ydCB7IERpcmVjdGlvbkVudW1lcmF0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bXNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcblxuQENvbXBvbmVudCh7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiBcImMtaGlzdG9yaWNhbC1waXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBIaXN0b3JpY2FsUGl4QWNjb3VudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoQ3VzdG9tRmllbGRzQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZHNDb21wb25lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmllbGRGb3JtR3JvdXA6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBfZGF0ZUNoYW5nZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIF9kaXNwbGF5RGF0ZUNoYW5nZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlY29yZEJ5Um93OiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEYXRlQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXNnVG9vbHRpcEFkZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc1ZpZXdNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVuY3k6IE51bWJlckxvY2FsZU9wdGlvbnM7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tRW50aXR5OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tU2VydmljZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpdGhTaWRlQmFyOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJhbXNGb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVmYXVsdENwZk51bWJlcjogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwZXJtaXNzaW9uOiBvYmplY3Q7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGlzdERhdGFSZWNpZXZlcjogYW55W10gPSBbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc1ZpZXdNb2RlQWN0aXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZUFjdGl2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzRGVsZXRlTW9kZUFjdGl2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGxpc3RGcm9tQXBwOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBoaXN0b3JpY2FsUGl4QWNjb3VudExpc3Q6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIG9yZGVyQnk6IHsgZmllbGQ6IHN0cmluZzsgZGlyZWN0aW9uOiBEaXJlY3Rpb25FbnVtZXJhdGlvbiB9ID0ge1xuICAgICAgICBmaWVsZDogXCJkYXRlQ2hhbmdlXCIsXG4gICAgICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgcGl4QWNjb3VudEl0ZW1JbnB1dDogb2JqZWN0ID0ge307XG4gICAgcHVibGljIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgYWN0aW9uTGFiZWw6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW50cmllc19xdWVyeV9hY3Rpb25zX3RvdGFsX3RpdGxlXCIpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1ldGVyczogYW55O1xuICAgIHB1YmxpYyBtc2dUb3RhbExpbWl0QnlQZXJjZW50YWdlOiBzdHJpbmc7XG4gICAgcHVibGljIGxpc3REYXRhOiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBsaXN0RGF0YU5vUGFnZTogb2JqZWN0W10gPSBbXTtcbiAgICBwdWJsaWMgY29scyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlfdHlwZVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVR5cGVcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZGl0aW9uX3BpeF9rZXlcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9wZXJjZW50YWdlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGVyY2VudGFnZVwiLFxuICAgICAgICB9LFxuICAgIF07XG4gICAgYWN0aW9ucyA9IChyb3dEYXRhOiBhbnkgPSB7fSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLmlzRWRpdE1vZGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2ltYWdlX2Nyb3BwZXJfdmlld1wiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhW1wiaW5kZXhcIl0gPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7IGN1cnJlbnRJdGVtOiByb3dEYXRhLCBsaXN0RGF0YTogdGhpcy5saXN0RGF0YU5vUGFnZSwgaXNFZGl0TW9kZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmlld01vZGVBY3RpdmUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICEhKCF0aGlzLmlzRWRpdE1vZGUgJiYgdGhpcy53aXRoU2lkZUJhciksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZWRpdFwiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dUb0VkaXRIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhW1wiaW5kZXhcIl0gPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7IGN1cnJlbnRJdGVtOiByb3dEYXRhLCBsaXN0RGF0YTogdGhpcy5saXN0RGF0YU5vUGFnZSwgaXNFZGl0TW9kZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZUFjdGl2ZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdEZyb21BcHAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhW1wiaW5kZXhcIl0gPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0geyBjdXJyZW50SXRlbTogcm93RGF0YSwgbGlzdERhdGE6IHRoaXMubGlzdERhdGFOb1BhZ2UsIGlzRWRpdE1vZGU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIXRoaXMuaXNFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5kZWxldGVcIiksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbm51aXR5SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RlbGV0ZU1vZGVBY3RpdmUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RGcm9tQXBwLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFubnVpdHlJdGVtKGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKHRoaXMuZmllbGRGb3JtR3JvdXAsIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydsaXN0RGF0YVJlY2lldmVyJ10gJiYgY2hhbmdlc1snbGlzdERhdGFSZWNpZXZlciddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5saXN0RnJvbUFwcCA9IGNoYW5nZXNbJ2xpc3REYXRhUmVjaWV2ZXInXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYXp5TG9hZChldmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaXJzdCA9IGV2ZW50ICYmIGV2ZW50LmZpcnN0ID8gZXZlbnQuZmlyc3QgOiAwO1xuICAgICAgICBjb25zdCByb3dzID0gZXZlbnQgJiYgZXZlbnQucm93cyA/IGV2ZW50LnJvd3MgOiB0aGlzLnJlY29yZEJ5Um93O1xuICAgICAgICBjb25zdCBhcnJMaXN0ID0gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKTtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50Lm11bHRpU29ydE1ldGEgJiYgZXZlbnQubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmZpZWxkID0gdmFsdWUuZmllbGQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbiA9IHZhbHVlLm9yZGVyID09PSAxID8gRGlyZWN0aW9uRW51bWVyYXRpb24uQVNDIDogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gYXJyTGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gYXJyTGlzdDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbLi4uYXJyTGlzdF07XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSB0aGlzLmxpc3REYXRhLnNsaWNlKGZpcnN0LCAoZmlyc3QgKyByb3dzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhTm9QYWdlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlIHx8IGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENzc0luSUUxMSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbSBCdWcgZGUgQ1NTIHF1ZSBhY29udGVjZSBuYXMgbGluaGFzIGRhIHRhYmVsYSwgcXVlIHJlc29sdmUgc8OzIGF0dWFsaXphbmRvIHF1YWxxdWVyIHBhcnRlIGRvIENTUyBkYSBwYWdpbmEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWZyZXNoQ3NzSW5JRTExKCkge1xuICAgICAgICBpZiAoL21zaWVcXHN8dHJpZGVudFxcL3xlZGdlXFwvL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm93MFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocm93ICYmIHJvd1swXSlcbiAgICAgICAgICAgICAgICAgICAgcm93WzBdLmNsYXNzTmFtZSA9ICdyZWZyZXNoJztcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0ge307XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05vdEFsbG93TWVzc2FnZSgpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwucGVybWlzc2lvbl9lcnJvcl9ub3RfYWxsb3dlZFwiKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBbm51aXR5SXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdsaXN0ID0gWy4uLnRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCldO1xuICAgICAgICBuZXdsaXN0LnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgZGVsZXRlIG5ld2xpc3RbaW5kZXhdO1xuICAgICAgICBuZXdsaXN0ID0gbmV3bGlzdC5maWx0ZXIodmFsID0+IHZhbCk7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdsaXN0KTtcbiAgICAgICAgdGhpcy52ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTtcbiAgICAgICAgdGhpcy5vbkxhenlMb2FkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpOiBvYmplY3RbXSB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiZcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiYgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW1Jbkxpc3QoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZXZlbnQgJiYgJGV2ZW50LmluZGV4ID49IDAgPyAkZXZlbnQuaW5kZXggOiBudWxsO1xuICAgICAgICBjb25zdCBuZXdEYXRhTGlzdCA9IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgPyB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpIDogW107XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld0RhdGFMaXN0W2luZGV4XSA9ICRldmVudDtcbiAgICAgICAgICAgIGRlbGV0ZSAkZXZlbnQuaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pICYmIE9iamVjdC5rZXlzKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tVmFsdWUgPSBtb3VudEN1c3RvbVRvU2F2ZSgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICAgICAgICAgICRldmVudFtcImN1c3RvbUZpZWxkc1wiXSA9IFsuLi5jdXN0b21WYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZXZlbnRbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5kYXRlQ2hhbmdlO1xuICAgICAgICAgICAgbmV3RGF0YUxpc3QucHVzaCgkZXZlbnQpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdEYXRhTGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCh7IGZpcnN0OiB0aGlzLmdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4LCBuZXdEYXRhTGlzdCkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJQYWdlQnlJbmRleChpbmRleDogbnVtYmVyLCBsaXN0OiBvYmplY3RbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMucmVjb3JkQnlSb3cgLSAxO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucmVjb3JkQnlSb3cpICogdGhpcy5yZWNvcmRCeVJvdyAtIHN1YiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuICAgICAgICBjb25zdCBhcnJheVBlcmNlbnRhZ2U6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuXG4gICAgICAgIGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFycmF5UGVyY2VudGFnZS5wdXNoKGl0ZW0gJiYgaXRlbVtcInBlcmNlbnRhZ2VcIl0pKTtcblxuICAgICAgICBjb25zdCBzdW1QZXJjZW50YWdlID0gYXJyYXlQZXJjZW50YWdlLnJlZHVjZSgodG90YWw6IG51bWJlciwgcGVyY2VudGFnZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBwZXJjZW50YWdlO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoc3VtUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbXNnX2xpbWl0X3RvdGFsX2J5X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjb3BlZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlY29yZHNNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gYCR7IHRoaXMudG90YWxSZWNvcmRzIHx8IDAgfSAkeyB0aGlzLnRvdGFsUmVjb3JkcyA9PT0gMSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuYWRtaXNzaW9uX3JlZ2lzdGVyXCIpIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJzXCIpIH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0VG9vbHRpcEFuZERpc2FibGVCdXR0b25BZGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVDaGFuZ2UgPyBudWxsIDogdGhpcy5tc2dUb29sdGlwQWRkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGF0ZUNoYW5nZVwiXSA9IHRoaXMuX2RhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRpc3BsYXlEYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLmZpbHRlcigocm93OiBhbnkpID0+IHJvd1tcImRpc3BsYXlEYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZExpc3REYXRhKGxpc3Q6IG9iamVjdFtdKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5wYXRjaFZhbHVlKGxpc3QpO1xuICAgICAgICB0aGlzLnZlcmlmeVRvdGFsUGVyY2VudGFnZSgpO1xuICAgICAgICB0aGlzLm9uTGF6eUxvYWQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ3BmKGNwZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYoY3BmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZENucGooY25waik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkUGVyY2VudGFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvQWRkSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImluY2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZXhjbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0VkaXRIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZWRpdGFyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvVmlld0hpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJ2aXN1YWxpemFyXCJdXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaGlzdG9yaWNhbC1waXgtYWNjb3VudC9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxhQUFhLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUTdDLElBQWEsNkJBQTZCLEdBQTFDLE1BQWEsNkJBQTZCO0lBa0l0QyxZQUNZLGdCQUFrQyxFQUNsQyxFQUFxQixFQUNyQixXQUF3QixFQUN4QixjQUE4QjtRQUg5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FB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RTtJQURDLE1BQU0sRUFBRTt1RUFDZ0U7QUFFekU7SUFEQyxNQUFNLEVBQUU7eUVBQ2tFO0FBMFEzRTtJQURDLEtBQUssRUFBRTsrREFHUDtBQVVEO0lBREMsS0FBSyxFQUFFO3NFQUdQO0FBVUQ7SUFEQyxLQUFLLEVBQUU7Z0VBTVA7QUFHRDtJQURDLEtBQUssRUFBRTs0REFHUDtBQXZWUSw2QkFBNkI7SUFOekMsU0FBUyxDQUFDO1FBQ1AsOENBQThDO1FBQzlDLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsMnRRQUFzRDs7S0FFekQsQ0FBQztHQUNXLDZCQUE2QixDQXdZekM7U0F4WVksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgY29tcGFyZVZhbHVlcywgaXNWYWxpZCwgbW91bnRDdXN0b21Ub1NhdmUgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgRGlyZWN0aW9uRW51bWVyYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb3JtYXRVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0LXV0aWxzL2Zvcm1hdC11dGlscy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6IFwiYy1oaXN0b3JpY2FsLXBpeC1hY2NvdW50XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZEZvcm1Hcm91cDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIF9kYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgX2Rpc3BsYXlEYXRlQ2hhbmdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVjb3JkQnlSb3c6IG51bWJlciA9IDE7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0RhdGVDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtc2dUb29sdGlwQWRkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzVmlld01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXJyZW5jeTogTnVtYmVyTG9jYWxlT3B0aW9ucztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FbnRpdHk6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21TZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGVCYXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0Q3BmTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pc3Npb246IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsaXN0RGF0YVJlY2lldmVyOiBhbnlbXSA9IFtdO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzVmlld01vZGVBY3RpdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc0VkaXRNb2RlQWN0aXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNEZWxldGVNb2RlQWN0aXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgbGlzdEZyb21BcHA6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogRm9ybUdyb3VwO1xuICAgIHByaXZhdGUgb3JkZXJCeTogeyBmaWVsZDogc3RyaW5nOyBkaXJlY3Rpb246IERpcmVjdGlvbkVudW1lcmF0aW9uIH0gPSB7XG4gICAgICAgIGZpZWxkOiBcImRhdGVDaGFuZ2VcIixcbiAgICAgICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25FbnVtZXJhdGlvbi5ERVNDLFxuICAgIH07XG5cbiAgICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuO1xuICAgIHB1YmxpYyBlbmFibGVBY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbUlucHV0OiBvYmplY3QgPSB7fTtcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3Rpb25MYWJlbDogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbnRyaWVzX3F1ZXJ5X2FjdGlvbnNfdG90YWxfdGl0bGVcIik7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XG4gICAgcHVibGljIG1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2U6IHN0cmluZztcbiAgICBwdWJsaWMgbGlzdERhdGE6IG9iamVjdFtdID0gW107XG4gICAgcHVibGljIGxpc3REYXRhTm9QYWdlOiBvYmplY3RbXSA9IFtdO1xuICAgIHB1YmxpYyBjb2xzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkaXRpb25fcGl4X2tleV90eXBlXCIpLFxuICAgICAgICAgICAgZmllbGQ6IFwicGl4S2V5VHlwZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkaXRpb25fcGl4X2tleVwiKSxcbiAgICAgICAgICAgIGZpZWxkOiBcInBpeEtleVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2xhYmVsX3BlcmNlbnRhZ2VcIiksXG4gICAgICAgICAgICBmaWVsZDogXCJwZXJjZW50YWdlXCIsXG4gICAgICAgIH0sXG4gICAgXTtcbiAgICBhY3Rpb25zID0gKHJvd0RhdGE6IGFueSA9IHt9LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMuaXNFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfaW1hZ2VfY3JvcHBlcl92aWV3XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvVmlld0hpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbXCJpbmRleFwiXSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHsgY3VycmVudEl0ZW06IHJvd0RhdGEsIGxpc3REYXRhOiB0aGlzLmxpc3REYXRhTm9QYWdlLCBpc0VkaXRNb2RlOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNWaWV3TW9kZUFjdGl2ZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogISEoIXRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLndpdGhTaWRlQmFyKSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lZGl0XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRWRpdEhpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbXCJpbmRleFwiXSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1JbnB1dCA9IHsgY3VycmVudEl0ZW06IHJvd0RhdGEsIGxpc3REYXRhOiB0aGlzLmxpc3REYXRhTm9QYWdlLCBpc0VkaXRNb2RlOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VkaXRNb2RlQWN0aXZlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0RnJvbUFwcC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbXCJpbmRleFwiXSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtSW5wdXQgPSB7IGN1cnJlbnRJdGVtOiByb3dEYXRhLCBsaXN0RGF0YTogdGhpcy5saXN0RGF0YU5vUGFnZSwgaXNFZGl0TW9kZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5pc0VkaXRNb2RlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmRlbGV0ZVwiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dUb0RlbGV0ZUhpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFubnVpdHlJdGVtKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGVsZXRlTW9kZUFjdGl2ZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdEZyb21BcHAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQW5udWl0eUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnNldENvbnRyb2wodGhpcy5maWVsZEZvcm1Hcm91cCwgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QpO1xuICAgICAgICBpZighdGhpcy5pc1ZpZXdNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFjdGlvbiA9ZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydsaXN0RGF0YVJlY2lldmVyJ10gJiYgY2hhbmdlc1snbGlzdERhdGFSZWNpZXZlciddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5saXN0RnJvbUFwcCA9IGNoYW5nZXNbJ2xpc3REYXRhUmVjaWV2ZXInXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGhpc3RvcmljYWxQaXhBY2NvdW50TGlzdDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYXp5TG9hZChldmVudD86IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaXJzdCA9IGV2ZW50ICYmIGV2ZW50LmZpcnN0ID8gZXZlbnQuZmlyc3QgOiAwO1xuICAgICAgICBjb25zdCByb3dzID0gZXZlbnQgJiYgZXZlbnQucm93cyA/IGV2ZW50LnJvd3MgOiB0aGlzLnJlY29yZEJ5Um93O1xuICAgICAgICBjb25zdCBhcnJMaXN0ID0gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKTtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50Lm11bHRpU29ydE1ldGEgJiYgZXZlbnQubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmZpZWxkID0gdmFsdWUuZmllbGQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckJ5LmRpcmVjdGlvbiA9IHZhbHVlLm9yZGVyID09PSAxID8gRGlyZWN0aW9uRW51bWVyYXRpb24uQVNDIDogRGlyZWN0aW9uRW51bWVyYXRpb24uREVTQztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gYXJyTGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gYXJyTGlzdDtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFOb1BhZ2UgPSBbLi4uYXJyTGlzdF07XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSB0aGlzLmxpc3REYXRhLnNsaWNlKGZpcnN0LCAoZmlyc3QgKyByb3dzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhTm9QYWdlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlIHx8IGFyckxpc3QgJiYgYXJyTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENzc0luSUUxMSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbSBCdWcgZGUgQ1NTIHF1ZSBhY29udGVjZSBuYXMgbGluaGFzIGRhIHRhYmVsYSwgcXVlIHJlc29sdmUgc8OzIGF0dWFsaXphbmRvIHF1YWxxdWVyIHBhcnRlIGRvIENTUyBkYSBwYWdpbmEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWZyZXNoQ3NzSW5JRTExKCkge1xuICAgICAgICBpZiAoL21zaWVcXHN8dHJpZGVudFxcL3xlZGdlXFwvL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm93MFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocm93ICYmIHJvd1swXSlcbiAgICAgICAgICAgICAgICAgICAgcm93WzBdLmNsYXNzTmFtZSA9ICdyZWZyZXNoJztcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbUlucHV0ID0ge307XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05vdEFsbG93TWVzc2FnZSgpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwucGVybWlzc2lvbl9lcnJvcl9ub3RfYWxsb3dlZFwiKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBbm51aXR5SXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdsaXN0ID0gWy4uLnRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCldO1xuICAgICAgICBuZXdsaXN0LnNvcnQoY29tcGFyZVZhbHVlcyh0aGlzLm9yZGVyQnkuZmllbGQsIHRoaXMub3JkZXJCeS5kaXJlY3Rpb24pKTtcbiAgICAgICAgZGVsZXRlIG5ld2xpc3RbaW5kZXhdO1xuICAgICAgICBuZXdsaXN0ID0gbmV3bGlzdC5maWx0ZXIodmFsID0+IHZhbCk7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdsaXN0KTtcbiAgICAgICAgdGhpcy52ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTtcbiAgICAgICAgdGhpcy5vbkxhenlMb2FkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpOiBvYmplY3RbXSB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiZcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdC5nZXQoXCJoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RcIikgJiYgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3QuZ2V0KFwiaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0XCIpLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW1Jbkxpc3QoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZXZlbnQgJiYgJGV2ZW50LmluZGV4ID49IDAgPyAkZXZlbnQuaW5kZXggOiBudWxsO1xuICAgICAgICBjb25zdCBuZXdEYXRhTGlzdCA9IHRoaXMuZ2V0SGlzdG9yaWNhbFBpeEFjY291bnRMaXN0KCkgPyB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpIDogW107XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld0RhdGFMaXN0W2luZGV4XSA9ICRldmVudDtcbiAgICAgICAgICAgIGRlbGV0ZSAkZXZlbnQuaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pICYmIE9iamVjdC5rZXlzKCRldmVudFtcImN1c3RvbUZpZWxkc1wiXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tVmFsdWUgPSBtb3VudEN1c3RvbVRvU2F2ZSgkZXZlbnRbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICAgICAgICAgICRldmVudFtcImN1c3RvbUZpZWxkc1wiXSA9IFsuLi5jdXN0b21WYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZXZlbnRbXCJkYXRlQ2hhbmdlXCJdID0gdGhpcy5kYXRlQ2hhbmdlO1xuICAgICAgICAgICAgbmV3RGF0YUxpc3QucHVzaCgkZXZlbnQpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5zZXRWYWx1ZShuZXdEYXRhTGlzdCk7XG4gICAgICAgIHRoaXMudmVyaWZ5VG90YWxQZXJjZW50YWdlKCk7XG4gICAgICAgIHRoaXMub25MYXp5TG9hZCh7IGZpcnN0OiB0aGlzLmdldE51bWJlclBhZ2VCeUluZGV4KGluZGV4LCBuZXdEYXRhTGlzdCkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJQYWdlQnlJbmRleChpbmRleDogbnVtYmVyLCBsaXN0OiBvYmplY3RbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMucmVjb3JkQnlSb3cgLSAxO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucmVjb3JkQnlSb3cpICogdGhpcy5yZWNvcmRCeVJvdyAtIHN1YiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJpZnlUb3RhbFBlcmNlbnRhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdCgpID8gdGhpcy5nZXRIaXN0b3JpY2FsUGl4QWNjb3VudExpc3QoKSA6IFtdO1xuICAgICAgICBjb25zdCBhcnJheVBlcmNlbnRhZ2U6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuXG4gICAgICAgIGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFycmF5UGVyY2VudGFnZS5wdXNoKGl0ZW0gJiYgaXRlbVtcInBlcmNlbnRhZ2VcIl0pKTtcblxuICAgICAgICBjb25zdCBzdW1QZXJjZW50YWdlID0gYXJyYXlQZXJjZW50YWdlLnJlZHVjZSgodG90YWw6IG51bWJlciwgcGVyY2VudGFnZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgKyBwZXJjZW50YWdlO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoc3VtUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbXNnX2xpbWl0X3RvdGFsX2J5X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1zZ1RvdGFsTGltaXRCeVBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjb3BlZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlY29yZHNNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gYCR7IHRoaXMudG90YWxSZWNvcmRzIHx8IDAgfSAkeyB0aGlzLnRvdGFsUmVjb3JkcyA9PT0gMSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuYWRtaXNzaW9uX3JlZ2lzdGVyXCIpIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5hZG1pc3Npb25fcmVnaXN0ZXJzXCIpIH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0VG9vbHRpcEFuZERpc2FibGVCdXR0b25BZGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVDaGFuZ2UgPyBudWxsIDogdGhpcy5tc2dUb29sdGlwQWRkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gcm93W1wiZGF0ZUNoYW5nZVwiXSA9IHRoaXMuX2RhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRlQ2hhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRpc3BsYXlEYXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlEYXRlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLmZpbHRlcigocm93OiBhbnkpID0+IHJvd1tcImRpc3BsYXlEYXRlQ2hhbmdlXCJdID0gdGhpcy5fZGlzcGxheURhdGVDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZExpc3REYXRhKGxpc3Q6IG9iamVjdFtdKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0LmdldChcImhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFwiKS5wYXRjaFZhbHVlKGxpc3QpO1xuICAgICAgICB0aGlzLnZlcmlmeVRvdGFsUGVyY2VudGFnZSgpO1xuICAgICAgICB0aGlzLm9uTGF6eUxvYWQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRlbGVwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ3BmKGNwZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRDcGYoY3BmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkQ25waihjbnBqOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZENucGooY25waik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHRlZFBlcmNlbnRhZ2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkUGVyY2VudGFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvQWRkSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImluY2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZXhjbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0VkaXRIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZWRpdGFyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvVmlld0hpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJ2aXN1YWxpemFyXCJdXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -9,7 +9,6 @@ import { ServiceType } from '../../core/enums/serviceType';
9
9
  import { Subject } from "rxjs";
10
10
  import { takeUntil } from "rxjs/operators";
11
11
  import { HistoricalPixAccountListService } from "./historical-pix-account-list.service";
12
- import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
13
12
  const moment = moment_;
14
13
  let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent {
15
14
  constructor(confirmationService, translateService, activatedRoute, cd, router, messageService, historicalPixAccountListService) {
@@ -24,6 +23,7 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
24
23
  this.keyPayload = "historicalEmployeePix";
25
24
  this.withSidebar = true;
26
25
  this.isOnlyView = new EventEmitter();
26
+ this.isOnlyEdit = new EventEmitter();
27
27
  this.enableView = new EventEmitter();
28
28
  this.ngUnsubscribe = new Subject();
29
29
  this.loading = true;
@@ -32,18 +32,6 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
32
32
  label: this.translateService.instant("hcm.payroll.historical_pix_account_label_date_change"),
33
33
  field: "dateChange",
34
34
  },
35
- {
36
- label: this.translateService.instant("hcm.payroll.historical_pix_account_label_pix_key_type"),
37
- field: "pixKeyType.value",
38
- },
39
- {
40
- label: this.translateService.instant("hcm.payroll.historical_pix_account_label_pix_key"),
41
- field: "pixKey",
42
- },
43
- {
44
- label: this.translateService.instant("hcm.payroll.historical_pix_account_label_percentage"),
45
- field: "percentage",
46
- },
47
35
  {
48
36
  label: this.translateService.instant("hcm.payroll.employees_movimentation_historical_pix_account_label_qtd_account"),
49
37
  field: "numberOfPixAccount",
@@ -63,27 +51,10 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
63
51
  onLazyLoad(payload) {
64
52
  payload.forEach((value) => {
65
53
  value.dateChange = moment(value.dateChange).format(this.dateFormat);
66
- value.pixKey = this.formatPixKeyByType(value.pixKeyType, value.pixKey);
67
- value.percentage = FormatUtilsService.getFormattedPercentage(value.percentage);
68
54
  });
69
55
  this.onGridLoad(payload);
70
56
  this.loading = false;
71
57
  }
72
- formatPixKeyByType(pixKeyType, pixKey) {
73
- const keyType = pixKeyType ? pixKeyType.key.toUpperCase() : "";
74
- if (keyType === "TELEPHONE") {
75
- return FormatUtilsService.getFormattedTelephoneNumber(pixKey);
76
- }
77
- else if (keyType === "CPF") {
78
- return FormatUtilsService.getFormattedCpf(pixKey);
79
- }
80
- else if (keyType === "CNPJ") {
81
- return FormatUtilsService.getFormattedCnpj(pixKey);
82
- }
83
- else {
84
- return pixKey;
85
- }
86
- }
87
58
  getMenuActions(rowData) {
88
59
  return [
89
60
  {
@@ -106,6 +77,27 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
106
77
  }
107
78
  },
108
79
  },
80
+ {
81
+ label: this.translateService.instant("hcm.payroll.edit"),
82
+ command: () => {
83
+ if (this.isAllowToEditHistorical) {
84
+ const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format("YYYY-MM-DD");
85
+ if (this.withSidebar) {
86
+ this.isOnlyView.emit(false);
87
+ this.isOnlyEdit.emit(true);
88
+ this.router.navigate([`historical-pix-account/${dateChange}`], {
89
+ relativeTo: this.activatedRoute,
90
+ });
91
+ }
92
+ else {
93
+ this.enableView.emit(dateChange);
94
+ }
95
+ }
96
+ else {
97
+ this.isNotAllowMessage();
98
+ }
99
+ },
100
+ },
109
101
  {
110
102
  label: this.translateService.instant("hcm.payroll.delete"),
111
103
  command: () => {
@@ -116,7 +108,7 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
116
108
  this.isNotAllowMessage();
117
109
  }
118
110
  },
119
- },
111
+ }
120
112
  ];
121
113
  }
122
114
  delete(id, dateChange) {
@@ -191,6 +183,9 @@ let HistoricalPixAccountListComponent = class HistoricalPixAccountListComponent
191
183
  get isAllowToViewHistorical() {
192
184
  return (this.permission["visualizar"]);
193
185
  }
186
+ get isAllowToEditHistorical() {
187
+ return (this.permission["editar"]);
188
+ }
194
189
  get scopedActions() {
195
190
  return this.getMenuActions.bind(this);
196
191
  }
@@ -237,6 +232,9 @@ tslib_1.__decorate([
237
232
  tslib_1.__decorate([
238
233
  Output()
239
234
  ], HistoricalPixAccountListComponent.prototype, "isOnlyView", void 0);
235
+ tslib_1.__decorate([
236
+ Output()
237
+ ], HistoricalPixAccountListComponent.prototype, "isOnlyEdit", void 0);
240
238
  tslib_1.__decorate([
241
239
  Output()
242
240
  ], HistoricalPixAccountListComponent.prototype, "enableView", void 0);
@@ -252,4 +250,4 @@ HistoricalPixAccountListComponent = tslib_1.__decorate([
252
250
  })
253
251
  ], HistoricalPixAccountListComponent);
254
252
  export { HistoricalPixAccountListComponent };
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QvaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBUXZCLElBQWEsaUNBQWlDLEdBQTlDLE1BQWEsaUNBQWlDO0lBK0QxQyxZQUNZLG1CQUF3QyxFQUN4QyxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsRUFBcUIsRUFDckIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLCtCQUFnRTtRQU5oRSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0NBQStCLEdBQS9CLCtCQUErQixDQUFpQztRQXpEckUsYUFBUSxHQUFXLGdEQUFnRCxDQUFDO1FBRXBFLGVBQVUsR0FBVyx1QkFBdUIsQ0FBQztRQUU3QyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUc1QixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3ZELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUvQixZQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFlBQU8sR0FBRztZQUNiO2dCQUNJLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUNoQyxzREFBc0QsQ0FDekQ7Z0JBQ0QsS0FBSyxFQUFFLFlBQVk7YUFDdEI7WUFDRDtnQkFDSSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDaEMsdURBQXVELENBQzFEO2dCQUNELEtBQUssRUFBRSxrQkFBa0I7YUFDNUI7WUFDRDtnQkFDSSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDaEMsa0RBQWtELENBQ3JEO2dCQUNELEtBQUssRUFBRSxRQUFRO2FBQ2xCO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ2hDLHFEQUFxRCxDQUN4RDtnQkFDRCxLQUFLLEVBQUUsWUFBWTthQUN0QjtZQUNEO2dCQUNJLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUNoQyw4RUFBOEUsQ0FDakY7Z0JBQ0QsS0FBSyxFQUFFLG9CQUFvQjthQUM5QjtTQUNKLENBQUM7SUFXRixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFHRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQVk7UUFDMUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzNCLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXBFLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsVUFBZSxFQUFFLE1BQWM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFL0QsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQ3pCLE9BQU8sa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakU7YUFDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDeEIsT0FBTyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckQ7YUFDSSxJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDekIsT0FBTyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0RDthQUNJO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVk7UUFDOUIsT0FBTztZQUNIO2dCQUNJLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDO2dCQUNoRixPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNOLElBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFO3dCQUNqQyxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNySCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBCQUEyQixVQUFXLEVBQUUsQ0FBQyxFQUFFO2dDQUM3RCxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWM7NkJBQ2xDLENBQUMsQ0FBQzt5QkFDTjs2QkFBTTs0QkFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzt5QkFDcEM7cUJBQ0o7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7cUJBQzVCO2dCQUNMLENBQUM7YUFDSjtZQUNEO2dCQUNJLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO2dCQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLE9BQU8sRUFBRTt3QkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDL0M7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7cUJBQzVCO2dCQUNMLENBQUM7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFDLEVBQU8sRUFBRSxVQUFrQjtRQUNyQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUMzQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztnQkFDN0IsT0FBTyxFQUFFLEdBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDdEMsb0ZBQW9GLENBQ3RGLEdBQUc7Z0JBQ0wsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztvQkFDaEYsSUFBSSxDQUFDLCtCQUErQjt5QkFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO3lCQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDbkMsU0FBUyxDQUNOLEdBQUcsRUFBRTt3QkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQzs0QkFDcEIsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDOzRCQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxtRUFBbUUsQ0FBQzt5QkFDN0csQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxzQkFBUyxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3hFLENBQUMsRUFDRCxHQUFHLEVBQUU7d0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7NEJBQ3BCLFFBQVEsRUFBRSxPQUFPOzRCQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzs0QkFDM0QsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMseUVBQXlFLENBQUM7eUJBQ25ILENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDekIsQ0FBQyxDQUNKLENBQUM7Z0JBQ1YsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2dCQUMzRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQzthQUMvRSxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxHQUFHO1FBQ04sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUNqRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDbEMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUNwQixRQUFRLEVBQUUsT0FBTztnQkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7Z0JBQzNELE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDO2FBQ3BGLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztZQUNwQixRQUFRLEVBQUUsT0FBTztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztZQUMzRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQztTQUNwRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQVk7UUFDM0IsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxJQUFZLHNCQUFzQjtRQUM5QixPQUFPLENBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FDN0IsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFZLHlCQUF5QjtRQUNqQyxPQUFPLENBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FDN0IsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFZLHVCQUF1QjtRQUMvQixPQUFPLENBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0QsSUFBVyxVQUFVLENBQUMsU0FBa0I7UUFDcEMsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsc0JBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztDQUVKLENBQUE7O1lBNUxvQyxtQkFBbUI7WUFDdEIsZ0JBQWdCO1lBQ2xCLGNBQWM7WUFDMUIsaUJBQWlCO1lBQ2IsTUFBTTtZQUNFLGNBQWM7WUFDRywrQkFBK0I7O0FBcEU1RTtJQURDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzt1RUFDVDtBQUczQztJQURDLEtBQUssRUFBRTtxRUFDa0I7QUFFMUI7SUFEQyxLQUFLLEVBQUU7cUVBQ2tCO0FBRTFCO0lBREMsS0FBSyxFQUFFO3NFQUNtQjtBQUUzQjtJQURDLEtBQUssRUFBRTtxRUFDa0I7QUFFMUI7SUFEQyxLQUFLLEVBQUU7bUVBQ21FO0FBRTNFO0lBREMsS0FBSyxFQUFFO3FFQUM0QztBQUVwRDtJQURDLEtBQUssRUFBRTtzRUFDMkI7QUFHbkM7SUFEQyxNQUFNLEVBQUU7cUVBQzBEO0FBRW5FO0lBREMsTUFBTSxFQUFFO3FFQUNzRDtBQStOL0Q7SUFEQyxLQUFLLEVBQUU7bUVBTVA7QUExUFEsaUNBQWlDO0lBTjdDLFNBQVMsQ0FBQztRQUNQLDhDQUE4QztRQUM5QyxRQUFRLEVBQUUsK0JBQStCO1FBQ3pDLDIvQkFBMkQ7O0tBRTlELENBQUM7R0FDVyxpQ0FBaUMsQ0E0UDdDO1NBNVBZLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBTZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvc2VydmljZVR5cGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFNlcnZpY2UgfSBmcm9tIFwiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6IFwiYy1oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3RcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQtbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRzQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGVybWlzc2lvbjogb2JqZWN0O1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZXBlbmRlbnRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbmRQb2ludDogc3RyaW5nID0gXCJoY20vcGF5cm9sbC9xdWVyaWVzL2hpc3RvcmljYWxFbXBsb3llZVBpeFF1ZXJ5XCI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMga2V5UGF5bG9hZDogc3RyaW5nID0gXCJoaXN0b3JpY2FsRW1wbG95ZWVQaXhcIjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZWJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXNPbmx5VmlldzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVuYWJsZVZpZXc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwcml2YXRlIGxhc3RSZWNvcmQ6IGFueTtcbiAgICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHB1YmxpYyBpbml0UGFyYW1ldGVyczogYW55O1xuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1ldGVyczogYW55O1xuXG4gICAgcHVibGljIGNvbHVtbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbGFiZWxfZGF0ZV9jaGFuZ2VcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWVsZDogXCJkYXRlQ2hhbmdlXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBcImhjbS5wYXlyb2xsLmhpc3RvcmljYWxfcGl4X2FjY291bnRfbGFiZWxfcGl4X2tleV90eXBlXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmllbGQ6IFwicGl4S2V5VHlwZS52YWx1ZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgXCJoY20ucGF5cm9sbC5oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2xhYmVsX3BpeF9rZXlcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWVsZDogXCJwaXhLZXlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9wZXJjZW50YWdlXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmllbGQ6IFwicGVyY2VudGFnZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfbW92aW1lbnRhdGlvbl9oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2xhYmVsX3F0ZF9hY2NvdW50XCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmllbGQ6IFwibnVtYmVyT2ZQaXhBY2NvdW50XCIsXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBoaXN0b3JpY2FsUGl4QWNjb3VudExpc3RTZXJ2aWNlOiBIaXN0b3JpY2FsUGl4QWNjb3VudExpc3RTZXJ2aWNlLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRQYXJhbWV0ZXJzID0geyBlbXBsb3llZUlkOiB0aGlzLmVtcGxveWVlSWQsIGRlcGVuZGVudElkOiB0aGlzLmRlcGVuZGVudElkIH07XG4gICAgfVxuXG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25MYXp5TG9hZChwYXlsb2FkOiBhbnkpIHtcbiAgICAgICAgcGF5bG9hZC5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICB2YWx1ZS5kYXRlQ2hhbmdlID0gbW9tZW50KHZhbHVlLmRhdGVDaGFuZ2UpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXQpO1xuXG4gICAgICAgICAgICB2YWx1ZS5waXhLZXkgPSB0aGlzLmZvcm1hdFBpeEtleUJ5VHlwZSh2YWx1ZS5waXhLZXlUeXBlLCB2YWx1ZS5waXhLZXkpO1xuICAgICAgICAgICAgdmFsdWUucGVyY2VudGFnZSA9IEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRQZXJjZW50YWdlKHZhbHVlLnBlcmNlbnRhZ2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uR3JpZExvYWQocGF5bG9hZCk7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQaXhLZXlCeVR5cGUocGl4S2V5VHlwZTogYW55LCBwaXhLZXk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlUeXBlID0gcGl4S2V5VHlwZSA/IHBpeEtleVR5cGUua2V5LnRvVXBwZXJDYXNlKCkgOiBcIlwiO1xuXG4gICAgICAgIGlmIChrZXlUeXBlID09PSBcIlRFTEVQSE9ORVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcihwaXhLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleVR5cGUgPT09IFwiQ1BGXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkQ3BmKHBpeEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5VHlwZSA9PT0gXCJDTlBKXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkQ25waihwaXhLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBpeEtleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNZW51QWN0aW9ucyhyb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfaW1hZ2VfY3JvcHBlcl92aWV3XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNBbGxvd1RvVmlld0hpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVDaGFuZ2UgPSByb3dEYXRhICYmIHJvd0RhdGEuZGF0ZUNoYW5nZSAmJiBtb21lbnQocm93RGF0YS5kYXRlQ2hhbmdlLCB0aGlzLmRhdGVGb3JtYXQpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53aXRoU2lkZWJhcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPbmx5Vmlldy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgaGlzdG9yaWNhbC1waXgtYWNjb3VudC8keyBkYXRlQ2hhbmdlIH1gXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlVmlldy5lbWl0KGRhdGVDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdEFsbG93TWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZGVsZXRlXCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCAmJiByb3dEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZShyb3dEYXRhLmlkLCByb3dEYXRhLmRhdGVDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdEFsbG93TWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZShpZDogYW55LCBkYXRlQ2hhbmdlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGlkID09PSB0aGlzLmxhc3RSZWNvcmQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVDaGFuZ2VUb0R0byA9IG1vbWVudChkYXRlQ2hhbmdlLCB0aGlzLmRhdGVGb3JtYXQpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19tb3ZpbWVudGF0aW9uX2hpc3RvcmljYWxfcGl4X2FjY291bnRfcXVlc3Rpb25fY29uZmlybV9kZWxldGVcIixcbiAgICAgICAgICAgICAgICApIH0/YCxcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMud2l0aFNpZGViYXIgPyAgU2VydmljZVR5cGUuUEFZUk9MTCA6IFNlcnZpY2VUeXBlLkRFUEVOREVOVDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3JpY2FsUGl4QWNjb3VudExpc3RTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKHRoaXMuZW1wbG95ZWVJZCwgZGF0ZUNoYW5nZVRvRHRvLCBzZXJ2aWNlLCB0aGlzLmRlcGVuZGVudElkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5zdWNjZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVtcGxveWVlc19tb3ZpbWVudGF0aW9uX2hpc3RvcmljYWxfcGl4X2FjY291bnRfcmVtb3ZlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gKHRoaXMucGFyYW1ldGVycyAmJiB7IC4uLnRoaXMucGFyYW1ldGVycyB9KSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9lcnJvcl9yZW1vdmVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5ub3RfYWxsb3dlZF9kZWxldGVfbGFzdFwiKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvQWRkSGlzdG9yaWNhbCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1uZXdcIl0sIHtcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm90QWxsb3dNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lcnJvclwiKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uR3JpZExvYWQocGF5bG9hZDogYW55KSB7XG4gICAgICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RSZWNvcmQgPSBwYXlsb2FkWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvQWRkSGlzdG9yaWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbltcImluY2x1aXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9EZWxldGVIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiZXhjbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb1ZpZXdIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1widmlzdWFsaXphclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2NvcGVkQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVudUFjdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcmVsb2FkTGlzdChjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycyA9ICh0aGlzLnBhcmFtZXRlcnMgJiYgeyAuLi50aGlzLnBhcmFtZXRlcnMgfSkgfHwge307XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QvaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBUXZCLElBQWEsaUNBQWlDLEdBQTlDLE1BQWEsaUNBQWlDO0lBK0MxQyxZQUNZLG1CQUF3QyxFQUN4QyxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsRUFBcUIsRUFDckIsTUFBYyxF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QyxDQUFDO0lBR0QsSUFBVyxVQUFVLENBQUMsU0FBa0I7UUFDcEMsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsc0JBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztDQUVKLENBQUE7O1lBak1vQyxtQkFBbUI7WUFDdEIsZ0JBQWdCO1lBQ2xCLGNBQWM7WUFDMUIsaUJBQWlCO1lBQ2IsTUFBTTtZQUNFLGNBQWM7WUFDRywrQkFBK0I7O0FBcEQ1RTtJQURDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzt1RUFDVDtBQUczQztJQURDLEtBQUssRUFBRTtxRUFDa0I7QUFFMUI7SUFEQyxLQUFLLEVBQUU7cUVBQ2tCO0FBRTFCO0lBREMsS0FBSyxFQUFFO3NFQUNtQjtBQUUzQjtJQURDLEtBQUssRUFBRTtxRUFDa0I7QUFFMUI7SUFEQyxLQUFLLEVBQUU7bUVBQ21FO0FBRTNFO0lBREMsS0FBSyxFQUFFO3FFQUM0QztBQUVwRDtJQURDLEtBQUssRUFBRTtzRUFDMkI7QUFHbkM7SUFEQyxNQUFNLEVBQUU7cUVBQzBEO0FBRW5FO0lBREMsTUFBTSxFQUFFO3FFQUMwRDtBQUVuRTtJQURDLE1BQU0sRUFBRTtxRUFDc0Q7QUFrTi9EO0lBREMsS0FBSyxFQUFFO21FQU1QO0FBL09RLGlDQUFpQztJQU43QyxTQUFTLENBQUM7UUFDUCw4Q0FBOEM7UUFDOUMsUUFBUSxFQUFFLCtCQUErQjtRQUN6QywyL0JBQTJEOztLQUU5RCxDQUFDO0dBQ1csaUNBQWlDLENBaVA3QztTQWpQWSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNDb21wb25lbnQgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgU2VydmljZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3NlcnZpY2VUeXBlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBIaXN0b3JpY2FsUGl4QWNjb3VudExpc3RTZXJ2aWNlIH0gZnJvbSBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LnNlcnZpY2VcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiBcImMtaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1saXN0LmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBIaXN0b3JpY2FsUGl4QWNjb3VudExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pc3Npb246IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXBsb3llZUlkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVwZW5kZW50SWQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5kUG9pbnQ6IHN0cmluZyA9IFwiaGNtL3BheXJvbGwvcXVlcmllcy9oaXN0b3JpY2FsRW1wbG95ZWVQaXhRdWVyeVwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGtleVBheWxvYWQ6IHN0cmluZyA9IFwiaGlzdG9yaWNhbEVtcGxveWVlUGl4XCI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGViYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzT25seVZpZXc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc09ubHlFZGl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZW5hYmxlVmlldzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgbGFzdFJlY29yZDogYW55O1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHVibGljIGluaXRQYXJhbWV0ZXJzOiBhbnk7XG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XG5cbiAgICBwdWJsaWMgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuaGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9kYXRlX2NoYW5nZVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpZWxkOiBcImRhdGVDaGFuZ2VcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9sYWJlbF9xdGRfYWNjb3VudFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpZWxkOiBcIm51bWJlck9mUGl4QWNjb3VudFwiLFxuICAgICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaGlzdG9yaWNhbFBpeEFjY291bnRMaXN0U2VydmljZTogSGlzdG9yaWNhbFBpeEFjY291bnRMaXN0U2VydmljZSxcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0UGFyYW1ldGVycyA9IHsgZW1wbG95ZWVJZDogdGhpcy5lbXBsb3llZUlkLCBkZXBlbmRlbnRJZDogdGhpcy5kZXBlbmRlbnRJZCB9O1xuICAgIH1cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTGF6eUxvYWQocGF5bG9hZDogYW55KSB7XG4gICAgICAgIHBheWxvYWQuZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdmFsdWUuZGF0ZUNoYW5nZSA9IG1vbWVudCh2YWx1ZS5kYXRlQ2hhbmdlKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vbkdyaWRMb2FkKHBheWxvYWQpO1xuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNZW51QWN0aW9ucyhyb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfaW1hZ2VfY3JvcHBlcl92aWV3XCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNBbGxvd1RvVmlld0hpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVDaGFuZ2UgPSByb3dEYXRhICYmIHJvd0RhdGEuZGF0ZUNoYW5nZSAmJiBtb21lbnQocm93RGF0YS5kYXRlQ2hhbmdlLCB0aGlzLmRhdGVGb3JtYXQpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53aXRoU2lkZWJhcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPbmx5Vmlldy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgaGlzdG9yaWNhbC1waXgtYWNjb3VudC8keyBkYXRlQ2hhbmdlIH1gXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlVmlldy5lbWl0KGRhdGVDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdEFsbG93TWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZWRpdFwiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNBbGxvd1RvRWRpdEhpc3RvcmljYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZUNoYW5nZSA9IHJvd0RhdGEgJiYgcm93RGF0YS5kYXRlQ2hhbmdlICYmIG1vbWVudChyb3dEYXRhLmRhdGVDaGFuZ2UsIHRoaXMuZGF0ZUZvcm1hdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud2l0aFNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPbmx5Vmlldy5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPbmx5RWRpdC5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BoaXN0b3JpY2FsLXBpeC1hY2NvdW50LyR7IGRhdGVDaGFuZ2UgfWBdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVWaWV3LmVtaXQoZGF0ZUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTm90QWxsb3dNZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZGVsZXRlXCIpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGxvd1RvRGVsZXRlSGlzdG9yaWNhbCAmJiByb3dEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZShyb3dEYXRhLmlkLCByb3dEYXRhLmRhdGVDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdEFsbG93TWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKGlkOiBhbnksIGRhdGVDaGFuZ2U6IHN0cmluZykge1xuICAgICAgICBpZiAoaWQgPT09IHRoaXMubGFzdFJlY29yZC5pZCkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUNoYW5nZVRvRHRvID0gbW9tZW50KGRhdGVDaGFuZ2UsIHRoaXMuZGF0ZUZvcm1hdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgJHsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgIFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9xdWVzdGlvbl9jb25maXJtX2RlbGV0ZVwiLFxuICAgICAgICAgICAgICAgICkgfT9gLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy53aXRoU2lkZWJhciA/ICBTZXJ2aWNlVHlwZS5QQVlST0xMIDogU2VydmljZVR5cGUuREVQRU5ERU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcmljYWxQaXhBY2NvdW50TGlzdFNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUodGhpcy5lbXBsb3llZUlkLCBkYXRlQ2hhbmdlVG9EdG8sIHNlcnZpY2UsIHRoaXMuZGVwZW5kZW50SWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnN1Y2Nlc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX21vdmltZW50YXRpb25faGlzdG9yaWNhbF9waXhfYWNjb3VudF9yZW1vdmVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSAodGhpcy5wYXJhbWV0ZXJzICYmIHsgLi4udGhpcy5wYXJhbWV0ZXJzIH0pIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lcnJvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfbW92aW1lbnRhdGlvbl9oaXN0b3JpY2FsX3BpeF9hY2NvdW50X2Vycm9yX3JlbW92ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLm5vdF9hbGxvd2VkX2RlbGV0ZV9sYXN0XCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkKCkge1xuICAgICAgICBpZiAodGhpcy5pc0FsbG93VG9BZGRIaXN0b3JpY2FsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJoaXN0b3JpY2FsLXBpeC1hY2NvdW50LW5ld1wiXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnBlcm1pc3Npb25fZXJyb3Jfbm90X2FsbG93ZWRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3RBbGxvd01lc3NhZ2UoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiBcImVycm9yXCIsXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnBlcm1pc3Npb25fZXJyb3Jfbm90X2FsbG93ZWRcIiksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25HcmlkTG9hZChwYXlsb2FkOiBhbnkpIHtcbiAgICAgICAgaWYgKHBheWxvYWQgJiYgcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFJlY29yZCA9IHBheWxvYWRbMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0FsbG93VG9BZGRIaXN0b3JpY2FsKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uW1wiaW5jbHVpclwiXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzQWxsb3dUb0RlbGV0ZUhpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJleGNsdWlyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvVmlld0hpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJ2aXN1YWxpemFyXCJdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNBbGxvd1RvRWRpdEhpc3RvcmljYWwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25bXCJlZGl0YXJcIl1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjb3BlZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lbnVBY3Rpb25zLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlbG9hZExpc3QoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSAodGhpcy5wYXJhbWV0ZXJzICYmIHsgLi4udGhpcy5wYXJhbWV0ZXJzIH0pIHx8IHt9O1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=