@ptsecurity/mosaic 14.0.0 → 14.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/checkbox/checkbox.d.ts +5 -14
  2. package/core/formatters/date/formatter.pipe.d.ts +95 -0
  3. package/core/formatters/index.d.ts +3 -1
  4. package/core/pop-up/pop-up-trigger.d.ts +3 -1
  5. package/core/validation/validation.d.ts +1 -12
  6. package/datepicker/datepicker-input.directive.d.ts +4 -9
  7. package/design-tokens/legacy-2017/tokens/components/badge.json5 +46 -46
  8. package/design-tokens/legacy-2017/tokens/components/button-toggle.json5 +2 -1
  9. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +4 -0
  10. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +10 -1
  11. package/design-tokens/legacy-2017/tokens/components/timezone.json5 +1 -0
  12. package/design-tokens/legacy-2017/tokens.d.ts +44 -33
  13. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +2 -1
  14. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +4 -0
  15. package/design-tokens/pt-2022/tokens/components/form-field.json5 +1 -1
  16. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +10 -1
  17. package/design-tokens/pt-2022/tokens/components/timezone.json5 +1 -0
  18. package/design-tokens/pt-2022/tokens/properties/colors.json5 +8 -8
  19. package/design-tokens/pt-2022/tokens/properties/typography.json5 +17 -17
  20. package/design-tokens/pt-2022/tokens.d.ts +63 -52
  21. package/design-tokens/style-dictionary/formats/figma.js +2 -2
  22. package/esm2020/button-toggle/button-toggle.component.mjs +2 -2
  23. package/esm2020/checkbox/checkbox.mjs +17 -32
  24. package/esm2020/core/formatters/date/formatter.pipe.mjs +187 -0
  25. package/esm2020/core/formatters/index.mjs +62 -4
  26. package/esm2020/core/pop-up/pop-up-trigger.mjs +13 -11
  27. package/esm2020/core/validation/validation.mjs +1 -114
  28. package/esm2020/datepicker/datepicker-input.directive.mjs +8 -25
  29. package/esm2020/datepicker/datepicker.component.mjs +1 -1
  30. package/esm2020/design-tokens/legacy-2017/tokens.mjs +45 -34
  31. package/esm2020/design-tokens/pt-2022/tokens.mjs +64 -53
  32. package/esm2020/form-field/form-field.module.mjs +10 -5
  33. package/esm2020/form-field/public-api.mjs +2 -1
  34. package/esm2020/form-field/validate.directive.mjs +156 -0
  35. package/esm2020/input/input-password.mjs +8 -41
  36. package/esm2020/input/input.mjs +8 -41
  37. package/esm2020/loader-overlay/loader-overlay.component.mjs +7 -3
  38. package/esm2020/modal/modal.component.mjs +2 -2
  39. package/esm2020/modal/modal.service.mjs +2 -1
  40. package/esm2020/popover/popover-confirm.component.mjs +3 -3
  41. package/esm2020/popover/popover.component.mjs +13 -4
  42. package/esm2020/progress-spinner/progress-spinner.component.mjs +21 -6
  43. package/esm2020/radio/radio.component.mjs +42 -41
  44. package/esm2020/select/select.component.mjs +17 -37
  45. package/esm2020/sidepanel/sidepanel.service.mjs +2 -1
  46. package/esm2020/tags/tag-list.component.mjs +17 -32
  47. package/esm2020/textarea/textarea.component.mjs +17 -38
  48. package/esm2020/timepicker/timepicker.directive.mjs +8 -25
  49. package/esm2020/timezone/timezone.utils.mjs +15 -7
  50. package/esm2020/toast/toast-container.component.mjs +2 -2
  51. package/esm2020/toast/toast.service.mjs +12 -3
  52. package/esm2020/toggle/toggle.component.mjs +3 -3
  53. package/esm2020/tree-select/tree-select.component.mjs +21 -41
  54. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +2 -2
  55. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  56. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +16 -31
  57. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  58. package/fesm2015/ptsecurity-mosaic-core.mjs +258 -127
  59. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  60. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +4 -21
  61. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  62. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +151 -118
  63. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  64. package/fesm2015/ptsecurity-mosaic-form-field.mjs +164 -7
  65. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  66. package/fesm2015/ptsecurity-mosaic-input.mjs +9 -75
  67. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  68. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs +6 -2
  69. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  70. package/fesm2015/ptsecurity-mosaic-modal.mjs +3 -2
  71. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  72. package/fesm2015/ptsecurity-mosaic-popover.mjs +15 -6
  73. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  74. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +20 -5
  75. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  76. package/fesm2015/ptsecurity-mosaic-radio.mjs +42 -40
  77. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  78. package/fesm2015/ptsecurity-mosaic-select.mjs +17 -37
  79. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  80. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +1 -0
  81. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  82. package/fesm2015/ptsecurity-mosaic-tags.mjs +15 -30
  83. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  84. package/fesm2015/ptsecurity-mosaic-textarea.mjs +17 -37
  85. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  86. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +6 -23
  87. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  88. package/fesm2015/ptsecurity-mosaic-timezone.mjs +15 -6
  89. package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +1 -1
  90. package/fesm2015/ptsecurity-mosaic-toast.mjs +13 -4
  91. package/fesm2015/ptsecurity-mosaic-toast.mjs.map +1 -1
  92. package/fesm2015/ptsecurity-mosaic-toggle.mjs +2 -2
  93. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  94. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +22 -42
  95. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  96. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +2 -2
  97. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  98. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +16 -31
  99. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  100. package/fesm2020/ptsecurity-mosaic-core.mjs +255 -127
  101. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  102. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +4 -21
  103. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  104. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +151 -118
  105. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  106. package/fesm2020/ptsecurity-mosaic-form-field.mjs +162 -7
  107. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  108. package/fesm2020/ptsecurity-mosaic-input.mjs +9 -75
  109. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  110. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs +6 -2
  111. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  112. package/fesm2020/ptsecurity-mosaic-modal.mjs +3 -2
  113. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  114. package/fesm2020/ptsecurity-mosaic-popover.mjs +15 -6
  115. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  116. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +20 -5
  117. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  118. package/fesm2020/ptsecurity-mosaic-radio.mjs +41 -40
  119. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  120. package/fesm2020/ptsecurity-mosaic-select.mjs +15 -36
  121. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  122. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +1 -0
  123. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  124. package/fesm2020/ptsecurity-mosaic-tags.mjs +14 -30
  125. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  126. package/fesm2020/ptsecurity-mosaic-textarea.mjs +15 -36
  127. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  128. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +6 -23
  129. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  130. package/fesm2020/ptsecurity-mosaic-timezone.mjs +14 -6
  131. package/fesm2020/ptsecurity-mosaic-timezone.mjs.map +1 -1
  132. package/fesm2020/ptsecurity-mosaic-toast.mjs +13 -4
  133. package/fesm2020/ptsecurity-mosaic-toast.mjs.map +1 -1
  134. package/fesm2020/ptsecurity-mosaic-toggle.mjs +2 -2
  135. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  136. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +19 -40
  137. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  138. package/form-field/form-field.module.d.ts +4 -3
  139. package/form-field/public-api.d.ts +1 -0
  140. package/form-field/validate.directive.d.ts +32 -0
  141. package/input/input-password.d.ts +6 -12
  142. package/input/input.d.ts +6 -12
  143. package/loader-overlay/loader-overlay.component.d.ts +1 -0
  144. package/package.json +4 -4
  145. package/popover/popover.component.d.ts +1 -0
  146. package/prebuilt-themes/dark-theme.css +1 -1
  147. package/prebuilt-themes/default-theme.css +1 -1
  148. package/prebuilt-visual/default-visual.css +1 -1
  149. package/progress-spinner/progress-spinner.component.d.ts +6 -1
  150. package/radio/radio.component.d.ts +6 -12
  151. package/select/select.component.d.ts +6 -10
  152. package/tags/tag-list.component.d.ts +6 -8
  153. package/textarea/textarea.component.d.ts +7 -12
  154. package/timepicker/timepicker.directive.d.ts +4 -9
  155. package/timezone/timezone.utils.d.ts +1 -1
  156. package/toast/toast.service.d.ts +1 -0
  157. package/tree-select/tree-select.component.d.ts +4 -8
