@qbs-origin/origin-form 0.8.0 → 0.8.2

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,6 +1,26 @@
1
1
  import { Partner } from './partner.model';
2
2
  import { FluxHelper } from '../others/flux-helper';
3
3
  import { PresentationControl } from './flux.model';
4
+ export class NotificationConfig {
5
+ constructor() {
6
+ this.enabled = false;
7
+ this.titleTemplate = 'Status update: {statusName}';
8
+ this.messageTemplate = 'Your application status has been updated to: {statusName}';
9
+ }
10
+ }
11
+ export class InheritedField {
12
+ constructor() {
13
+ this.id = '';
14
+ this.fieldName = '';
15
+ }
16
+ }
17
+ export class ParentChildConfig {
18
+ constructor() {
19
+ this.parentApplicationUuid = null;
20
+ this.inheritedFields = [];
21
+ this.notificationConfig = new NotificationConfig();
22
+ }
23
+ }
4
24
  export class FormModel {
5
25
  }
6
26
  export class AppDataControl {
@@ -26,7 +46,7 @@ export class AppDataStep {
26
46
  }
27
47
  }
28
48
  export class AppDataFill {
29
- constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false) {
49
+ constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false, parentAppDataUuid = '') {
30
50
  this.metadata = {
31
51
  appDataId: appDataId || '',
32
52
  configurationId: configurationId || '',
@@ -35,6 +55,7 @@ export class AppDataFill {
35
55
  language: language || '',
36
56
  offerId: offerId || '',
37
57
  isSubmitted: isSubmitted || false,
58
+ parentAppDataUuid: parentAppDataUuid || '',
38
59
  };
39
60
  this.flux = flux || [];
40
61
  }
@@ -47,6 +68,7 @@ export class AppData {
47
68
  this.initFlowValues = data.initFlowValues;
48
69
  this.withNextStep = data.withNextStep;
49
70
  this.blockPreviousStep = data.blockPreviousStep;
71
+ this.parentAppDataUuid = data.parentAppDataUuid;
50
72
  if (!data.env) {
51
73
  this.env = 'Config';
52
74
  }
@@ -446,6 +468,7 @@ export const initialFormulareState = {
446
468
  applicationTypeId: 0,
447
469
  columnMappings: [],
448
470
  },
471
+ parentChildConfig: undefined,
449
472
  },
450
473
  selectedTab: 'Date generale',
451
474
  canGetFromProd: false,
@@ -567,14 +590,16 @@ export var ApiMethodType;
567
590
  ApiMethodType[ApiMethodType["Validation"] = 2] = "Validation";
568
591
  })(ApiMethodType || (ApiMethodType = {}));
569
592
  export class StatusModel {
570
- constructor(id, denumire, ordine, final, isActive, actions) {
593
+ constructor(id, denumire, ordine, final, isActive, actions, childApplicationUuids = []) {
571
594
  this.actions = [];
595
+ this.childApplicationUuids = [];
572
596
  this.id = id;
573
597
  this.name = denumire;
574
598
  this.order = ordine;
575
599
  this.final = final;
576
600
  this.isActive = isActive;
577
601
  this.actions = actions;
602
+ this.childApplicationUuids = childApplicationUuids || [];
578
603
  }
579
604
  }
580
605
  export class StatusAction {
@@ -631,4 +656,4 @@ export var AppDataStatus;
631
656
  AppDataStatus[AppDataStatus["new"] = 0] = "new";
632
657
  AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
633
658
  })(AppDataStatus || (AppDataStatus = {}));
