ng-configcat-publicapi-ui 4.0.0 → 4.0.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.
Files changed (60) hide show
  1. package/esm2022/lib/_directives/input-display-normalizer.directive.mjs +3 -3
  2. package/esm2022/lib/_services/app-data-adapter.mjs +3 -3
  3. package/esm2022/lib/_services/comparison-value-list-helper.mjs +3 -3
  4. package/esm2022/lib/_services/form-generator.mjs +3 -3
  5. package/esm2022/lib/_services/form-helper.mjs +63 -7
  6. package/esm2022/lib/_services/messaging.service.mjs +3 -3
  7. package/esm2022/lib/_services/public-api.service.mjs +3 -3
  8. package/esm2022/lib/_services/setting-list-form-helper.mjs +3 -3
  9. package/esm2022/lib/_services/tracking.directive.mjs +3 -3
  10. package/esm2022/lib/ace-editor/ace-editor.component.mjs +3 -3
  11. package/esm2022/lib/authorization/authorization.component.mjs +3 -3
  12. package/esm2022/lib/base/base-select.component.mjs +3 -3
  13. package/esm2022/lib/base/base.component.mjs +3 -3
  14. package/esm2022/lib/bootstrap.mjs +2 -1
  15. package/esm2022/lib/configuration.mjs +3 -3
  16. package/esm2022/lib/dialogs/confirmation-dialog/confirmation-dialog.mjs +3 -3
  17. package/esm2022/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +3 -3
  18. package/esm2022/lib/dialogs/expand-dialog/expand-dialog.component.mjs +3 -3
  19. package/esm2022/lib/dialogs/info-dialog/info-dialog.mjs +3 -3
  20. package/esm2022/lib/dialogs/reason-dialog/reason-dialog.component.mjs +3 -3
  21. package/esm2022/lib/dialogs/reroute-dialog/reroute-dialog.mjs +28 -0
  22. package/esm2022/lib/dialogs/save-snackbar/save-snackbar.component.mjs +3 -3
  23. package/esm2022/lib/ng-configcat-publicapi-ui.module.mjs +10 -7
  24. package/esm2022/lib/selects/config-select/config-select.component.mjs +3 -3
  25. package/esm2022/lib/selects/environment-select/environment-select.component.mjs +3 -3
  26. package/esm2022/lib/selects/product-select/product-select.component.mjs +3 -3
  27. package/esm2022/lib/selects/setting-select/setting-select.component.mjs +3 -3
  28. package/esm2022/lib/setting-item/setting-item.component.mjs +3 -3
  29. package/esm2022/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +5 -5
  30. package/esm2022/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +3 -3
  31. package/esm2022/lib/setting-list/setting/setting.component.mjs +3 -3
  32. package/esm2022/lib/setting-list/setting/value/value.component.mjs +5 -5
  33. package/esm2022/lib/setting-list/setting-list.component.mjs +3 -3
  34. package/esm2022/lib/v2/feature-flag/date-time-picker/date-time-picker.component.mjs +3 -3
  35. package/esm2022/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.mjs +3 -3
  36. package/esm2022/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.mjs +4 -4
  37. package/esm2022/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.mjs +5 -5
  38. package/esm2022/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.mjs +3 -3
  39. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.mjs +3 -3
  40. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.mjs +4 -4
  41. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.mjs +3 -3
  42. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.mjs +4 -4
  43. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.mjs +32 -32
  44. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.mjs +4 -4
  45. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.mjs +5 -5
  46. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.mjs +5 -5
  47. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.mjs +4 -4
  48. package/esm2022/lib/v2/feature-flag/feature-flag.component.mjs +8 -8
  49. package/esm2022/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.mjs +3 -3
  50. package/esm2022/lib/v2/feature-flag-item.component.mjs +19 -8
  51. package/fesm2022/ng-configcat-publicapi-ui.mjs +288 -199
  52. package/fesm2022/ng-configcat-publicapi-ui.mjs.map +1 -1
  53. package/lib/_services/form-helper.d.ts +3 -2
  54. package/lib/bootstrap.d.ts +1 -0
  55. package/lib/dialogs/reroute-dialog/reroute-dialog.d.ts +20 -0
  56. package/lib/ng-configcat-publicapi-ui.module.d.ts +27 -26
  57. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.d.ts +1 -1
  58. package/lib/v2/feature-flag/feature-flag.component.d.ts +2 -2
  59. package/package.json +1 -1
  60. package/public-api.scss +4 -6
@@ -22,10 +22,10 @@ export class InputDisplayNormalizerDirective {
22
22
  }
23
23
  }
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: InputDisplayNormalizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]", host: { listeners: { "blur": "onChange($event)" } }, ngImport: i0 }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InputDisplayNormalizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]", host: { listeners: { "blur": "onChange($event)" } }, ngImport: i0 }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: InputDisplayNormalizerDirective, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InputDisplayNormalizerDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -9,10 +9,10 @@ export class AppDateAdapter extends NativeDateAdapter {
9
9
  }
10
10
  return DateHelper.formatDate(date, 'yyyy. MM. dd');
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AppDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AppDateAdapter }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AppDateAdapter, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter, decorators: [{
16
16
  type: Injectable
17
17
  }] });
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRhdGEtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9fc2VydmljZXMvYXBwLWRhdGEtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQWlCO0lBQ25ELE1BQU0sQ0FBQyxJQUFVO1FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQU5VLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuL2RhdGUtaGVscGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBEYXRlQWRhcHRlciBleHRlbmRzIE5hdGl2ZURhdGVBZGFwdGVyIHtcbiAgZm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gRGF0ZUhlbHBlci5mb3JtYXREYXRlKGRhdGUsICd5eXl5LiBNTS4gZGQnKTtcbiAgfVxufVxuIl19
@@ -63,10 +63,10 @@ export class ComparisonValueListHelper {
63
63
  }
64
64
  return { comparisonValueList: parseResult.data.flat().map(p => ({ value: p })).filter(v => !!v.value) };
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ComparisonValueListHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ComparisonValueListHelper }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ComparisonValueListHelper, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper, decorators: [{
70
70
  type: Injectable
71
71
  }] });
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyaXNvbi12YWx1ZS1saXN0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9fc2VydmljZXMvY29tcGFyaXNvbi12YWx1ZS1saXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQzs7QUFRN0IsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyx5QkFBeUIsQ0FBQyxtQkFBZ0Q7UUFDdEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsbUJBQWdEO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQzNELE9BQU87Z0JBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ2hFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxtQkFBZ0Q7UUFDOUQsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsT0FBTyxJ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LEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3JJLENBQUM7OEdBOURRLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsIH0gZnJvbSBcIi4uL2Jvb3RzdHJhcFwiO1xuaW1wb3J0IFBhcGEgZnJvbSAncGFwYXBhcnNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uVmFsdWVMaXN0UGFyc2VSZXN1bHQge1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBhcmlzb25WYWx1ZUxpc3RIZWxwZXIge1xuICAgIGZvcm1hdFZhbHVlc0FuZEhpbnRBc0pzb24oY29tcGFyaXNvblZhbHVlTGlzdDogSUNvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbFtdKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbXBhcmlzb25WYWx1ZUxpc3QsIG51bGwsIDIpO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlc0FuZEhpbnRBc0Nzdihjb21wYXJpc29uVmFsdWVMaXN0OiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsW10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRhID0gY29tcGFyaXNvblZhbHVlTGlzdC5tYXAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdENzdlN0cmluZ1ZhbHVlKGNvbXBhcmlzb25WYWx1ZUxpc3RJdGVtLnZhbHVlID8/ICcnKSxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdENzdlN0cmluZ1ZhbHVlKGNvbXBhcmlzb25WYWx1ZUxpc3RJdGVtLmhpbnQgPz8gJycpXG4gICAgICAgICAgICBdLmpvaW4oJywnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkYXRhLmpvaW4oJ1xcclxcbicpO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlc0FzQ3N2KGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjb21wYXJpc29uVmFsdWVMaXN0Lm1hcChjb21wYXJpc29uVmFsdWVMaXN0ID0+IHRoaXMuZm9ybWF0Q3N2U3RyaW5nVmFsdWUoY29tcGFyaXNvblZhbHVlTGlzdC52YWx1ZSA/PyAnJykpO1xuICAgICAgICByZXR1cm4gZGF0YS5qb2luKCcsJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0Q3N2U3RyaW5nVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVzY2FwZWQgPSB2YWx1ZS5yZXBsYWNlQWxsKFwiXFxcIlwiLCBcIlxcXCJcXFwiXCIsKTtcbiAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgZXNjYXBlZCArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIHBhcnNlVmFsdWVzQW5kSGludHNGcm9tSnNvbih2YWx1ZTogc3RyaW5nKTogQ29tcGFyaXNvblZhbHVlTGlzdFBhcnNlUmVzdWx0IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10gfTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkOiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsW10gPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IHBhcnNlZC5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10sIGVycm9yOiBcIlBhcnNlIGVycm9yLlwiIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlc0FuZEhpbnRzRnJvbUNzdih2YWx1ZTogc3RyaW5nKTogQ29tcGFyaXNvblZhbHVlTGlzdFBhcnNlUmVzdWx0IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IFBhcGEucGFyc2U8c3RyaW5nW10+KHZhbHVlLCB7IGRlbGltaXRlcjogJywnLCBza2lwRW1wdHlMaW5lczogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHBhcnNlUmVzdWx0LmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSwgZXJyb3I6IFwiUGFyc2UgZXJyb3IuXCIgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VSZXN1bHQ/LmRhdGE/Lmxlbmd0aCA9PT0gMCkgeyByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSB9OyB9XG4gICAgICAgIHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IHBhcnNlUmVzdWx0LmRhdGEubWFwKHAgPT4gPElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWw+eyB2YWx1ZTogcFswXSwgaGludDogcFsxXSB9KS5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgfVxuXG4gICAgcGFyc2VWYWx1ZXNGcm9tQ3N2KHZhbHVlOiBzdHJpbmcpOiBDb21wYXJpc29uVmFsdWVMaXN0UGFyc2VSZXN1bHQge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gUGFwYS5wYXJzZTxzdHJpbmdbXT4odmFsdWUgKyBcIixcIiwgeyBkZWxpbWl0ZXI6ICcsJywgc2tpcEVtcHR5TGluZXM6IHRydWUgfSk7XG4gICAgICAgIGlmIChwYXJzZVJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10sIGVycm9yOiBcIlBhcnNlIGVycm9yLlwiIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJzZVJlc3VsdD8uZGF0YT8ubGVuZ3RoKSB7IHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IFtdIH07IH1cbiAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogcGFyc2VSZXN1bHQuZGF0YS5mbGF0KCkubWFwKHAgPT4gPElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWw+eyB2YWx1ZTogcCB9KS5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgfVxufVxuIl19
@@ -350,10 +350,10 @@ export class FormGenerator {
350
350
  listValueFormArray.markAsTouched();
351
351
  listValueFormArray.markAsDirty();
352
352
  }