@@ -8,6 +8,7 @@ import { McPasswordHint } from './password-hint';
8
8
  import { McPrefix } from './prefix';
9
9
  import { McStepper } from './stepper';
10
10
  import { McSuffix } from './suffix';
11
+ import { McValidateDirective } from './validate.directive';
11
12
  import * as i0 from "@angular/core";
12
13
  export class McFormFieldModule {
13
14
  }
@@ -19,14 +20,16 @@ export class McFormFieldModule {
19
20
  McPrefix,
20
21
  McSuffix,
21
22
  McCleaner,
22
- McStepper], imports: [CommonModule, McIconModule], exports: [McFormField,
23
+ McStepper,
24
+ McValidateDirective], imports: [CommonModule, McIconModule], exports: [McFormField,
23
25
  McFormFieldWithoutBorders,
24
26
  McHint,
25
27
  McPasswordHint,
26
28
  McPrefix,
27
29
  McSuffix,
28
30
  McCleaner,
29
- McStepper] });
31
+ McStepper,
32
+ McValidateDirective] });
30
33
  /** @nocollapse */ McFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McFormFieldModule, imports: [CommonModule, McIconModule] });
31
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McFormFieldModule, decorators: [{
32
35
  type: NgModule,
@@ -39,7 +42,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
39
42
  McPrefix,
40
43
  McSuffix,
41
44
  McCleaner,
42
- McStepper
45
+ McStepper,
46
+ McValidateDirective
43
47
  ],
44
48
  imports: [CommonModule, McIconModule],
45
49
  exports: [
@@ -50,8 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
50
54
  McPrefix,
51
55
  McSuffix,
52
56
  McCleaner,
53
- McStepper
57
+ McStepper,
58
+ McValidateDirective
54
59
  ]
55
60
  }]
56
61
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQTBCcEMsTUFBTSxPQUFPLGlCQUFpQjs7aUlBQWpCLGlCQUFpQjtrSUFBakIsaUJBQWlCLGlCQXJCdEIsV0FBVztRQUNYLHlCQUF5QjtRQUN6QixNQUFNO1FBQ04sY0FBYztRQUNkLFFBQVE7UUFDUixRQUFRO1FBQ1IsU0FBUztRQUNULFNBQVMsYUFFSCxZQUFZLEVBQUUsWUFBWSxhQUVoQyxXQUFXO1FBQ1gseUJBQXlCO1FBQ3pCLE1BQU07UUFDTixjQUFjO1FBQ2QsUUFBUTtRQUNSLFFBQVE7UUFDUixTQUFTO1FBQ1QsU0FBUztrSUFHSixpQkFBaUIsWUFaaEIsWUFBWSxFQUFFLFlBQVk7MkZBWTNCLGlCQUFpQjtrQkF2QjdCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLFdBQVc7d0JBQ1gseUJBQXlCO3dCQUN6QixNQUFNO3dCQUNOLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsU0FBUztxQkFDWjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNyQyxPQUFPLEVBQUU7d0JBQ0wsV0FBVzt3QkFDWCx5QkFBeUI7d0JBQ3pCLE1BQU07d0JBQ04sY0FBYzt3QkFDZCxRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxTQUFTO3FCQUNaO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNY0ljb25Nb2R1bGUgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvaWNvbic7XG5cbmltcG9ydCB7IE1jQ2xlYW5lciB9IGZyb20gJy4vY2xlYW5lcic7XG5pbXBvcnQgeyBNY0Zvcm1GaWVsZCwgTWNGb3JtRmllbGRXaXRob3V0Qm9yZGVycyB9IGZyb20gJy4vZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNY0hpbnQgfSBmcm9tICcuL2hpbnQnO1xuaW1wb3J0IHsgTWNQYXNzd29yZEhpbnQgfSBmcm9tICcuL3Bhc3N3b3JkLWhpbnQnO1xuaW1wb3J0IHsgTWNQcmVmaXggfSBmcm9tICcuL3ByZWZpeCc7XG5pbXBvcnQgeyBNY1N0ZXBwZXIgfSBmcm9tICcuL3N0ZXBwZXInO1xuaW1wb3J0IHsgTWNTdWZmaXggfSBmcm9tICcuL3N1ZmZpeCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgTWNGb3JtRmllbGQsXG4gICAgICAgIE1jRm9ybUZpZWxkV2l0aG91dEJvcmRlcnMsXG4gICAgICAgIE1jSGludCxcbiAgICAgICAgTWNQYXNzd29yZEhpbnQsXG4gICAgICAgIE1jUHJlZml4LFxuICAgICAgICBNY1N1ZmZpeCxcbiAgICAgICAgTWNDbGVhbmVyLFxuICAgICAgICBNY1N0ZXBwZXJcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1jSWNvbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBNY0Zvcm1GaWVsZCxcbiAgICAgICAgTWNGb3JtRmllbGRXaXRob3V0Qm9yZGVycyxcbiAgICAgICAgTWNIaW50LFxuICAgICAgICBNY1Bhc3N3b3JkSGludCxcbiAgICAgICAgTWNQcmVmaXgsXG4gICAgICAgIE1jU3VmZml4LFxuICAgICAgICBNY0NsZWFuZXIsXG4gICAgICAgIE1jU3RlcHBlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWNGb3JtRmllbGRNb2R1bGUge31cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQTRCM0QsTUFBTSxPQUFPLGlCQUFpQjs7aUlBQWpCLGlCQUFpQjtrSUFBakIsaUJBQWlCLGlCQXZCdEIsV0FBVztRQUNYLHlCQUF5QjtRQUN6QixNQUFNO1FBQ04sY0FBYztRQUNkLFFBQVE7UUFDUixRQUFRO1FBQ1IsU0FBUztRQUNULFNBQVM7UUFDVCxtQkFBbUIsYUFFYixZQUFZLEVBQUUsWUFBWSxhQUVoQyxXQUFXO1FBQ1gseUJBQXlCO1FBQ3pCLE1BQU07UUFDTixjQUFjO1FBQ2QsUUFBUTtRQUNSLFFBQVE7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULG1CQUFtQjtrSUFHZCxpQkFBaUIsWUFiaEIsWUFBWSxFQUFFLFlBQVk7MkZBYTNCLGlCQUFpQjtrQkF6QjdCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLFdBQVc7d0JBQ1gseUJBQXlCO3dCQUN6QixNQUFNO3dCQUNOLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxtQkFBbUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ3JDLE9BQU8sRUFBRTt3QkFDTCxXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsTUFBTTt3QkFDTixjQUFjO3dCQUNkLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsbUJBQW1CO3FCQUN0QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWNJY29uTW9kdWxlIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2ljb24nO1xuXG5pbXBvcnQgeyBNY0NsZWFuZXIgfSBmcm9tICcuL2NsZWFuZXInO1xuaW1wb3J0IHsgTWNGb3JtRmllbGQsIE1jRm9ybUZpZWxkV2l0aG91dEJvcmRlcnMgfSBmcm9tICcuL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWNIaW50IH0gZnJvbSAnLi9oaW50JztcbmltcG9ydCB7IE1jUGFzc3dvcmRIaW50IH0gZnJvbSAnLi9wYXNzd29yZC1oaW50JztcbmltcG9ydCB7IE1jUHJlZml4IH0gZnJvbSAnLi9wcmVmaXgnO1xuaW1wb3J0IHsgTWNTdGVwcGVyIH0gZnJvbSAnLi9zdGVwcGVyJztcbmltcG9ydCB7IE1jU3VmZml4IH0gZnJvbSAnLi9zdWZmaXgnO1xuaW1wb3J0IHsgTWNWYWxpZGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vdmFsaWRhdGUuZGlyZWN0aXZlJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBNY0Zvcm1GaWVsZCxcbiAgICAgICAgTWNGb3JtRmllbGRXaXRob3V0Qm9yZGVycyxcbiAgICAgICAgTWNIaW50LFxuICAgICAgICBNY1Bhc3N3b3JkSGludCxcbiAgICAgICAgTWNQcmVmaXgsXG4gICAgICAgIE1jU3VmZml4LFxuICAgICAgICBNY0NsZWFuZXIsXG4gICAgICAgIE1jU3RlcHBlcixcbiAgICAgICAgTWNWYWxpZGF0ZURpcmVjdGl2ZVxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWNJY29uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE1jRm9ybUZpZWxkLFxuICAgICAgICBNY0Zvcm1GaWVsZFdpdGhvdXRCb3JkZXJzLFxuICAgICAgICBNY0hpbnQsXG4gICAgICAgIE1jUGFzc3dvcmRIaW50LFxuICAgICAgICBNY1ByZWZpeCxcbiAgICAgICAgTWNTdWZmaXgsXG4gICAgICAgIE1jQ2xlYW5lcixcbiAgICAgICAgTWNTdGVwcGVyLFxuICAgICAgICBNY1ZhbGlkYXRlRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNY0Zvcm1GaWVsZE1vZHVsZSB7fVxuIl19
@@ -8,4 +8,5 @@ export * from './suffix';
8
8
  export * from './prefix';
