@senior-gestao-empresarial/erpx-components 3.35.0-develop-b37ce58c → 4.0.0-develop-a313cf68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { __assign, __decorate, __values } from "tslib";
1
+ import { __assign, __decorate, __read, __spread, __values } from "tslib";
2
2
  import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';
3
3
  import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
4
4
  import { TranslateService } from '@ngx-translate/core';
@@ -421,6 +421,10 @@ var ErpTributosComponent = /** @class */ (function () {
421
421
  case EnumTipoTributo.IS:
422
422
  _this.montaIS();
423
423
  break;
424
+ case EnumTipoTributo.CBS_ESTORNO_CREDITO:
425
+ case EnumTipoTributo.IBS_ESTORNO_CREDITO:
426
+ _this.montaCBSIBSEstornoCredito();
427
+ break;
424
428
  case EnumTipoTributo.PIS_RECUPERAR:
425
429
  case EnumTipoTributo.PIS_DEVOLVIDO:
426
430
  case EnumTipoTributo.PIS:
@@ -986,7 +990,7 @@ var ErpTributosComponent = /** @class */ (function () {
986
990
  label: this.translate.instant('erpx.tributos.actions_cbs_ibs_estorno_credito_label'),
987
991
  disabled: this.menuItemCBS_IBS_ESTORNO_CREDITO,
988
992
  command: function () {
989
- (_this.montaCBS_IBS_ESTORNO_CREDITO().forEach(function (value) {
993
+ (_this.montaCBSIBSEstornoCredito().forEach(function (value) {
990
994
  _this.novoImpostoManual(value);
991
995
  }),
992
996
  (_this.indexAccordion = [0]));
@@ -999,7 +1003,10 @@ var ErpTributosComponent = /** @class */ (function () {
999
1003
  context: _this.context
1000
1004
  });
1001
1005
  _this.changeDetector.detectChanges();
1002
- }
1006
+ },
1007
+ visible: this.context.document === 'Outgoing Invoice' &&
1008
+ this.context.invoice.type === 'Debit' &&
1009
+ this.context.invoice.debitInvoiceType === 'Inventory Loss'
1003
1010
  }, {
1004
1011
  id: 'retencaoFunrural',
1005
1012
  label: this.translate.instant('erpx.tributos.actions_retencao_funrural_label'),
@@ -2469,7 +2476,7 @@ var ErpTributosComponent = /** @class */ (function () {
2469
2476
  });
2470
2477
  return item;
2471
2478
  };
2472
- ErpTributosComponent.prototype.montaCBS_IBS_ESTORNO_CREDITO = function () {
2479
+ ErpTributosComponent.prototype.montaCBSIBSEstornoCredito = function () {
2473
2480
  if (this.menuItemCBS_IBS_ESTORNO_CREDITO)
2474
2481
  return;
2475
2482
  this.menuItemCBS_IBS_ESTORNO_CREDITO = true;
@@ -3716,58 +3723,54 @@ var ErpTributosComponent = /** @class */ (function () {
3716
3723
  }
3717
3724
  ];
3718
3725
  }
3719
- formField.push(new FormField(__assign(__assign({}, _this.e027StrLookup.mountOptions({
3720
- multiple: false,
3721
- domain: _this.dominio,
3722
- service: _this.servico,
3723
- searchGridFields: searchGridFields,
3724
- defaultFilter: [
3725
- {
3726
- field: 'excluido',
3727
- operator: EnumLogicalOperator.Eq,
3728
- values: ['false']
3729
- },
3730
- {
3731
- field: 'tipImp',
3732
- operator: EnumLogicalOperator.Eq,
3733
- values: [
3734
- mapEnumTipoTributoToEnumTipImpCst(tributo)
3735
- ]
3736
- },
3737
- {
3738
- field: 'tipOpe',
3739
- operator: EnumLogicalOperator.Eq,
3740
- values: _this.context.document ===
3741
- 'Outgoing Invoice' ||
3742
- _this.context.document ===
3743
- 'Controllership Outgoing Invoice'
3744
- ? [
3745
- EnumTipOpe.VAMBOS,
3746
- EnumTipOpe.VSAIDA
3747
- ]
3748
- : [
3749
- EnumTipOpe.VAMBOS,
3750
- EnumTipOpe.VENTRADA
3751
- ]
3752
- },
3753
- {
3754
- field: 'situacao',
3755
- operator: EnumLogicalOperator.Eq,
3756
- values: ['VATIVO']
3757
- },
3726
+ var defaultFilter = [
3727
+ {
3728
+ field: 'excluido',
3729
+ operator: EnumLogicalOperator.Eq,
3730
+ values: ['false']
3731
+ },
3732
+ {
3733
+ field: 'tipImp',
3734
+ operator: EnumLogicalOperator.Eq,
3735
+ values: [mapEnumTipoTributoToEnumTipImpCst(tributo)]
3736
+ },
3737
+ {
3738
+ field: 'tipOpe',
3739
+ operator: EnumLogicalOperator.Eq,
3740
+ values: _this.context.document === 'Outgoing Invoice' ||
3741
+ _this.context.document ===
3742
+ 'Controllership Outgoing Invoice'
3743
+ ? [EnumTipOpe.VAMBOS, EnumTipOpe.VSAIDA]
3744
+ : [EnumTipOpe.VAMBOS, EnumTipOpe.VENTRADA]
3745
+ },
3746
+ {
3747
+ field: 'situacao',
3748
+ operator: EnumLogicalOperator.Eq,
3749
+ values: ['VATIVO']
3750
+ }
3751
+ ];
3752
+ if (tributo === EnumTipoTributo.CBS ||
3753
+ tributo === EnumTipoTributo.IBS_ESTADUAL ||
3754
+ tributo === EnumTipoTributo.IBS_MUNICIPAL ||
3755
+ tributo === EnumTipoTributo.CBS_ESTORNO_CREDITO ||
3756
+ tributo === EnumTipoTributo.IBS_ESTORNO_CREDITO)
3757
+ defaultFilter = __spread(defaultFilter, [
3758
3758
  {
3759
3759
  field: 'classificacaoTributaria.indGEstornoCred',
3760
- operator: _this.context.document ===
3761
- 'Outgoing Invoice' &&
3762
- _this.context.invoice.type === 'Debit' &&
3763
- _this.context.invoice
3764
- .debitInvoiceType ===
3765
- 'Inventory Loss'
3760
+ operator: tributo ===
3761
+ EnumTipoTributo.CBS_ESTORNO_CREDITO ||
3762
+ tributo === EnumTipoTributo.IBS_ESTORNO_CREDITO
3766
3763
  ? EnumLogicalOperator.Eq
3767
3764
  : EnumLogicalOperator.Ne,
3768
3765
  values: ['EXIGE']
3769
3766
  }
3770
- ]
3767
+ ]);
3768
+ formField.push(new FormField(__assign(__assign({}, _this.e027StrLookup.mountOptions({
3769
+ multiple: false,
3770
+ domain: _this.dominio,
3771
+ service: _this.servico,
3772
+ searchGridFields: searchGridFields,
3773
+ defaultFilter: defaultFilter
3771
3774
  })), { onBlur: function () {
3772
3775
  if (!isTaxFromTaxReform(tributo)) {
3773
3776
  _this.setValidators(tributo);
@@ -4963,4 +4966,4 @@ var ErpTributosComponent = /** @class */ (function () {
4963
4966
  return ErpTributosComponent;
4964
4967
  }());
4965
4968
  export { ErpTributosComponent };
4966
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBRXBCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFD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Z0JBQ0wscUJBQXFCO2dCQUM3QixhQUFhO2dCQUNMLDZDQUE2QztnQkFDckMsNkJBQTZCO2dCQUMvQyxxQkFBcUI7Z0JBQ2Qsa0JBQWtCO2dCQUNoQyxXQUFXO2dCQUNILFlBQVk7O0lBdEgvQztRQURDLEtBQUssRUFBRTt5REFDUztJQUNSO1FBQVIsS0FBSyxFQUFFOzJEQUF1QjtJQUN0QjtRQUFSLEtBQUssRUFBRTtrRUFBMEI7SUFFbEM7UUFEQyxLQUFLLEVBQUU7d0RBR1A7SUFJUTtRQUFSLEtBQUssRUFBRTt5REFBa0I7SUFDakI7UUFBUixLQUFLLEVBQUU7eURBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFO3VFQUlOO0lBQ087UUFBUixLQUFLLEVBQUU7d0VBQWlEO0lBQ2hEO1FBQVIsS0FBSyxFQUFFOzBFQUFvQztJQUVsQztRQUFULE1BQU0sRUFBRTtnRUFBMEM7SUF0QjFDLG9CQUFvQjtRQUxoQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsY0FBYztZQUN4QixvbUhBQTRDOztTQUUvQyxDQUFDO09BQ1csb0JBQW9CLENBNDNPaEM7SUFBRCwyQkFBQztDQUFBLEFBNTNPRCxJQTQzT0M7U0E1M09ZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aWZpZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgIEUwMjdFcWlMb29rdXAsXG4gICAgRTAyN1N0ckxvb2t1cCxcbiAgICBFbnVtTG9naWNhbE9wZXJhdG9yLFxuICAgIExvb2t1cFZhbGlkYXRpb25VdGlsc1xufSBmcm9tICdAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgICBCYWRnZUNvbG9ycyxcbiAgICBCdXR0b25BbmltYXRpb24sXG4gICAgQnV0dG9uUHJpb3JpdHksXG4gICAgQnV0dG9uU2l6ZSxcbiAgICBGaWVsZFR5cGUsXG4gICAgRm9ybUZpZWxkLFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxuICAgIExvb2t1cEZpZWxkXG59IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBzY2FuLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS1jbGFzc2lmaWNhY2FvLXRyaWJ1dGFyaWEnO1xuaW1wb3J0IHsgRW51bVRpcG9DYWxjdWxvSW1wb3N0byB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS10aXBvLWNhbGN1bG8taW1wb3N0byc7XG5pbXBvcnQgeyBFcnBUcmlidXRvc1NlcnZpY2UgfSBmcm9tICcuL2VycC10cmlidXRvcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ2FtcG9UcmlidXRvLFxuICAgIEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgIEVudW1DYW1wb1RyaWJ1dG8sXG4gICAgRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLFxuICAgIEVudW1HcnVwb1RyaWJ1dG8sXG4gICAgRW51bU1vZEJjLFxuICAgIEVudW1Nb3REZXMsXG4gICAgRW51bU9yaU1lcixcbiAgICBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyxcbiAgICBFbnVtU2l0dWFjYW8sXG4gICAgZW51bVRpcENyZWRSZWN1cCxcbiAgICBFbnVtVGlwSW1wQ3N0LFxuICAgIEVudW1UaXBPcGUsXG4gICAgRW51bVRpcG9UcmlidXRvLFxuICAgIEl0ZW0sXG4gICAgU3VnZXN0YW8sXG4gICAgVGF4Q2FsY3VsYXRpb25NZW1vcnlcbn0gZnJvbSAnLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0IH0gZnJvbSAnLi9tYXBwaW5ncy9lbnVtLXRpcC1pbXAtY3N0LW1hcHBpbmcnO1xuaW1wb3J0IHsgUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi9ydWxlcy9ydWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzVGF4RnJvbVRheFJlZm9ybSB9IGZyb20gJy4vdGF4LXJlZm9ybS11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY29udGV4dCc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJy4vdHlwZXMvZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VycC10cmlidXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VycC10cmlidXRvcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXJwVHJpYnV0b3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgQElucHV0KCkgc3VnZXN0b2VzOiBTdWdlc3Rhb1tdO1xuICAgIEBJbnB1dCgpIGNhbXBvc0Jsb3F1ZWFkb3MgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCB0cmlidXRvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpYnV0b3NWYWx1ZTtcbiAgICB9XG4gICAgc2V0IHRyaWJ1dG9zKHZhbCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIEBJbnB1dCgpIGRvbWluaW8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vydmljbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXJyZW5jeUxvY2FsZU9wdGlvbnM/OiBhbnkgPSB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgIH07XG4gICAgQElucHV0KCkgaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsbz86IFRheENhbGN1bGF0aW9uTWVtb3J5W107XG4gICAgQElucHV0KCkgcGVybWlzc2lvbk1lbW9yaWFDYWxjdWxvPzogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB0cmlidXRvc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcmVhZG9ubHkgQmFkZ2VDb2xvcnMgPSBCYWRnZUNvbG9ycztcbiAgICByZWFkb25seSBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xuICAgIHJlYWRvbmx5IEJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xuICAgIHJlYWRvbmx5IEJ1dHRvbkFuaW1hdGlvbiA9IEJ1dHRvbkFuaW1hdGlvbjtcblxuICAgIHB1YmxpYyBncnVwb3M6IEdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgdHJpYnV0b3NWYWx1ZTogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgcmVsb2FkID0gdHJ1ZTtcbiAgICBwdWJsaWMgaW5kZXhBY2NvcmRpb246IG51bWJlcltdID0gW107XG4gICAgcHVibGljIHByZWZpeExhYmVsOiBzdHJpbmc7XG5cbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGVyY2VudGFnZUxvY2FsZU9wdGlvbnM/OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdTdHJMb29rdXA6IEUwMjdTdHJMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmVuZWZpY2lvRmlzY2FsTG9va3VwOiBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN2VxaUxvb2t1cDogRTAyN0VxaUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXR1cmV6YVJlY2VpdGFMb29rdXA6IENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cDogQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBydWxlc1NlcnZpY2U6IFJ1bGVzU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZG9taW5pbyA9IHRoaXMuZG9taW5pbyA/IHRoaXMuZG9taW5pbyA6ICdlcnB4X2NwbF9pbXAnO1xuICAgICAgICB0aGlzLnNlcnZpY28gPSB0aGlzLnNlcnZpY28gPyB0aGlzLnNlcnZpY28gOiAnY2FkYXN0cm9zJztcblxuICAgICAgICB0aGlzLnByZWZpeExhYmVsID0gYCR7dGhpcy5kb21pbmlvfS4ke3RoaXMuc2Vydmljb31gO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICclJyxcbiAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF2YXJpYXZlaXNBbHRlcmFkYXMuaW5jbHVkZXMoJ3N1Z2VzdG9lcycpIHx8XG4gICAgICAgICAgICB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmlidXRvcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW1wb3NCbG9xdWVhZG9zID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb29rdXBVdGlscy5yZXNldFN0b3JlZEtleXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVtb3JpYUNhbGN1bG8oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIGxldCB0cmlidXRvID0gdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RnJvbnRlbmQocGFyYW1zKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd0YWcuc2VuZEJ1dHRvbkNsaWNrKCdCb3TDo28gYWNlc3NhciBwYXJhbWV0cml6YcOnw6NvJywge1xuICAgICAgICAgICAgaW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG9cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkQnV0dG9uKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETyB8fFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSBpdGVtLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV90aXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZTogJ2VycHgtY3BsLWltcC1pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBgJHt0aGlzLnZhbGlkYVRlbGEodHJpYnV0byl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1ha2VVcmxXaW5kb3cocGFyYW1zLCB0cmlidXRvKTtcbiAgICB9XG5cbiAgICB2YWxpZGFUZWxhKHRheGVzOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdFRheGVzKHRheGVzLnRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgaWYgKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvfS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvU3R9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7XG4gICAgICAgICAgICB0YXhlcy5pZFBhcmFtZXRyb1xuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY21zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NpZGUnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2JzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1lc3RhZHVhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLW11bmljaXBhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJpYnV0b3MoKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNCUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNFc3RhZHVhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNNdW5pY2lwYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlTKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFQaXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNvZmlucygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlwaSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlzcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUltcG9ydGFjb2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUljbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUljbXNDcmVkaXRvUHJlc3VtaWRvKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXNGdW5ydXJhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkT25seVRyaWJ1dG9zKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3J1cG9zKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZ3JvdXAuaXRlbSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUcmlidXRvcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PlxuICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09PSBpdC50aXBvSW1wb3N0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKGl0LnRpcG9JbXBvc3RvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnMoaXQudGlwb0ltcG9zdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLnBhdGNoVmFsdWUoaXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncnVwb3MpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZ3JvdXAuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JzKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdC5uYW1lID09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoaXRlbSkudG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbERpZmVyaW1lbnRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdvYnNlcnZhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmVuZWZpY2lvRmlzY2FsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvVHJpYnV0YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnbmF0dXJlemFSZWNlaXRhJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICd2YWxvckRlZHVjYW8nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZHVjYW9BbGlxdW90YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCgxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICd2YWxvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29BcnJlY2FkYWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQWxsRm9ybUZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKVxuICAgICAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoY29udHJvbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGEgYSB2YWxpZGHDp8OjbyBkZSB0b2RvcyBvcyBjYW1wb3MgZG9zIGZvcm11bMOhcmlvcyBkZW50cm8gZG9zIGdydXBvcy5cbiAgICAgKlxuICAgICAqICoqQXRlbsOnw6NvOioqIEVzdGUgbcOpdG9kbyAqKm7Do28qKiBkZXZlIHNlciB1dGlsaXphZG8gbm8gdGVtcGxhdGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgc2UgdG9kb3Mgb3MgZm9ybXVsw6FyaW9zIGZvcmVtIHbDoWxpZG9zIGUgbmVuaHVtIHZhbG9yIGRlIGltcG9zdG8gZm9yIG5lZ2F0aXZvOyBjYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgYGZhbHNlYC5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3RpY2t5OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZXJyb3InKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX3RheF93aXRoX25lZ2F0aXZlX3RheF92YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRheDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJHtncm91cC5ncnVwb1RyaWJ1dG8udG9Mb3dlckNhc2UoKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3J1cG9zLmV2ZXJ5KChncm91cCkgPT5cbiAgICAgICAgICAgIGdyb3VwLml0ZW1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5mb3JtR3JvdXAuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgLmV2ZXJ5KChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5mb3JtR3JvdXAudmFsaWQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzZSBhbGd1bSBmb3JtdWzDoXJpbyBlc3TDoSBpbnbDoWxpZG8uXG4gICAgICpcbiAgICAgKiBEZXZlIHNlciB1dGlsaXphZG8gc29tZW50ZSBubyB0ZW1wbGF0ZSBwYXJhIGNvbnRyb2xlIGRlIGJvdMO1ZXMgb3UgZXhpYmnDp8OjbyBkZSBtZW5zYWdlbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgc2UgYWxndW0gYGZvcm1Hcm91cGAgZXN0aXZlciBpbnbDoWxpZG8gb3Ugc2UgYWxndW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm8uXG4gICAgICovXG4gICAgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLmZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnNvbWUoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uc29tZSgoaXRlbSkgPT4gaXRlbS5mb3JtR3JvdXAuaW52YWxpZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCk6IEdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3J1cG9zXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLkNCUyB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklET1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uc29tZSgoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZSA/PyAwXG4gICAgICAgICAgICAgICAgICAgICkuaXNMZXNzVGhhbigwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUd29XYXlEYXRhQmluZGluZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJySXRlbnM6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhpdGVtLmZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWJ1dG9zVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV1TWF0aCA9IHRoaXMudHJpYnV0b3NWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlidXRvKSA9PiB0cmlidXRvLnRpcG9JbXBvc3RvID09IGl0ZW0ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0cmlidXRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50cmlidXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldU1hdGggJiYgZGV1TWF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKGRldU1hdGhbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb0ltcG9zdG86IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb0ltcG9zdG86IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRyaWJ1dG9zQ2hhbmdlLmVtaXQoYXJySXRlbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm92b0ltcG9zdG9NYW51YWwoaXRlbTogSXRlbSwgc2luZ2xlQ2hhbmdlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtRmllbGQgb2YgaXRlbS5mb3JtRmllbGQpIHtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQub25CbHVyPy5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW5nbGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncnVwb3MuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5pbmNsdWRlcyhpdGVtKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKCk6IE1lbnVJdGVtW10ge1xuICAgICAgICBjb25zdCBtZW51OiBNZW51SXRlbVtdID0gW107XG5cbiAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ0JTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2VzdGFkdWFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNFc3RhZHVhbCxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTRXN0YWR1YWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX211bmljaXBhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNNdW5pY2lwYWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19jcmVkaXRvX3ByZXN1bWlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2lzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JUyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSVMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfaWJzX2VzdG9ybm9fY3JlZGl0b19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCU19JQlNfRVNUT1JOT19DUkVESVRPKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNhb0Z1bnJ1cmFsJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNhb19mdW5ydXJhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3BpcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcGlzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1QaXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVBpcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdjb2ZpbnMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2NvZmluc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ29maW5zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDb2ZpbnMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaXBpJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pcGlfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlwaSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXBpKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2ljbXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUljbXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5kb2N1bWVudCAhPT0gJ1NhbGUgT3JkZXInKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnaW1wb3J0YWNvZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ltcG9ydGFjb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlzcyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXNzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXMsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnY2lkZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2lkZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JylcbiAgICAgICAgKVxuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvZGVNb3N0cmFySW1wb3N0b3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19lZmV0aXZvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfc2VuYXInLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBpdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIgPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NicycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5DQlMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU011bmljaXBhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpOiBJdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXMnLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JUylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU19JQlNfRVNUT1JOT19DUkVESVRPKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFQaXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVBpcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19mYXR1cmFtZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlBJUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNvZmlucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Db2ZpbnMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXBpKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlwaSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX291dHJhc19kZXNwZXNhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdQcm9kdWN0IFJldHVybic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVBJICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3M7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWw7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3N0b0NhbGN1bGFkbyhpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kSW1wb3N0byhudW1iZXI6IGFueSwgZGVjaW1hbHM6IGFueSkge1xuICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMTAsIE51bWJlcihkZWNpbWFscykgKyAxKTtcbiAgICAgICAgcmV0dXJuIChOdW1iZXIobnVtYmVyKSArIDEgLyB4KS50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgIGltcG9zdG9zOiBzdHJpbmdbXSxcbiAgICAgICAgZ3J1cG86IGFueSxcbiAgICAgICAgc3VtbWFyeU1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgZGV0YWlsTWVzc2FnZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGltcG9zdG9GaWx0cmFkbyA9IGltcG9zdG9zLmZpbHRlcihcbiAgICAgICAgICAgIChpbXBvc3RvKSA9PlxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgICdDQlNfRElGRVJJRE8nLFxuICAgICAgICAgICAgICAgICAgICAnSUJTX0VTVEFEVUFMX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19NVU5JQ0lQQUxfRElGRVJJRE8nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhpbXBvc3RvKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBjb250cm9sZUltcG9zdG8gPSB0aGlzLmNhbGN1bGFySW1wb3N0b3NUb3RhbChcbiAgICAgICAgICAgIGltcG9zdG9GaWx0cmFkbyxcbiAgICAgICAgICAgIGdydXBvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGNvbnRyb2xlSW1wb3N0by5iYXNlRGlmZXJlbnRlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1bW1hcnlNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZGV0YWlsTWVzc2FnZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xlSW1wb3N0bztcbiAgICB9XG5cbiAgICAvLyBOw6NvIHV0aWxpemFyIGVzdGUgbcOpdG9kbyBwYXJhIGPDoWxjdWxvcyBkZSBpbXBvc3RvcyBkYSBSZWZvcm1hIFRyaWJ1dMOhcmlhLlxuICAgIHByaXZhdGUgY2FsY3VsYXJWYWxvcih0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogSXRlbSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlICYmIHRoaXMuaW1wb3N0b0NhbGN1bGFkbyh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvICE9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2l0dWFjYW9UcmlidXRhcmlhLnZhbHVlID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLmNvZFN0ciAhPSAnNTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYmFzZUNhbGN1bG8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGJhc2UgKiBhbGlxdW90YSkgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2UgKiBhbGlxdW90YSkgLyAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5yZXNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bGxPclVuZGVmaW5lZChiYXNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYWxpcXVvdGEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RpZ29UcmlidXRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmNvZGlnb1RyaWJ1dGFjYW8ucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3N0b3MgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX0lOU1MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9SQVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9TRU5BUidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xlRnVucnVyYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZUVycm9yQmFzZURpZmVyZW50ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9zdW1tYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfZGV0YWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogY29udHJvbGVGdW5ydXJhbC5iYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxvcjogY29udHJvbGVGdW5ydXJhbC52YWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXJJbXBvc3Rvc1RvdGFsKGltcG9zdG9zOiBhbnksIGdydXBvKSB7XG4gICAgICAgIGxldCB2YWxvcmVzID0ge1xuICAgICAgICAgICAgYmFzZTogMCxcbiAgICAgICAgICAgIHZhbG9yOiAwLFxuICAgICAgICAgICAgYmFzZURpZmVyZW50ZTogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaW1wb3N0b3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbXBvc3RvID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGltcG9zdG9zW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSAhPSBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2VEaWZlcmVudGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgIGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvID4gdmFsb3Jlcy5iYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbG9yZXMuYmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUudmFsb3IpKSB7XG4gICAgICAgICAgICAgICAgdmFsb3Jlcy52YWxvciA9IE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIodmFsb3Jlcy52YWxvcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS52YWxvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbG9yZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNhbXBvcyhjYW1wb3M6IENhbXBvVHJpYnV0b1tdLCB0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgY29uc3QgcmV0b3JubzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZDogRm9ybUZpZWxkW10gPSBbXTtcbiAgICAgICAgbGV0IGZvcm1Hcm91cDogYW55ID0ge307XG5cbiAgICAgICAgY2FtcG9zLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYmFzZUNhbGN1bG8nLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYWxpcXVvdGEnLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9nb3Zlcm5hbWVudGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUVmZXRpdmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2VmZXRpdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYURlc3Rpbm86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2Rlc3Rpbm9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgndmFsb3InLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JCcnV0b0ltcG9zdG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2JydXRvX2ltcG9zdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJc2VudGFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaXNlbnRhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvck91dHJhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9vdXRyYXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaEdyaWRGaWVsZHMhOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZFN0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX3Bpc19jb2ZpbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuUElTX0NPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXBpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaWNtcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3Zfc2FpZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVlNBSURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2VudHJhZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkVOVFJBREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfYW1ib3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPdXRnb2luZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WU0FJREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydWQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLmluZEdFc3Rvcm5vQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ludmVudG9yeSBMb3NzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFbnVtTG9naWNhbE9wZXJhdG9yLk5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ0VYSUdFJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzOiBbJ2UwMjdzdHIuaWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGVucXVhZHJhbWVudG9JcGk6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3ZXFpTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdlMDI3ZXFpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdlbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsUmVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9tdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkZXNvbmVyYWNhb0ljbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjkwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2VtOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbERpZmVyaW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9kaWZlcmltZW50b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXBvcnRhZG9fY29uc3VtaWRvcl9maW5hbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxpZGFkZUJDOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBuYXR1cmV6YVJlY2VpdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5uYXR1cmV6YVJlY2VpdGFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ25hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JEZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRpdm9BcXVpc2ljYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2luZGljYXRpdm9fYXF1aXNpY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb0FycmVjYWRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvVHJpYnV0YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX3RyaWJ1dGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3Vsb0NyZWRpdG86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXNwZW5zYW9fcGFyY2lhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiZW5lZmljaW9GaXNjYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmJlbmVmaWNpb0Zpc2NhbExvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnYmVuZWZpY2lvRmlzY2FsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2JlbmVmaWNpb19maXNjYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNzdERlc29uZXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZTQUlEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVNpdHVhY2FvLlZBVElWT11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVRpcEltcENzdC5DQlNfSUJTXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNzdF9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5zaXR1YWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURlc29uZXJhY2FvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLkFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3N1YnRyYWlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU1VCVFJBSVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zb21hcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNPTUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX25lbmh1bSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXNjcml0dXJhcl9hbGlxdW90YV9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3Nfc2ltJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX25hbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuTkFPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09XG4gICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWRpdG9QcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsndHJ1ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5JcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW251bGxdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3VnZXN0b2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2VzdG9lc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1Z2VzdGFvKSA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoc3VnZXN0YW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhdHJpYnV0b3MpID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChhdHJpYnV0b3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBbYXRyaWJ1dG9zWzBdXVswXS52YWx1ZSA9IGF0cmlidXRvc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICBpbXBvc3RvTWFudWFsOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0b3JubztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVWYWx1ZUNoYW5nZXMoeyBpdGVtIH06IHsgaXRlbTogSXRlbTsgZ3JvdXA6IEdyb3VwIH0pIHtcbiAgICAgICAgaXRlbS5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGRlYm91bmNlVGltZSBoZXJlIGJlY2F1c2Ugb3VyIExvb2t1cCBDb21wb25lbnQgaXMgZW1pdHRpbmcgdHdvIGV2ZW50cyB1bmZvcnR1bmF0ZWx5LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2NhbihcbiAgICAgICAgICAgICAgICAgICAgKGFjYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGFjYy5zdGFydGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXJ0aW5nVmFsdWUsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydGluZ1ZhbHVlLmltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsQWxpcXVvdGEodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0by50b1N0cmluZygpLmVuZHNXaXRoKCdfRElGRVJJRE8nKSAmJlxuICAgICAgICAgICAgdHJpYnV0byAhPT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZGlmZXJpZG9fbGFiZWwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zbGF0ZUJ1dHRvbih2YWx1ZTogYW55KSB7XG4gICAgICAgIGxldCB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fZW1wdHlfbGFiZWwnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxuXG4gICAgaXNCYWRnZVZpc2libGUoaXRlbTogSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pICYmXG4gICAgICAgICAgICAhIWl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUNvbG9yKGl0ZW06IEl0ZW0pOiBCYWRnZUNvbG9ycyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuR3JlZW47XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuQmx1ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEJhZGdlVGV4dChpdGVtOiBJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2F1dG9tYXRpY28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2dlcmFkb192aWFfcHJvY2Vzc28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUluZm9TaWduKGl0ZW06IEl0ZW0pOiB7IHRleHQ6IHN0cmluZyB9IHtcbiAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52b2ljZURvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkUmVxdWlyZWQoZmllbGQ6IHN0cmluZywgdGF4VHlwZTogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pdGVtLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gdGF4VHlwZSkpXG4gICAgICAgICAgICAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC5nZXQoZmllbGQpLnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbClcbiAgICAgICAgICAgID8ucmVxdWlyZWQ7XG4gICAgfVxufVxuIl19
4969
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBRXBCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFD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T0M7U0FuNE9ZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aWZpZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgIEUwMjdFcWlMb29rdXAsXG4gICAgRTAyN1N0ckxvb2t1cCxcbiAgICBFbnVtTG9naWNhbE9wZXJhdG9yLFxuICAgIExvb2t1cFZhbGlkYXRpb25VdGlsc1xufSBmcm9tICdAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgICBCYWRnZUNvbG9ycyxcbiAgICBCdXR0b25BbmltYXRpb24sXG4gICAgQnV0dG9uUHJpb3JpdHksXG4gICAgQnV0dG9uU2l6ZSxcbiAgICBGaWVsZFR5cGUsXG4gICAgRm9ybUZpZWxkLFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxuICAgIExvb2t1cEZpZWxkXG59IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBzY2FuLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS1jbGFzc2lmaWNhY2FvLXRyaWJ1dGFyaWEnO1xuaW1wb3J0IHsgRW51bVRpcG9DYWxjdWxvSW1wb3N0byB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS10aXBvLWNhbGN1bG8taW1wb3N0byc7XG5pbXBvcnQgeyBFcnBUcmlidXRvc1NlcnZpY2UgfSBmcm9tICcuL2VycC10cmlidXRvcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ2FtcG9UcmlidXRvLFxuICAgIEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgIEVudW1DYW1wb1RyaWJ1dG8sXG4gICAgRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLFxuICAgIEVudW1HcnVwb1RyaWJ1dG8sXG4gICAgRW51bU1vZEJjLFxuICAgIEVudW1Nb3REZXMsXG4gICAgRW51bU9yaU1lcixcbiAgICBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyxcbiAgICBFbnVtU2l0dWFjYW8sXG4gICAgZW51bVRpcENyZWRSZWN1cCxcbiAgICBFbnVtVGlwSW1wQ3N0LFxuICAgIEVudW1UaXBPcGUsXG4gICAgRW51bVRpcG9UcmlidXRvLFxuICAgIEl0ZW0sXG4gICAgU3VnZXN0YW8sXG4gICAgVGF4Q2FsY3VsYXRpb25NZW1vcnlcbn0gZnJvbSAnLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0IH0gZnJvbSAnLi9tYXBwaW5ncy9lbnVtLXRpcC1pbXAtY3N0LW1hcHBpbmcnO1xuaW1wb3J0IHsgUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi9ydWxlcy9ydWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzVGF4RnJvbVRheFJlZm9ybSB9IGZyb20gJy4vdGF4LXJlZm9ybS11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY29udGV4dCc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJy4vdHlwZXMvZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VycC10cmlidXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VycC10cmlidXRvcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXJwVHJpYnV0b3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgQElucHV0KCkgc3VnZXN0b2VzOiBTdWdlc3Rhb1tdO1xuICAgIEBJbnB1dCgpIGNhbXBvc0Jsb3F1ZWFkb3MgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCB0cmlidXRvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpYnV0b3NWYWx1ZTtcbiAgICB9XG4gICAgc2V0IHRyaWJ1dG9zKHZhbCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIEBJbnB1dCgpIGRvbWluaW8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vydmljbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXJyZW5jeUxvY2FsZU9wdGlvbnM/OiBhbnkgPSB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgIH07XG4gICAgQElucHV0KCkgaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsbz86IFRheENhbGN1bGF0aW9uTWVtb3J5W107XG4gICAgQElucHV0KCkgcGVybWlzc2lvbk1lbW9yaWFDYWxjdWxvPzogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB0cmlidXRvc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcmVhZG9ubHkgQmFkZ2VDb2xvcnMgPSBCYWRnZUNvbG9ycztcbiAgICByZWFkb25seSBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xuICAgIHJlYWRvbmx5IEJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xuICAgIHJlYWRvbmx5IEJ1dHRvbkFuaW1hdGlvbiA9IEJ1dHRvbkFuaW1hdGlvbjtcblxuICAgIHB1YmxpYyBncnVwb3M6IEdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgdHJpYnV0b3NWYWx1ZTogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgcmVsb2FkID0gdHJ1ZTtcbiAgICBwdWJsaWMgaW5kZXhBY2NvcmRpb246IG51bWJlcltdID0gW107XG4gICAgcHVibGljIHByZWZpeExhYmVsOiBzdHJpbmc7XG5cbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGVyY2VudGFnZUxvY2FsZU9wdGlvbnM/OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdTdHJMb29rdXA6IEUwMjdTdHJMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmVuZWZpY2lvRmlzY2FsTG9va3VwOiBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN2VxaUxvb2t1cDogRTAyN0VxaUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXR1cmV6YVJlY2VpdGFMb29rdXA6IENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cDogQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBydWxlc1NlcnZpY2U6IFJ1bGVzU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZG9taW5pbyA9IHRoaXMuZG9taW5pbyA/IHRoaXMuZG9taW5pbyA6ICdlcnB4X2NwbF9pbXAnO1xuICAgICAgICB0aGlzLnNlcnZpY28gPSB0aGlzLnNlcnZpY28gPyB0aGlzLnNlcnZpY28gOiAnY2FkYXN0cm9zJztcblxuICAgICAgICB0aGlzLnByZWZpeExhYmVsID0gYCR7dGhpcy5kb21pbmlvfS4ke3RoaXMuc2Vydmljb31gO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICclJyxcbiAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF2YXJpYXZlaXNBbHRlcmFkYXMuaW5jbHVkZXMoJ3N1Z2VzdG9lcycpIHx8XG4gICAgICAgICAgICB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmlidXRvcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW1wb3NCbG9xdWVhZG9zID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb29rdXBVdGlscy5yZXNldFN0b3JlZEtleXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVtb3JpYUNhbGN1bG8oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIGxldCB0cmlidXRvID0gdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RnJvbnRlbmQocGFyYW1zKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd0YWcuc2VuZEJ1dHRvbkNsaWNrKCdCb3TDo28gYWNlc3NhciBwYXJhbWV0cml6YcOnw6NvJywge1xuICAgICAgICAgICAgaW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG9cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkQnV0dG9uKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETyB8fFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSBpdGVtLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV90aXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZTogJ2VycHgtY3BsLWltcC1pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBgJHt0aGlzLnZhbGlkYVRlbGEodHJpYnV0byl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1ha2VVcmxXaW5kb3cocGFyYW1zLCB0cmlidXRvKTtcbiAgICB9XG5cbiAgICB2YWxpZGFUZWxhKHRheGVzOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdFRheGVzKHRheGVzLnRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgaWYgKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvfS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvU3R9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7XG4gICAgICAgICAgICB0YXhlcy5pZFBhcmFtZXRyb1xuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY21zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NpZGUnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2JzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1lc3RhZHVhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLW11bmljaXBhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJpYnV0b3MoKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNCUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNFc3RhZHVhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNNdW5pY2lwYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlTKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVBpcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ29maW5zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXBpKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ2lkZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRPbmx5VHJpYnV0b3MoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncnVwb3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRyaWJ1dG9zKCkge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgPT09IGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0oaXQudGlwb0ltcG9zdG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyhpdC50aXBvSW1wb3N0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAucGF0Y2hWYWx1ZShpdCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnModHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQpID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldChpdGVtKS50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29BcnJlY2FkYWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW10pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29UcmlidXRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2Jhc2VDYWxjdWxvQ3JlZGl0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0byAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICduYXR1cmV6YVJlY2VpdGEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3ZhbG9yRGVkdWNhbycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVkdWNhb0FsaXF1b3RhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxSZWR1Y2FvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2JlbmVmaWNpb0Zpc2NhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhjb250cm9sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0YSBhIHZhbGlkYcOnw6NvIGRlIHRvZG9zIG9zIGNhbXBvcyBkb3MgZm9ybXVsw6FyaW9zIGRlbnRybyBkb3MgZ3J1cG9zLlxuICAgICAqXG4gICAgICogKipBdGVuw6fDo286KiogRXN0ZSBtw6l0b2RvICoqbsOjbyoqIGRldmUgc2VyIHV0aWxpemFkbyBubyB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSB0b2RvcyBvcyBmb3JtdWzDoXJpb3MgZm9yZW0gdsOhbGlkb3MgZSBuZW5odW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm87IGNhc28gY29udHLDoXJpbywgcmV0b3JuYSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lcnJvcicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfdGF4X3dpdGhfbmVnYXRpdmVfdGF4X3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18ke2dyb3VwLmdydXBvVHJpYnV0by50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3MuZXZlcnkoKGdyb3VwKSA9PlxuICAgICAgICAgICAgZ3JvdXAuaXRlbVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmZvcm1Hcm91cC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC52YWxpZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNlIGFsZ3VtIGZvcm11bMOhcmlvIGVzdMOhIGludsOhbGlkby5cbiAgICAgKlxuICAgICAqIERldmUgc2VyIHV0aWxpemFkbyBzb21lbnRlIG5vIHRlbXBsYXRlIHBhcmEgY29udHJvbGUgZGUgYm90w7VlcyBvdSBleGliacOnw6NvIGRlIG1lbnNhZ2Vucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSBhbGd1bSBgZm9ybUdyb3VwYCBlc3RpdmVyIGludsOhbGlkbyBvdSBzZSBhbGd1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2by5cbiAgICAgKi9cbiAgICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKSB8fFxuICAgICAgICAgICAgdGhpcy5ncnVwb3Muc29tZSgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PiBpdGVtLmZvcm1Hcm91cC5pbnZhbGlkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTogR3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgKS5pc0xlc3NUaGFuKDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJJdGVuczogYW55ID0gW107XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXVNYXRoID0gdGhpcy50cmlidXRvc1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyaWJ1dG8pID0+IHRyaWJ1dG8udGlwb0ltcG9zdG8gPT0gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRyaWJ1dG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV1TWF0aCAmJiBkZXVNYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goZGV1TWF0aFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJpYnV0b3NDaGFuZ2UuZW1pdChhcnJJdGVucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3ZvSW1wb3N0b01hbnVhbChpdGVtOiBJdGVtLCBzaW5nbGVDaGFuZ2U/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZCBvZiBpdGVtLmZvcm1GaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5vbkJsdXI/LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdydXBvcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLmluY2x1ZGVzKGl0ZW0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1lbnU6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNFc3RhZHVhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfbXVuaWNpcGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU011bmljaXBhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfZXN0b3Jub19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09ICdJbnZlbnRvcnkgTG9zcydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNhb0Z1bnJ1cmFsJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNhb19mdW5ydXJhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3BpcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcGlzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1QaXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVBpcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdjb2ZpbnMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2NvZmluc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ29maW5zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDb2ZpbnMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaXBpJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pcGlfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlwaSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXBpKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2ljbXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUljbXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5kb2N1bWVudCAhPT0gJ1NhbGUgT3JkZXInKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnaW1wb3J0YWNvZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ltcG9ydGFjb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlzcyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXNzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXMsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnY2lkZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2lkZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JylcbiAgICAgICAgKVxuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvZGVNb3N0cmFySW1wb3N0b3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19lZmV0aXZvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfc2VuYXInLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBpdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIgPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NicycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5DQlMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU011bmljaXBhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpOiBJdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXMnLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JUylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFQaXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVBpcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19mYXR1cmFtZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlBJUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNvZmlucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Db2ZpbnMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXBpKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlwaSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX291dHJhc19kZXNwZXNhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdQcm9kdWN0IFJldHVybic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVBJICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3M7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWw7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3N0b0NhbGN1bGFkbyhpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kSW1wb3N0byhudW1iZXI6IGFueSwgZGVjaW1hbHM6IGFueSkge1xuICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMTAsIE51bWJlcihkZWNpbWFscykgKyAxKTtcbiAgICAgICAgcmV0dXJuIChOdW1iZXIobnVtYmVyKSArIDEgLyB4KS50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgIGltcG9zdG9zOiBzdHJpbmdbXSxcbiAgICAgICAgZ3J1cG86IGFueSxcbiAgICAgICAgc3VtbWFyeU1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgZGV0YWlsTWVzc2FnZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGltcG9zdG9GaWx0cmFkbyA9IGltcG9zdG9zLmZpbHRlcihcbiAgICAgICAgICAgIChpbXBvc3RvKSA9PlxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgICdDQlNfRElGRVJJRE8nLFxuICAgICAgICAgICAgICAgICAgICAnSUJTX0VTVEFEVUFMX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19NVU5JQ0lQQUxfRElGRVJJRE8nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhpbXBvc3RvKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBjb250cm9sZUltcG9zdG8gPSB0aGlzLmNhbGN1bGFySW1wb3N0b3NUb3RhbChcbiAgICAgICAgICAgIGltcG9zdG9GaWx0cmFkbyxcbiAgICAgICAgICAgIGdydXBvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGNvbnRyb2xlSW1wb3N0by5iYXNlRGlmZXJlbnRlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1bW1hcnlNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZGV0YWlsTWVzc2FnZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xlSW1wb3N0bztcbiAgICB9XG5cbiAgICAvLyBOw6NvIHV0aWxpemFyIGVzdGUgbcOpdG9kbyBwYXJhIGPDoWxjdWxvcyBkZSBpbXBvc3RvcyBkYSBSZWZvcm1hIFRyaWJ1dMOhcmlhLlxuICAgIHByaXZhdGUgY2FsY3VsYXJWYWxvcih0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogSXRlbSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlICYmIHRoaXMuaW1wb3N0b0NhbGN1bGFkbyh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvICE9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2l0dWFjYW9UcmlidXRhcmlhLnZhbHVlID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLmNvZFN0ciAhPSAnNTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmRJbXBvc3RvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlICogYWxpcXVvdGEpIC8gMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYmFzZUNhbGN1bG8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGJhc2UgKiBhbGlxdW90YSkgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2UgKiBhbGlxdW90YSkgLyAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5yZXNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bGxPclVuZGVmaW5lZChiYXNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYWxpcXVvdGEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RpZ29UcmlidXRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmNvZGlnb1RyaWJ1dGFjYW8ucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3N0b3MgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX0lOU1MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9SQVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9TRU5BUidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xlRnVucnVyYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZUVycm9yQmFzZURpZmVyZW50ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9zdW1tYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfZGV0YWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogY29udHJvbGVGdW5ydXJhbC5iYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxvcjogY29udHJvbGVGdW5ydXJhbC52YWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXJJbXBvc3Rvc1RvdGFsKGltcG9zdG9zOiBhbnksIGdydXBvKSB7XG4gICAgICAgIGxldCB2YWxvcmVzID0ge1xuICAgICAgICAgICAgYmFzZTogMCxcbiAgICAgICAgICAgIHZhbG9yOiAwLFxuICAgICAgICAgICAgYmFzZURpZmVyZW50ZTogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaW1wb3N0b3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbXBvc3RvID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGltcG9zdG9zW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSAhPSBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2VEaWZlcmVudGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgIGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvID4gdmFsb3Jlcy5iYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbG9yZXMuYmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUudmFsb3IpKSB7XG4gICAgICAgICAgICAgICAgdmFsb3Jlcy52YWxvciA9IE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZEltcG9zdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIodmFsb3Jlcy52YWxvcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS52YWxvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbG9yZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNhbXBvcyhjYW1wb3M6IENhbXBvVHJpYnV0b1tdLCB0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgY29uc3QgcmV0b3JubzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZDogRm9ybUZpZWxkW10gPSBbXTtcbiAgICAgICAgbGV0IGZvcm1Hcm91cDogYW55ID0ge307XG5cbiAgICAgICAgY2FtcG9zLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYmFzZUNhbGN1bG8nLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYWxpcXVvdGEnLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9nb3Zlcm5hbWVudGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUVmZXRpdmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2VmZXRpdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYURlc3Rpbm86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2Rlc3Rpbm9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgndmFsb3InLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JCcnV0b0ltcG9zdG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2JydXRvX2ltcG9zdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJc2VudGFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaXNlbnRhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvck91dHJhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9vdXRyYXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaEdyaWRGaWVsZHMhOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZFN0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX3Bpc19jb2ZpbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuUElTX0NPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXBpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaWNtcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3Zfc2FpZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVlNBSURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2VudHJhZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkVOVFJBREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfYW1ib3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW21hcEVudW1UaXBvVHJpYnV0b1RvRW51bVRpcEltcENzdCh0cmlidXRvKV1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtFbnVtVGlwT3BlLlZBTUJPUywgRW51bVRpcE9wZS5WU0FJREFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW0VudW1UaXBPcGUuVkFNQk9TLCBFbnVtVGlwT3BlLlZFTlRSQURBXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ1ZBVElWTyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEuaW5kR0VzdG9ybm9DcmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnRVhJR0UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzOiBbJ2UwMjdzdHIuaWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGVucXVhZHJhbWVudG9JcGk6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3ZXFpTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdlMDI3ZXFpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdlbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsUmVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9tdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkZXNvbmVyYWNhb0ljbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjkwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2VtOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbERpZmVyaW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9kaWZlcmltZW50b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXBvcnRhZG9fY29uc3VtaWRvcl9maW5hbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxpZGFkZUJDOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBuYXR1cmV6YVJlY2VpdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5uYXR1cmV6YVJlY2VpdGFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ25hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JEZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRpdm9BcXVpc2ljYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2luZGljYXRpdm9fYXF1aXNpY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb0FycmVjYWRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvVHJpYnV0YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX3RyaWJ1dGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3Vsb0NyZWRpdG86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXNwZW5zYW9fcGFyY2lhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiZW5lZmljaW9GaXNjYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmJlbmVmaWNpb0Zpc2NhbExvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnYmVuZWZpY2lvRmlzY2FsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2JlbmVmaWNpb19maXNjYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNzdERlc29uZXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZTQUlEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVNpdHVhY2FvLlZBVElWT11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVRpcEltcENzdC5DQlNfSUJTXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNzdF9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5zaXR1YWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURlc29uZXJhY2FvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLkFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3N1YnRyYWlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU1VCVFJBSVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zb21hcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNPTUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX25lbmh1bSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXNjcml0dXJhcl9hbGlxdW90YV9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3Nfc2ltJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX25hbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuTkFPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09XG4gICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWRpdG9QcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsndHJ1ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5JcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW251bGxdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3VnZXN0b2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2VzdG9lc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1Z2VzdGFvKSA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoc3VnZXN0YW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhdHJpYnV0b3MpID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChhdHJpYnV0b3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBbYXRyaWJ1dG9zWzBdXVswXS52YWx1ZSA9IGF0cmlidXRvc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICBpbXBvc3RvTWFudWFsOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0b3JubztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVWYWx1ZUNoYW5nZXMoeyBpdGVtIH06IHsgaXRlbTogSXRlbTsgZ3JvdXA6IEdyb3VwIH0pIHtcbiAgICAgICAgaXRlbS5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGRlYm91bmNlVGltZSBoZXJlIGJlY2F1c2Ugb3VyIExvb2t1cCBDb21wb25lbnQgaXMgZW1pdHRpbmcgdHdvIGV2ZW50cyB1bmZvcnR1bmF0ZWx5LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2NhbihcbiAgICAgICAgICAgICAgICAgICAgKGFjYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGFjYy5zdGFydGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXJ0aW5nVmFsdWUsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydGluZ1ZhbHVlLmltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsQWxpcXVvdGEodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0by50b1N0cmluZygpLmVuZHNXaXRoKCdfRElGRVJJRE8nKSAmJlxuICAgICAgICAgICAgdHJpYnV0byAhPT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZGlmZXJpZG9fbGFiZWwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zbGF0ZUJ1dHRvbih2YWx1ZTogYW55KSB7XG4gICAgICAgIGxldCB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fZW1wdHlfbGFiZWwnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxuXG4gICAgaXNCYWRnZVZpc2libGUoaXRlbTogSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pICYmXG4gICAgICAgICAgICAhIWl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUNvbG9yKGl0ZW06IEl0ZW0pOiBCYWRnZUNvbG9ycyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuR3JlZW47XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuQmx1ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEJhZGdlVGV4dChpdGVtOiBJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2F1dG9tYXRpY28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2dlcmFkb192aWFfcHJvY2Vzc28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUluZm9TaWduKGl0ZW06IEl0ZW0pOiB7IHRleHQ6IHN0cmluZyB9IHtcbiAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52b2ljZURvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkUmVxdWlyZWQoZmllbGQ6IHN0cmluZywgdGF4VHlwZTogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pdGVtLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gdGF4VHlwZSkpXG4gICAgICAgICAgICAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC5nZXQoZmllbGQpLnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbClcbiAgICAgICAgICAgID8ucmVxdWlyZWQ7XG4gICAgfVxufVxuIl19