353
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
354
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormGenerator }); }
353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
354
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator }); }
355
355
  }
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormGenerator, decorators: [{
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator, decorators: [{
357
357
  type: Injectable
358
358
  }] });
359
359
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2Zvcm0tZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFDSCxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQVcvQyxzQkFBc0IsRUFFekIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzdFLE1BQU0sT0FBTyxhQUFhO0lBQ2YsOEJBQThCLENBQUMsS0FBeUIsRUFBRSxRQUFpQixFQUFFLFFBQWdDLEVBQUUsc0JBQStDO1FBQ2pLLE9BQU8sSUFBSSxTQUFTLENBQXlCO1lBQ3pDLFlBQVksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLENBQUM7WUFDMUgsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUM7WUFDbkksY0FBYyxFQUFFLElBQUksU0FBUyxDQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFB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QyxDQUFDO1FBRXZELG1CQUFtQixDQUFDLE9BQU8sQ0FDdkIsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0NBQW9DLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDMUgsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUVQLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDNUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs4R0ExWlEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICAgIFVzZXJDb21wYXJhdG9yLCBVc2VyQ29tcGFyYXRvclR5cGUsIFNldHRpbmdUeXBlLFxuICAgIElDb21wYXJpc29uVmFsdWVNb2RlbCwgSUNvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbCxcbiAgICBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyxcbiAgICBDb21wYXJpc29uVmFsdWVGb3JtLCBDb21wYXJpc29uVmFsdWVMaXN0Rm9ybSxcbiAgICBDb25kaXRpb25Gb3JtLFxuICAgIFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtLFxuICAgIElQcmVyZXF1aXNpdGVTZXR0aW5nLFxuICAgIFBlcmNlbnRhZ2VPcHRpb25Gb3JtLFxuICAgIFNlZ21lbnRDb25kaXRpb25Gb3JtLFxuICAgIFRhcmdldGluZ1J1bGVGb3JtLFxuICAgIFVwZGF0ZVNldHRpbmdWYWx1ZUZvcm0sIFVzZXJDb25kaXRpb25Gb3JtLCBWYWx1ZUZvcm0sXG4gICAgUHJlcmVxdWlzaXRlQ29tcGFyYXRvciwgSUNvbmRpdGlvbk1vZGVsLCBJUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbk1vZGVsLCBJU2VnbWVudENvbmRpdGlvbk1vZGVsLCBJVXNlckNvbmRpdGlvbk1vZGVsLFxuICAgIElWYWx1ZU1vZGVsLCBJVGFyZ2V0aW5nUnVsZU1vZGVsLCBJUGVyY2VudGFnZU9wdGlvbk1vZGVsLCBJU2V0dGluZ1ZhbHVlTW9kZWxcbn0gZnJvbSBcIi4uL2Jvb3RzdHJhcFwiO1xuaW1wb3J0IHsgdmFsaWQgfSBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgcGVyY2VudGFnZVJlZ2V4LCB3aG9sZU51bWJlclJlZ2V4IH0gZnJvbSBcIi4uL19zZXJ2aWNlcy9mb3JtLWhlbHBlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvciB7XG4gICAgcHVibGljIGdlbmVyYXRlU2V0dGluZ1ZhbHVlc0Zvcm1Hcm91cChtb2RlbDogSVNldHRpbmdWYWx1ZU1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgc2V0dGluZ3M6IElQcmVyZXF1aXNpdGVTZXR0aW5nW10sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFVwZGF0ZVNldHRpbmdWYWx1ZUZvcm0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VXBkYXRlU2V0dGluZ1ZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmdlbmVyYXRlVmFsdWVGb3JtR3JvdXAobW9kZWwuZGVmYXVsdFZhbHVlLCBtb2RlbC5zZXR0aW5nLnNldHRpbmdUeXBlLCByZWFkT25seSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucyksXG4gICAgICAgICAgICBwZXJjZW50YWdlRXZhbHVhdGlvbkF0dHJpYnV0ZTogdGhpcy5nZW5lcmF0ZVBlcmNlbnRhZ2VFdmFsdWF0aW9uQXR0cmlidXRlRm9ybUNvbnRyb2wobW9kZWwucGVyY2VudGFnZUV2YWx1YXRpb25BdHRyaWJ1dGUsIHJlYWRPbmx5KSxcbiAgICAgICAgICAgIHRhcmdldGluZ1J1bGVzOiBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4+KFxuICAgICAgICAgICAgICAgIG1vZGVsLnRhcmdldGluZ1J1bGVzLm1hcChmdCA9PiB0aGlzLmdlbmVyYXRlVGFyZ2V0aW5nUnVsZUZvcm1Hcm91cChmdCwgbW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlUGVyY2VudGFnZUV2YWx1YXRpb25BdHRyaWJ1dGVGb3JtQ29udHJvbChwZXJjZW50YWdlRXZhbHVhdGlvbkF0dHJpYnV0ZTogc3RyaW5nLCByZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHBlcmNlbnRhZ2VFdmFsdWF0aW9uQXR0cmlidXRlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyB2YWxpZGF0b3JzOiBbdGhpcy52YWxpZGF0ZUVtcHR5U3RyaW5nLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKV0gfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVUYXJnZXRpbmdSdWxlRm9ybUdyb3VwKG1vZGVsOiBJVGFyZ2V0aW5nUnVsZU1vZGVsLCBzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUsIHJlYWRPbmx5OiBib29sZWFuLCBzZXR0aW5nczogSVByZXJlcXVpc2l0ZVNldHRpbmdbXSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpOiBGb3JtR3JvdXA8VGFyZ2V0aW5nUnVsZUZvcm0+IHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPENvbmRpdGlvbkZvcm0+PihcbiAgICAgICAgICAgIG1vZGVsLmNvbmRpdGlvbnMubWFwKHRyID0+IHRoaXMuZ2VuZXJhdGVDb25kaXRpb25Gb3JtR3JvdXAodHIsIHJlYWRPbmx5LCBzZXR0aW5ncywgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykpXG4gICAgICAgIClcblxuICAgICAgICBpZiAobW9kZWwucGVyY2VudGFnZU9wdGlvbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFRhcmdldGluZ1J1bGVGb3JtPih7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlT3B0aW9uczogbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA8UGVyY2VudGFnZU9wdGlvbkZvcm0+PihcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwucGVyY2VudGFnZU9wdGlvbnMubWFwKHByID0+IHRoaXMuZ2VuZXJhdGVQZXJjZW50YWdlT3B0aW9uRm9ybUdyb3VwKHByLCBzZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpKSxcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudmFsaWRhdGVQZXJjZW50YWdlU3VtXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4oe1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cChtb2RlbC52YWx1ZSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBFcnJvcihcIkludmFsaWQgbW9kZWxcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlVGFyZ2V0aW5nUnVsZVdpdGhFbXB0eVBlcmNlbnRhZ2VPcHRpb25zKHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVRhcmdldGluZ1J1bGVGb3JtR3JvdXAoe1xuICAgICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgICBwZXJjZW50YWdlT3B0aW9uczogdGhpcy5nZXRFbXB0eVBlcmNlbnRhZ2VPcHRpb25zKHNldHRpbmdUeXBlKVxuICAgICAgICB9LCBzZXR0aW5nVHlwZSwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlQZXJjZW50YWdlT3B0aW9ucyhzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUpOiBJUGVyY2VudGFnZU9wdGlvbk1vZGVsW10ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgeyBwZXJjZW50YWdlOiA1MCwgdmFsdWU6IHsgYm9vbFZhbHVlOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgeyBwZXJjZW50YWdlOiA1MCwgdmFsdWU6IHsgYm9vbFZhbHVlOiBmYWxzZSB9IH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5TdHJpbmc6XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHsgcGVyY2VudGFnZTogNTAsIHZhbHVlOiB7fSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHBlcmNlbnRhZ2U6IDUwLCB2YWx1ZToge30gfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZVBlcmNlbnRhZ2VPcHRpb25Gb3JtR3JvdXAobW9kZWw6IElQZXJjZW50YWdlT3B0aW9uTW9kZWwsIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFBlcmNlbnRhZ2VPcHRpb25Gb3JtPiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFBlcmNlbnRhZ2VPcHRpb25Gb3JtPih7XG4gICAgICAgICAgICBwZXJjZW50YWdlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbW9kZWwucGVyY2VudGFnZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFt0aGlzLnZhbGlkYXRlTnVtYmVyTmFuLCBWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMTAwKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHBlcmNlbnRhZ2VSZWdleCldIH0pLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cChtb2RlbC52YWx1ZSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5IHx8IHNldHRpbmdUeXBlID09PSBTZXR0aW5nVHlwZS5Cb29sZWFuLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVDb25kaXRpb25Gb3JtR3JvdXAobW9kZWw6IElDb25kaXRpb25Nb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPiB7XG4gICAgICAgIGlmIChtb2RlbC51c2VyQ29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgdXNlckNvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVVzZXJDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwudXNlckNvbmRpdGlvbiwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5zZWdtZW50Q29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgc2VnbWVudENvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVNlZ21lbnRDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwuc2VnbWVudENvbmRpdGlvbiwgcmVhZE9ubHkpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5wcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwucHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbiwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJycpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVVc2VyQ29uZGl0aW9uRm9ybUdyb3VwKHZhbHVlOiBJVXNlckNvbmRpdGlvbk1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpOiBGb3JtR3JvdXA8VXNlckNvbmRpdGlvbkZvcm0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VXNlckNvbmRpdGlvbkZvcm0+KHtcbiAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJpc29uQXR0cmlidXRlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXSB9KSxcbiAgICAgICAgICAgIGNvbXBhcmF0b3I6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlOiB0aGlzLmdlbmVyYXRlQ29tcGFyaXNvblZhbHVlRm9ybUdyb3VwKHZhbHVlLmNvbXBhcmlzb25WYWx1ZSwgdmFsdWUuY29tcGFyYXRvciwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZVNlZ21lbnRDb25kaXRpb25Gb3JtR3JvdXAodmFsdWU6IElTZWdtZW50Q29uZGl0aW9uTW9kZWwsIHJlYWRPbmx5OiBib29sZWFuKTogRm9ybUdyb3VwPFNlZ21lbnRDb25kaXRpb25Gb3JtPiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFNlZ21lbnRDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICBzZWdtZW50SWQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5zZWdtZW50SWQsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICBjb21wYXJhdG9yOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuY29tcGFyYXRvciwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm1Hcm91cCh2YWx1ZTogSVByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Nb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nID0gc2V0dGluZ3MuZmlsdGVyKHMgPT4gcy5zZXR0aW5nSWQgPT0gdmFsdWUucHJlcmVxdWlzaXRlU2V0dGluZ0lkKVswXTtcbiAgICAgICAgaWYgKCFzZXR0aW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHByZXJlcXVpc2l0ZSBzZXR0aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldHRpbmcuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4pIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgYSBib29sZWFuIHByZXJlcXVpc2l0ZSBzZXR0aW5nLCB3ZSBhcmUgZW5mb3JjaW5nIGEgJ1RydWUnIHByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZSBcbiAgICAgICAgICAgIC8vIHNvIHdlIGNhbiBzaW1wbGlmeSB0aGUgVUkgd2l0aCBhIHNpbXBsZSAnSXMgdHJ1ZScgb3IgJ0lzIGZhbHNlJyBzZWxlY3QuXG4gICAgICAgICAgICAvLyAnSXMgdHJ1ZScgPSBQcmVyZXF1aXNpdGVDb21wYXJhdG9yLkVxdWFscyBUUlVFXG4gICAgICAgICAgICAvLyAnSXMgZmFsc2UnID0gUHJlcmVxdWlzaXRlQ29tcGFyYXRvci5Eb2VzTm90RXF1YWwgVFJVRVxuICAgICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSB2YWx1ZS5jb21wYXJhdG9yO1xuICAgICAgICAgICAgaWYgKCF2YWx1ZS5wcmVyZXF1aXNpdGVDb21wYXJpc29uVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJlcmVxdWlzaXRlQ29tcGFyaXNvblZhbHVlIGlzIGZhbHNlIHNvbWVob3cgKGUuZy4gUHVibGljIE1hbmFnZW1lbnQgQVBJKSwgd2Ugc2hvdWxkIG5lZ2F0ZSB0aGUgY29tcGFyYXRvci5cbiAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciA9PT0gUHJlcmVxdWlzaXRlQ29tcGFyYXRvci5FcXVhbHMgPyBQcmVyZXF1aXNpdGVDb21wYXJhdG9yLkRvZXNOb3RFcXVhbCA6IFByZXJlcXVpc2l0ZUNvbXBhcmF0b3IuRXF1YWxzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8UHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm0+KHtcbiAgICAgICAgICAgICAgICBwcmVyZXF1aXNpdGVTZXR0aW5nSWQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5wcmVyZXF1aXNpdGVTZXR0aW5nSWQsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICAgICAgY29tcGFyYXRvcjogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGNvbXBhcmF0b3IsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlQ29tcGFyaXNvblZhbHVlOiB0aGlzLmdlbmVyYXRlVmFsdWVGb3JtR3JvdXAoeyBib29sVmFsdWU6IHRydWUgfSwgc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlU2V0dGluZ0lkOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUucHJlcmVxdWlzaXRlU2V0dGluZ0lkLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgICAgIHByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZTogdGhpcy5nZW5lcmF0ZVZhbHVlRm9ybUdyb3VwKHZhbHVlLnByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZSwgc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUVtcHR5UHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm1Hcm91cChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4oe1xuICAgICAgICAgICAgcHJlcmVxdWlzaXRlU2V0dGluZ0lkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgY29tcGFyYXRvcjogbmV3IEZvcm1Db250cm9sKFByZXJlcXVpc2l0ZUNvbXBhcmF0b3IuRXF1YWxzLCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICBwcmVyZXF1aXNpdGVDb21wYXJpc29uVmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh7IGJvb2xWYWx1ZTogdHJ1ZSB9LCBTZXR0aW5nVHlwZS5Cb29sZWFuLCBmYWxzZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5leHRJbmRleChmb3JtQXJyYXk6IEZvcm1BcnJheTxGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlTGlzdEZvcm0+Pikge1xuICAgICAgICBpZiAoZm9ybUFycmF5LmNvbnRyb2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLmZvcm1BcnJheS5jb250cm9scy5tYXAoYyA9PiBjLmNvbnRyb2xzLmluZGV4LnZhbHVlKSkgKyAxO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUxpc3RGb3JtR3JvdXAobGlzdFZhbHVlOiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVMaXN0Rm9ybT4oe1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBsaXN0VmFsdWUudmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzIH0pLFxuICAgICAgICAgICAgaGludDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGxpc3RWYWx1ZS5oaW50LCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MDApXSksXG4gICAgICAgICAgICAvLyBUaGUgaW5kZXggY29sdW1uIGlzIGdlbmVyYXRlZCBvbiB0aGUgZmlyc3QgZ2VuZXJhdGlvbiBieSBkZWZhdWx0IG9yIGJ5IHRoZSBnZXROZXh0SW5kZXgoKSBpZiBhIHZhbHVlIGlzIGFkZGVkIHRvIHRoZSBsaXN0dmFsdWUuIEl0IGlzIHJlcXVpcmVkIHNvIHdlIGNhbiBkZWxldGUgdGhlIHJvd3Mgb24gdGhlIHBvcHV0IGVkaXRvci5cbiAgICAgICAgICAgIGluZGV4OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogaW5kZXgsIGRpc2FibGVkOiB0cnVlIH0pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUZvcm1Hcm91cCh2YWx1ZTogSUNvbXBhcmlzb25WYWx1ZU1vZGVsLCBjb21wYXJhdG9yOiBVc2VyQ29tcGFyYXRvciwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUZvcm0+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmdldENvbXBhcmlzb25WYWx1ZVR5cGUoY29tcGFyYXRvcikpIHtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVN0cmluZ1ZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZ0xpc3Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBsaXN0VmFsdWU6IHRoaXMuZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheSh2YWx1ZS5saXN0VmFsdWUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVN0cmluZ0xpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvclR5cGUuTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUZvcm0+KHtcbiAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5kb3VibGVWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWxvc3Mtb2YtcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbdGhpcy52YWxpZGF0ZU51bWJlck5hbiwgVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oLTEuNzk3NjkzMTM0ODYyMzJFKzMwOCksIFZhbGlkYXRvcnMubWF4KDEuNzk3NjkzMTM0ODYyMzJFKzMwOCldIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVNlbXZlclZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlckxpc3Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBsaXN0VmFsdWU6IHRoaXMuZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheSh2YWx1ZS5saXN0VmFsdWUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVNlbXZlckxpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvclR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBkb3VibGVWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmRvdWJsZVZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21wYXJhdG9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheShsaXN0VmFsdWU6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCBpdGVtVmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSkge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlTGlzdEZvcm0+PihcbiAgICAgICAgICAgIChsaXN0VmFsdWUgPz8gW10pLm1hcCgobHYsIGluZGV4KSA9PiB7IHJldHVybiB0aGlzLmdlbmVyYXRlQ29tcGFyaXNvblZhbHVlTGlzdEZvcm1Hcm91cChsdiwgcmVhZE9ubHksIGl0ZW1WYWxpZGF0b3JzLCBpbmRleCk7IH0pLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxpc3RMZW5ndGgpXVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVN0cmluZ1ZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxlbmd0aCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wYXJpc29uVmFsdWVTdHJpbmdMaXN0SXRlbVZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxpc3RJdGVtTGVuZ3RoKV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVNlbXZlclZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxlbmd0aCksIHRoaXMudmFsaWRhdGVTZW1WZXJdXG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVNlbXZlckxpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucykge1xuICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKGZlYXR1cmVGbGFnTGltaXRhdGlvbnMubWF4Q29tcGFyaXNvblZhbHVlTGlzdEl0ZW1MZW5ndGgpLCB0aGlzLnZhbGlkYXRlU2VtVmVyXVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZURlZmF1bHRWYWx1ZShzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUpOiBJVmFsdWVNb2RlbCB7XG4gICAgICAgIHN3aXRjaCAoc2V0dGluZ1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBib29sVmFsdWU6IGZhbHNlIH07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuSW50OlxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Eb3VibGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZURlZmF1bHRWYWx1ZUZvcm1Hcm91cChzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUsIHJlYWRPbmx5OiBib29sZWFuLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxWYWx1ZUZvcm0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh0aGlzLmdlbmVyYXRlRGVmYXVsdFZhbHVlKHNldHRpbmdUeXBlKSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh2YWx1ZTogSVZhbHVlTW9kZWwsIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFZhbHVlRm9ybT4ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIGJvb2xWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmJvb2xWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVHlwZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5TdHJpbmc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUsIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuSW50OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBpbnRWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmludFZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSB9KVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxWYWx1ZUZvcm0+KHtcbiAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5kb3VibGVWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVHlwZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wYXJpc29uVmFsdWVUeXBlKGNvbXBhcmF0b3I6IFVzZXJDb21wYXJhdG9yKTogVXNlckNvbXBhcmF0b3JUeXBlIHtcbiAgICAgICAgc3dpdGNoIChjb21wYXJhdG9yKSB7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dEVxdWFsczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dERvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dEVxdWFsczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dERvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZztcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVJc09uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVJc05vdE9uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVUZXh0U3RhcnRzV2l0aEFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVUZXh0RW5kc1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dE5vdFN0YXJ0c1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dE5vdEVuZHNXaXRoQW55T2Y6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLlNlbnNpdGl2ZUFycmF5Q29udGFpbnNBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlQXJyYXlEb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Jc09uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Jc05vdE9uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5UZXh0U3RhcnRzV2l0aEFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5UZXh0RW5kc1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dE5vdFN0YXJ0c1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dE5vdEVuZHNXaXRoQW55T2Y6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLkFycmF5Q29udGFpbnNBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuQXJyYXlEb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Db250YWluc0FueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Eb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgICAgIHJldHVybiBVc2VyQ29tcGFyYXRvclR5cGUuU3RyaW5nTGlzdDtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJFcXVhbHM6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLk51bWJlckRvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuTnVtYmVyTGVzczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuTnVtYmVyTGVzc09yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJHcmVhdGVyOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJHcmVhdGVyT3JFcXVhbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5OdW1iZXI7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVySXNPbmVPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVySXNOb3RPbmVPZjpcbiAgICAgICAgICAgICAgICByZXR1cm4gVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlckxpc3Q7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVyR3JlYXRlcjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVyR3JlYXRlck9yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW1WZXJMZXNzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW1WZXJMZXNzT3JFcXVhbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5TZW12ZXI7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuRGF0ZVRpbWVCZWZvcmU6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLkRhdGVUaW1lQWZ0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5EYXRlVGltZTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGU6IFNldHRpbmdUeXBlLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsaWRhdGVOdW1iZXJOYW4sIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oLTIxNDc0ODM2NDgpLCBWYWxpZGF0b3JzLm1heCgyMTQ3NDgzNjQ3KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHdob2xlTnVtYmVyUmVnZXgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbG9zcy1vZi1wcmVjaXNpb25cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsaWRhdGVOdW1iZXJOYW4sIFZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKC0xLjc5NzY5MzEzNDg2MjMyRSszMDgpLCBWYWxpZGF0b3JzLm1heCgxLjc5NzY5MzEzNDg2MjMyRSszMDgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICAgICAgICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucy5tYXhTdHJpbmdGbGFnVmFsdWVMZW5ndGggPz8gMTAwMDAwKV07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVOdW1iZXJOYW4oYzogRm9ybUNvbnRyb2w8bnVtYmVyPikge1xuICAgICAgICBpZiAoYy52YWx1ZSA9PT0gbnVsbCB8fCBpc05hTihjLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU51bWJlck5hbjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhbGlkYXRlU2VtVmVyKGM6IEZvcm1Db250cm9sPHN0cmluZz4pIHtcbiAgICAgICAgaWYgKHZhbGlkKGMudmFsdWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlU2VtVmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVFbXB0eVN0cmluZyhjOiBGb3JtQ29udHJvbDxzdHJpbmc+KSB7XG4gICAgICAgIGlmIChjLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVBlcmNlbnRhZ2VTdW0oYzogRm9ybUFycmF5PEZvcm1Hcm91cDxQZXJjZW50YWdlT3B0aW9uRm9ybT4+KSB7XG4gICAgICAgIGlmIChjPy5jb250cm9scy5tYXAoaSA9PiBpLmNvbnRyb2xzLnBlcmNlbnRhZ2UudmFsdWUpLnJlZHVjZSgoYSwgYikgPT4geyByZXR1cm4gYSArIGIgfSwgMCkgIT09IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVBlcmNlbnRhZ2VTdW06IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1BlcmNlbnRhZ2VPbmx5VGFyZ2V0aW5nUnVsZShmb3JtR3JvdXA6IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFmb3JtR3JvdXAuY29udHJvbHMudmFsdWVcbiAgICAgICAgICAgICYmICFmb3JtR3JvdXAuY29udHJvbHMuY29uZGl0aW9ucy5sZW5ndGhcbiAgICAgICAgICAgICYmICEhZm9ybUdyb3VwLmNvbnRyb2xzLnBlcmNlbnRhZ2VPcHRpb25zPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgYWRkQ29tcGFyaXNvblZhbHVlTGlzdFZhbHVlSXRlbXMoXG4gICAgICAgIHVzZXJDb21wYXJhdG9yOiBVc2VyQ29tcGFyYXRvcixcbiAgICAgICAgbGlzdFZhbHVlRm9ybUFycmF5OiBGb3JtQXJyYXk8Rm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUxpc3RGb3JtPj4sXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSxcbiAgICAgICAgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9XG4gICAgICAgICAgICB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVR5cGUodXNlckNvbXBhcmF0b3IpID09PSBVc2VyQ29tcGFyYXRvclR5cGUuU2VtdmVyTGlzdFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRDb21wYXJpc29uVmFsdWVTZW12ZXJMaXN0SXRlbVZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucylcbiAgICAgICAgICAgICAgICA6IHRoaXMuZ2V0Q29tcGFyaXNvblZhbHVlU3RyaW5nTGlzdEl0ZW1WYWxpZGF0b3JzKGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXROZXh0SW5kZXgobGlzdFZhbHVlRm9ybUFycmF5KTtcblxuICAgICAgICBjb21wYXJpc29uVmFsdWVMaXN0LmZvckVhY2goXG4gICAgICAgICAgICAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUxpc3RGb3JtR3JvdXAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0sIGZhbHNlLCB2YWxpZGF0b3JzLCBtYXhJbmRleCArIGluZGV4KTtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgbGlzdFZhbHVlRm9ybUFycmF5LnB1c2goZm9ybUdyb3VwLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkubWFya0FzRGlydHkoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,26 +1,82 @@
1
1
  import { HttpErrorResponse } from '@angular/common/http';