9
9
  export * from './cleaner';
10
10
  export * from './stepper';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9mb3JtLWZpZWxkL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1jb250cm9sJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1lcnJvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9oaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtaGludCc7XG5leHBvcnQgKiBmcm9tICcuL3N1ZmZpeCc7XG5leHBvcnQgKiBmcm9tICcuL3ByZWZpeCc7XG5leHBvcnQgKiBmcm9tICcuL2NsZWFuZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zdGVwcGVyJztcbiJdfQ==
11
+ export * from './validate.directive';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9mb3JtLWZpZWxkL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnRyb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2hpbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXNzd29yZC1oaW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3VmZml4JztcbmV4cG9ydCAqIGZyb20gJy4vcHJlZml4JztcbmV4cG9ydCAqIGZyb20gJy4vY2xlYW5lcic7XG5leHBvcnQgKiBmcm9tICcuL3N0ZXBwZXInO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0ZS5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,156 @@
1
+ import { ChangeDetectorRef, Directive, forwardRef, Inject, Optional, Self } from '@angular/core';
2
+ import { FormControlName, FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel, RequiredValidator } from '@angular/forms';
3
+ import { MC_VALIDATION } from '@ptsecurity/mosaic/core';
4
+ import { McFormFieldControl } from './form-field-control';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "./form-field-control";
8
+ export class McValidateDirective {
9
+ constructor(formFieldControl, rawValidators, ngControl, parentForm, parentFormGroup, mcValidation, cdr) {
10
+ this.formFieldControl = formFieldControl;
11
+ this.rawValidators = rawValidators;
12
+ this.ngControl = ngControl;
13
+ this.parentForm = parentForm;
14
+ this.parentFormGroup = parentFormGroup;
15
+ this.mcValidation = mcValidation;
16
+ this.cdr = cdr;
17
+ }
18
+ get isNgModel() {
19
+ return this.ngControl instanceof NgModel;
20
+ }
21
+ get isFormControl() {
22
+ return this.ngControl instanceof FormControlName;
23
+ }
24
+ get validationControl() {
25
+ const ngControl = (this.formFieldControl.ngControl || this.formFieldControl);
26
+ return ngControl.control || ngControl;
27
+ }
28
+ get parent() {
29
+ return this.parentForm || this.parentFormGroup;
30
+ }
31
+ get hasNotSubmittedParent() {
32
+ return this.parent && !this.parent.submitted;
33
+ }
34
+ ngAfterContentInit() {
35
+ if (this.mcValidation.useValidation) {
36
+ this.setMosaicValidation();
37
+ }
38
+ }
39
+ setValidState(control, validator) {
40
+ if (!control) {
41
+ return;
42
+ }
43
+ control.clearValidators();
44
+ control.updateValueAndValidity({ emitEvent: false });
45
+ control.setValidators(validator);
46
+ }
47
+ /** This function do next:
48
+ * - run validation on submitting parent form
49
+ * - prevent validation in required validator if form doesn't submitted
50
+ * - if control has focus validation will be prevented
51
+ */
52
+ setMosaicValidation() {
53
+ if (!this.validationControl) {
54
+ return;
55
+ }
56
+ this.parent?.ngSubmit
57
+ .subscribe(() => this.validationControl.updateValueAndValidity({ emitEvent: false }));
58
+ if (this.isNgModel) {
59
+ this.setMosaicValidationForModelControl();
60
+ }
61
+ else if (this.isFormControl) {
62
+ this.setMosaicValidationForFormControl();
63
+ }
64
+ }
65
+ setMosaicValidationForModelControl() {
66
+ if (!this.rawValidators) {
67
+ return;
68
+ }
69
+ this.rawValidators.forEach((validator) => {
70
+ // tslint:disable-next-line: no-unbound-method
71
+ const originalValidate = validator.validate;
72
+ if (validator instanceof RequiredValidator) {
73
+ // changed required validation logic
74
+ validator.validate = (control) => {
75
+ if (this.hasNotSubmittedParent) {
76
+ return null;
77
+ }
78
+ return originalValidate.call(validator, control);
79
+ };
80
+ }
81
+ else {
82
+ // changed all other validation logic
83
+ validator.validate = (control) => {
84
+ if (this.formFieldControl.focused) {
85
+ return null;
86
+ }
87
+ return originalValidate.call(validator, control);
88
+ };
89
+ }
90
+ });
91
+ }
92
+ setMosaicValidationForFormControl() {
93
+ const originalValidator = this.validationControl.validator;
94
+ // changed required validation logic after initialization
95
+ if (this.validationControl.invalid && this.validationControl.errors.required) {
96
+ Promise.resolve().then(() => {
97
+ this.setValidState(this.validationControl, originalValidator);
98
+ this.cdr.markForCheck();
99
+ });
100
+ }
101
+ // check dynamic updates
102
+ this.validationControl.statusChanges
103
+ .subscribe(() => {
104
+ // changed required validation logic
105
+ if (this.validationControl.invalid && (this.hasNotSubmittedParent) && this.validationControl.errors.required) {
106
+ this.setValidState(this.validationControl, originalValidator);
107
+ }
108
+ // changed all other validation logic
109
+ if (this.validationControl.invalid && this.formFieldControl.focused) {
110
+ this.setValidState(this.validationControl, originalValidator);
111
+ }
112
+ });
113
+ }
114
+ }
115
+ /** @nocollapse */ McValidateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McValidateDirective, deps: [{ token: forwardRef(() => McFormFieldControl) }, { token: NG_VALIDATORS, optional: true, self: true }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: MC_VALIDATION, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
116
+ /** @nocollapse */ McValidateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: McValidateDirective, selector: "\n input[mcInput],\n input[mcInputPassword],\n input[mcTimepicker],\n input[mcDatepicker],\n mc-select,\n mc-tag-list,\n textarea[mcTextarea],\n mc-tree-select\n ", exportAs: ["McValidate"], ngImport: i0 });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McValidateDirective, decorators: [{
118
+ type: Directive,
119
+ args: [{
120
+ selector: `
121
+ input[mcInput],
122
+ input[mcInputPassword],
123
+ input[mcTimepicker],
124
+ input[mcDatepicker],
125
+ mc-select,
126
+ mc-tag-list,
127
+ textarea[mcTextarea],
128
+ mc-tree-select
129
+ `,
130
+ exportAs: 'McValidate'
131
+ }]
132
+ }], ctorParameters: function () { return [{ type: i2.McFormFieldControl, decorators: [{
133
+ type: Inject,
134
+ args: [forwardRef(() => McFormFieldControl)]
135
+ }] }, { type: undefined, decorators: [{
136
+ type: Optional
137
+ }, {
138
+ type: Self
139
+ }, {
140
+ type: Inject,
141
+ args: [NG_VALIDATORS]
142
+ }] }, { type: i1.NgControl, decorators: [{
143
+ type: Optional
144
+ }, {
145
+ type: Self
146
+ }] }, { type: i1.NgForm, decorators: [{
147
+ type: Optional
148
+ }] }, { type: i1.FormGroupDirective, decorators: [{
149
+ type: Optional
150
+ }] }, { type: undefined, decorators: [{
151
+ type: Optional
152
+ }, {
153
+ type: Inject,
154
+ args: [MC_VALIDATION]
155
+ }] }, { type: i0.ChangeDetectorRef }]; } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL2Zvcm0tZmllbGQvdmFsaWRhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLElBQUksRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEVBQ1AsaUJBQWlCLEVBSXBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVILGFBQWEsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUdqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQWdCMUQsTUFBTSxPQUFPLG1CQUFtQjtJQXVCNUIsWUFDMEQsZ0JBQXlDLEVBQzdDLGFBQTBCLEVBQ2hELFNBQW9CLEVBQzVCLFVBQWtCLEVBQ2xCLGVBQW1DLEVBQ1osWUFBaUMsRUFDcEUsR0FBc0I7UUFOd0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUM3QyxrQkFBYSxHQUFiLGFBQWEsQ0FBYTtRQUNoRCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ3BFLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQy9CLENBQUM7SUE5QkosSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxZQUFZLE9BQU8sQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxZQUFZLGVBQWUsQ0FBQztJQUNyRCxD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LEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzswQkFDM0MsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDeEMsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1Db250cm9sTmFtZSxcbiAgICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOZ0NvbnRyb2wsXG4gICAgTmdGb3JtLFxuICAgIE5nTW9kZWwsXG4gICAgUmVxdWlyZWRWYWxpZGF0b3IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yRm5cbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBNY1ZhbGlkYXRpb25PcHRpb25zLFxuICAgIE1DX1ZBTElEQVRJT05cbn0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuXG5cbmltcG9ydCB7IE1jRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb250cm9sJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYFxuICAgICAgICBpbnB1dFttY0lucHV0XSxcbiAgICAgICAgaW5wdXRbbWNJbnB1dFBhc3N3b3JkXSxcbiAgICAgICAgaW5wdXRbbWNUaW1lcGlja2VyXSxcbiAgICAgICAgaW5wdXRbbWNEYXRlcGlja2VyXSxcbiAgICAgICAgbWMtc2VsZWN0LFxuICAgICAgICBtYy10YWctbGlzdCxcbiAgICAgICAgdGV4dGFyZWFbbWNUZXh0YXJlYV0sXG4gICAgICAgIG1jLXRyZWUtc2VsZWN0XG4gICAgYCxcbiAgICBleHBvcnRBczogJ01jVmFsaWRhdGUnXG59KVxuZXhwb3J0IGNsYXNzIE1jVmFsaWRhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBnZXQgaXNOZ01vZGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsO1xuICAgIH1cblxuICAgIGdldCBpc0Zvcm1Db250cm9sKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRpb25Db250cm9sKCkge1xuICAgICAgICBjb25zdCBuZ0NvbnRyb2w6IGFueSA9ICh0aGlzLmZvcm1GaWVsZENvbnRyb2wubmdDb250cm9sIHx8IHRoaXMuZm9ybUZpZWxkQ29udHJvbCk7XG5cbiAgICAgICAgcmV0dXJuIG5nQ29udHJvbC5jb250cm9sIHx8IG5nQ29udHJvbDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRGb3JtIHx8IHRoaXMucGFyZW50Rm9ybUdyb3VwO1xuICAgIH1cblxuICAgIGdldCBoYXNOb3RTdWJtaXR0ZWRQYXJlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudCAmJiAhdGhpcy5wYXJlbnQuc3VibWl0dGVkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTWNGb3JtRmllbGRDb250cm9sKSkgcHJpdmF0ZSBmb3JtRmllbGRDb250cm9sOiBNY0Zvcm1GaWVsZENvbnRyb2w8YW55PixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHB1YmxpYyByYXdWYWxpZGF0b3JzOiBWYWxpZGF0b3JbXSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQ19WQUxJREFUSU9OKSBwcml2YXRlIG1jVmFsaWRhdGlvbjogTWNWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5tY1ZhbGlkYXRpb24udXNlVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZXRNb3NhaWNWYWxpZGF0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRWYWxpZFN0YXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbik6IHZvaWQge1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgZnVuY3Rpb24gZG8gbmV4dDpcbiAgICAgKiAtIHJ1biB2YWxpZGF0aW9uIG9uIHN1Ym1pdHRpbmcgcGFyZW50IGZvcm1cbiAgICAgKiAtIHByZXZlbnQgdmFsaWRhdGlvbiBpbiByZXF1aXJlZCB2YWxpZGF0b3IgaWYgZm9ybSBkb2Vzbid0IHN1Ym1pdHRlZFxuICAgICAqIC0gaWYgY29udHJvbCBoYXMgZm9jdXMgdmFsaWRhdGlvbiB3aWxsIGJlIHByZXZlbnRlZFxuICAgICAqL1xuICAgIHNldE1vc2FpY1ZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0aW9uQ29udHJvbCkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLnBhcmVudD8ubmdTdWJtaXRcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy52YWxpZGF0aW9uQ29udHJvbCEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTmdNb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5zZXRNb3NhaWNWYWxpZGF0aW9uRm9yTW9kZWxDb250cm9sKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnNldE1vc2FpY1ZhbGlkYXRpb25Gb3JGb3JtQ29udHJvbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TW9zYWljVmFsaWRhdGlvbkZvck1vZGVsQ29udHJvbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhd1ZhbGlkYXRvcnMpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5yYXdWYWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcjogVmFsaWRhdG9yKSA9PiB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVuYm91bmQtbWV0aG9kXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZhbGlkYXRlID0gdmFsaWRhdG9yLnZhbGlkYXRlO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yIGluc3RhbmNlb2YgUmVxdWlyZWRWYWxpZGF0b3IpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGFuZ2VkIHJlcXVpcmVkIHZhbGlkYXRpb24gbG9naWNcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3IudmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNOb3RTdWJtaXR0ZWRQYXJlbnQpIHsgcmV0dXJuIG51bGw7IH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxWYWxpZGF0ZS5jYWxsKHZhbGlkYXRvciwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2hhbmdlZCBhbGwgb3RoZXIgdmFsaWRhdGlvbiBsb2dpY1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvci52YWxpZGF0ZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1GaWVsZENvbnRyb2wuZm9jdXNlZCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFZhbGlkYXRlLmNhbGwodmFsaWRhdG9yLCBjb250cm9sKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRNb3NhaWNWYWxpZGF0aW9uRm9yRm9ybUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0aW9uQ29udHJvbC52YWxpZGF0b3I7XG5cbiAgICAgICAgLy8gY2hhbmdlZCByZXF1aXJlZCB2YWxpZGF0aW9uIGxvZ2ljIGFmdGVyIGluaXRpYWxpemF0aW9uXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Db250cm9sLmludmFsaWQgJiYgdGhpcy52YWxpZGF0aW9uQ29udHJvbC5lcnJvcnMhLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkU3RhdGUodGhpcy52YWxpZGF0aW9uQ29udHJvbCwgb3JpZ2luYWxWYWxpZGF0b3IhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZHluYW1pYyB1cGRhdGVzXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkNvbnRyb2wuc3RhdHVzQ2hhbmdlcyFcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgcmVxdWlyZWQgdmFsaWRhdGlvbiBsb2dpY1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Db250cm9sLmludmFsaWQgJiYgKHRoaXMuaGFzTm90U3VibWl0dGVkUGFyZW50KSAmJiB0aGlzLnZhbGlkYXRpb25Db250cm9sLmVycm9ycyEucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZFN0YXRlKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wsIG9yaWdpbmFsVmFsaWRhdG9yISk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gY2hhbmdlZCBhbGwgb3RoZXIgdmFsaWRhdGlvbiBsb2dpY1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Db250cm9sLmludmFsaWQgJiYgdGhpcy5mb3JtRmllbGRDb250cm9sLmZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZFN0YXRlKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wsIG9yaWdpbmFsVmFsaWRhdG9yISk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -2,9 +2,9 @@ import { FocusMonitor } from '@angular/cdk/a11y';
2
2
  import { Directionality } from '@angular/cdk/bidi';