634
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFLEVBQ3hCLFVBQXFCLEVBQ3JCLFlBQXVCO1FBRXZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQWF0QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsa0JBQTBCLEVBQUUsRUFDNUIsZ0JBQXdCLEVBQUUsRUFDMUIsV0FBbUIsRUFBRSxFQUNyQixXQUFtQixFQUFFLEVBQ3JCLE9BQXNCLEVBQUUsRUFDeEIsVUFBa0IsRUFBRSxFQUNwQixjQUF1QixLQUFLO1FBRTVCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxTQUFTLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDMUIsZUFBZSxFQUFFLGVBQWUsSUFBSSxFQUFFO1lBQ3RDLGFBQWEsRUFBRSxhQUFhLElBQUksRUFBRTtZQUNsQyxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDeEIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUN0QixXQUFXLEVBQUUsV0FBVyxJQUFJLEtBQUs7U0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sT0FBTztJQVdsQixZQUFZLElBU1g7UUFDQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUFZLEtBQWdCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFvQjtRQUNqRCxNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxTQUFpQixFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUM7UUFDL0UsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE1BQU0sR0FBUSxTQUFTLENBQUM7UUFDNUIsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLDRFQUE0RTtnQkFDNUUsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxDQUFDLElBQVMsRUFBRSxTQUFtQixFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBbUI7UUFDNUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLGtCQUFrQixjQUFjLEVBQUU7WUFDN0MsU0FBUyxFQUFFLGVBQWUsQ0FBQyxRQUFRO1lBQ25DLEVBQUUsRUFBRSxrQkFBa0IsY0FBYyxFQUFFO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUyxDQUNkLHNCQUEwQyxTQUFTO1FBRW5ELElBQUksS0FBSyxHQUFrQixFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULFNBQVMsRUFBRSxVQUFVO29CQUNyQixTQUFTLEVBQUUsZUFBZSxDQUFDLFFBQVE7b0JBQ25DLEVBQUUsRUFBRSxZQUFZLFVBQVUsRUFBRTtpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNsQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FDeEUsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNPLHdCQUF3QixDQUM5QixLQUFpQixFQUNqQixzQkFBMEMsU0FBUztRQUVuRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO29CQUNuRSxNQUFNO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ25DLElBQ0U7Z0NBQ0UsZUFBZSxDQUFDLE9BQU87Z0NBQ3ZCLGVBQWUsQ0FBQyxNQUFNO2dDQUN0QixlQUFlLENBQUMsUUFBUTtnQ0FDeEIsZUFBZSxDQUFDLFNBQVM7NkJBQzFCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQ2pDLENBQUM7Z0NBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDVCxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRTtvQ0FDakUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJO29DQUN2QixxQkFBcUIsRUFBRSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSTtvQ0FDeEQsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2lDQUN2QixDQUFDLENBQUM7NEJBQ0wsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxRQUFvQjtRQUNwRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQzdCLENBQUMsUUFBOEMsRUFBRSxFQUFFO29CQUNqRCxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FDZixJQUFJLFFBQVEsQ0FBQyxJQUNoQixFQUFFO3dCQUNGLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDcEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVOzRCQUN0QixDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsVUFBVSxFQUFFOzRCQUNqQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FDdEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7b0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzs0QkFDNUQsUUFBUSxDQUFDLElBQ1gsRUFBRTt3QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTs0QkFDZCxDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsRUFBRSxFQUFFOzRCQUMzQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQzVCLENBQUMsUUFBc0MsRUFBRSxFQUFFO3dCQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLEVBQUUsRUFDWixJQUFJLENBQUMsU0FBUyxDQUNmLElBQUksUUFBUSxDQUFDLElBQ2hCLEVBQUU7NEJBQ0YsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNwQixFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0NBQ2QsQ0FBQyxDQUFDLFFBQVEsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQ0FDdkIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO3lCQUNoQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUNGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FDbEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUM1QixRQUFRLEVBQUUsRUFBRSxFQUNaLElBQUksQ0FBQyxTQUFTLENBQ2YsSUFBSSxRQUFRLENBQUMsSUFDaEIsRUFBRTs0QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQ0FDZCxDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsRUFBRSxFQUFFO2dDQUN6QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7eUJBQ2hDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sMEJBQTBCLENBQy9CLG1CQUEyQixFQUFFO1FBRTdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFO3dCQUNsRCxTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWM7d0JBQ3pDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtxQkFDVCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUU5QixJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFaEQsTUFBTSxXQUFXLEdBQUc7WUFDbEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQzlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZTtZQUNyQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVM7U0FDaEMsQ0FBQztRQUVGLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0JBQ2xELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzt3QkFDN0IsRUFBRSxFQUFFLE9BQU8sU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBSW5CO0FBRUQsTUFBTSxPQUFPLE9BQU87Q0FLbkI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUNELE1BQU0sT0FBTyxXQUFXO0lBZ0J0QixZQUFZLElBQVU7UUFmdEIsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUNuQyxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQVl6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQzdCLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FDMUMsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDbkMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUNuRCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDekQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBU3JCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQW9CdkIsWUFBWSxJQUFVO1FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUFZLEtBQVc7UUFDckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBaUJ2QixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQWMxQixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQVc1QjtBQWFELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFlO0lBQy9DLElBQUksRUFBRTtRQUNKLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLENBQUM7WUFDbEIsU0FBUyxFQUFFLEVBQUU7WUFDYixlQUFlLEVBQUUsRUFBRTtZQUNuQixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxLQUFLO1lBQ25CLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGNBQWMsRUFBRSxFQUFFO1NBQ25CO1FBQ0QsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1oseUJBQXlCLEVBQUUsRUFBRTtZQUM3Qix1QkFBdUIsRUFBRSxFQUFFO1lBQzNCLFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFDRCxJQUFJLEVBQUUsRUFBRTtRQUNSLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQ3pELFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBRTtZQUNQLFFBQVEsRUFBRSxFQUFFO1NBQ2I7UUFDRCxZQUFZLEVBQUUsRUFBRTtRQUNoQixjQUFjLEVBQUUsRUFBRTtRQUNsQixNQUFNLEVBQUUsRUFBRTtRQUNWLG1CQUFtQixFQUFFO1lBQ25CLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsY0FBYyxFQUFFLEVBQUU7U0FDbkI7S0FDRjtJQUNELFdBQVcsRUFBRSxlQUFlO0lBQzVCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixlQUFlLEVBQUUsRUFBRTtJQUNuQixPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFRixNQUFNLE9BQU8sd0JBQXdCO0NBSXBDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDRSxzQkFBaUIsR0FBdUIsRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7Q0FXNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLDBDQUFxQixDQUFBO0lBQ3JCLGtEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtDQUloQztBQUVELE1BQU0sT0FBTyxtQkFBbUI7Q0FJL0I7QUFDRCxNQUFNLE9BQU8sb0JBQW9CO0NBR2hDO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQU01QjtBQUVELE1BQU0sT0FBTyxxQkFBcUI7Q0FJakM7QUFFRCxNQUFNLE9BQU8sWUFBWTtDQUt4QjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FJN0I7QUFFRCxNQUFNLE9BQU8sYUFBYTtDQUt6QjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSUUsMEJBQXFCLEdBQXdDLFNBQVMsQ0FBQztJQUN6RSxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUsxQjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7Q0FlbEM7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0NBSWhDO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtDQVFqQztBQUVELE1BQU0sQ0FBTixJQUFZLFFBbUJYO0FBbkJELFdBQVksUUFBUTtJQUNsQixxQ0FBTyxDQUFBO0lBQ1AseUNBQVMsQ0FBQTtJQUNULHlDQUFTLENBQUE7SUFDVCx1Q0FBUSxDQUFBO0lBQ1IsMkNBQVUsQ0FBQTtJQUNWLDJDQUFVLENBQUE7SUFDVix5Q0FBUyxDQUFBO0lBQ1QsMkNBQVUsQ0FBQTtJQUNWLCtEQUFvQixDQUFBO0lBQ3BCLDJDQUFVLENBQUE7SUFDViw0REFBbUIsQ0FBQTtJQUNuQixnRUFBcUIsQ0FBQTtJQUNyQixrREFBYyxDQUFBO0lBQ2QsMENBQVUsQ0FBQTtJQUNWLHdEQUFpQixDQUFBO0lBQ2pCLDhDQUFZLENBQUE7SUFDWixrREFBYyxDQUFBO0lBQ2Qsc0RBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQW5CVyxRQUFRLEtBQVIsUUFBUSxRQW1CbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWixtREFBTyxDQUFBO0lBQ1AsbURBQU8sQ0FBQTtBQUNULENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBYVg7QUFiRCxXQUFZLGVBQWU7SUFDekIsbUVBQWUsQ0FBQTtJQUNmLCtEQUFhLENBQUE7SUFDYiw2REFBWSxDQUFBO0lBQ1osaUVBQWMsQ0FBQTtJQUNkLDJEQUFXLENBQUE7SUFDWCw2REFBWSxDQUFBO0lBQ1oseURBQVUsQ0FBQTtJQUNWLDZEQUFZLENBQUE7SUFDWix5RUFBa0IsQ0FBQTtJQUNsQiwrRUFBcUIsQ0FBQTtJQUNyQix3RUFBa0IsQ0FBQTtJQUNsQiw0RUFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsZUFBZSxLQUFmLGVBQWUsUUFhMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLDZEQUFVLENBQUE7SUFDVixxREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBT1g7QUFQRCxXQUFZLHNCQUFzQjtJQUNoQyxtRUFBSSxDQUFBO0lBQ0oseUVBQU8sQ0FBQTtJQUNQLDJFQUFRLENBQUE7SUFDUixxRUFBSyxDQUFBO0lBQ0wscUVBQUssQ0FBQTtJQUNMLDJFQUFRLENBQUE7QUFDVixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQztBQUVELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsNkRBQVUsQ0FBQTtJQUNWLCtEQUFXLENBQUE7SUFDWCwyREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qix1REFBTyxDQUFBO0lBQ1AseURBQVEsQ0FBQTtJQUNSLDZEQUFVLENBQUE7QUFDWixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUNFLEVBQVUsRUFDVixRQUFnQixFQUNoQixNQUFjLEVBQ2QsS0FBYyxFQUNkLFFBQWlCLEVBQ2pCLE9BQXVCO1FBUnpCLFlBQU8sR0FBbUIsRUFBRSxDQUFDO1FBVTNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFJRSxlQUFVLEdBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7Q0FFcEU7QUFHRCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU87SUFBdkM7O1FBQ0UsY0FBUyxHQUEyQixFQUFFLENBQUM7SUFLekMsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUF0QztRQUVFLFdBQU0sR0FBcUMsRUFBRSxDQUFDO1FBQzlDLG1CQUFjLEdBQTZDLEVBQUUsQ0FBQztJQUloRSxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sdUJBQXVCO0NBR25DO0FBQ0QsTUFBTSxPQUFPLDhCQUE4QjtJQUEzQztRQU9FLG9CQUFlLEdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxzQ0FBc0M7Q0FHbEQ7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBTS9CO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFPRSxhQUFRLEdBQXlCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQVc7Q0FFOUM7QUFNRCxNQUFNLE9BQU8sa0JBQWtCO0NBWTlCO0FBRUQsTUFBTSxPQUFPLGVBQWU7Q0FHM0I7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBRzdCO0FBRUQsTUFBTSxPQUFPLGNBQWM7Q0FJMUI7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsY0FBYztDQU94RDtBQUVELE1BQU0sT0FBTyxhQUFhO0NBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QiwrQ0FBTyxDQUFBO0lBQ1AseURBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZXM/OiBzdHJpbmdbXTtcbiAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWVzPzogc3RyaW5nW10sXG4gICAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5jb250cm9sSWQgPSBjb250cm9sSWQgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWUgPSBmaWxsVmFsdWUgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWVJZCA9IGZpbGxWYWx1ZUlkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlcyA9IGZpbGxWYWx1ZXM7XG4gICAgdGhpcy5maWxsVmFsdWVJZHMgPSBmaWxsVmFsdWVJZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuICBpbml0Rmxvd1ZhbHVlcz86IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHBEYXRhSWQ6IHN0cmluZyA9ICcnLFxuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nID0gJycsXG4gICAgY3VycmVudFN0ZXBJZDogc3RyaW5nID0gJycsXG4gICAgc3RhdHVzSWQ6IHN0cmluZyA9ICcnLFxuICAgIGxhbmd1YWdlOiBzdHJpbmcgPSAnJyxcbiAgICBmbHV4OiBBcHBEYXRhU3RlcFtdID0gW10sXG4gICAgb2ZmZXJJZDogc3RyaW5nID0gJycsXG4gICAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgYXBwRGF0YUlkOiBhcHBEYXRhSWQgfHwgJycsXG4gICAgICBjb25maWd1cmF0aW9uSWQ6IGNvbmZpZ3VyYXRpb25JZCB8fCAnJyxcbiAgICAgIGN1cnJlbnRTdGVwSWQ6IGN1cnJlbnRTdGVwSWQgfHwgJycsXG4gICAgICBzdGF0dXNJZDogc3RhdHVzSWQgfHwgJycsXG4gICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UgfHwgJycsXG4gICAgICBvZmZlcklkOiBvZmZlcklkIHx8ICcnLFxuICAgICAgaXNTdWJtaXR0ZWQ6IGlzU3VibWl0dGVkIHx8IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5mbHV4ID0gZmx1eCB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YSB7XG4gIGlkPzogbnVtYmVyO1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gIGZpbGxEYXRhPzogQXBwRGF0YUZpbGw7XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xuICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gIGJsb2NrUHJldmlvdXNTdGVwOiBib29sZWFuO1xuICBlbnY6IHN0cmluZztcbiAgc3RhdHVzOiBBcHBEYXRhU3RhdHVzO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgICBmaWxsRGF0YT86IEFwcERhdGFGaWxsO1xuICAgIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xuICAgIHdpdGhOZXh0U3RlcDogYm9vbGVhbjtcbiAgICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgICBlbnY6IHN0cmluZztcbiAgfSkge1xuICAgICh0aGlzLmlkID0gZGF0YS5pZCA/PyB1bmRlZmluZWQpLCAodGhpcy5hcHBEYXRhSWQgPSBkYXRhLmFwcERhdGFJZCB8fCAnJyk7XG4gICAgdGhpcy5hcHBDb25maWd1cmF0aW9uSWQgPSBkYXRhLmFwcENvbmZpZ3VyYXRpb25JZCB8fCAwO1xuICAgIHRoaXMuZmlsbERhdGEgPSBkYXRhLmZpbGxEYXRhO1xuICAgIHRoaXMuaW5pdEZsb3dWYWx1ZXMgPSBkYXRhLmluaXRGbG93VmFsdWVzO1xuICAgIHRoaXMud2l0aE5leHRTdGVwID0gZGF0YS53aXRoTmV4dFN0ZXA7XG4gICAgdGhpcy5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgaWYgKCFkYXRhLmVudikge1xuICAgICAgdGhpcy5lbnYgPSAnQ29uZmlnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYgPSBkYXRhLmVudjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbEV4dGVueGlvbnMge1xuICBmb3JtTW9kZWw6IEZvcm1Nb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihtb2RlbDogRm9ybU1vZGVsKSB7XG4gICAgdGhpcy5mb3JtTW9kZWwgPSBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5pdEZsb3dWYWx1ZXNJdGVtcyhpdGVtczogTWV0aG9kRmllbGRbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRGbG93VmFsdWVzUmF3ID0gKHRoaXMuZm9ybU1vZGVsIGFzIGFueSk/LmdlbmVyYWxEYXRhPy5pbml0Rmxvd1ZhbHVlcztcbiAgICBpZiAoaW5pdEZsb3dWYWx1ZXNSYXcgPT09IG51bGwgfHwgaW5pdEZsb3dWYWx1ZXNSYXcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYXJzZWQ6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIGluaXRGbG93VmFsdWVzUmF3ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGluaXRGbG93VmFsdWVzUmF3LnRyaW0oKTtcbiAgICAgIGlmICghdHJpbW1lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElmIGNvbmZpZyBjb250YWlucyBpbnZhbGlkIEpTT04sIGRvIG5vdCBleHBvc2UgYW55IGluaXRGbG93VmFsdWVzIGZpZWxkcy5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWQgPSBpbml0Rmxvd1ZhbHVlc1JhdztcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmlkKSk7XG4gICAgY29uc3Qgb3V0OiBNZXRob2RGaWVsZFtdID0gW107XG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IGFueSwgcGF0aFBhcnRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoUGFydHMubGVuZ3RoID4gMCkgb3V0LnB1c2godGhpcy5idWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgbm9kZS5mb3JFYWNoKChjaGlsZCwgaWR4KSA9PiB3YWxrKGNoaWxkLCBbLi4ucGF0aFBhcnRzLCBTdHJpbmcoaWR4KV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG5vZGUpLmZvckVhY2goKGtleSkgPT4gd2Fsayhub2RlW2tleV0sIFsuLi5wYXRoUGFydHMsIGtleV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFBhcnRzLmxlbmd0aCA+IDApIG91dC5wdXNoKHRoaXMuYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0cykpO1xuICAgIH07XG5cbiAgICB3YWxrKHBhcnNlZCwgW10pO1xuXG4gICAgZm9yIChjb25zdCBmIG9mIG91dCkge1xuICAgICAgaWYgKCFleGlzdGluZ0lkcy5oYXMoZi5pZCkpIHtcbiAgICAgICAgaXRlbXMucHVzaChmKTtcbiAgICAgICAgZXhpc3RpbmdJZHMuYWRkKGYuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0czogc3RyaW5nW10pOiBNZXRob2RGaWVsZCB7XG4gICAgY29uc3QgdW5kZXJzY29yZVBhdGggPSBwYXRoUGFydHMuam9pbignXycpO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZE5hbWU6IGBpbml0Rmxvd1ZhbHVlc18ke3VuZGVyc2NvcmVQYXRofWAsXG4gICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5NZXRhZGF0YSxcbiAgICAgIGlkOiBgaW5pdEZsb3dWYWx1ZXNfJHt1bmRlcnNjb3JlUGF0aH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEluaXRGbG93VmFsdWVzSXRlbXMoaXRlbXMpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbD8uZmx1eCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KHRoaXMuZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4KSk7XG4gICAgfVxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgdGhpcy5leHRyYWN0U2VjdGlvbnNGbHV4SXRlbXModGhpcy5mb3JtTW9kZWwuZmx1eCwgdW50aWxTdGVwSWRlbnRpZmllcilcbiAgICApO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG4gIHByaXZhdGUgZXh0cmFjdFNlY3Rpb25zRmx1eEl0ZW1zKFxuICAgIHN0ZXBzOiBTdGVwRGF0YVtdLFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGlmICh1bnRpbFN0ZXBJZGVudGlmaWVyICYmIHN0ZXAuaWRlbnRpZmllciA9PT0gdW50aWxTdGVwSWRlbnRpZmllcikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBzZWN0aW9uLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5CdXR0b25zLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5GbHV4SW5mbyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5QYXJhZ3JhcGgsXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhjb250cm9sLnR5cGUpID09IGZhbHNlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7c2VjdGlvbi50aXRsZX0gLT4gJHtjb250cm9sLnRpdGxlfWAsXG4gICAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IGNvbnRyb2wudHlwZSxcbiAgICAgICAgICAgICAgICAgIG1hbnVsSW5wdXRDb250cm9sVHlwZTogY29udHJvbC5zcGVjaWZpY0NvbnRyb2xEYXRhPy50eXBlLFxuICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRyb2wuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REb2N1bWVudHNGbHV4SXRlbXMoc3RlcERhdGE6IFN0ZXBEYXRhW10pOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIHN0ZXBEYXRhPy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC50eXBlID09PSBGbHV4VHlwZS5VcGxvYWREb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBkb2N1bWVudElkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmRvY3VtZW50SWQsXG4gICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uZG9jdW1lbnRJZFxuICAgICAgICAgICAgICAgID8gYHVwbG9hZC4ke2RvY3VtZW50LmRvY3VtZW50SWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQpIHtcbiAgICAgICAgc3RlcC5jb25maWc/LmdlbmVyYXRlZERvY3VtZW50cz8uZm9yRWFjaChcbiAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoZG9jdW1lbnQ/LmlkLCB0aGlzLmZvcm1Nb2RlbCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgID8gYGdlbmVyYXRlLiR7ZG9jdW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlNpZ24pIHtcbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5kb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHNpZ24uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzKSB7XG4gICAgICAgICAgc3RlcC5jb25maWc/LnN5c3RlbURvY3VtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgKGRvY3VtZW50OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgICApIHx8IGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgICA/IGBzeXN0ZW0uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBmbHV4SXRlbXNXaXRoR2V0QXBpTWV0aG9kcyhcbiAgICBleGNsdWRlZE1ldGhvZElkOiBzdHJpbmcgPSAnJ1xuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmZsdXhJdGVtcygpO1xuICAgIHRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcy5mb3JFYWNoKChhcGlNZXRob2QpID0+IHtcbiAgICAgIGlmIChhcGlNZXRob2QuaWQgIT09IGV4Y2x1ZGVkTWV0aG9kSWQpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZlck1ldGhvZHNJdGVtcygpOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGxldCBvZmZlck1ldGhvZHNJZHM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5mb3JtTW9kZWwucGFydG5lcnM/LmZvckVhY2goKHApID0+IHtcbiAgICAgIHAuZ2VuZXJhbFNldHRpbmdzLm9mZmVycz8uZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBvZmZlck1ldGhvZHNJZHMucHVzaChvLmFwaU1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgb2ZmZXJNZXRob2RzSWRzID0gWy4uLm5ldyBTZXQob2ZmZXJNZXRob2RzSWRzKV07XG5cbiAgICBjb25zdCBhbGxBcGlJdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS52YWxpZGF0aW9uSXRlbXMsXG4gICAgICAuLi50aGlzLmZvcm1Nb2RlbC5hcGkuc2VuZEl0ZW1zLFxuICAgIF07XG5cbiAgICBvZmZlck1ldGhvZHNJZHMuZm9yRWFjaCgobWV0aG9kSWQpID0+IHtcbiAgICAgIGNvbnN0IGFwaU1ldGhvZCA9IGFsbEFwaUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG1ldGhvZElkKTtcbiAgICAgIGlmIChhcGlNZXRob2QpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IEZsdXhUeXBlLlZpZXdPZmZlcixcbiAgICAgICAgICAgIGlkOiBgYXBpXyR7YXBpTWV0aG9kLmlkfSAtPiAke2YuaWR9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaURhdGEge1xuICBnZXRJdGVtczogR2V0QXBpSXRlbVtdO1xuICB2YWxpZGF0aW9uSXRlbXM6IEFwaUl0ZW1bXTtcbiAgc2VuZEl0ZW1zOiBBcGlJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGZpZWxkczogTWV0aG9kRmllbGRbXTtcbiAgdHlwZTogQXBpTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIEdldEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBHZXRNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuZXhwb3J0IGNsYXNzIERlc2lnbk1vZGVsIHtcbiAgZm9udHM6IEZvbnRDb25maWdbXSA9IFtdO1xuICBidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBvdHBBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSA9IFtdO1xuICB0YWJsZXM6IFRhYmxlQ29uZmlnW10gPSBbXTtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246IHN0cmluZztcbiAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICBtYXJnaW5SaWdodDogc3RyaW5nO1xuICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgbWFyZ2luQm90dG9tOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5mb250cykge1xuICAgICAgICB0aGlzLmZvbnRzID0gZGF0YS5mb250cy5tYXAoKGZvbnQ6IGFueSkgPT4gbmV3IEZvbnRDb25maWcoZm9udCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5idXR0b25zKSB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEuYnV0dG9ucy5tYXAoXG4gICAgICAgICAgKGJ1dHRvbjogYW55KSA9PiBuZXcgQnV0dG9uQ29uZmlnKGJ1dHRvbilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50cykge1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBkYXRhLmNvbXBvbmVudHMubWFwKFxuICAgICAgICAgIChjb21wb25lbnQ6IGFueSkgPT4gbmV3IENvbXBvbmVudENvbmZpZyhjb21wb25lbnQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnRhYmxlcykge1xuICAgICAgICB0aGlzLnRhYmxlcyA9IGRhdGEudGFibGVzLm1hcCgodGFibGU6IGFueSkgPT4gbmV3IFRhYmxlQ29uZmlnKHRhYmxlKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5idXR0b25zVmVydGljYWxQb3NpdGlvbiA9IGRhdGEudmVydGljYWxQb3NpdGlvbjtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9udENvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBmb250V2VpZ2h0OiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5mb250V2VpZ2h0ID0gZGF0YS5mb250V2VpZ2h0O1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBib3JkZXJSYWRpdXM6IHN0cmluZztcbiAgaG9yaXpvbnRhbFBhZGRpbmc6IHN0cmluZztcbiAgdmVydGljYWxQYWRkaW5nOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbWluV2lkdGg6IHN0cmluZztcbiAgbWluSGVpZ2h0OiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBob3Jpem9udGFsUG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJDb2xvciA9IGRhdGEuYm9yZGVyQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5ob3Jpem9udGFsUGFkZGluZyA9IGRhdGEuaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsUGFkZGluZyA9IGRhdGEudmVydGljYWxQYWRkaW5nO1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gZGF0YS5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IGRhdGEuZm9udFNpemU7XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgICB0aGlzLm1pbldpZHRoID0gZGF0YS5taW5XaWR0aDtcbiAgICAgIHRoaXMubWluSGVpZ2h0ID0gZGF0YS5taW5IZWlnaHQ7XG4gICAgICB0aGlzLm1heFdpZHRoID0gZGF0YS5tYXhXaWR0aDtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gZGF0YS5tYXhIZWlnaHQ7XG4gICAgICB0aGlzLmhvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb25maWcge1xuICBoZWFkZXJDb25maWc6IEhlYWRlckNvbmZpZztcbiAgZGV0YWlsQ29uZmlnOiBEZXRhaWxDb25maWc7XG5cbiAgY29uc3RydWN0b3IodGFibGU/OiBhbnkpIHtcbiAgICBpZiAodGFibGUpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gdGFibGUuaGVhZGVyQ29uZmlnO1xuICAgICAgdGhpcy5kZXRhaWxDb25maWcgPSB0YWJsZS5kZXRhaWxDb25maWc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWFkZXJDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICBib3JkZXJDb2xsYXBzZTogc3RyaW5nO1xuICBib3JkZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbiAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy50ZXh0Q29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5ib3JkZXIgPSBkYXRhLmJvcmRlcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMucGFkZGluZyA9IGRhdGEucGFkZGluZztcbiAgICAgIHRoaXMuYm9yZGVyQ29sbGFwc2UgPSBkYXRhLmJvcmRlckNvbGxhcHNlO1xuICAgICAgdGhpcy5ib3JkZXJTcGFjaW5nID0gZGF0YS5ib3JkZXJTcGFjaW5nO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgICAgdGhpcy53aWR0aCA9IGRhdGEud2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGV0YWlsQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHBhZGRpbmc6IHN0cmluZztcbiAgcm93Qm9yZGVyOiBzdHJpbmc7XG4gIHJvd0JvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5yb3dCb3JkZXIgPSBkYXRhLnJvd0JvcmRlcjtcbiAgICAgIHRoaXMuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmhvdmVyQmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBsYWJlbFN0eWxlOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHdlaWdodD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhcnRDb2xvcj86IHN0cmluZztcbiAgZW5kQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJSYWRpdXMgPSBkYXRhLmJvcmRlclJhZGl1cztcbiAgICAgIHRoaXMubGFiZWxTdHlsZSA9IGRhdGEubGFiZWxTdHlsZTtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMud2VpZ2h0ID0gZGF0YS53ZWlnaHQ7XG4gICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBkYXRhLnN0YXJ0Q29sb3I7XG4gICAgICB0aGlzLmVuZENvbG9yID0gZGF0YS5lbmRDb2xvcjtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5leHBvcnQgY2xhc3MgRGlzcGxheU1vZGVsIHtcbiAgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW107XG59XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGF0YU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHBsaWNhdGlvblR5cGU6IG51bWJlcjtcbiAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbiAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gIGNvbnRpbnVlV2l0aE9mZmVyOiBib29sZWFuO1xuICBzaG93Q291bnRlclN0ZXA6IGJvb2xlYW47XG4gIHNob3dOYW1lU3RlcDogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1zU3RhdGUge1xuICBkYXRhOiBGb3JtTW9kZWw7XG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY2FuR2V0RnJvbVByb2Q6IGJvb2xlYW47XG4gIGNhbkdldEZyb21UZXN0OiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5Qcm9kOiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5UZXN0OiBib29sZWFuO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxGb3JtdWxhcmVTdGF0ZTogRm9ybXNTdGF0ZSA9IHtcbiAgZGF0YToge1xuICAgIGFwcGxpY2F0aW9uSWQ6IDAsXG4gICAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgICBnZW5lcmFsRGF0YToge1xuICAgICAgbmFtZTogJycsXG4gICAgICBhcHBsaWNhdGlvblR5cGU6IDAsXG4gICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiAnJyxcbiAgICAgIGNvbnRpbnVlV2l0aE9mZmVyOiBmYWxzZSxcbiAgICAgIHNob3dDb3VudGVyU3RlcDogZmFsc2UsXG4gICAgICBzaG93TmFtZVN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd0FsbFN0ZXBzOiBmYWxzZSxcbiAgICAgIHNob3dQcm9ncmVzc0JhcjogZmFsc2UsXG4gICAgICBpbml0Rmxvd1ZhbHVlczogJycsXG4gICAgfSxcbiAgICBkZXNpZ246IHtcbiAgICAgIGZvbnRzOiBbXSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgb3RwQWN0aW9uQnV0dG9uczogW10sXG4gICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnLFxuICAgICAgZm9udFNpemU6ICcnLFxuICAgICAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogJycsXG4gICAgICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogJycsXG4gICAgICBtYXhXaWR0aDogJycsXG4gICAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICAgIG1hcmdpblJpZ2h0OiAnJyxcbiAgICAgIG1hcmdpblRvcDogJycsXG4gICAgICBtYXJnaW5Cb3R0b206ICcnLFxuICAgIH0sXG4gICAgZmx1eDogW10sXG4gICAgYXBpOiB7IGdldEl0ZW1zOiBbXSwgdmFsaWRhdGlvbkl0ZW1zOiBbXSwgc2VuZEl0ZW1zOiBbXSB9LFxuICAgIHBhcnRuZXJzOiBbXSxcbiAgICBkb2N1bWVudHM6IFtdLFxuICAgIHN0YXR1c2VzOiBbXSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBzZWN0aW9uczogW10sXG4gICAgfSxcbiAgICBnZW5lcmF0ZWRDc3M6IHt9LFxuICAgIG1ldGFkYXRhRmllbGRzOiBbXSxcbiAgICBlcnJvcnM6IHt9LFxuICAgIGFwcGxpY2F0aW9uTWFwcGluZ3M6IHtcbiAgICAgIGFwcGxpY2F0aW9uVHlwZUlkOiAwLFxuICAgICAgY29sdW1uTWFwcGluZ3M6IFtdLFxuICAgIH0sXG4gIH0sXG4gIHNlbGVjdGVkVGFiOiAnRGF0ZSBnZW5lcmFsZScsXG4gIGNhbkdldEZyb21Qcm9kOiBmYWxzZSxcbiAgY2FuR2V0RnJvbVRlc3Q6IGZhbHNlLFxuICBjYW5QdWJsaXNoSW5Qcm9kOiBmYWxzZSxcbiAgY2FuUHVibGlzaEluVGVzdDogZmFsc2UsXG4gIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gIHZlcnNpb246ICcnLFxufTtcblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZyB7XG4gIGRpY3Rpb25hcnlJZDogc3RyaW5nO1xuICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nO1xuICBtYXBwaW5nczogUGFydG5lcktleVZhbHVlSXRlbVtdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lclNldHRpbmdzIHtcbiAgcGFydG5lck1ldGhvZHNBcGk6IFBhcnRuZXJNZXRob2RBcGlbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaSB7XG4gIG1ldGhvZElkOiBzdHJpbmc7XG4gIG1ldGhvZFR5cGU6IHN0cmluZztcbiAgY2FsbFR5cGU6IHN0cmluZztcbiAgYm9keUNvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RCb2R5O1xuICByZXNwb25zZUNvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RSZXNwb25zZTtcbiAgdXJsQ29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZFVybDtcbiAgYXV0aFZhbHVlOiBQYXJ0bmVyTWV0aG9kQXBpQXV0aDtcbiAgaGVhZGVyczogUGFydG5lcktleVZhbHVlSXRlbVtdO1xuICAvLyBJTkJPVU5ELXNwZWNpZmljIHByb3BlcnRpZXNcbiAgaW5ib3VuZE1ldGhvZFR5cGU/OiBJbmJvdW5kTWV0aG9kVHlwZTsgLy8gVHlwZSBvZiBJTkJPVU5EIG1ldGhvZFxufVxuXG5leHBvcnQgZW51bSBJbmJvdW5kTWV0aG9kVHlwZSB7XG4gIFN0YW5kYXJkID0gJ1N0YW5kYXJkJyxcbiAgU3RhdHVzTWV0aG9kID0gJ1N0YXR1c01ldGhvZCcsXG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQXBpQXV0aCB7XG4gIGhlYWRlck5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGFwaUtleTogc3RyaW5nIHwgbnVsbDtcbiAgYXV0aFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJLZXlWYWx1ZUl0ZW0ge1xuICBrZXk6IHN0cmluZztcbiAga2V5TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgdmFsdWU6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyU3RhdHVzTWFwcGluZyB7XG4gIHBhcnRuZXJTdGF0dXM6IHN0cmluZztcbiAgYXBwU3RhdHVzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kVXJsIHtcbiAgdXJsVmFsdWU6IHN0cmluZztcbiAgdGltZW91dDogbnVtYmVyO1xuICB0ZXN0VXJsOiBzdHJpbmc7XG4gIHByb2RVcmw6IHN0cmluZztcbiAgcGFyYW1ldGVyTWFwcGluZ3M6IFVybE1hcEZpZWxkc1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFJlc3BvbnNlIHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIHJlc3BvbnNlTWFwRmllbGRzOiBGaWVsZHNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBVcmxNYXBGaWVsZHMge1xuICB1cmxQYXJhbWV0ZXI6IHN0cmluZztcbiAgZmx1eEZpZWxkOiBzdHJpbmc7XG4gIGZsdXhGaWVsZElkOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEJvZHkge1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBqc29uVmFsdWU6IHN0cmluZztcbiAgYm9keU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgRmllbGRzTWFwcGluZyB7XG4gIHBhcnRuZXJGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBtZXRob2RGaWVsZElkOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0aG9kRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBmaWVsZE5hbWU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUgfCBGbHV4VHlwZSB8IHN0cmluZztcbiAgbWFudWxJbnB1dENvbnRyb2xUeXBlPzogTWFudWFsSW5wdXRDb250cm9sVHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIEdldE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1hbnVhbElucHV0Q29udHJvbERhdGEge1xuICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlO1xuICBpc1NpbXBsZVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGlzQXBpVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgYXBpVmFsaWRhdGlvbk1ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gIGFwaVZhbGlkYXRpb25QYXJ0bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgYWxsb3dlZENoYXJhY3RlcnM/OiBzdHJpbmc7XG4gIG1heENoYXJhY3RlcnM/OiBudW1iZXI7XG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgYWxsb3dPbmx5UGFzdD86IGJvb2xlYW47XG4gIGFsbG93T25seUZ1dHVyZT86IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1ByZWNvbXBsZXRhYmxlPzogYm9vbGVhbjtcbiAgcHJlY29tcGxldGlvbkZpZWxkSWQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyYWdyYXBoQ29udHJvbERhdGEge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc01hbmRhdG9yeVRyYW5zbGF0aW9ucz86IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgRGljdGlvbmFyeUNvbnRyb2xEYXRhIHtcbiAgZGljdGlvbmFyeVVVSUQ6IHN0cmluZztcbiAgc2hvd0FzUmFkaW9CdXR0b25zTGlzdDogYm9vbGVhbjtcbiAgcmVsYXRlZERpY3Rpb25hcmllc1RyYW5zbGF0aW9uczogRGljdGlvbmFyeUxhYmVsSW5mb1tdO1xuICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQ/OiBudW1iZXIgfCBudWxsO1xuICBzZWxlY3RlZFJlbGF0ZWREaWN0aW9uYXJpZXM6IHN0cmluZ1tdO1xuICBhbGxvd011bHRpcGxlU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBGbHV4VHlwZSB7XG4gIEt5YyA9IDAsXG4gIEVtYWlsID0gMSxcbiAgUGhvbmUgPSAyLFxuICBTaWduID0gMyxcbiAgU3RhdHVzID0gNCxcbiAgQ3VzdG9tID0gNSxcbiAgUGF1c2UgPSA2LFxuICBJZFNjYW4gPSA3LFxuICBHZW5lcmF0ZURvY3VtZW50ID0gOCxcbiAgQWN0aW9uID0gOSxcbiAgVXBsb2FkRG9jdW1lbnQgPSAxMCxcbiAgRG93bmxvYWREb2N1bWVudCA9IDExLFxuICBWaWV3T2ZmZXIgPSAxMixcbiAgRmluYWwgPSAxMyxcbiAgVmlld0RvY3VtZW50ID0gMTQsXG4gIE5FVE9QSUEgPSAxNSxcbiAgRVVQTEFURVNDID0gMTYsXG4gIE9wZW5CYW5raW5nID0gMTcsXG59XG5cbmV4cG9ydCBlbnVtIFNlY3Rpb25UeXBlIHtcbiAgUHJlc2VudGF0aW9uLFxuICBDb2xsZWN0LFxuICBEaXNwbGF5LFxufVxuXG5leHBvcnQgZW51bSBTdGVwQ29udHJvbFR5cGUge1xuICBNYW51YWxJbnB1dCA9IDAsXG4gIFBhcmFncmFwaCA9IDEsXG4gIENoZWNrQm94ID0gMixcbiAgRGljdGlvbmFyeSA9IDMsXG4gIEJ1dHRvbnMgPSA0LFxuICBGbHV4SW5mbyA9IDUsXG4gIE5ld1JvdyA9IDYsXG4gIE1ldGFkYXRhID0gNyxcbiAgQXBpTWV0aG9kRmllbGQgPSA4LFxuICBEb3dubG9hZERvY3VtZW50cyA9IDksXG4gIFZpZXdEb2N1bWVudHMgPSAxMCxcbiAgVXBsb2FkRG9jdW1lbnRzID0gMTEsXG59XG5cbmV4cG9ydCBlbnVtIERpbWVuc2lvblR5cGUge1xuICBQZXJjZW50YWdlLFxuICBQaXhlbHMsXG59XG5cbmV4cG9ydCBlbnVtIE1hbnVhbElucHV0Q29udHJvbFR5cGUge1xuICBUZXh0LFxuICBOdW1lcmljLFxuICBEYXRlVGltZSxcbiAgRW1haWwsXG4gIFBob25lLFxuICBUZXh0QXJlYSxcbn1cblxuZXhwb3J0IGVudW0gU2lnbmF0dXJlVHlwZSB7XG4gIEVsZWN0cm9uaWMsXG4gIEhhbmR3cml0dGVuLFxuICBRdWFsaWZpZWQsXG59XG5cbmV4cG9ydCBlbnVtIEFwaU1ldGhvZFR5cGUge1xuICBHZXREYXRhLFxuICBTZW5kRGF0YSxcbiAgVmFsaWRhdGlvbixcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c01vZGVsIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xuICBmaW5hbDogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGFjdGlvbnM6IFN0YXR1c0FjdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkZW51bWlyZTogc3RyaW5nLFxuICAgIG9yZGluZTogbnVtYmVyLFxuICAgIGZpbmFsOiBib29sZWFuLFxuICAgIGlzQWN0aXZlOiBib29sZWFuLFxuICAgIGFjdGlvbnM6IFN0YXR1c0FjdGlvbltdXG4gICkge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLm5hbWUgPSBkZW51bWlyZTtcbiAgICB0aGlzLm9yZGVyID0gb3JkaW5lO1xuICAgIHRoaXMuZmluYWwgPSBmaW5hbDtcbiAgICB0aGlzLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzQWN0aW9uIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGFjdGlvblRpdGxlOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIHBhcnRuZXJJZHM6IG51bWJlcltdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25QYXJhZ3JhcGhDb250cm9sIGV4dGVuZHMgUHJlc2VudGF0aW9uQ29udHJvbCB7XG4gIGRlc2NyaXB0aW9uVHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbn1cblxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lciBleHRlbmRzIFBhcnRuZXIge1xuICBkb2N1bWVudHM/OiBBcHBQYXJ0bmVyRG9jdW1lbnRzW10gPSBbXTtcbiAgZ2VuZXJhbFNldHRpbmdzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzO1xuICBwYXJ0bmVyU2V0dGluZ3M6IFBhcnRuZXJTZXR0aW5ncztcbiAgcGFydG5lckRpY3Rpb25hcnlNYXBwaW5nOiBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmdbXTtcbiAgcGFydG5lclN0YXR1c01hcHBpbmc6IFBhcnRuZXJTdGF0dXNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzIHtcbiAgYWNjZXB0TXVsdGlwbGVPZmZlcnM6IGJvb2xlYW47XG4gIG9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyW10gPSBbXTtcbiAgcmVjZWl2ZWRPZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyW10gPSBbXTtcbiAgdmFsYWJpbGl0eTogbnVtYmVyO1xuICBoYXNDdXN0b21WYWxhYmlsaXR5OiBib29sZWFuO1xuICBzdGF0dXNXb3JrZXJTZXR0aW5nczogQXBwU3RhdHVzV29ya2VyU2V0dGluZ3M7XG59XG5leHBvcnQgY2xhc3MgQXBwU3RhdHVzV29ya2VyU2V0dGluZ3Mge1xuICBtYXhSZXRyaWVzOiBudW1iZXI7XG4gIGxvb3BJbnRlcnZhbDogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlciB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjdXN0b21WYWxhYmlsaXR5PzogbnVtYmVyO1xuICBhcGlNZXRob2RGaWVsZHM/OiBhbnlbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc1JlY2VpdmVkT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckRvY3VtZW50cyB7XG4gIGlkOiBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlzRWRpdE1vZGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEb2N1bWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbiAgZ2VuZXJhdGVkQnlBcHA6IGJvb2xlYW47XG4gIGlzU3RhdGljOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgdmVyc2lvbnM6IEFwcERvY3VtZW50VmVyc2lvbltdID0gW107XG59XG5leHBvcnQgY2xhc3MgU2lnbmVkRG9jdW1lbnQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIHNvdXJjZURvY3VtZW50czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRG9jdW1lbnRFeHRlbmRlZCBleHRlbmRzIEFwcERvY3VtZW50IHtcbiAgaXNBcGlEb2N1bWVudD86IGJvb2xlYW47IFxufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnRWZXJzaW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25JZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICB2YWxpZEZyb206IERhdGU7XG4gIHZhbGlkVG86IERhdGUgfCB1bmRlZmluZWQ7XG4gIGlzRWRpdE1vZGU6IGJvb2xlYW47XG4gIGRhdGE6IHN0cmluZyB8IG51bGw7XG4gIGZsdXhCb29rbWFya3M6IEJvb2ttYXJrTWFwcGluZ1tdO1xuICBpc1RlbXBvcmFyeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEJvb2ttYXJrTWFwcGluZyB7XG4gIGJvb2ttYXJrOiBzdHJpbmc7XG4gIGNvbnRyb2xJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JUcmFuc2xhdGlvbnMge1xuICBjb2RlOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZmlsZURhdGE6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFVwbG9hZERvY3VtZW50RGV0YWlscyBleHRlbmRzIFVwbG9hZERvY3VtZW50IHtcbiAgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50RXh0ZW5zaW9uczogc3RyaW5nO1xuICBkb2N1bWVudE1heFNpemU6IG51bWJlcjtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzVXBsb2FkaW5nOiBib29sZWFuO1xuICBpc1VwbG9hZFN1Y2Nlc3M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGVwc1NldHRpbmdzIHtcbiAgc2hvd0NvdW50ZXI6IGJvb2xlYW47XG4gIHNob3dMYWJlbHM6IGJvb2xlYW47XG4gIHNob3dBbGxTdGVwczogYm9vbGVhbjtcbiAgc2hvd1Byb2dyZXNzQmFyOiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBBcHBEYXRhU3RhdHVzIHtcbiAgbmV3ID0gMCxcbiAgZmluaXNoZWQgPSAxLFxufVxuIl19
659
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsa0JBQWEsR0FBVyw2QkFBNkIsQ0FBQztRQUN0RCxvQkFBZSxHQUFXLDJEQUEyRCxDQUFDO0lBQ3hGLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBQ0UsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRSwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxTQUFTO0NBZ0JyQjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ0UsWUFBb0IsRUFBRSxFQUN0QixZQUFvQixFQUFFLEVBQ3RCLGNBQXNCLEVBQUUsRUFDeEIsVUFBcUIsRUFDckIsWUFBdUI7UUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsSUFB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O0FBQ2QsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFiZWxJbmZvIH0gZnJvbSAnLi9sYWJlbC1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFBhcnRuZXIgfSBmcm9tICcuL3BhcnRuZXIubW9kZWwnO1xuaW1wb3J0IHsgRGljdGlvbmFyeUxhYmVsSW5mbyB9IGZyb20gJy4uL290aGVycy9kaWN0aW9uYXJ5LWxhYmVsLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25NYXBwaW5ncyB9IGZyb20gJy4vYXBwbGljYXRpb24tdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBDc3NSdWxlcyB9IGZyb20gJy4uL290aGVycy91dGlscyc7XG5pbXBvcnQgeyBGbHV4SGVscGVyIH0gZnJvbSAnLi4vb3RoZXJzL2ZsdXgtaGVscGVyJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRyb2wsIFNlY3Rpb25EYXRhLCBTdGVwRGF0YSB9IGZyb20gJy4vZmx1eC5tb2RlbCc7XG5cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbmZpZyB7XG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGl0bGVUZW1wbGF0ZTogc3RyaW5nID0gJ1N0YXR1cyB1cGRhdGU6IHtzdGF0dXNOYW1lfSc7XG4gIG1lc3NhZ2VUZW1wbGF0ZTogc3RyaW5nID0gJ1lvdXIgYXBwbGljYXRpb24gc3RhdHVzIGhhcyBiZWVuIHVwZGF0ZWQgdG86IHtzdGF0dXNOYW1lfSc7XG59XG5cbmV4cG9ydCBjbGFzcyBJbmhlcml0ZWRGaWVsZCB7XG4gIGlkOiBzdHJpbmcgPSAnJztcbiAgZmllbGROYW1lOiBzdHJpbmcgPSAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmVudENoaWxkQ29uZmlnIHtcbiAgcGFyZW50QXBwbGljYXRpb25VdWlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgaW5oZXJpdGVkRmllbGRzOiBJbmhlcml0ZWRGaWVsZFtdID0gW107XG4gIG5vdGlmaWNhdGlvbkNvbmZpZzogTm90aWZpY2F0aW9uQ29uZmlnID0gbmV3IE5vdGlmaWNhdGlvbkNvbmZpZygpO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybU1vZGVsIHtcbiAgYXBwbGljYXRpb25JZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbiAgZ2VuZXJhbERhdGE6IEdlbmVyYWxEYXRhTW9kZWw7XG4gIGRlc2lnbjogRGVzaWduTW9kZWw7XG4gIGZsdXg6IFN0ZXBEYXRhW107XG4gIGFwaTogQXBpRGF0YTtcbiAgcGFydG5lcnM6IEFwcFBhcnRuZXJbXTtcbiAgZG9jdW1lbnRzOiBBcHBEb2N1bWVudFtdO1xuICBzdGF0dXNlczogU3RhdHVzTW9kZWxbXTtcbiAgZGlzcGxheTogRGlzcGxheU1vZGVsO1xuICBnZW5lcmF0ZWRDc3M6IENzc1J1bGVzO1xuICBtZXRhZGF0YUZpZWxkczogW107XG4gIGVycm9yczogeyBbdGFiTmFtZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgYXBwbGljYXRpb25NYXBwaW5nczogQXBwbGljYXRpb25NYXBwaW5ncztcbiAgcGFyZW50Q2hpbGRDb25maWc/OiBQYXJlbnRDaGlsZENvbmZpZztcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFDb250cm9sIHtcbiAgY29udHJvbElkOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZTogc3RyaW5nO1xuICBmaWxsVmFsdWVJZDogc3RyaW5nO1xuICBmaWxsVmFsdWVzPzogc3RyaW5nW107XG4gIGZpbGxWYWx1ZUlkcz86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbnRyb2xJZDogc3RyaW5nID0gJycsXG4gICAgZmlsbFZhbHVlOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWVJZDogc3RyaW5nID0gJycsXG4gICAgZmlsbFZhbHVlcz86IHN0cmluZ1tdLFxuICAgIGZpbGxWYWx1ZUlkcz86IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMuY29udHJvbElkID0gY29udHJvbElkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlID0gZmlsbFZhbHVlIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlSWQgPSBmaWxsVmFsdWVJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZXMgPSBmaWxsVmFsdWVzO1xuICAgIHRoaXMuZmlsbFZhbHVlSWRzID0gZmlsbFZhbHVlSWRzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhU2VjdGlvbiB7XG4gIHNlY3Rpb25JZDogc3RyaW5nO1xuICBjb250cm9sczogQXBwRGF0YUNvbnRyb2xbXTtcblxuICBjb25zdHJ1Y3RvcihzZWN0aW9uSWQ6IHN0cmluZyA9ICcnLCBjb250cm9sczogQXBwRGF0YUNvbnRyb2xbXSA9IFtdKSB7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBzZWN0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2xzIHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhU3RlcCB7XG4gIHN0ZXBJZDogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIHNlY3Rpb25zOiBBcHBEYXRhU2VjdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0ZXBJZDogc3RyaW5nID0gJycsXG4gICAgdHlwZTogbnVtYmVyLFxuICAgIHNlY3Rpb25zOiBBcHBEYXRhU2VjdGlvbltdID0gW11cbiAgKSB7XG4gICAgdGhpcy5zdGVwSWQgPSBzdGVwSWQgfHwgJyc7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnNlY3Rpb25zID0gc2VjdGlvbnMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFGaWxsIHtcbiAgbWV0YWRhdGE6IHtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBjb25maWd1cmF0aW9uSWQ6IHN0cmluZztcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmc7XG4gICAgc3RhdHVzSWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIG9mZmVySWQ6IHN0cmluZztcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbjtcbiAgICBwYXJlbnRBcHBEYXRhVXVpZD86IHN0cmluZztcbiAgfTtcbiAgZmx1eDogQXBwRGF0YVN0ZXBbXTtcbiAgaW5pdEZsb3dWYWx1ZXM/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwRGF0YUlkOiBzdHJpbmcgPSAnJyxcbiAgICBjb25maWd1cmF0aW9uSWQ6IHN0cmluZyA9ICcnLFxuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZyA9ICcnLFxuICAgIHN0YXR1c0lkOiBzdHJpbmcgPSAnJyxcbiAgICBsYW5ndWFnZTogc3RyaW5nID0gJycsXG4gICAgZmx1eDogQXBwRGF0YVN0ZXBbXSA9IFtdLFxuICAgIG9mZmVySWQ6IHN0cmluZyA9ICcnLFxuICAgIGlzU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2UsXG4gICAgcGFyZW50QXBwRGF0YVV1aWQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgICBwYXJlbnRBcHBEYXRhVXVpZDogcGFyZW50QXBwRGF0YVV1aWQgfHwgJycsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgaW5pdEZsb3dWYWx1ZXM/OiBzdHJpbmc7XG4gIHdpdGhOZXh0U3RlcDogYm9vbGVhbjtcbiAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gIGVudjogc3RyaW5nO1xuICBzdGF0dXM6IEFwcERhdGFTdGF0dXM7XG4gIHBhcmVudEFwcERhdGFVdWlkPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgICBmaWxsRGF0YT86IEFwcERhdGFGaWxsO1xuICAgIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xuICAgIHdpdGhOZXh0U3RlcDogYm9vbGVhbjtcbiAgICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgICBlbnY6IHN0cmluZztcbiAgICBwYXJlbnRBcHBEYXRhVXVpZD86IHN0cmluZztcbiAgfSkge1xuICAgICh0aGlzLmlkID0gZGF0YS5pZCA/PyB1bmRlZmluZWQpLCAodGhpcy5hcHBEYXRhSWQgPSBkYXRhLmFwcERhdGFJZCB8fCAnJyk7XG4gICAgdGhpcy5hcHBDb25maWd1cmF0aW9uSWQgPSBkYXRhLmFwcENvbmZpZ3VyYXRpb25JZCB8fCAwO1xuICAgIHRoaXMuZmlsbERhdGEgPSBkYXRhLmZpbGxEYXRhO1xuICAgIHRoaXMuaW5pdEZsb3dWYWx1ZXMgPSBkYXRhLmluaXRGbG93VmFsdWVzO1xuICAgIHRoaXMud2l0aE5leHRTdGVwID0gZGF0YS53aXRoTmV4dFN0ZXA7XG4gICAgdGhpcy5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgdGhpcy5wYXJlbnRBcHBEYXRhVXVpZCA9IGRhdGEucGFyZW50QXBwRGF0YVV1aWQ7XG4gICAgaWYgKCFkYXRhLmVudikge1xuICAgICAgdGhpcy5lbnYgPSAnQ29uZmlnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYgPSBkYXRhLmVudjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbEV4dGVueGlvbnMge1xuICBmb3JtTW9kZWw6IEZvcm1Nb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihtb2RlbDogRm9ybU1vZGVsKSB7XG4gICAgdGhpcy5mb3JtTW9kZWwgPSBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5pdEZsb3dWYWx1ZXNJdGVtcyhpdGVtczogTWV0aG9kRmllbGRbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRGbG93VmFsdWVzUmF3ID0gKHRoaXMuZm9ybU1vZGVsIGFzIGFueSk/LmdlbmVyYWxEYXRhPy5pbml0Rmxvd1ZhbHVlcztcbiAgICBpZiAoaW5pdEZsb3dWYWx1ZXNSYXcgPT09IG51bGwgfHwgaW5pdEZsb3dWYWx1ZXNSYXcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYXJzZWQ6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIGluaXRGbG93VmFsdWVzUmF3ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGluaXRGbG93VmFsdWVzUmF3LnRyaW0oKTtcbiAgICAgIGlmICghdHJpbW1lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElmIGNvbmZpZyBjb250YWlucyBpbnZhbGlkIEpTT04sIGRvIG5vdCBleHBvc2UgYW55IGluaXRGbG93VmFsdWVzIGZpZWxkcy5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWQgPSBpbml0Rmxvd1ZhbHVlc1JhdztcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmlkKSk7XG4gICAgY29uc3Qgb3V0OiBNZXRob2RGaWVsZFtdID0gW107XG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IGFueSwgcGF0aFBhcnRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoUGFydHMubGVuZ3RoID4gMCkgb3V0LnB1c2godGhpcy5idWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgbm9kZS5mb3JFYWNoKChjaGlsZCwgaWR4KSA9PiB3YWxrKGNoaWxkLCBbLi4ucGF0aFBhcnRzLCBTdHJpbmcoaWR4KV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG5vZGUpLmZvckVhY2goKGtleSkgPT4gd2Fsayhub2RlW2tleV0sIFsuLi5wYXRoUGFydHMsIGtleV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFBhcnRzLmxlbmd0aCA+IDApIG91dC5wdXNoKHRoaXMuYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0cykpO1xuICAgIH07XG5cbiAgICB3YWxrKHBhcnNlZCwgW10pO1xuXG4gICAgZm9yIChjb25zdCBmIG9mIG91dCkge1xuICAgICAgaWYgKCFleGlzdGluZ0lkcy5oYXMoZi5pZCkpIHtcbiAgICAgICAgaXRlbXMucHVzaChmKTtcbiAgICAgICAgZXhpc3RpbmdJZHMuYWRkKGYuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0czogc3RyaW5nW10pOiBNZXRob2RGaWVsZCB7XG4gICAgY29uc3QgdW5kZXJzY29yZVBhdGggPSBwYXRoUGFydHMuam9pbignXycpO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZE5hbWU6IGBpbml0Rmxvd1ZhbHVlc18ke3VuZGVyc2NvcmVQYXRofWAsXG4gICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5NZXRhZGF0YSxcbiAgICAgIGlkOiBgaW5pdEZsb3dWYWx1ZXNfJHt1bmRlcnNjb3JlUGF0aH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEluaXRGbG93VmFsdWVzSXRlbXMoaXRlbXMpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbD8uZmx1eCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KHRoaXMuZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4KSk7XG4gICAgfVxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgdGhpcy5leHRyYWN0U2VjdGlvbnNGbHV4SXRlbXModGhpcy5mb3JtTW9kZWwuZmx1eCwgdW50aWxTdGVwSWRlbnRpZmllcilcbiAgICApO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG4gIHByaXZhdGUgZXh0cmFjdFNlY3Rpb25zRmx1eEl0ZW1zKFxuICAgIHN0ZXBzOiBTdGVwRGF0YVtdLFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGlmICh1bnRpbFN0ZXBJZGVudGlmaWVyICYmIHN0ZXAuaWRlbnRpZmllciA9PT0gdW50aWxTdGVwSWRlbnRpZmllcikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBzZWN0aW9uLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5CdXR0b25zLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5GbHV4SW5mbyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5QYXJhZ3JhcGgsXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhjb250cm9sLnR5cGUpID09IGZhbHNlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7c2VjdGlvbi50aXRsZX0gLT4gJHtjb250cm9sLnRpdGxlfWAsXG4gICAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IGNvbnRyb2wudHlwZSxcbiAgICAgICAgICAgICAgICAgIG1hbnVsSW5wdXRDb250cm9sVHlwZTogY29udHJvbC5zcGVjaWZpY0NvbnRyb2xEYXRhPy50eXBlLFxuICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRyb2wuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REb2N1bWVudHNGbHV4SXRlbXMoc3RlcERhdGE6IFN0ZXBEYXRhW10pOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIHN0ZXBEYXRhPy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC50eXBlID09PSBGbHV4VHlwZS5VcGxvYWREb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBkb2N1bWVudElkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmRvY3VtZW50SWQsXG4gICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uZG9jdW1lbnRJZFxuICAgICAgICAgICAgICAgID8gYHVwbG9hZC4ke2RvY3VtZW50LmRvY3VtZW50SWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQpIHtcbiAgICAgICAgc3RlcC5jb25maWc/LmdlbmVyYXRlZERvY3VtZW50cz8uZm9yRWFjaChcbiAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoZG9jdW1lbnQ/LmlkLCB0aGlzLmZvcm1Nb2RlbCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgID8gYGdlbmVyYXRlLiR7ZG9jdW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlNpZ24pIHtcbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5kb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHNpZ24uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzKSB7XG4gICAgICAgICAgc3RlcC5jb25maWc/LnN5c3RlbURvY3VtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgKGRvY3VtZW50OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgICApIHx8IGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgICA/IGBzeXN0ZW0uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBmbHV4SXRlbXNXaXRoR2V0QXBpTWV0aG9kcyhcbiAgICBleGNsdWRlZE1ldGhvZElkOiBzdHJpbmcgPSAnJ1xuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmZsdXhJdGVtcygpO1xuICAgIHRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcy5mb3JFYWNoKChhcGlNZXRob2QpID0+IHtcbiAgICAgIGlmIChhcGlNZXRob2QuaWQgIT09IGV4Y2x1ZGVkTWV0aG9kSWQpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZlck1ldGhvZHNJdGVtcygpOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGxldCBvZmZlck1ldGhvZHNJZHM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5mb3JtTW9kZWwucGFydG5lcnM/LmZvckVhY2goKHApID0+IHtcbiAgICAgIHAuZ2VuZXJhbFNldHRpbmdzLm9mZmVycz8uZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBvZmZlck1ldGhvZHNJZHMucHVzaChvLmFwaU1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgb2ZmZXJNZXRob2RzSWRzID0gWy4uLm5ldyBTZXQob2ZmZXJNZXRob2RzSWRzKV07XG5cbiAgICBjb25zdCBhbGxBcGlJdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS52YWxpZGF0aW9uSXRlbXMsXG4gICAgICAuLi50aGlzLmZvcm1Nb2RlbC5hcGkuc2VuZEl0ZW1zLFxuICAgIF07XG5cbiAgICBvZmZlck1ldGhvZHNJZHMuZm9yRWFjaCgobWV0aG9kSWQpID0+IHtcbiAgICAgIGNvbnN0IGFwaU1ldGhvZCA9IGFsbEFwaUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG1ldGhvZElkKTtcbiAgICAgIGlmIChhcGlNZXRob2QpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IEZsdXhUeXBlLlZpZXdPZmZlcixcbiAgICAgICAgICAgIGlkOiBgYXBpXyR7YXBpTWV0aG9kLmlkfSAtPiAke2YuaWR9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaURhdGEge1xuICBnZXRJdGVtczogR2V0QXBpSXRlbVtdO1xuICB2YWxpZGF0aW9uSXRlbXM6IEFwaUl0ZW1bXTtcbiAgc2VuZEl0ZW1zOiBBcGlJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGZpZWxkczogTWV0aG9kRmllbGRbXTtcbiAgdHlwZTogQXBpTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIEdldEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBHZXRNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuZXhwb3J0IGNsYXNzIERlc2lnbk1vZGVsIHtcbiAgZm9udHM6IEZvbnRDb25maWdbXSA9IFtdO1xuICBidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBvdHBBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSA9IFtdO1xuICB0YWJsZXM6IFRhYmxlQ29uZmlnW10gPSBbXTtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246IHN0cmluZztcbiAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICBtYXJnaW5SaWdodDogc3RyaW5nO1xuICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgbWFyZ2luQm90dG9tOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5mb250cykge1xuICAgICAgICB0aGlzLmZvbnRzID0gZGF0YS5mb250cy5tYXAoKGZvbnQ6IGFueSkgPT4gbmV3IEZvbnRDb25maWcoZm9udCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5idXR0b25zKSB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEuYnV0dG9ucy5tYXAoXG4gICAgICAgICAgKGJ1dHRvbjogYW55KSA9PiBuZXcgQnV0dG9uQ29uZmlnKGJ1dHRvbilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50cykge1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBkYXRhLmNvbXBvbmVudHMubWFwKFxuICAgICAgICAgIChjb21wb25lbnQ6IGFueSkgPT4gbmV3IENvbXBvbmVudENvbmZpZyhjb21wb25lbnQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnRhYmxlcykge1xuICAgICAgICB0aGlzLnRhYmxlcyA9IGRhdGEudGFibGVzLm1hcCgodGFibGU6IGFueSkgPT4gbmV3IFRhYmxlQ29uZmlnKHRhYmxlKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5idXR0b25zVmVydGljYWxQb3NpdGlvbiA9IGRhdGEudmVydGljYWxQb3NpdGlvbjtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9udENvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBmb250V2VpZ2h0OiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5mb250V2VpZ2h0ID0gZGF0YS5mb250V2VpZ2h0O1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBib3JkZXJSYWRpdXM6IHN0cmluZztcbiAgaG9yaXpvbnRhbFBhZGRpbmc6IHN0cmluZztcbiAgdmVydGljYWxQYWRkaW5nOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbWluV2lkdGg6IHN0cmluZztcbiAgbWluSGVpZ2h0OiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBob3Jpem9udGFsUG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJDb2xvciA9IGRhdGEuYm9yZGVyQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5ob3Jpem9udGFsUGFkZGluZyA9IGRhdGEuaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsUGFkZGluZyA9IGRhdGEudmVydGljYWxQYWRkaW5nO1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gZGF0YS5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IGRhdGEuZm9udFNpemU7XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgICB0aGlzLm1pbldpZHRoID0gZGF0YS5taW5XaWR0aDtcbiAgICAgIHRoaXMubWluSGVpZ2h0ID0gZGF0YS5taW5IZWlnaHQ7XG4gICAgICB0aGlzLm1heFdpZHRoID0gZGF0YS5tYXhXaWR0aDtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gZGF0YS5tYXhIZWlnaHQ7XG4gICAgICB0aGlzLmhvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb25maWcge1xuICBoZWFkZXJDb25maWc6IEhlYWRlckNvbmZpZztcbiAgZGV0YWlsQ29uZmlnOiBEZXRhaWxDb25maWc7XG5cbiAgY29uc3RydWN0b3IodGFibGU/OiBhbnkpIHtcbiAgICBpZiAodGFibGUpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gdGFibGUuaGVhZGVyQ29uZmlnO1xuICAgICAgdGhpcy5kZXRhaWxDb25maWcgPSB0YWJsZS5kZXRhaWxDb25maWc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWFkZXJDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICBib3JkZXJDb2xsYXBzZTogc3RyaW5nO1xuICBib3JkZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbiAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy50ZXh0Q29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5ib3JkZXIgPSBkYXRhLmJvcmRlcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMucGFkZGluZyA9IGRhdGEucGFkZGluZztcbiAgICAgIHRoaXMuYm9yZGVyQ29sbGFwc2UgPSBkYXRhLmJvcmRlckNvbGxhcHNlO1xuICAgICAgdGhpcy5ib3JkZXJTcGFjaW5nID0gZGF0YS5ib3JkZXJTcGFjaW5nO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgICAgdGhpcy53aWR0aCA9IGRhdGEud2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGV0YWlsQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHBhZGRpbmc6IHN0cmluZztcbiAgcm93Qm9yZGVyOiBzdHJpbmc7XG4gIHJvd0JvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5yb3dCb3JkZXIgPSBkYXRhLnJvd0JvcmRlcjtcbiAgICAgIHRoaXMuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmhvdmVyQmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBsYWJlbFN0eWxlOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHdlaWdodD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhcnRDb2xvcj86IHN0cmluZztcbiAgZW5kQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJSYWRpdXMgPSBkYXRhLmJvcmRlclJhZGl1cztcbiAgICAgIHRoaXMubGFiZWxTdHlsZSA9IGRhdGEubGFiZWxTdHlsZTtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMud2VpZ2h0ID0gZGF0YS53ZWlnaHQ7XG4gICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBkYXRhLnN0YXJ0Q29sb3I7XG4gICAgICB0aGlzLmVuZENvbG9yID0gZGF0YS5lbmRDb2xvcjtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5leHBvcnQgY2xhc3MgRGlzcGxheU1vZGVsIHtcbiAgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW107XG59XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGF0YU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHBsaWNhdGlvblR5cGU6IG51bWJlcjtcbiAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbiAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gIGNvbnRpbnVlV2l0aE9mZmVyOiBib29sZWFuO1xuICBzaG93Q291bnRlclN0ZXA6IGJvb2xlYW47XG4gIHNob3dOYW1lU3RlcDogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1zU3RhdGUge1xuICBkYXRhOiBGb3JtTW9kZWw7XG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY2FuR2V0RnJvbVByb2Q6IGJvb2xlYW47XG4gIGNhbkdldEZyb21UZXN0OiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5Qcm9kOiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5UZXN0OiBib29sZWFuO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxGb3JtdWxhcmVTdGF0ZTogRm9ybXNTdGF0ZSA9IHtcbiAgZGF0YToge1xuICAgIGFwcGxpY2F0aW9uSWQ6IDAsXG4gICAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgICBnZW5lcmFsRGF0YToge1xuICAgICAgbmFtZTogJycsXG4gICAgICBhcHBsaWNhdGlvblR5cGU6IDAsXG4gICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiAnJyxcbiAgICAgIGNvbnRpbnVlV2l0aE9mZmVyOiBmYWxzZSxcbiAgICAgIHNob3dDb3VudGVyU3RlcDogZmFsc2UsXG4gICAgICBzaG93TmFtZVN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd0FsbFN0ZXBzOiBmYWxzZSxcbiAgICAgIHNob3dQcm9ncmVzc0JhcjogZmFsc2UsXG4gICAgICBpbml0Rmxvd1ZhbHVlczogJycsXG4gICAgfSxcbiAgICBkZXNpZ246IHtcbiAgICAgIGZvbnRzOiBbXSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgb3RwQWN0aW9uQnV0dG9uczogW10sXG4gICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnLFxuICAgICAgZm9udFNpemU6ICcnLFxuICAgICAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogJycsXG4gICAgICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogJycsXG4gICAgICBtYXhXaWR0aDogJycsXG4gICAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICAgIG1hcmdpblJpZ2h0OiAnJyxcbiAgICAgIG1hcmdpblRvcDogJycsXG4gICAgICBtYXJnaW5Cb3R0b206ICcnLFxuICAgIH0sXG4gICAgZmx1eDogW10sXG4gICAgYXBpOiB7IGdldEl0ZW1zOiBbXSwgdmFsaWRhdGlvbkl0ZW1zOiBbXSwgc2VuZEl0ZW1zOiBbXSB9LFxuICAgIHBhcnRuZXJzOiBbXSxcbiAgICBkb2N1bWVudHM6IFtdLFxuICAgIHN0YXR1c2VzOiBbXSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBzZWN0aW9uczogW10sXG4gICAgfSxcbiAgICBnZW5lcmF0ZWRDc3M6IHt9LFxuICAgIG1ldGFkYXRhRmllbGRzOiBbXSxcbiAgICBlcnJvcnM6IHt9LFxuICAgIGFwcGxpY2F0aW9uTWFwcGluZ3M6IHtcbiAgICAgIGFwcGxpY2F0aW9uVHlwZUlkOiAwLFxuICAgICAgY29sdW1uTWFwcGluZ3M6IFtdLFxuICAgIH0sXG4gICAgcGFyZW50Q2hpbGRDb25maWc6IHVuZGVmaW5lZCxcbiAgfSxcbiAgc2VsZWN0ZWRUYWI6ICdEYXRlIGdlbmVyYWxlJyxcbiAgY2FuR2V0RnJvbVByb2Q6IGZhbHNlLFxuICBjYW5HZXRGcm9tVGVzdDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblByb2Q6IGZhbHNlLFxuICBjYW5QdWJsaXNoSW5UZXN0OiBmYWxzZSxcbiAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgdmVyc2lvbjogJycsXG59O1xuXG5leHBvcnQgY2xhc3MgUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nIHtcbiAgZGljdGlvbmFyeUlkOiBzdHJpbmc7XG4gIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmc7XG4gIG1hcHBpbmdzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyU2V0dGluZ3Mge1xuICBwYXJ0bmVyTWV0aG9kc0FwaTogUGFydG5lck1ldGhvZEFwaVtdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQXBpIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbWV0aG9kVHlwZTogc3RyaW5nO1xuICBjYWxsVHlwZTogc3RyaW5nO1xuICBib2R5Q29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZEJvZHk7XG4gIHJlc3BvbnNlQ29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZFJlc3BvbnNlO1xuICB1cmxDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kVXJsO1xuICBhdXRoVmFsdWU6IFBhcnRuZXJNZXRob2RBcGlBdXRoO1xuICBoZWFkZXJzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG4gIC8vIElOQk9VTkQtc3BlY2lmaWMgcHJvcGVydGllc1xuICBpbmJvdW5kTWV0aG9kVHlwZT86IEluYm91bmRNZXRob2RUeXBlOyAvLyBUeXBlIG9mIElOQk9VTkQgbWV0aG9kXG59XG5cbmV4cG9ydCBlbnVtIEluYm91bmRNZXRob2RUeXBlIHtcbiAgU3RhbmRhcmQgPSAnU3RhbmRhcmQnLFxuICBTdGF0dXNNZXRob2QgPSAnU3RhdHVzTWV0aG9kJyxcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGlBdXRoIHtcbiAgaGVhZGVyTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgYXBpS2V5OiBzdHJpbmcgfCBudWxsO1xuICBhdXRoVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lcktleVZhbHVlSXRlbSB7XG4gIGtleTogc3RyaW5nO1xuICBrZXlOYW1lOiBzdHJpbmcgfCBudWxsO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTdGF0dXNNYXBwaW5nIHtcbiAgcGFydG5lclN0YXR1czogc3RyaW5nO1xuICBhcHBTdGF0dXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RVcmwge1xuICB1cmxWYWx1ZTogc3RyaW5nO1xuICB0aW1lb3V0OiBudW1iZXI7XG4gIHRlc3RVcmw6IHN0cmluZztcbiAgcHJvZFVybDogc3RyaW5nO1xuICBwYXJhbWV0ZXJNYXBwaW5nczogVXJsTWFwRmllbGRzW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kUmVzcG9uc2Uge1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBqc29uVmFsdWU6IHN0cmluZztcbiAgcmVzcG9uc2VNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVybE1hcEZpZWxkcyB7XG4gIHVybFBhcmFtZXRlcjogc3RyaW5nO1xuICBmbHV4RmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQm9keSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICBib2R5TWFwRmllbGRzOiBGaWVsZHNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZHNNYXBwaW5nIHtcbiAgcGFydG5lckZpZWxkOiBzdHJpbmc7XG4gIGZsdXhGaWVsZElkOiBzdHJpbmc7XG4gIG1ldGhvZEZpZWxkSWQ6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBtYW51bElucHV0Q29udHJvbFR5cGU/OiBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0TWV0aG9kRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBmaWVsZE5hbWU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUgfCBGbHV4VHlwZSB8IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWFudWFsSW5wdXRDb250cm9sRGF0YSB7XG4gIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGU7XG4gIGlzU2ltcGxlVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgaXNBcGlWYWxpZGF0aW9uOiBib29sZWFuO1xuICBhcGlWYWxpZGF0aW9uTWV0aG9kPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBpVmFsaWRhdGlvblBhcnRuZXI/OiBzdHJpbmcgfCBudWxsO1xuICBhbGxvd2VkQ2hhcmFjdGVycz86IHN0cmluZztcbiAgbWF4Q2hhcmFjdGVycz86IG51bWJlcjtcbiAgbWluVmFsdWU/OiBudW1iZXI7XG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICBhbGxvd09ubHlQYXN0PzogYm9vbGVhbjtcbiAgYWxsb3dPbmx5RnV0dXJlPzogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzUHJlY29tcGxldGFibGU/OiBib29sZWFuO1xuICBwcmVjb21wbGV0aW9uRmllbGRJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhZ3JhcGhDb250cm9sRGF0YSB7XG4gIGRlc2NyaXB0aW9uVHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5VHJhbnNsYXRpb25zPzogTGFiZWxJbmZvW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5Q29udHJvbERhdGEge1xuICBkaWN0aW9uYXJ5VVVJRDogc3RyaW5nO1xuICBzaG93QXNSYWRpb0J1dHRvbnNMaXN0OiBib29sZWFuO1xuICByZWxhdGVkRGljdGlvbmFyaWVzVHJhbnNsYXRpb25zOiBEaWN0aW9uYXJ5TGFiZWxJbmZvW107XG4gIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZD86IG51bWJlciB8IG51bGw7XG4gIHNlbGVjdGVkUmVsYXRlZERpY3Rpb25hcmllczogc3RyaW5nW107XG4gIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEZsdXhUeXBlIHtcbiAgS3ljID0gMCxcbiAgRW1haWwgPSAxLFxuICBQaG9uZSA9IDIsXG4gIFNpZ24gPSAzLFxuICBTdGF0dXMgPSA0LFxuICBDdXN0b20gPSA1LFxuICBQYXVzZSA9IDYsXG4gIElkU2NhbiA9IDcsXG4gIEdlbmVyYXRlRG9jdW1lbnQgPSA4LFxuICBBY3Rpb24gPSA5LFxuICBVcGxvYWREb2N1bWVudCA9IDEwLFxuICBEb3dubG9hZERvY3VtZW50ID0gMTEsXG4gIFZpZXdPZmZlciA9IDEyLFxuICBGaW5hbCA9IDEzLFxuICBWaWV3RG9jdW1lbnQgPSAxNCxcbiAgTkVUT1BJQSA9IDE1LFxuICBFVVBMQVRFU0MgPSAxNixcbiAgT3BlbkJhbmtpbmcgPSAxNyxcbn1cblxuZXhwb3J0IGVudW0gU2VjdGlvblR5cGUge1xuICBQcmVzZW50YXRpb24sXG4gIENvbGxlY3QsXG4gIERpc3BsYXksXG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBDb250cm9sVHlwZSB7XG4gIE1hbnVhbElucHV0ID0gMCxcbiAgUGFyYWdyYXBoID0gMSxcbiAgQ2hlY2tCb3ggPSAyLFxuICBEaWN0aW9uYXJ5ID0gMyxcbiAgQnV0dG9ucyA9IDQsXG4gIEZsdXhJbmZvID0gNSxcbiAgTmV3Um93ID0gNixcbiAgTWV0YWRhdGEgPSA3LFxuICBBcGlNZXRob2RGaWVsZCA9IDgsXG4gIERvd25sb2FkRG9jdW1lbnRzID0gOSxcbiAgVmlld0RvY3VtZW50cyA9IDEwLFxuICBVcGxvYWREb2N1bWVudHMgPSAxMSxcbn1cblxuZXhwb3J0IGVudW0gRGltZW5zaW9uVHlwZSB7XG4gIFBlcmNlbnRhZ2UsXG4gIFBpeGVscyxcbn1cblxuZXhwb3J0IGVudW0gTWFudWFsSW5wdXRDb250cm9sVHlwZSB7XG4gIFRleHQsXG4gIE51bWVyaWMsXG4gIERhdGVUaW1lLFxuICBFbWFpbCxcbiAgUGhvbmUsXG4gIFRleHRBcmVhLFxufVxuXG5leHBvcnQgZW51bSBTaWduYXR1cmVUeXBlIHtcbiAgRWxlY3Ryb25pYyxcbiAgSGFuZHdyaXR0ZW4sXG4gIFF1YWxpZmllZCxcbn1cblxuZXhwb3J0IGVudW0gQXBpTWV0aG9kVHlwZSB7XG4gIEdldERhdGEsXG4gIFNlbmREYXRhLFxuICBWYWxpZGF0aW9uLFxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzTW9kZWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGZpbmFsOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgYWN0aW9uczogU3RhdHVzQWN0aW9uW10gPSBbXTtcbiAgY2hpbGRBcHBsaWNhdGlvblV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSxcbiAgICBjaGlsZEFwcGxpY2F0aW9uVXVpZHM6IHN0cmluZ1tdID0gW11cbiAgKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubmFtZSA9IGRlbnVtaXJlO1xuICAgIHRoaXMub3JkZXIgPSBvcmRpbmU7XG4gICAgdGhpcy5maW5hbCA9IGZpbmFsO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgIHRoaXMuY2hpbGRBcHBsaWNhdGlvblV1aWRzID0gY2hpbGRBcHBsaWNhdGlvblV1aWRzIHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNBY3Rpb24ge1xuICBpZD86IHN0cmluZztcbiAgYWN0aW9uVGl0bGU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgcGFydG5lcklkczogbnVtYmVyW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFByZXNlbnRhdGlvblBhcmFncmFwaENvbnRyb2wgZXh0ZW5kcyBQcmVzZW50YXRpb25Db250cm9sIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyIGV4dGVuZHMgUGFydG5lciB7XG4gIGRvY3VtZW50cz86IEFwcFBhcnRuZXJEb2N1bWVudHNbXSA9IFtdO1xuICBnZW5lcmFsU2V0dGluZ3M6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3M7XG4gIHBhcnRuZXJTZXR0aW5nczogUGFydG5lclNldHRpbmdzO1xuICBwYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmc6IFBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZ1tdO1xuICBwYXJ0bmVyU3RhdHVzTWFwcGluZzogUGFydG5lclN0YXR1c01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3Mge1xuICBhY2NlcHRNdWx0aXBsZU9mZmVyczogYm9vbGVhbjtcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXSA9IFtdO1xuICByZWNlaXZlZE9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc1JlY2VpdmVkT2ZmZXJbXSA9IFtdO1xuICB2YWxhYmlsaXR5OiBudW1iZXI7XG4gIGhhc0N1c3RvbVZhbGFiaWxpdHk6IGJvb2xlYW47XG4gIHN0YXR1c1dvcmtlclNldHRpbmdzOiBBcHBTdGF0dXNXb3JrZXJTZXR0aW5ncztcbn1cbmV4cG9ydCBjbGFzcyBBcHBTdGF0dXNXb3JrZXJTZXR0aW5ncyB7XG4gIG1heFJldHJpZXM6IG51bWJlcjtcbiAgbG9vcEludGVydmFsOiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGN1c3RvbVZhbGFiaWxpdHk/OiBudW1iZXI7XG4gIGFwaU1ldGhvZEZpZWxkcz86IGFueVtdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlciB7XG4gIGlkOiBzdHJpbmc7XG4gIG9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyRG9jdW1lbnRzIHtcbiAgaWQ6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBkb2N1bWVudE5hbWU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgaXNFZGl0TW9kZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBnZW5lcmF0ZWRCeUFwcDogYm9vbGVhbjtcbiAgaXNTdGF0aWM6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICB2ZXJzaW9uczogQXBwRG9jdW1lbnRWZXJzaW9uW10gPSBbXTtcbn1cbmV4cG9ydCBjbGFzcyBTaWduZWREb2N1bWVudCBleHRlbmRzIEFwcERvY3VtZW50IHtcbiAgc291cmNlRG9jdW1lbnRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBEb2N1bWVudEV4dGVuZGVkIGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBpc0FwaURvY3VtZW50PzogYm9vbGVhbjsgXG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEb2N1bWVudFZlcnNpb24ge1xuICBpZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHZhbGlkRnJvbTogRGF0ZTtcbiAgdmFsaWRUbzogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0TW9kZTogYm9vbGVhbjtcbiAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgZmx1eEJvb2ttYXJrczogQm9va21hcmtNYXBwaW5nW107XG4gIGlzVGVtcG9yYXJ5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQm9va21hcmtNYXBwaW5nIHtcbiAgYm9va21hcms6IHN0cmluZztcbiAgY29udHJvbElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclRyYW5zbGF0aW9ucyB7XG4gIGNvZGU6IHN0cmluZztcbiAgdHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwbG9hZERvY3VtZW50IHtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlRGF0YTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnREZXRhaWxzIGV4dGVuZHMgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudE5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRFeHRlbnNpb25zOiBzdHJpbmc7XG4gIGRvY3VtZW50TWF4U2l6ZTogbnVtYmVyO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW47XG4gIGlzVXBsb2FkU3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFN0ZXBzU2V0dGluZ3Mge1xuICBzaG93Q291bnRlcjogYm9vbGVhbjtcbiAgc2hvd0xhYmVsczogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEFwcERhdGFTdGF0dXMge1xuICBuZXcgPSAwLFxuICBmaW5pc2hlZCA9IDEsXG59XG4iXX0=