2
+ import { UntypedFormArray } from '@angular/forms';
2
3
  import { PlatformHelper } from './platform-helper';
3
4
  export const percentageRegex = '^[0-9]*$';
4
5
  export const wholeNumberRegex = '^[-+]?[0-9]\\d*$';
5
6
  export const timeRegex = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
7
+ export const featureFlagKeyRegex = '^[a-zA-Z]+[a-zA-Z0-9_-]*$';
6
8
  export class FormHelper {
7
9
  static getErrorMessage(control, hint = '') {
8
10
  if (!control || control.valid) {
9
11
  return null;
10
12
  }
13
+ if (control.hasError('validateNumberNan')) {
14
+ return `Invalid value.`;
15
+ }
16
+ if (control.hasError('matDatepickerParse')) {
17
+ return `Invalid date value.`;
18
+ }
11
19
  if (control.hasError('required')) {
12
- return `${hint} The field is required.`;
20
+ if (control instanceof UntypedFormArray) {
21
+ return 'The list must contain min 1 items.';
22
+ }
23
+ else {
24
+ return hint ? `${hint} The field is required.` : `The field is required.`;
25
+ }
13
26
  }
14
- if (control.hasError('pattern')) {
15
- return 'Not a valid e-mail address.';
27
+ if (control.hasError('emails')) {
28
+ return control.errors.emails;
16
29
  }
17
30
  if (control.hasError('minlength')) {
18
- return 'The field must be at least ' + control.getError('minlength').requiredLength + ' characters long';
31
+ if (control instanceof UntypedFormArray) {
32
+ return 'The list must contain min ' + control.errors.minlength.requiredLength + ' items.';
33
+ }
34
+ else {
35
+ return 'The field must be at least ' + control.errors.minlength.requiredLength + ' characters long.';
36
+ }
19
37
  }
20
38
  if (control.hasError('maxlength')) {
21
- return 'The field must be at max ' + control.getError('maxlength').requiredLength + ' characters long';
39
+ if (control instanceof UntypedFormArray) {
40
+ return 'The list must contain max ' + control.errors.maxlength.requiredLength + ' items.';
41
+ }
42
+ else {
43
+ return 'The field must be at max ' + control.errors.maxlength.requiredLength + ' characters long.';
44
+ }
45
+ }
46
+ if (control.hasError('serverSide')) {
47
+ return control.errors.serverSide;
48
+ }
49
+ if (control.hasError('pattern') && control.errors.pattern.requiredPattern === percentageRegex) {
50
+ return 'The percentage value must be a whole number.';
51
+ }
52
+ if (control.hasError('pattern') && control.errors.pattern.requiredPattern === wholeNumberRegex) {
53
+ return 'Please enter a whole number e.g. 42.';
54
+ }
55
+ if (control.hasError('pattern') && control.errors.pattern.requiredPattern === timeRegex) {
56
+ return 'Invalid time value.';
57
+ }
58
+ if (control.hasError('pattern') && control.errors.pattern.requiredPattern === featureFlagKeyRegex) {
59
+ return 'Invalid key. Keys must start with a letter, followed by a combination of numbers, letters, underscores and hyphens.';
60
+ }
61
+ if (control.hasError('pattern')) {
62
+ return 'Not a valid e-mail address.';
63
+ }
64
+ if (control.hasError('alreadyExists')) {
65
+ return control.errors.alreadyExists;
66
+ }
67
+ if (control.hasError('validateSemVer')) {
68
+ return 'Invalid semantic version.';
69
+ }
70
+ if (control.hasError('validatePercentageSum')) {
71
+ return 'The sum of percentages must be equal to 100.';
72
+ }
73
+ if (control.hasError('min')) {
74
+ return 'The value must be greater than ' + (control.errors.min.min - 1) + '.';
75
+ }
76
+ if (control.hasError('max')) {
77
+ return 'The value must be less than ' + (control.errors.max.max + 1) + '.';
22
78
  }
23
- return null;
79
+ return '';
24
80
  }
25
81
  static handleErrors(formGroup, error) {
26
82
  if (error instanceof HttpErrorResponse) {
@@ -104,4 +160,4 @@ export class FormHelper {
104
160
  return value + '';
105
161
  }
106
162
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2Zvcm0taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRywyQ0FBMkMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sVUFBVTtJQUVaLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBd0IsRUFBRSxPQUFlLEVBQUU7UUFDckUsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxJQUFJLHlCQUF5QixDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLDZCQUE2QixDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLDZCQUE2QixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxHQUFHLGtCQUFrQixDQUFDO1FBQzdHLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVB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Q0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELEtBQUssUUFBUTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QjtnQkFDSSxPQUFPLEdBQUcsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsNkJBQTZCLENBQUMsS0FBVTtRQUNsRCxLQUFLLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyx3Q0FBd0M7UUFDeEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBR0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQWE7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELDhEQUE4RDtRQUM5RCw2RUFBNkU7UUFDN0UsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRUQsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSxpRUFBaUU7UUFDakUsMEZBQTBGO1FBQzFGLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGxhdGZvcm1IZWxwZXIgfSBmcm9tICcuL3BsYXRmb3JtLWhlbHBlcic7XG5cbmV4cG9ydCBjb25zdCBwZXJjZW50YWdlUmVnZXggPSAnXlswLTldKiQnO1xuZXhwb3J0IGNvbnN0IHdob2xlTnVtYmVyUmVnZXggPSAnXlstK10/WzAtOV1cXFxcZCokJztcbmV4cG9ydCBjb25zdCB0aW1lUmVnZXggPSAvXihbMC05XXwwWzAtOV18MVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuXG5leHBvcnQgY2xhc3MgRm9ybUhlbHBlciB7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVycm9yTWVzc2FnZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGhpbnQ6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aGludH0gVGhlIGZpZWxkIGlzIHJlcXVpcmVkLmA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ05vdCBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnVGhlIGZpZWxkIG11c3QgYmUgYXQgbGVhc3QgJyArIGNvbnRyb2wuZ2V0RXJyb3IoJ21pbmxlbmd0aCcpLnJlcXVpcmVkTGVuZ3RoICsgJyBjaGFyYWN0ZXJzIGxvbmcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RoZSBmaWVsZCBtdXN0IGJlIGF0IG1heCAnICsgY29udHJvbC5nZXRFcnJvcignbWF4bGVuZ3RoJykucmVxdWlyZWRMZW5ndGggKyAnIGNoYXJhY3RlcnMgbG9uZyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFuZGxlRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDpcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVua25vd25GaWVsZE5hbWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZE5hbWUgaW4gZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5oYXNPd25Qcm9wZXJ0eShmaWVsZE5hbWUpICYmIGVycm9yLmVycm9yW2ZpZWxkTmFtZV0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8ubGVuZ3RoID4gMCB8fCBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb25GaWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25GaWVsZE5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uRmllbGROYW1lID0ganNvbkZpZWxkTmFtZVswXS50b0xvd2VyQ2FzZSgpICsganNvbkZpZWxkTmFtZS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8uRXJyb3JzLm1hcCgoZTogYW55KSA9PiBlLkVycm9yTWVzc2FnZSkpLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlcnJvci5lcnJvcltmaWVsZE5hbWVdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShqc29uRmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbanNvbkZpZWxkTmFtZV0uc2V0RXJyb3JzKHsgc2VydmVyU2lkZTogZXJyb3JNZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25GaWVsZE5hbWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodW5rbm93bkZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLnNldEVycm9ycyh7IHNlcnZlclNpZGU6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vIGluIHRoZXNlIGNhc2VzIHdlIGRvIG5vdCBzaG93IGVycm9ycyBvbiB0aGUgZm9ybSwgdGhleSdyZSBoYW5kbGVkIGJ5IHRoZSBodHRwXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0b3IgaW4gc3JjXFxhcHBcXF9pbnRlcmNlcHRvcnNcXGh0dHBzdGF0dXNjb2RlLmludGVyY2VwdG9yLnRzXG4gICAgICAgICAgICAgICAgY2FzZSA0MDI6XG4gICAgICAgICAgICAgICAgY2FzZSA0Mjk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cC5zZXRFcnJvcnMoeyBzZXJ2ZXJTaWRlOiAnU29tZXRoaW5nIHdlbnQgd3Jvbmcgb24gb3VyIHNpZGUuIFRoaXMgaXMgbm90IHlvdXIgZmF1bHQuIFBsZWFzZSB0cnkgYWdhaW4uJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEgbnVtYmVyIHRvIGEgYG51bWJlcmAgdmFsdWUuXG4gICAgICogUmV0dXJucyBgTmFOYCBpbiB0aGUgY2FzZSBvZiBub24tbnVtZXJpY2FsIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZU51bWJlcih2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgLy8gTk9URTogYE51bWJlcigpYCBjb252ZXJ0cyB3aGl0ZXNwYWNlIHN0cmluZ3MgdG8gMC5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpID09PSAnJyA/IE5hTiA6IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIHZhbHVlIHJlcHJlc2VudGluZyBhIG51bWJlciB0byB0aGUgbm9ybWFsaXplZCBgc3RyaW5nYFxuICAgICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuIChlLmcuIGAuMWAgLS0+IGAnMC4xJ2AsIGAzLjE0ZTJgIC0tPiBgJzMxNCdgKS5cbiAgICAgKiBSZXR1cm5zIGAnJ2AgaW4gdGhlIGNhc2Ugb2Ygbm9uLW51bWVyaWNhbCB2YWx1ZXMgb3Igbm9uLWZpbml0ZSBudW1lcmljYWwgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplTnVtYmVyU3RvcmVkQXNTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHZhbHVlID0gRm9ybUhlbHBlci5ub3JtYWxpemVOdW1iZXIodmFsdWUpO1xuICAgICAgICAvLyBOT1RFOiBgTmFOYCBpcyBub3QgY29uc2lkZXJlZCBmaW5pdGUuXG4gICAgICAgIHJldHVybiBpc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSArICcnIDogJyc7XG4gICAgfVxuXG4gICAgXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDaHJvbWl1bS1iYXNlZCBicm93c2VycyBkb24ndCByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHRoZXkgdXNlIGEgZGlzcGxheSBmb3JtYXQgY29ycmVzcG9uZGluZyB0byB0aGUgYnJvd3NlcidzIGxhbmd1YWdlIHNldHRpbmcuXG4gICAgaWYgKFBsYXRmb3JtSGVscGVyLmlzQ2hyb21pdW0oKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gRmlyZWZveCAoYW5kIHByb2JhYmx5IG90aGVyIGJyb3dzZXJzKSByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHdoaWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gdGhlIGZpeGVkIHZhbHVlIG9mIFwiZW5cIiAoc2VlIGluZGV4Lmh0bWwpLFxuICAgIC8vIHNvIGluIHRoZXNlIGNhc2VzIGRvdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAgLy8gKEluIGNhc2UgbG9jYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgdGhpcyBsb2dpYyBzaG91bGQgYmUgcmV2aXNlZCEpXG4gICAgcmV0dXJuIHZhbHVlICsgJyc7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2Zvcm0taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBd0MsZ0JBQWdCLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLDJDQUEyQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBRS9ELE1BQU0sT0FBTyxVQUFVO0lBRVosTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFtRixFQUFFLElBQUksR0FBRyxFQUFFO1FBQ3hILElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sZ0JBQWdCLENBQUE7UUFDekIsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxxQkFBcUIsQ0FBQTtRQUM5QixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztnQkFD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b250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5LCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBsYXRmb3JtSGVscGVyIH0gZnJvbSAnLi9wbGF0Zm9ybS1oZWxwZXInO1xuXG5leHBvcnQgY29uc3QgcGVyY2VudGFnZVJlZ2V4ID0gJ15bMC05XSokJztcbmV4cG9ydCBjb25zdCB3aG9sZU51bWJlclJlZ2V4ID0gJ15bLStdP1swLTldXFxcXGQqJCc7XG5leHBvcnQgY29uc3QgdGltZVJlZ2V4ID0gL14oWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbmV4cG9ydCBjb25zdCBmZWF0dXJlRmxhZ0tleVJlZ2V4ID0gJ15bYS16QS1aXStbYS16QS1aMC05Xy1dKiQnO1xuXG5leHBvcnQgY2xhc3MgRm9ybUhlbHBlciB7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVycm9yTWVzc2FnZShjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCBVbnR5cGVkRm9ybUdyb3VwIHwgVW50eXBlZEZvcm1BcnJheSB8IEFic3RyYWN0Q29udHJvbCwgaGludCA9ICcnKSB7XG4gICAgICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigndmFsaWRhdGVOdW1iZXJOYW4nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlLmBcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlclBhcnNlJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBkYXRlIHZhbHVlLmBcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgIHJldHVybiAnVGhlIGxpc3QgbXVzdCBjb250YWluIG1pbiAxIGl0ZW1zLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gaGludCA/IGAke2hpbnR9IFRoZSBmaWVsZCBpcyByZXF1aXJlZC5gIDogYFRoZSBmaWVsZCBpcyByZXF1aXJlZC5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdlbWFpbHMnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wuZXJyb3JzLmVtYWlscztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICByZXR1cm4gJ1RoZSBsaXN0IG11c3QgY29udGFpbiBtaW4gJyArIGNvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aCArICcgaXRlbXMuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiAnVGhlIGZpZWxkIG11c3QgYmUgYXQgbGVhc3QgJyArIGNvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aCArICcgY2hhcmFjdGVycyBsb25nLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdUaGUgbGlzdCBtdXN0IGNvbnRhaW4gbWF4ICcgKyBjb250cm9sLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGggKyAnIGl0ZW1zLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gJ1RoZSBmaWVsZCBtdXN0IGJlIGF0IG1heCAnICsgY29udHJvbC5lcnJvcnMubWF4bGVuZ3RoLnJlcXVpcmVkTGVuZ3RoICsgJyBjaGFyYWN0ZXJzIGxvbmcuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignc2VydmVyU2lkZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC5lcnJvcnMuc2VydmVyU2lkZTtcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpICYmIGNvbnRyb2wuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuID09PSBwZXJjZW50YWdlUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnVGhlIHBlcmNlbnRhZ2UgdmFsdWUgbXVzdCBiZSBhIHdob2xlIG51bWJlci4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJykgJiYgY29udHJvbC5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4gPT09IHdob2xlTnVtYmVyUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnUGxlYXNlIGVudGVyIGEgd2hvbGUgbnVtYmVyIGUuZy4gNDIuJztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpICYmIGNvbnRyb2wuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuID09PSB0aW1lUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnSW52YWxpZCB0aW1lIHZhbHVlLic7XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKSAmJiBjb250cm9sLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybiA9PT0gZmVhdHVyZUZsYWdLZXlSZWdleCkge1xuICAgICAgICAgICAgcmV0dXJuICdJbnZhbGlkIGtleS4gS2V5cyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGZvbGxvd2VkIGJ5IGEgY29tYmluYXRpb24gb2YgbnVtYmVycywgbGV0dGVycywgdW5kZXJzY29yZXMgYW5kIGh5cGhlbnMuJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ05vdCBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLic7XG4gICAgICAgICAgfSBcbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdhbHJlYWR5RXhpc3RzJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sLmVycm9ycy5hbHJlYWR5RXhpc3RzO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCd2YWxpZGF0ZVNlbVZlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0ludmFsaWQgc2VtYW50aWMgdmVyc2lvbi4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCd2YWxpZGF0ZVBlcmNlbnRhZ2VTdW0nKSkge1xuICAgICAgICAgICAgcmV0dXJuICdUaGUgc3VtIG9mIHBlcmNlbnRhZ2VzIG11c3QgYmUgZXF1YWwgdG8gMTAwLic7XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21pbicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RoZSB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAnICsgKGNvbnRyb2wuZXJyb3JzLm1pbi5taW4gLSAxKSArICcuJztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF4JykpIHtcbiAgICAgICAgICAgIHJldHVybiAnVGhlIHZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICcgKyAoY29udHJvbC5lcnJvcnMubWF4Lm1heCArIDEpICsgJy4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFuZGxlRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDpcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVua25vd25GaWVsZE5hbWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZE5hbWUgaW4gZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5oYXNPd25Qcm9wZXJ0eShmaWVsZE5hbWUpICYmIGVycm9yLmVycm9yW2ZpZWxkTmFtZV0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8ubGVuZ3RoID4gMCB8fCBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb25GaWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25GaWVsZE5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uRmllbGROYW1lID0ganNvbkZpZWxkTmFtZVswXS50b0xvd2VyQ2FzZSgpICsganNvbkZpZWxkTmFtZS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8uRXJyb3JzLm1hcCgoZTogYW55KSA9PiBlLkVycm9yTWVzc2FnZSkpLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlcnJvci5lcnJvcltmaWVsZE5hbWVdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShqc29uRmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbanNvbkZpZWxkTmFtZV0uc2V0RXJyb3JzKHsgc2VydmVyU2lkZTogZXJyb3JNZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25GaWVsZE5hbWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodW5rbm93bkZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLnNldEVycm9ycyh7IHNlcnZlclNpZGU6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vIGluIHRoZXNlIGNhc2VzIHdlIGRvIG5vdCBzaG93IGVycm9ycyBvbiB0aGUgZm9ybSwgdGhleSdyZSBoYW5kbGVkIGJ5IHRoZSBodHRwXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0b3IgaW4gc3JjXFxhcHBcXF9pbnRlcmNlcHRvcnNcXGh0dHBzdGF0dXNjb2RlLmludGVyY2VwdG9yLnRzXG4gICAgICAgICAgICAgICAgY2FzZSA0MDI6XG4gICAgICAgICAgICAgICAgY2FzZSA0Mjk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cC5zZXRFcnJvcnMoeyBzZXJ2ZXJTaWRlOiAnU29tZXRoaW5nIHdlbnQgd3Jvbmcgb24gb3VyIHNpZGUuIFRoaXMgaXMgbm90IHlvdXIgZmF1bHQuIFBsZWFzZSB0cnkgYWdhaW4uJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEgbnVtYmVyIHRvIGEgYG51bWJlcmAgdmFsdWUuXG4gICAgICogUmV0dXJucyBgTmFOYCBpbiB0aGUgY2FzZSBvZiBub24tbnVtZXJpY2FsIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZU51bWJlcih2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgLy8gTk9URTogYE51bWJlcigpYCBjb252ZXJ0cyB3aGl0ZXNwYWNlIHN0cmluZ3MgdG8gMC5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpID09PSAnJyA/IE5hTiA6IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIHZhbHVlIHJlcHJlc2VudGluZyBhIG51bWJlciB0byB0aGUgbm9ybWFsaXplZCBgc3RyaW5nYFxuICAgICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuIChlLmcuIGAuMWAgLS0+IGAnMC4xJ2AsIGAzLjE0ZTJgIC0tPiBgJzMxNCdgKS5cbiAgICAgKiBSZXR1cm5zIGAnJ2AgaW4gdGhlIGNhc2Ugb2Ygbm9uLW51bWVyaWNhbCB2YWx1ZXMgb3Igbm9uLWZpbml0ZSBudW1lcmljYWwgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplTnVtYmVyU3RvcmVkQXNTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHZhbHVlID0gRm9ybUhlbHBlci5ub3JtYWxpemVOdW1iZXIodmFsdWUpO1xuICAgICAgICAvLyBOT1RFOiBgTmFOYCBpcyBub3QgY29uc2lkZXJlZCBmaW5pdGUuXG4gICAgICAgIHJldHVybiBpc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSArICcnIDogJyc7XG4gICAgfVxuXG4gICAgXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDaHJvbWl1bS1iYXNlZCBicm93c2VycyBkb24ndCByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHRoZXkgdXNlIGEgZGlzcGxheSBmb3JtYXQgY29ycmVzcG9uZGluZyB0byB0aGUgYnJvd3NlcidzIGxhbmd1YWdlIHNldHRpbmcuXG4gICAgaWYgKFBsYXRmb3JtSGVscGVyLmlzQ2hyb21pdW0oKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gRmlyZWZveCAoYW5kIHByb2JhYmx5IG90aGVyIGJyb3dzZXJzKSByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHdoaWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gdGhlIGZpeGVkIHZhbHVlIG9mIFwiZW5cIiAoc2VlIGluZGV4Lmh0bWwpLFxuICAgIC8vIHNvIGluIHRoZXNlIGNhc2VzIGRvdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAgLy8gKEluIGNhc2UgbG9jYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgdGhpcyBsb2dpYyBzaG91bGQgYmUgcmV2aXNlZCEpXG4gICAgcmV0dXJuIHZhbHVlICsgJyc7XG4gIH1cbn1cbiJdfQ==
@@ -17,10 +17,10 @@ export class MessagingService {
17
17
  dismissCurrentSnack() {
18
18
  this.snackBar.dismiss();
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MessagingService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MessagingService }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MessagingService, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService, decorators: [{
24
24
  type: Injectable
25
25
  }], ctorParameters: () => [{ type: i1.MatSnackBar }] });
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL21lc3NhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBSSxDQUFDO0lBRTlDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxVQUFVLE9BQU8sa0NBQWtDLEVBQ25ELE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSTtRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsQ0FDMUUsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQTFCUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxuXG4gICAgc2hvd0Vycm9yU25hY2sobWVzc2FnZSA9ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA2MDAwMCkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgICAgICBgT29vcHMuICR7bWVzc2FnZX0gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHVzLmAsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAncmVkLXNuYWNrYmFyJyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2hvd1N1Y2Nlc3NTbmFjayhtZXNzYWdlID0gJ1N1Y2Nlc3MuJywgYWN0aW9uID0gbnVsbCwgZHVyYXRpb25NcyA9IDI1MDApIHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgbWVzc2FnZSwgYWN0aW9uLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAnZ3JlZW4tc25hY2tiYXInIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG93V2FybmluZ1NuYWNrKG1lc3NhZ2UgPSAnU3VjY2Vzcy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA1MDAwKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgIG1lc3NhZ2UsIGFjdGlvbiwgeyBkdXJhdGlvbjogZHVyYXRpb25NcywgcGFuZWxDbGFzczogJ3llbGxvdy1zbmFja2JhcicgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc21pc3NDdXJyZW50U25hY2soKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuZGlzbWlzcygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -65,10 +65,10 @@ export class PublicApiService {
65
65
  getDashboardBasePath() {
66
66
  return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, decorators: [{
72
72
  type: Injectable,
73
73
  args: [{ providedIn: 'root' }]
74
74
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Configuration, decorators: [{
@@ -161,10 +161,10 @@ export class SettingListFormHelper {
161
161
  ? FormHelper.normalizeNumberStoredAsString(comparisonValue)
162
162
  : comparisonValue;
163
163
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
165
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
165
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
166
166
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, decorators: [{
168
168
  type: Injectable,
169
169
  args: [{ providedIn: 'root' }]
170
170
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
@@ -1,10 +1,10 @@
1
1
  import { Directive, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class TrackingDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TrackingDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: TrackingDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -104,8 +104,8 @@ export class AceEditorComponent {
104
104
  registerOnTouched() {
105
105
  /* unused */
106
106
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AceEditorComponent, selector: "app-ace-editor", inputs: { value: "value", readOnly: "readOnly" }, outputs: { valueChange: "valueChange", onChange: "onChange" }, providers: [
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: AceEditorComponent, selector: "app-ace-editor", inputs: { value: "value", readOnly: "readOnly" }, outputs: { valueChange: "valueChange", onChange: "onChange" }, providers: [
109
109
  {
110
110
  provide: NG_VALUE_ACCESSOR,
111
111
  useExisting: forwardRef(() => AceEditorComponent),
@@ -113,7 +113,7 @@ export class AceEditorComponent {
113
113
  }
114
114
  ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["aceEditor"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ace-editor-container\" #aceEditor></div>", styles: [".ace-editor-container{width:100%;height:100%;border:thin solid #83b2ff;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
115
  }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AceEditorComponent, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AceEditorComponent, decorators: [{
117
117
  type: Component,
118
118
  args: [{ selector: 'app-ace-editor', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
119
119
  {
@@ -44,10 +44,10 @@ export class AuthorizationComponent {
44
44
  getPublicApiUrl() {
45
45
  return this.publicApiService.getDashboardBasePath() + '/my-account/public-api-credentials';
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AuthorizationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AuthorizationComponent, selector: "configcat-authorization", inputs: { basePath: "basePath", integrationName: "integrationName" }, outputs: { authorized: "authorized", error: "error" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AuthorizationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: AuthorizationComponent, selector: "configcat-authorization", inputs: { basePath: "basePath", integrationName: "integrationName" }, outputs: { authorized: "authorized", error: "error" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AuthorizationComponent, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AuthorizationComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'configcat-authorization', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"] }]
53
53
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.PublicApiService }], propDecorators: { basePath: [{
@@ -10,10 +10,10 @@ export class BaseSelectComponent extends BaseComponent {
10
10
  openChanged(event) {
11
11
  this.dropdownOpened.emit(event);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseSelectComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseSelectComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{
19
19
  selector: 'base-select',
@@ -29,10 +29,10 @@ export class BaseComponent {
29
29
  createSegmentsService() {
30
30
  return this.publicApiService.createSegmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: BaseComponent, selector: "base", inputs: { basePath: "basePath", basicAuthUsername: "basicAuthUsername", basicAuthPassword: "basicAuthPassword" }, ngImport: i0, template: '<div></div>', isInline: true }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: BaseComponent, selector: "base", inputs: { basePath: "basePath", basicAuthUsername: "basicAuthUsername", basicAuthPassword: "basicAuthPassword" }, ngImport: i0, template: '<div></div>', isInline: true }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{
38
38
  selector: 'base',
@@ -4,7 +4,8 @@ export { FormGenerator } from './_services/form-generator';
4
4
  export { FormHelper } from './_services/form-helper';
5
5
  export { AppDateAdapter } from './_services/app-data-adapter';
6
6
  export { ConfirmationDialogComponent } from './dialogs/confirmation-dialog/confirmation-dialog';
7
+ export { RerouteDialogComponent } from './dialogs/reroute-dialog/reroute-dialog';
7
8
  export { InfoDialogComponent } from './dialogs/info-dialog/info-dialog';
8
9
  export { ComparisonValueListHelper } from './_services/comparison-value-list-helper';
9
10
  export { MessagingService } from './_services/messaging.service';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsY0FBYyxFQUFFLGlCQUFpQixFQUFnQyxXQUFXLEVBQzBCLHNCQUFzQixFQUkvSCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBa0MsTUFBTSwwQ0FBMEMsQ0FBQztBQUNySCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gICAgVXNlckNvbXBhcmF0b3IsIFNlZ21lbnRDb21wYXJhdG9yLCBTZWdtZW50TGlzdE1vZGVsIGFzIElTZWdtZW50LCBTZXR0aW5nVHlwZSwgRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyBhcyBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyxcbiAgICBDb21wYXJpc29uVmFsdWVMaXN0TW9kZWwgYXMgSUNvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbCwgQ29tcGFyaXNvblZhbHVlTW9kZWwgYXMgSUNvbXBhcmlzb25WYWx1ZU1vZGVsLCBQcmVyZXF1aXNpdGVDb21wYXJhdG9yLFxuICAgIFZhbHVlTW9kZWwgYXMgSVZhbHVlTW9kZWwsXG4gICAgQ29uZGl0aW9uTW9kZWwgYXMgSUNvbmRpdGlvbk1vZGVsLCBQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uTW9kZWwgYXMgSVByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Nb2RlbCwgU2VnbWVudENvbmRpdGlvbk1vZGVsIGFzIElTZWdtZW50Q29uZGl0aW9uTW9kZWwsIFVzZXJDb25kaXRpb25Nb2RlbCBhcyBJVXNlckNvbmRpdGlvbk1vZGVsLFxuICAgIFRhcmdldGluZ1J1bGVNb2RlbCBhcyBJVGFyZ2V0aW5nUnVsZU1vZGVsLCBQZXJjZW50YWdlT3B0aW9uTW9kZWwgYXMgSVBlcmNlbnRhZ2VPcHRpb25Nb2RlbCwgU2V0dGluZ0Zvcm11bGFNb2RlbCBhcyBJU2V0dGluZ1ZhbHVlTW9kZWxcbn0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5leHBvcnQgeyBVc2VyQ29tcGFyYXRvclRleHQsIFVzZXJDb21wYXJhdG9yVHlwZSB9IGZyb20gJy4vX21vZGVscy91c2VyLWNvbXBhcmF0b3InO1xuZXhwb3J0IHtcbiAgICBVcGRhdGVTZXR0aW5nVmFsdWVGb3JtLCBUYXJnZXRpbmdSdWxlRm9ybSwgQ29uZGl0aW9uRm9ybSxcbiAgICBQZXJjZW50YWdlT3B0aW9uRm9ybSwgQ29tcGFyaXNvblZhbHVlRm9ybSwgQ29tcGFyaXNvblZhbHVlTGlzdEZvcm0sXG4gICAgU2VnbWVudENvbmRpdGlvbkZvcm0sIFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtLCBVc2VyQ29uZGl0aW9uRm9ybSwgVmFsdWVGb3JtLFxuICAgIElQcmVyZXF1aXNpdGVTZXR0aW5nLCBJRGVwZW5kZWVTZXR0aW5nXG59IGZyb20gJy4vX21vZGVscy9zZXR0aW5nLXZhbHVlLWZvcm1ncm91cCc7XG5leHBvcnQgeyBGb3JtR2VuZXJhdG9yIH0gZnJvbSAnLi9fc2VydmljZXMvZm9ybS1nZW5lcmF0b3InO1xuZXhwb3J0IHsgSVByZXJlcXVpc2l0ZUNoYW5nZWQgfSBmcm9tICcuL19tb2RlbHMvc2V0dGluZy12YWx1ZS1mb3JtZ3JvdXAnO1xuZXhwb3J0IHsgSUZsYWdTdGF0ZSB9IGZyb20gJy4vX21vZGVscy9mbGFnLXN0YXRlJztcbmV4cG9ydCB7IEZvcm1IZWxwZXIgfSBmcm9tICcuL19zZXJ2aWNlcy9mb3JtLWhlbHBlcidcbmV4cG9ydCB7IEFwcERhdGVBZGFwdGVyIH0gZnJvbSAnLi9fc2VydmljZXMvYXBwLWRhdGEtYWRhcHRlcic7XG5leHBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZ3MvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nJztcbmV4cG9ydCB7IEluZm9EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZ3MvaW5mby1kaWFsb2cvaW5mby1kaWFsb2cnO1xuZXhwb3J0IHsgQ29tcGFyaXNvblZhbHVlTGlzdEhlbHBlciwgQ29tcGFyaXNvblZhbHVlTGlzdFBhcnNlUmVzdWx0IH0gZnJvbSAnLi9fc2VydmljZXMvY29tcGFyaXNvbi12YWx1ZS1saXN0LWhlbHBlcic7XG5leHBvcnQgeyBNZXNzYWdpbmdTZXJ2aWNlIH0gZnJvbSAnLi9fc2VydmljZXMvbWVzc2FnaW5nLnNlcnZpY2UnO1xuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsY0FBYyxFQUFFLGlCQUFpQixFQUFnQyxXQUFXLEVBQzBCLHNCQUFzQixFQUkvSCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBa0MsTUFBTSwwQ0FBMEMsQ0FBQztBQUNySCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHtcbiAgICBVc2VyQ29tcGFyYXRvciwgU2VnbWVudENvbXBhcmF0b3IsIFNlZ21lbnRMaXN0TW9kZWwgYXMgSVNlZ21lbnQsIFNldHRpbmdUeXBlLCBGZWF0dXJlRmxhZ0xpbWl0YXRpb25zIGFzIElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zLFxuICAgIENvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbCBhcyBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsLCBDb21wYXJpc29uVmFsdWVNb2RlbCBhcyBJQ29tcGFyaXNvblZhbHVlTW9kZWwsIFByZXJlcXVpc2l0ZUNvbXBhcmF0b3IsXG4gICAgVmFsdWVNb2RlbCBhcyBJVmFsdWVNb2RlbCxcbiAgICBDb25kaXRpb25Nb2RlbCBhcyBJQ29uZGl0aW9uTW9kZWwsIFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Nb2RlbCBhcyBJUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbk1vZGVsLCBTZWdtZW50Q29uZGl0aW9uTW9kZWwgYXMgSVNlZ21lbnRDb25kaXRpb25Nb2RlbCwgVXNlckNvbmRpdGlvbk1vZGVsIGFzIElVc2VyQ29uZGl0aW9uTW9kZWwsXG4gICAgVGFyZ2V0aW5nUnVsZU1vZGVsIGFzIElUYXJnZXRpbmdSdWxlTW9kZWwsIFBlcmNlbnRhZ2VPcHRpb25Nb2RlbCBhcyBJUGVyY2VudGFnZU9wdGlvbk1vZGVsLCBTZXR0aW5nRm9ybXVsYU1vZGVsIGFzIElTZXR0aW5nVmFsdWVNb2RlbFxufSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmV4cG9ydCB7IFVzZXJDb21wYXJhdG9yVGV4dCwgVXNlckNvbXBhcmF0b3JUeXBlIH0gZnJvbSAnLi9fbW9kZWxzL3VzZXItY29tcGFyYXRvcic7XG5leHBvcnQge1xuICAgIFVwZGF0ZVNldHRpbmdWYWx1ZUZvcm0sIFRhcmdldGluZ1J1bGVGb3JtLCBDb25kaXRpb25Gb3JtLFxuICAgIFBlcmNlbnRhZ2VPcHRpb25Gb3JtLCBDb21wYXJpc29uVmFsdWVGb3JtLCBDb21wYXJpc29uVmFsdWVMaXN0Rm9ybSxcbiAgICBTZWdtZW50Q29uZGl0aW9uRm9ybSwgUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm0sIFVzZXJDb25kaXRpb25Gb3JtLCBWYWx1ZUZvcm0sXG4gICAgSVByZXJlcXVpc2l0ZVNldHRpbmcsIElEZXBlbmRlZVNldHRpbmdcbn0gZnJvbSAnLi9fbW9kZWxzL3NldHRpbmctdmFsdWUtZm9ybWdyb3VwJztcbmV4cG9ydCB7IEZvcm1HZW5lcmF0b3IgfSBmcm9tICcuL19zZXJ2aWNlcy9mb3JtLWdlbmVyYXRvcic7XG5leHBvcnQgeyBJUHJlcmVxdWlzaXRlQ2hhbmdlZCB9IGZyb20gJy4vX21vZGVscy9zZXR0aW5nLXZhbHVlLWZvcm1ncm91cCc7XG5leHBvcnQgeyBJRmxhZ1N0YXRlIH0gZnJvbSAnLi9fbW9kZWxzL2ZsYWctc3RhdGUnO1xuZXhwb3J0IHsgRm9ybUhlbHBlciB9IGZyb20gJy4vX3NlcnZpY2VzL2Zvcm0taGVscGVyJ1xuZXhwb3J0IHsgQXBwRGF0ZUFkYXB0ZXIgfSBmcm9tICcuL19zZXJ2aWNlcy9hcHAtZGF0YS1hZGFwdGVyJztcbmV4cG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9ncy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cnO1xuZXhwb3J0IHsgUmVyb3V0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9ncy9yZXJvdXRlLWRpYWxvZy9yZXJvdXRlLWRpYWxvZyc7XG5leHBvcnQgeyBJbmZvRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2dzL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nJztcbmV4cG9ydCB7IENvbXBhcmlzb25WYWx1ZUxpc3RIZWxwZXIsIENvbXBhcmlzb25WYWx1ZUxpc3RQYXJzZVJlc3VsdCB9IGZyb20gJy4vX3NlcnZpY2VzL2NvbXBhcmlzb24tdmFsdWUtbGlzdC1oZWxwZXInO1xuZXhwb3J0IHsgTWVzc2FnaW5nU2VydmljZSB9IGZyb20gJy4vX3NlcnZpY2VzL21lc3NhZ2luZy5zZXJ2aWNlJztcbiJdfQ==
@@ -5,10 +5,10 @@ export class Configuration {
5
5
  this.basePath = 'https://api.configcat.com';
6
6
  this.dashboardBasePath = 'https://app.configcat.com';
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Configuration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Configuration }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Configuration, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration, decorators: [{
12
12
  type: Injectable
13
13
  }] });
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBSUksYUFBUSxHQUFHLDJCQUEyQixDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO0tBQ25EOzhHQUxZLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgIGJhc2ljQXV0aFVzZXJuYW1lPzogc3RyaW5nO1xuICAgIGJhc2ljQXV0aFBhc3N3b3JkPzogc3RyaW5nO1xuICAgIGJhc2VQYXRoID0gJ2h0dHBzOi8vYXBpLmNvbmZpZ2NhdC5jb20nO1xuICAgIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xufVxuIl19