3
3
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
4
4
  import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
5
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
6
- import { FormControlName, FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel } from '@angular/forms';
7
- import { ErrorStateMatcher, MC_VALIDATION, PopUpTriggers, setMosaicValidation } from '@ptsecurity/mosaic/core';
5
+ import { ChangeDetectionStrategy, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
6
+ import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
7
+ import { ErrorStateMatcher, PopUpTriggers } from '@ptsecurity/mosaic/core';
8
8
  import { McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';
9
9
  import { MC_TOOLTIP_SCROLL_STRATEGY, McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';
10
10
  import { Subject } from 'rxjs';
@@ -118,14 +118,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
118
118
  }] } });
119
119
  export class McInputPassword extends McInputMixinBase {
120
120
  // tslint:disable-next-line: naming-convention
121
- constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
121
+ constructor(elementRef, ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor) {
122
122
  super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
123
123
  this.elementRef = elementRef;
124
- this.rawValidators = rawValidators;
125
- this.mcValidation = mcValidation;
126
- this.ngModel = ngModel;
127
- this.formControlName = formControlName;
128
- this.changeDetectorRef = changeDetectorRef;
129
124
  /**
130
125
  * Implemented as part of McFormFieldControl.
131
126
  * @docs-private
@@ -214,14 +209,6 @@ export class McInputPassword extends McInputMixinBase {
214
209
  get empty() {
215
210
  return !this.elementRef.nativeElement.value && !this.isBadInput();
216
211
  }
217
- ngAfterContentInit() {
218
- if (!this.ngControl) {
219
- return;
220
- }
221
- if (this.mcValidation.useValidation) {
222
- setMosaicValidation(this, this.changeDetectorRef);
223
- }
224
- }
225
212
  ngOnChanges() {
226
213
  this.stateChanges.next(null);
227
214
  }
@@ -295,7 +282,7 @@ export class McInputPassword extends McInputMixinBase {
295
282
  return this.elementRef.nativeElement.validity?.badInput;
296
283
  }
297
284
  }
298
- /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i5.NgControl, optional: true, self: true }, { token: i5.NgModel, optional: true, self: true }, { token: i5.FormControlName, optional: true, self: true }, { token: i5.NgForm, optional: true }, { token: i5.FormGroupDirective, optional: true }, { token: i6.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
285
+ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: i5.NgControl, optional: true, self: true }, { token: i5.NgForm, optional: true }, { token: i5.FormGroupDirective, optional: true }, { token: i6.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
299
286
  /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
300
287
  provide: McFormFieldControl, useExisting: McInputPassword
301
288
  }], exportAs: ["mcInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
@@ -321,27 +308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
321
308
  provide: McFormFieldControl, useExisting: McInputPassword
322
309
  }]
323
310
  }]
324
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
325
- type: Optional
326
- }, {
327
- type: Self
328
- }, {
329
- type: Inject,
330
- args: [NG_VALIDATORS]
331
- }] }, { type: undefined, decorators: [{
332
- type: Optional
333
- }, {
334
- type: Inject,
335
- args: [MC_VALIDATION]
336
- }] }, { type: i5.NgControl, decorators: [{
337
- type: Optional
338
- }, {
339
- type: Self
340
- }] }, { type: i5.NgModel, decorators: [{
341
- type: Optional
342
- }, {
343
- type: Self
344
- }] }, { type: i5.FormControlName, decorators: [{
311
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i5.NgControl, decorators: [{
345
312
  type: Optional
346
313
  }, {
347
314
  type: Self
@@ -356,7 +323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
356
323
  }, {
357
324
  type: Inject,
358
325
  args: [MC_INPUT_VALUE_ACCESSOR]
359
- }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { errorStateMatcher: [{
326
+ }] }]; }, propDecorators: { errorStateMatcher: [{
360
327
  type: Input
361
328
  }], placeholder: [{
362
329
  type: Input
@@ -369,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
369
336
  }], value: [{
370
337
  type: Input
371
338
  }] } });
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFFVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsYUFBYSxFQUViLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixF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QkFBekIsS0FBSztnQkE0QkcsV0FBVztzQkFBbkIsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBMkJGLEVBQUU7c0JBREwsS0FBSztnQkFnQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWtCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xOYW1lLFxuICAgIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5nQ29udHJvbCxcbiAgICBOZ0Zvcm0sXG4gICAgTmdNb2RlbCxcbiAgICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDYW5VcGRhdGVFcnJvclN0YXRlLFxuICAgIEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIE1DX1ZBTElEQVRJT04sXG4gICAgTWNWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICBQb3BVcFRyaWdnZXJzLFxuICAgIHNldE1vc2FpY1ZhbGlkYXRpb25cbn0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuaW1wb3J0IHsgTWNGb3JtRmllbGQsIE1jRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLCBNY1Rvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNY0lucHV0TWl4aW5CYXNlIH0gZnJvbSAnLi9pbnB1dCc7XG5pbXBvcnQgeyBNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJy4vaW5wdXQtdmFsdWUtYWNjZXNzb3InO1xuXG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgbWMtcGFzc3dvcmQtdG9nZ2xlYCxcbiAgICBleHBvcnRBczogJ21jUGFzc3dvcmRUb2dnbGUnLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXBhc3N3b3JkLXRvZ2dsZSBtYycsXG4gICAgICAgICdbY2xhc3MubWMtZXllXzE2XSc6ICdoaWRkZW4nLFxuICAgICAgICAnW2NsYXNzLm1jLWV5ZS1jcm9zc2VkXzE2XSc6ICchaGlkZGVuJyxcblxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gbnVsbCA6IHRhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICd0b2dnbGUoKScsXG4gICAgICAgICcoa2V5ZG93bi5FTlRFUiknOiAndG9nZ2xlKCknLFxuICAgICAgICAnKGtleWRvd24uU1BBQ0UpJzogJ3RvZ2dsZSgpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNY1Bhc3N3b3JkVG9nZ2xlIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdtY1Rvb2x0aXBOb3RIaWRkZW4nKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/XG4gICAgICAgICAgICB0aGlzLm1jVG9vbHRpcEhpZGRlbiA6XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWNUb29sdGlwSGlkZGVuOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5mb3JtRmllbGQuZGlzYWJsZWQgOiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0b3BGb2N1c01vbml0b3IoKSA6IHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHRhYkluZGV4IHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdmFsdWUgIT0gbnVsbCA/IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFiSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBASW5qZWN0KE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneSxcbiAgICAgICAgQE9wdGlvbmFsKCkgZGlyZWN0aW9uOiBEaXJlY3Rpb25hbGl0eSxcblxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGZvcm1GaWVsZDogTWNGb3JtRmllbGRcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyID0gYCR7UG9wVXBUcmlnZ2Vycy5Ib3Zlcn1gO1xuXG4gICAgICAgIHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RvcEZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1GaWVsZC5jb250cm9sIGFzIE1jSW5wdXRQYXNzd29yZDtcblxuICAgICAgICBpbnB1dC50b2dnbGVUeXBlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBydW5Gb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3BGb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W21jSW5wdXRQYXNzd29yZF1gLFxuICAgIGV4cG9ydEFzOiAnbWNJbnB1dFBhc3N3b3JkJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWMtaW5wdXQgbWMtaW5wdXQtcGFzc3dvcmQnLFxuICAgICAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgICAgIC8vIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4gT3RoZXJ3aXNlIHByb3BlcnR5IGJpbmRpbmdzIGZvciB0aG9zZSBkb24ndCB3b3JrLlxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLnR5cGVdJzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcblxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNDaGFuZ2VkKHRydWUpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBNY0Zvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNY0lucHV0UGFzc3dvcmRcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBNY0lucHV0UGFzc3dvcmQgZXh0ZW5kcyBNY0lucHV0TWl4aW5CYXNlIGltcGxlbWVudHMgTWNGb3JtRmllbGRDb250cm9sPGFueT4sIE9uQ2hhbmdlcywgT25EZXN0cm95LCBEb0NoZWNrLFxuICAgIENhblVwZGF0ZUVycm9yU3RhdGUsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgICAvKiogQW4gb2JqZWN0IHVzZWQgdG8gY29udHJvbCB3aGVuIGVycm9yIG1lc3NhZ2VzIGFyZSBzaG93bi4gKi9cbiAgICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIHJlYWRvbmx5IGNoZWNrUnVsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbnB1dC1wYXNzd29yZCc7XG5cbiAgICBlbGVtZW50VHlwZTogc3RyaW5nID0gJ3Bhc3N3b3JkJztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIHVpZCA9IGBtYy1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XG4gICAgcHJvdGVjdGVkIHByZXZpb3VzTmF0aXZlVmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAgICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlID0gdGhpcy5fdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlICYmICF0aGlzLmlzQmFkSW5wdXQoKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ydGhvZG94LWdldHRlci1hbmQtc2V0dGVyXG4gICAgcHJpdmF0ZSBfaW5wdXRWYWx1ZUFjY2Vzc29yOiB7IHZhbHVlOiBhbnkgfTtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBwdWJsaWMgcmF3VmFsaWRhdG9yczogVmFsaWRhdG9yW10sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUNfVkFMSURBVElPTikgcHJpdmF0ZSBtY1ZhbGlkYXRpb246IE1jVmFsaWRhdGlvbk9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nTW9kZWw6IE5nTW9kZWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIGZvcm1Db250cm9sTmFtZTogRm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTUNfSU5QVVRfVkFMVUVfQUNDRVNTT1IpIGlucHV0VmFsdWVBY2Nlc3NvcjogYW55LFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgbmdDb250cm9sKTtcblxuICAgICAgICAvLyBJZiBubyBpbnB1dCB2YWx1ZSBhY2Nlc3NvciB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIHVzZSB0aGUgZWxlbWVudCBhcyB0aGUgaW5wdXQgdmFsdWVcbiAgICAgICAgLy8gYWNjZXNzb3IuXG4gICAgICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3NvciA9IGlucHV0VmFsdWVBY2Nlc3NvciB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLnByZXZpb3VzTmF0aXZlVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgIC8vIEZvcmNlIHNldHRlciB0byBiZSBjYWxsZWQgaW4gY2FzZSBpZCB3YXMgbm90IHNwZWNpZmllZC5cbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQ7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubmdDb250cm9sKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICh0aGlzLm1jVmFsaWRhdGlvbi51c2VWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICBzZXRNb3NhaWNWYWxpZGF0aW9uKHRoaXMsIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBuZWVkIHRvIGRpcnR5LWNoZWNrIHRoZSBuYXRpdmUgZWxlbWVudCdzIHZhbHVlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlXG4gICAgICAgIC8vIHdlIHdvbid0IGJlIG5vdGlmaWVkIHdoZW4gaXQgY2hhbmdlcyAoZS5nLiB0aGUgY29uc3VtZXIgaXNuJ3QgdXNpbmcgZm9ybXMgb3IgdGhleSdyZVxuICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFsdWUgdXNpbmcgYGVtaXRFdmVudDogZmFsc2VgKS5cbiAgICAgICAgdGhpcy5kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKTtcbiAgICB9XG5cbiAgICBjaGVja1J1bGVzKCkge1xuICAgICAgICB0aGlzLmNoZWNrUnVsZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlVHlwZSgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50VHlwZSA9IHRoaXMuZWxlbWVudFR5cGUgPT09ICdwYXNzd29yZCcgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XG5cbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAoY29udHJvbC5zdGF0dXNDaGFuZ2VzIGFzIEV2ZW50RW1pdHRlcjxzdHJpbmc+KS5lbWl0KGNvbnRyb2wuc3RhdHVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsbGJhY2sgZm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgaW5wdXQgY2hhbmdlcy4gKi9cbiAgICBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgPT09IHRoaXMuZm9jdXNlZCkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLmZvY3VzZWQgPSBpc0ZvY3VzZWQ7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoeyBmb2N1c2VkOiB0aGlzLmZvY3VzZWQgfSk7XG4gICAgfVxuXG4gICAgb25JbnB1dCgpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIG5vb3AgZnVuY3Rpb24gYW5kIGlzIHVzZWQgdG8gbGV0IEFuZ3VsYXIga25vdyB3aGVuZXZlciB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHJ1biBhIG5ldyBjaGFuZ2UgZGV0ZWN0aW9uIGVhY2ggdGltZSB0aGUgYGlucHV0YCBldmVudCBoYXMgYmVlbiBkaXNwYXRjaGVkLlxuICAgICAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0aGF0IEFuZ3VsYXIgcmVjb2duaXplcyB0aGUgdmFsdWUgY2hhbmdlLCBiZWNhdXNlIHdoZW4gZmxvYXRpbmdMYWJlbFxuICAgICAgICAvLyBpcyBzZXQgdG8gZmFsc2UgYW5kIEFuZ3VsYXIgZm9ybXMgYXJlbid0IHVzZWQsIHRoZSBwbGFjZWhvbGRlciB3b24ndCByZWNvZ25pemUgdGhlXG4gICAgICAgIC8vIHZhbHVlIGNoYW5nZXMgYW5kIHdpbGwgbm90IGRpc2FwcGVhci5cbiAgICAgICAgLy8gTGlzdGVuaW5nIHRvIHRoZSBpbnB1dCBldmVudCB3b3VsZG4ndCBiZSBuZWNlc3Nhcnkgd2hlbiB0aGUgaW5wdXQgaXMgdXNpbmcgdGhlXG4gICAgICAgIC8vIEZvcm1zTW9kdWxlIG9yIFJlYWN0aXZlRm9ybXNNb2R1bGUsIGJlY2F1c2UgQW5ndWxhciBmb3JtcyBhbHNvIGxpc3RlbnMgdG8gaW5wdXQgZXZlbnRzLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBvbkNvbnRhaW5lckNsaWNrKCkge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIERvZXMgc29tZSBtYW51YWwgZGlydHkgY2hlY2tpbmcgb24gdGhlIG5hdGl2ZSBpbnB1dCBgdmFsdWVgIHByb3BlcnR5LiAqL1xuICAgIHByb3RlY3RlZCBkaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzTmF0aXZlVmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNOYXRpdmVWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBpbnZhbGlkIGJhc2VkIG9uIHRoZSBuYXRpdmUgdmFsaWRhdGlvbi4gKi9cbiAgICBwcm90ZWN0ZWQgaXNCYWRJbnB1dCgpIHtcbiAgICAgICAgLy8gVGhlIGB2YWxpZGl0eWAgcHJvcGVydHkgd29uJ3QgYmUgcHJlc2VudCBvbiBwbGF0Zm9ybS1zZXJ2ZXIuXG4gICAgICAgIHJldHVybiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsaWRpdHk/LmJhZElucHV0O1xuICAgIH1cbn1cbiJdfQ==
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFFVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsSUFBSSxFQUVKLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVILGlCQUFpQixFQUNqQixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUdqRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFzQnJC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QUFFLGtCQUFrQjt3QkFDckMsWUFBWSxFQUFFLFVBQVU7d0JBRXhCLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixTQUFTLEVBQUUsb0JBQW9CO3dCQUMvQixTQUFTLEVBQUUsV0FBVztxQkFDekI7b0JBQ0QsU0FBUyxFQUFFLENBQUM7NEJBQ1IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsaUJBQWlCO3lCQUM1RCxDQUFDO2lCQUNMOzswQkE4SFEsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUVSLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsdUJBQXVCOzRDQTdIOUMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQTRCRyxXQUFXO3NCQUFuQixLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkEyQkYsRUFBRTtzQkFETCxLQUFLO2dCQWdCRixRQUFRO3NCQURYLEtBQUs7Z0JBa0JGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBPdmVybGF5LCBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIE5nQ29udHJvbCxcbiAgICBOZ0Zvcm1cbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDYW5VcGRhdGVFcnJvclN0YXRlLFxuICAgIEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIFBvcFVwVHJpZ2dlcnNcbn0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuaW1wb3J0IHsgTWNGb3JtRmllbGQsIE1jRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLCBNY1Rvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNY0lucHV0TWl4aW5CYXNlIH0gZnJvbSAnLi9pbnB1dCc7XG5pbXBvcnQgeyBNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJy4vaW5wdXQtdmFsdWUtYWNjZXNzb3InO1xuXG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgbWMtcGFzc3dvcmQtdG9nZ2xlYCxcbiAgICBleHBvcnRBczogJ21jUGFzc3dvcmRUb2dnbGUnLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXBhc3N3b3JkLXRvZ2dsZSBtYycsXG4gICAgICAgICdbY2xhc3MubWMtZXllXzE2XSc6ICdoaWRkZW4nLFxuICAgICAgICAnW2NsYXNzLm1jLWV5ZS1jcm9zc2VkXzE2XSc6ICchaGlkZGVuJyxcblxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gbnVsbCA6IHRhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICd0b2dnbGUoKScsXG4gICAgICAgICcoa2V5ZG93bi5FTlRFUiknOiAndG9nZ2xlKCknLFxuICAgICAgICAnKGtleWRvd24uU1BBQ0UpJzogJ3RvZ2dsZSgpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNY1Bhc3N3b3JkVG9nZ2xlIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdtY1Rvb2x0aXBOb3RIaWRkZW4nKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/XG4gICAgICAgICAgICB0aGlzLm1jVG9vbHRpcEhpZGRlbiA6XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWNUb29sdGlwSGlkZGVuOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5mb3JtRmllbGQuZGlzYWJsZWQgOiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0b3BGb2N1c01vbml0b3IoKSA6IHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHRhYkluZGV4IHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdmFsdWUgIT0gbnVsbCA/IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFiSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBASW5qZWN0KE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneSxcbiAgICAgICAgQE9wdGlvbmFsKCkgZGlyZWN0aW9uOiBEaXJlY3Rpb25hbGl0eSxcblxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGZvcm1GaWVsZDogTWNGb3JtRmllbGRcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyID0gYCR7UG9wVXBUcmlnZ2Vycy5Ib3Zlcn1gO1xuXG4gICAgICAgIHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RvcEZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1GaWVsZC5jb250cm9sIGFzIE1jSW5wdXRQYXNzd29yZDtcblxuICAgICAgICBpbnB1dC50b2dnbGVUeXBlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBydW5Gb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3BGb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W21jSW5wdXRQYXNzd29yZF1gLFxuICAgIGV4cG9ydEFzOiAnbWNJbnB1dFBhc3N3b3JkJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWMtaW5wdXQgbWMtaW5wdXQtcGFzc3dvcmQnLFxuICAgICAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgICAgIC8vIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4gT3RoZXJ3aXNlIHByb3BlcnR5IGJpbmRpbmdzIGZvciB0aG9zZSBkb24ndCB3b3JrLlxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLnR5cGVdJzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcblxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNDaGFuZ2VkKHRydWUpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBNY0Zvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNY0lucHV0UGFzc3dvcmRcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBNY0lucHV0UGFzc3dvcmQgZXh0ZW5kcyBNY0lucHV0TWl4aW5CYXNlIGltcGxlbWVudHMgTWNGb3JtRmllbGRDb250cm9sPGFueT4sIE9uQ2hhbmdlcywgT25EZXN0cm95LCBEb0NoZWNrLFxuICAgIENhblVwZGF0ZUVycm9yU3RhdGUsIE9uQ2hhbmdlcyB7XG5cbiAgICAvKiogQW4gb2JqZWN0IHVzZWQgdG8gY29udHJvbCB3aGVuIGVycm9yIG1lc3NhZ2VzIGFyZSBzaG93bi4gKi9cbiAgICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIHJlYWRvbmx5IGNoZWNrUnVsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbnB1dC1wYXNzd29yZCc7XG5cbiAgICBlbGVtZW50VHlwZTogc3RyaW5nID0gJ3Bhc3N3b3JkJztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIHVpZCA9IGBtYy1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XG4gICAgcHJvdGVjdGVkIHByZXZpb3VzTmF0aXZlVmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAgICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlID0gdGhpcy5fdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlICYmICF0aGlzLmlzQmFkSW5wdXQoKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ydGhvZG94LWdldHRlci1hbmQtc2V0dGVyXG4gICAgcHJpdmF0ZSBfaW5wdXRWYWx1ZUFjY2Vzc29yOiB7IHZhbHVlOiBhbnkgfTtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUikgaW5wdXRWYWx1ZUFjY2Vzc29yOiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIG5nQ29udHJvbCk7XG5cbiAgICAgICAgLy8gSWYgbm8gaW5wdXQgdmFsdWUgYWNjZXNzb3Igd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCB1c2UgdGhlIGVsZW1lbnQgYXMgdGhlIGlucHV0IHZhbHVlXG4gICAgICAgIC8vIGFjY2Vzc29yLlxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IgPSBpbnB1dFZhbHVlQWNjZXNzb3IgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAvLyBGb3JjZSBzZXR0ZXIgdG8gYmUgY2FsbGVkIGluIGNhc2UgaWQgd2FzIG5vdCBzcGVjaWZpZWQuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoaXMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZVxuICAgICAgICAgICAgLy8gZXJyb3IgdHJpZ2dlcnMgdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8gKGUuZy4gcGFyZW50IGZvcm0gc3VibWlzc2lvbnMpLiBUaGlzIG1lYW5zXG4gICAgICAgICAgICAvLyB0aGF0IHdoYXRldmVyIGxvZ2ljIGlzIGluIGhlcmUgaGFzIHRvIGJlIHN1cGVyIGxlYW4gb3Igd2UgcmlzayBkZXN0cm95aW5nIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBkaXJ0eS1jaGVjayB0aGUgbmF0aXZlIGVsZW1lbnQncyB2YWx1ZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZVxuICAgICAgICAvLyB3ZSB3b24ndCBiZSBub3RpZmllZCB3aGVuIGl0IGNoYW5nZXMgKGUuZy4gdGhlIGNvbnN1bWVyIGlzbid0IHVzaW5nIGZvcm1zIG9yIHRoZXkncmVcbiAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIHVzaW5nIGBlbWl0RXZlbnQ6IGZhbHNlYCkuXG4gICAgICAgIHRoaXMuZGlydHlDaGVja05hdGl2ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgY2hlY2tSdWxlcygpIHtcbiAgICAgICAgdGhpcy5jaGVja1J1bGUubmV4dCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZVR5cGUoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSB0aGlzLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sO1xuXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgKGNvbnRyb2wuc3RhdHVzQ2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8c3RyaW5nPikuZW1pdChjb250cm9sLnN0YXR1cyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzQ2hhbmdlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENhbGxiYWNrIGZvciB0aGUgY2FzZXMgd2hlcmUgdGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIGlucHV0IGNoYW5nZXMuICovXG4gICAgZm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNGb2N1c2VkID09PSB0aGlzLmZvY3VzZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KHsgZm9jdXNlZDogdGhpcy5mb2N1c2VkIH0pO1xuICAgIH1cblxuICAgIG9uSW5wdXQoKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBub29wIGZ1bmN0aW9uIGFuZCBpcyB1c2VkIHRvIGxldCBBbmd1bGFyIGtub3cgd2hlbmV2ZXIgdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAgICAgIC8vIEFuZ3VsYXIgd2lsbCBydW4gYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBlYWNoIHRpbWUgdGhlIGBpbnB1dGAgZXZlbnQgaGFzIGJlZW4gZGlzcGF0Y2hlZC5cbiAgICAgICAgLy8gSXQncyBuZWNlc3NhcnkgdGhhdCBBbmd1bGFyIHJlY29nbml6ZXMgdGhlIHZhbHVlIGNoYW5nZSwgYmVjYXVzZSB3aGVuIGZsb2F0aW5nTGFiZWxcbiAgICAgICAgLy8gaXMgc2V0IHRvIGZhbHNlIGFuZCBBbmd1bGFyIGZvcm1zIGFyZW4ndCB1c2VkLCB0aGUgcGxhY2Vob2xkZXIgd29uJ3QgcmVjb2duaXplIHRoZVxuICAgICAgICAvLyB2YWx1ZSBjaGFuZ2VzIGFuZCB3aWxsIG5vdCBkaXNhcHBlYXIuXG4gICAgICAgIC8vIExpc3RlbmluZyB0byB0aGUgaW5wdXQgZXZlbnQgd291bGRuJ3QgYmUgbmVjZXNzYXJ5IHdoZW4gdGhlIGlucHV0IGlzIHVzaW5nIHRoZVxuICAgICAgICAvLyBGb3Jtc01vZHVsZSBvciBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBiZWNhdXNlIEFuZ3VsYXIgZm9ybXMgYWxzbyBsaXN0ZW5zIHRvIGlucHV0IGV2ZW50cy5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgb25Db250YWluZXJDbGljaygpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBEb2VzIHNvbWUgbWFudWFsIGRpcnR5IGNoZWNraW5nIG9uIHRoZSBuYXRpdmUgaW5wdXQgYHZhbHVlYCBwcm9wZXJ0eS4gKi9cbiAgICBwcm90ZWN0ZWQgZGlydHlDaGVja05hdGl2ZVZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTmF0aXZlVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgaW5wdXQgaXMgaW52YWxpZCBiYXNlZCBvbiB0aGUgbmF0aXZlIHZhbGlkYXRpb24uICovXG4gICAgcHJvdGVjdGVkIGlzQmFkSW5wdXQoKSB7XG4gICAgICAgIC8vIFRoZSBgdmFsaWRpdHlgIHByb3BlcnR5IHdvbid0IGJlIHByZXNlbnQgb24gcGxhdGZvcm0tc2VydmVyLlxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbGlkaXR5Py5iYWRJbnB1dDtcbiAgICB9XG59XG4iXX0=