@radix-ng/primitives 0.22.0 → 0.24.0

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 (66) hide show
  1. package/accordion/src/accordion-item.directive.d.ts +22 -13
  2. package/accordion/src/accordion-root.directive.d.ts +22 -3
  3. package/aspect-ratio/src/aspect-ratio.directive.d.ts +5 -3
  4. package/avatar/index.d.ts +9 -0
  5. package/avatar/src/avatar-fallback.directive.d.ts +9 -0
  6. package/avatar/src/avatar-image.directive.d.ts +12 -0
  7. package/collapsible/src/collapsible-content.directive.d.ts +0 -3
  8. package/collapsible/src/collapsible-root.directive.d.ts +11 -4
  9. package/compodoc/documentation.json +3848 -3623
  10. package/dropdown-menu/src/dropdown-menu-trigger.directive.d.ts +30 -3
  11. package/esm2022/accordion/src/accordion-item.directive.mjs +23 -14
  12. package/esm2022/accordion/src/accordion-root.directive.mjs +19 -3
  13. package/esm2022/aspect-ratio/src/aspect-ratio.directive.mjs +4 -2
  14. package/esm2022/avatar/index.mjs +27 -1
  15. package/esm2022/avatar/src/avatar-fallback.directive.mjs +10 -1
  16. package/esm2022/avatar/src/avatar-image.directive.mjs +13 -1
  17. package/esm2022/collapsible/src/collapsible-content.directive.mjs +1 -4
  18. package/esm2022/collapsible/src/collapsible-root.directive.mjs +17 -8
  19. package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +35 -4
  20. package/esm2022/label/src/label.directive.mjs +6 -8
  21. package/esm2022/popover/src/popover-anchor.directive.mjs +8 -3
  22. package/esm2022/popover/src/popover-content.directive.mjs +30 -15
  23. package/esm2022/popover/src/popover-root.directive.mjs +6 -1
  24. package/esm2022/popover/src/popover.utils.mjs +17 -23
  25. package/esm2022/popover/src/utils/cdk-event.service.mjs +153 -0
  26. package/esm2022/popover/src/utils/constants.mjs +2 -0
  27. package/esm2022/popover/src/utils/types.mjs +2 -0
  28. package/esm2022/progress/src/progress-indicator.directive.mjs +1 -2
  29. package/esm2022/progress/src/progress-root.directive.mjs +8 -3
  30. package/esm2022/separator/src/separator.directive.mjs +9 -2
  31. package/esm2022/switch/src/switch-input.directive.mjs +4 -1
  32. package/esm2022/switch/src/switch-root.directive.mjs +28 -3
  33. package/esm2022/switch/src/switch-thumb.directive.mjs +4 -1
  34. package/fesm2022/radix-ng-primitives-accordion.mjs +40 -15
  35. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +3 -1
  37. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-avatar.mjs +45 -2
  39. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-collapsible.mjs +16 -10
  41. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +34 -3
  43. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-label.mjs +5 -7
  45. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-popover.mjs +208 -39
  47. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-progress.mjs +7 -3
  49. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-separator.mjs +8 -1
  51. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-switch.mjs +33 -2
  53. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  54. package/label/src/label.directive.d.ts +5 -7
  55. package/package.json +1 -1
  56. package/popover/src/popover-content.directive.d.ts +14 -6
  57. package/popover/src/popover-root.directive.d.ts +24 -1
  58. package/popover/src/utils/cdk-event.service.d.ts +29 -0
  59. package/popover/src/utils/constants.d.ts +1 -0
  60. package/popover/src/utils/types.d.ts +7 -0
  61. package/progress/src/progress-indicator.directive.d.ts +0 -1
  62. package/progress/src/progress-root.directive.d.ts +7 -2
  63. package/separator/src/separator.directive.d.ts +8 -1
  64. package/switch/src/switch-input.directive.d.ts +3 -0
  65. package/switch/src/switch-root.directive.d.ts +27 -2
  66. package/switch/src/switch-thumb.directive.d.ts +3 -0
@@ -6,6 +6,7 @@ import { RdxPopoverContentAttributesToken } from './popover-content-attributes.t
6
6
  import { RdxPopoverContentDirective } from './popover-content.directive';
7
7
  import { RdxPopoverTriggerDirective } from './popover-trigger.directive';
8
8
  import { RdxPopoverAnimationStatus, RdxPopoverAttachDetachEvent, RdxPopoverState } from './popover.types';
9
+ import { injectRdxCdkEventService } from './utils/cdk-event.service';
9
10
  import * as i0 from "@angular/core";
10
11
  let nextId = 0;
11
12
  export class RdxPopoverRootDirective {
@@ -66,6 +67,8 @@ export class RdxPopoverRootDirective {
66
67
  /** @ignore */
67
68
  this.viewContainerRef = inject(ViewContainerRef);
68
69
  /** @ignore */
70
+ this.rdxCdkEventService = injectRdxCdkEventService();
71
+ /** @ignore */
69
72
  this.destroyRef = inject(DestroyRef);
70
73
  /** @ignore */
71
74
  this.state = signal(RdxPopoverState.CLOSED);
@@ -86,6 +89,8 @@ export class RdxPopoverRootDirective {
86
89
  });
87
90
  });
88
91
  };
92
+ this.rdxCdkEventService?.registerPrimitive(this);
93
+ this.destroyRef.onDestroy(() => this.rdxCdkEventService?.deregisterPrimitive(this));
89
94
  this.onStateChangeEffect();
90
95
  this.onCssAnimationStatusChangeChangeEffect();
91
96
  this.onOpenChangeEffect();
@@ -312,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
312
317
  exportAs: 'rdxPopoverRoot'
313
318
  }]
314
319
  }], ctorParameters: () => [] });
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxRyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFPZixNQUFNLE9BQU8sdUJBQXVCO0lBMkVoQztRQTFFQSxjQUFjO1FBQ0wsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLGNBQWM7UUFDTCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRFOzs7V0FHRztRQUNNLFdBQU0s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ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIHNpZ25hbCxcbiAgICB1bnRyYWNrZWQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeFBvcG92ZXJBbmNob3JEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItYW5jaG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQW5jaG9yVG9rZW4gfSBmcm9tICcuL3BvcG92ZXItYW5jaG9yLnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJBcnJvd1Rva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWFycm93LnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJDbG9zZVRva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWNsb3NlLnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJDb250ZW50QXR0cmlidXRlc1Rva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRlbnQtYXR0cmlidXRlcy50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLCBSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQsIFJkeFBvcG92ZXJTdGF0ZSB9IGZyb20gJy4vcG9wb3Zlci50eXBlcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQb3BvdmVyUm9vdF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhQb3BvdmVyUm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUge1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdW5pcXVlSWQgPSBzaWduYWwoKytuZXh0SWQpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgbmFtZSA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci1yb290LSR7dGhpcy51bmlxdWVJZCgpfWApO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbmNob3IgZGlyZWN0aXZlIHRoYXQgY29tZXMgZm9ybSBvdXRzaWRlIHRoZSBwb3BvdmVyIHJvb3RcbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBhbmNob3IgPSBpbnB1dDxSZHhQb3BvdmVyQW5jaG9yRGlyZWN0aXZlIHwgdW5kZWZpbmVkPih2b2lkIDApO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgcG9wb3ZlciB3aGVuIGl0IGlzIGluaXRpYWxseSByZW5kZXJlZC4gVXNlIHdoZW4geW91IGRvIG5vdCBuZWVkIHRvIGNvbnRyb2wgaXRzIG9wZW4gc3RhdGUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0T3BlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNvbnRyb2xsZWQgc3RhdGUgb2YgdGhlIHBvcG92ZXIuIGBvcGVuYCBpbnB1dCB0YWtlIHByZWNlZGVuY2Ugb2YgYGRlZmF1bHRPcGVuYCBpbnB1dC5cbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBvcGVuID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byBjb250cm9sIHRoZSBzdGF0ZSBvZiB0aGUgcG9wb3ZlciBmcm9tIGV4dGVybmFsLiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCBgb3BlbmAgaW5wdXQuXG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb250cm9sID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZy9jbG9zaW5nIGFuaW1hdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBjc3NBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc09wZW5pbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1MgY2xvc2luZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc0Nsb3NpbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3NzQW5pbWF0aW9uU3RhdHVzID0gc2lnbmFsPFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckNvbnRlbnREaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlckNvbnRlbnREaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckFycm93RGlyZWN0aXZlID0gY29udGVudENoaWxkKFJkeFBvcG92ZXJBcnJvd1Rva2VuKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJDbG9zZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChSZHhQb3BvdmVyQ2xvc2VUb2tlbik7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNDb21wb25lbnQgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckNvbnRlbnRBdHRyaWJ1dGVzVG9rZW4pO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFBvcG92ZXJBbmNob3JEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckFuY2hvclRva2VuKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsKFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBhdHRhY2hEZXRhY2hFdmVudCA9IHNpZ25hbChSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQuREVUQUNIKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBpc0ZpcnN0RGVmYXVsdE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyQW5jaG9yRGlyZWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnRlcm5hbFBvcG92ZXJBbmNob3JEaXJlY3RpdmUoKSA/PyB0aGlzLmFuY2hvcigpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2VFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5vbkNzc0FuaW1hdGlvblN0YXR1c0NoYW5nZUNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLm9uSXNGaXJzdERlZmF1bHRPcGVuQ2hhbmdlRWZmZWN0KCk7XG4gICAgICAgIHRoaXMub25BbmNob3JDaGFuZ2VFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5lbWl0T3Blbk9yQ2xvc2VkRXZlbnRFZmZlY3QoKTtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKHtcbiAgICAgICAgICAgIHdyaXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdE9wZW4oKSAmJiAhdGhpcy5vcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4uc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXRBbmltYXRpb25QYXJhbXNTbmFwc2hvdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNzc0FuaW1hdGlvbjogdGhpcy5jc3NBbmltYXRpb24oKSxcbiAgICAgICAgICAgIGNzc09wZW5pbmdBbmltYXRpb246IHRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpLFxuICAgICAgICAgICAgY3NzQ2xvc2luZ0FuaW1hdGlvbjogdGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCksXG4gICAgICAgICAgICBjc3NBbmltYXRpb25TdGF0dXM6IHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCksXG4gICAgICAgICAgICBhdHRhY2hEZXRhY2hFdmVudDogdGhpcy5hdHRhY2hEZXRhY2hFdmVudCgpLFxuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUoKSxcbiAgICAgICAgICAgIGNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkOiB0aGlzLmNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGNvbnRyb2xsZWRFeHRlcm5hbGx5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbENvbnRyb2w7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBmaXJzdERlZmF1bHRPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZU9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29udHJvbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZShSZHhQb3BvdmVyU3RhdGUuT1BFTik7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdERlZmF1bHRPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdERlZmF1bHRPcGVuLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb250cm9sKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlVG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5leHRlcm5hbENvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNPcGVuKCkgPyB0aGlzLmhhbmRsZUNsb3NlKCkgOiB0aGlzLmhhbmRsZU9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGlzT3BlbihzdGF0ZT86IFJkeFBvcG92ZXJTdGF0ZSkge1xuICAgICAgICByZXR1cm4gKHN0YXRlID8/IHRoaXMuc3RhdGUoKSkgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBzZXRTdGF0ZShzdGF0ZSA9IFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHN0YXRlID09PSB0aGlzLnN0YXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlLnNldChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9wZW5Db250ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkub3BlbigpO1xuICAgICAgICBpZiAoIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHwgIXRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cy5zZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgY2xvc2VDb250ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkuY2xvc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLmNzc0FuaW1hdGlvbigpIHx8ICF0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5jc3NBbmltYXRpb25TdGF0dXMuc2V0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGVtaXRPbk9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5vbk9wZW4uZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBlbWl0T25DbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5vbkNsb3NlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGlmT3Blbk9yQ2xvc2VXaXRob3V0QW5pbWF0aW9ucyhzdGF0ZTogUmR4UG9wb3ZlclN0YXRlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5wb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNDb21wb25lbnQoKSB8fFxuICAgICAgICAgICAgIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0FuaW1hdGlvbigpICYmICF0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJiBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0FuaW1hdGlvbigpICYmICF0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJiBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4pIHx8XG4gICAgICAgICAgICAvLyAhdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICAgICAgc3RhdGUgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOICYmXG4gICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuT1BFTl9TVEFSVEVEXS5pbmNsdWRlcyh0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpISkpIHx8XG4gICAgICAgICAgICAodGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCAmJlxuICAgICAgICAgICAgICAgIFtSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLkNMT1NFRF9TVEFSVEVEXS5pbmNsdWRlcyh0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpISkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGlmT3Blbk9yQ2xvc2VXaXRoQW5pbWF0aW9ucyhjc3NBbmltYXRpb25TdGF0dXM6IFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMgfCBudWxsKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50QXR0cmlidXRlc0NvbXBvbmVudCgpICYmXG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICBjc3NBbmltYXRpb25TdGF0dXMgJiZcbiAgICAgICAgICAgICgodGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlKCkgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOICYmXG4gICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuT1BFTl9FTkRFRF0uaW5jbHVkZXMoY3NzQW5pbWF0aW9uU3RhdHVzKSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEICYmXG4gICAgICAgICAgICAgICAgICAgIFtSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLkNMT1NFRF9FTkRFRF0uaW5jbHVkZXMoY3NzQW5pbWF0aW9uU3RhdHVzKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9wZW5PckNsb3NlKHN0YXRlOiBSZHhQb3BvdmVyU3RhdGUpIHtcbiAgICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5pc09wZW4oc3RhdGUpO1xuICAgICAgICBpc09wZW4gPyB0aGlzLm9wZW5Db250ZW50KCkgOiB0aGlzLmNsb3NlQ29udGVudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBlbWl0T25PcGVuT3JPbkNsb3NlZChzdGF0ZTogUmR4UG9wb3ZlclN0YXRlKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuKHN0YXRlKVxuICAgICAgICAgICAgPyB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCkgPT09IFJkeFBvcG92ZXJBdHRhY2hEZXRhY2hFdmVudC5BVFRBQ0ggJiYgdGhpcy5lbWl0T25PcGVuKClcbiAgICAgICAgICAgIDogdGhpcy5hdHRhY2hEZXRhY2hFdmVudCgpID09PSBSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQuREVUQUNIICYmIHRoaXMuZW1pdE9uQ2xvc2VkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHxcbiAgICAgICAgICAgICghdGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkgJiYgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuT1BFTikgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpID09PSBSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLk9QRU5fRU5ERUQpIHx8XG4gICAgICAgICAgICAoIXRoaXMuY3NzQ2xvc2luZ0FuaW1hdGlvbigpICYmIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCkgPT09IFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuQ0xPU0VEX0VOREVEKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvblN0YXRlQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGUoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pZk9wZW5PckNsb3NlV2l0aG91dEFuaW1hdGlvbnMoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT3JDbG9zZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbkNzc0FuaW1hdGlvblN0YXR1c0NoYW5nZUNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgbGV0IGlzRmlyc3QgPSB0cnVlO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3NzQW5pbWF0aW9uU3RhdHVzID0gdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pZk9wZW5PckNsb3NlV2l0aEFuaW1hdGlvbnMoY3NzQW5pbWF0aW9uU3RhdHVzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk9yQ2xvc2UodGhpcy5zdGF0ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgZW1pdE9wZW5PckNsb3NlZEV2ZW50RWZmZWN0KCkge1xuICAgICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuRW1pdE9wZW5DbG9zZSA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLmNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKCkpO1xuICAgICAgICAgICAgICAgIGlmICghY2FuRW1pdE9wZW5DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uT3Blbk9yT25DbG9zZWQodGhpcy5zdGF0ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgb25PcGVuQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKG9wZW4gPyBSZHhQb3BvdmVyU3RhdGUuT1BFTiA6IFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbklzRmlyc3REZWZhdWx0T3BlbkNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgY29uc3QgZWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcGVuID0gdGhpcy5kZWZhdWx0T3BlbigpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZmF1bHRPcGVuIHx8IHRoaXMub3BlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVmZmVjdFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uQW5jaG9yQ2hhbmdlRWZmZWN0ID0gKCkgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3IoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICAgICAgICAgICAgICBhbmNob3Iuc2V0UG9wb3ZlclJvb3QodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVyRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFPZixNQUFNLE9BQU8sdUJBQXVCO0lBNkVoQztRQTVFQSxjQUFjO1FBQ0wsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLGNBQWM7UUFDTCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRFOzs7V0FHRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQXdDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkU7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0M7OztXQUdHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBc0IsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRDs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBc0IsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RDs7O1dBR0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM3Rjs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDcEc7OztXQUdHO1FBQ00sd0JBQW1CLEdBQUcsS0FBSyxDQUF3QixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXBHLGNBQWM7UUFDTCx1QkFBa0IsR0FBRyxNQUFNLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBRTdFLGNBQWM7UUFDTCw0QkFBdUIsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDckYsY0FBYztRQUNMLDRCQUF1QixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNyRixjQUFjO1FBQ0wsMEJBQXFCLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEUsY0FBYztRQUNMLDBCQUFxQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BFLGNBQWM7UUFDTCxzQ0FBaUMsR0FBRyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUM1RixjQUFjO1FBQ0csbUNBQThCLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdEYsY0FBYztRQUNMLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELGNBQWM7UUFDTCx1QkFBa0IsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3pELGNBQWM7UUFDTCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpDLGNBQWM7UUFDTCxVQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRCxjQUFjO1FBQ0wsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhFLGNBQWM7UUFDRyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEQsY0FBYztRQUNMLDJCQUFzQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQXlQekcsY0FBYztRQUNOLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNoQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDWCxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNULE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQWhRRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsZUFBZSxDQUFDO1lBQ1osS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ2QsMEJBQTBCO1FBQ3RCLE9BQU87WUFDSCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDL0MsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQy9DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM3QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1NBQzFELENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxjQUFjO0lBQ2QsTUFBTSxDQUFDLEtBQXVCO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYztJQUNOLFFBQVEsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU07UUFDM0MsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVc7UUFDZixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLFlBQVk7UUFDaEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVO1FBQ2QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWTtRQUNoQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBOEIsQ0FBQyxLQUFzQjtRQUN6RCxPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUU7WUFDekMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDeEYsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxLQUFLLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQztZQUN0RixnQ0FBZ0M7WUFDaEMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3ZCLEtBQUssS0FBSyxlQUFlLENBQUMsSUFBSTtnQkFDOUIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFHLENBQUMsQ0FBQztZQUNsRixDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDdkIsS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUNoQyxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUcsQ0FBQyxDQUFDLENBQ3ZGLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLDJCQUEyQixDQUFDLGtCQUFvRDtRQUNwRixPQUFPLENBQ0gsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsa0JBQWtCO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxlQUFlLENBQUMsSUFBSTtnQkFDckMsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDcEUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxlQUFlLENBQUMsTUFBTTtvQkFDdkMsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQ2xGLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVcsQ0FBQyxLQUFzQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELGNBQWM7SUFDTixvQkFBb0IsQ0FBQyxLQUFzQjtRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSywyQkFBMkIsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0RixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssMkJBQTJCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqRyxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QjtRQUMzQixPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQztZQUN0RSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUNyQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyx5QkFBeUIsQ0FBQyxVQUFVLENBQUM7WUFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQ3hFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUM1RSxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUI7UUFDdkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ2hCLE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzlDLE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGNBQWM7SUFDTixzQ0FBc0M7UUFDMUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDVixPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3hELE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLDJCQUEyQjtRQUMvQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDVixPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ3BCLE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLGdDQUFnQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQzlCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEIsT0FBTztnQkFDWCxDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FsVVEsdUJBQXVCO21HQUF2Qix1QkFBdUIsOG1DQThDeUIsMEJBQTBCLDBHQUUxQiwwQkFBMEIsd0dBRXJDLG9CQUFvQix3R0FFcEIsb0JBQW9CLG9IQUVSLGdDQUFnQyxpSEFFM0IscUJBQXFCOzs0RkF4RDNFLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgZWZmZWN0LFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQW5jaG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLWFuY2hvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlckFuY2hvclRva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWFuY2hvci50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQXJyb3dUb2tlbiB9IGZyb20gJy4vcG9wb3Zlci1hcnJvdy50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQ2xvc2VUb2tlbiB9IGZyb20gJy4vcG9wb3Zlci1jbG9zZS50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNUb2tlbiB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LWF0dHJpYnV0ZXMudG9rZW4nO1xuaW1wb3J0IHsgUmR4UG9wb3ZlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cywgUmR4UG9wb3ZlckF0dGFjaERldGFjaEV2ZW50LCBSZHhQb3BvdmVyU3RhdGUgfSBmcm9tICcuL3BvcG92ZXIudHlwZXMnO1xuaW1wb3J0IHsgaW5qZWN0UmR4Q2RrRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy9jZGstZXZlbnQuc2VydmljZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQb3BvdmVyUm9vdF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhQb3BvdmVyUm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUge1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdW5pcXVlSWQgPSBzaWduYWwoKytuZXh0SWQpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgbmFtZSA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci1yb290LSR7dGhpcy51bmlxdWVJZCgpfWApO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbmNob3IgZGlyZWN0aXZlIHRoYXQgY29tZXMgZm9ybSBvdXRzaWRlIHRoZSBwb3BvdmVyIHJvb3RcbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBhbmNob3IgPSBpbnB1dDxSZHhQb3BvdmVyQW5jaG9yRGlyZWN0aXZlIHwgdW5kZWZpbmVkPih2b2lkIDApO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgcG9wb3ZlciB3aGVuIGl0IGlzIGluaXRpYWxseSByZW5kZXJlZC4gVXNlIHdoZW4geW91IGRvIG5vdCBuZWVkIHRvIGNvbnRyb2wgaXRzIG9wZW4gc3RhdGUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0T3BlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNvbnRyb2xsZWQgc3RhdGUgb2YgdGhlIHBvcG92ZXIuIGBvcGVuYCBpbnB1dCB0YWtlIHByZWNlZGVuY2Ugb2YgYGRlZmF1bHRPcGVuYCBpbnB1dC5cbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBvcGVuID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byBjb250cm9sIHRoZSBzdGF0ZSBvZiB0aGUgcG9wb3ZlciBmcm9tIGV4dGVybmFsLiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCBgb3BlbmAgaW5wdXQuXG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb250cm9sID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZy9jbG9zaW5nIGFuaW1hdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBjc3NBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc09wZW5pbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1MgY2xvc2luZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc0Nsb3NpbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3NzQW5pbWF0aW9uU3RhdHVzID0gc2lnbmFsPFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckNvbnRlbnREaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlckNvbnRlbnREaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckFycm93RGlyZWN0aXZlID0gY29udGVudENoaWxkKFJkeFBvcG92ZXJBcnJvd1Rva2VuKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJDbG9zZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChSZHhQb3BvdmVyQ2xvc2VUb2tlbik7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNDb21wb25lbnQgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckNvbnRlbnRBdHRyaWJ1dGVzVG9rZW4pO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFBvcG92ZXJBbmNob3JEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckFuY2hvclRva2VuKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHJkeENka0V2ZW50U2VydmljZSA9IGluamVjdFJkeENka0V2ZW50U2VydmljZSgpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWwoUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IGF0dGFjaERldGFjaEV2ZW50ID0gc2lnbmFsKFJkeFBvcG92ZXJBdHRhY2hEZXRhY2hFdmVudC5ERVRBQ0gpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzRmlyc3REZWZhdWx0T3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJBbmNob3JEaXJlY3RpdmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmludGVybmFsUG9wb3ZlckFuY2hvckRpcmVjdGl2ZSgpID8/IHRoaXMuYW5jaG9yKCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmR4Q2RrRXZlbnRTZXJ2aWNlPy5yZWdpc3RlclByaW1pdGl2ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLnJkeENka0V2ZW50U2VydmljZT8uZGVyZWdpc3RlclByaW1pdGl2ZSh0aGlzKSk7XG4gICAgICAgIHRoaXMub25TdGF0ZUNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLm9uQ3NzQW5pbWF0aW9uU3RhdHVzQ2hhbmdlQ2hhbmdlRWZmZWN0KCk7XG4gICAgICAgIHRoaXMub25PcGVuQ2hhbmdlRWZmZWN0KCk7XG4gICAgICAgIHRoaXMub25Jc0ZpcnN0RGVmYXVsdE9wZW5DaGFuZ2VFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5vbkFuY2hvckNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLmVtaXRPcGVuT3JDbG9zZWRFdmVudEVmZmVjdCgpO1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoe1xuICAgICAgICAgICAgd3JpdGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0T3BlbigpICYmICF0aGlzLm9wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmlyc3REZWZhdWx0T3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGdldEFuaW1hdGlvblBhcmFtc1NuYXBzaG90KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3NzQW5pbWF0aW9uOiB0aGlzLmNzc0FuaW1hdGlvbigpLFxuICAgICAgICAgICAgY3NzT3BlbmluZ0FuaW1hdGlvbjogdGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCksXG4gICAgICAgICAgICBjc3NDbG9zaW5nQW5pbWF0aW9uOiB0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSxcbiAgICAgICAgICAgIGNzc0FuaW1hdGlvblN0YXR1czogdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKSxcbiAgICAgICAgICAgIGF0dGFjaERldGFjaEV2ZW50OiB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCksXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSgpLFxuICAgICAgICAgICAgY2FuRW1pdE9uT3Blbk9yT25DbG9zZWQ6IHRoaXMuY2FuRW1pdE9uT3Blbk9yT25DbG9zZWQoKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgY29udHJvbGxlZEV4dGVybmFsbHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dGVybmFsQ29udHJvbDtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGZpcnN0RGVmYXVsdE9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlyc3REZWZhdWx0T3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlT3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb250cm9sKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKFJkeFBvcG92ZXJTdGF0ZS5PUEVOKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbENvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVUb2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29udHJvbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc09wZW4oKSA/IHRoaXMuaGFuZGxlQ2xvc2UoKSA6IHRoaXMuaGFuZGxlT3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaXNPcGVuKHN0YXRlPzogUmR4UG9wb3ZlclN0YXRlKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUgPz8gdGhpcy5zdGF0ZSgpKSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU47XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHNldFN0YXRlKHN0YXRlID0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCk6IHZvaWQge1xuICAgICAgICBpZiAoc3RhdGUgPT09IHRoaXMuc3RhdGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KHN0YXRlKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgb3BlbkNvbnRlbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5vcGVuKCk7XG4gICAgICAgIGlmICghdGhpcy5jc3NBbmltYXRpb24oKSB8fCAhdGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzLnNldChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBjbG9zZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5jbG9zZSgpO1xuICAgICAgICBpZiAoIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHwgIXRoaXMuY3NzQ2xvc2luZ0FuaW1hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cy5zZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgZW1pdE9uT3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyQ29udGVudERpcmVjdGl2ZSgpLm9uT3Blbi5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGVtaXRPbkNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyQ29udGVudERpcmVjdGl2ZSgpLm9uQ2xvc2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgaWZPcGVuT3JDbG9zZVdpdGhvdXRBbmltYXRpb25zKHN0YXRlOiBSZHhQb3BvdmVyU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLnBvcG92ZXJDb250ZW50QXR0cmlidXRlc0NvbXBvbmVudCgpIHx8XG4gICAgICAgICAgICAhdGhpcy5jc3NBbmltYXRpb24oKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzQW5pbWF0aW9uKCkgJiYgIXRoaXMuY3NzQ2xvc2luZ0FuaW1hdGlvbigpICYmIHN0YXRlID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzQW5pbWF0aW9uKCkgJiYgIXRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpICYmIHN0YXRlID09PSBSZHhQb3BvdmVyU3RhdGUuT1BFTikgfHxcbiAgICAgICAgICAgIC8vICF0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpIHx8XG4gICAgICAgICAgICAodGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4gJiZcbiAgICAgICAgICAgICAgICBbUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cy5PUEVOX1NUQVJURURdLmluY2x1ZGVzKHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCkhKSkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHN0YXRlID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEICYmXG4gICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuQ0xPU0VEX1NUQVJURURdLmluY2x1ZGVzKHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCkhKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgaWZPcGVuT3JDbG9zZVdpdGhBbmltYXRpb25zKGNzc0FuaW1hdGlvblN0YXR1czogUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cyB8IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnRBdHRyaWJ1dGVzQ29tcG9uZW50KCkgJiZcbiAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgIGNzc0FuaW1hdGlvblN0YXR1cyAmJlxuICAgICAgICAgICAgKCh0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4gJiZcbiAgICAgICAgICAgICAgICBbUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cy5PUEVOX0VOREVEXS5pbmNsdWRlcyhjc3NBbmltYXRpb25TdGF0dXMpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlKCkgPT09IFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQgJiZcbiAgICAgICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuQ0xPU0VEX0VOREVEXS5pbmNsdWRlcyhjc3NBbmltYXRpb25TdGF0dXMpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgb3Blbk9yQ2xvc2Uoc3RhdGU6IFJkeFBvcG92ZXJTdGF0ZSkge1xuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLmlzT3BlbihzdGF0ZSk7XG4gICAgICAgIGlzT3BlbiA/IHRoaXMub3BlbkNvbnRlbnQoKSA6IHRoaXMuY2xvc2VDb250ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGVtaXRPbk9wZW5Pck9uQ2xvc2VkKHN0YXRlOiBSZHhQb3BvdmVyU3RhdGUpIHtcbiAgICAgICAgdGhpcy5pc09wZW4oc3RhdGUpXG4gICAgICAgICAgICA/IHRoaXMuYXR0YWNoRGV0YWNoRXZlbnQoKSA9PT0gUmR4UG9wb3ZlckF0dGFjaERldGFjaEV2ZW50LkFUVEFDSCAmJiB0aGlzLmVtaXRPbk9wZW4oKVxuICAgICAgICAgICAgOiB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCkgPT09IFJkeFBvcG92ZXJBdHRhY2hEZXRhY2hFdmVudC5ERVRBQ0ggJiYgdGhpcy5lbWl0T25DbG9zZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgY2FuRW1pdE9uT3Blbk9yT25DbG9zZWQoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5jc3NBbmltYXRpb24oKSB8fFxuICAgICAgICAgICAgKCF0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJiB0aGlzLnN0YXRlKCkgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuT1BFTiAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCkgPT09IFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuT1BFTl9FTkRFRCkgfHxcbiAgICAgICAgICAgICghdGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCkgJiYgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzQ2xvc2luZ0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKSA9PT0gUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cy5DTE9TRURfRU5ERUQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uU3RhdGVDaGFuZ2VFZmZlY3QoKSB7XG4gICAgICAgIGxldCBpc0ZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSgpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlmT3Blbk9yQ2xvc2VXaXRob3V0QW5pbWF0aW9ucyhzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5PckNsb3NlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uQ3NzQW5pbWF0aW9uU3RhdHVzQ2hhbmdlQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjc3NBbmltYXRpb25TdGF0dXMgPSB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlmT3Blbk9yQ2xvc2VXaXRoQW5pbWF0aW9ucyhjc3NBbmltYXRpb25TdGF0dXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT3JDbG9zZSh0aGlzLnN0YXRlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBlbWl0T3Blbk9yQ2xvc2VkRXZlbnRFZmZlY3QoKSB7XG4gICAgICAgIGxldCBpc0ZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoRGV0YWNoRXZlbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjYW5FbWl0T3BlbkNsb3NlID0gdW50cmFja2VkKCgpID0+IHRoaXMuY2FuRW1pdE9uT3Blbk9yT25DbG9zZWQoKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFjYW5FbWl0T3BlbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0T25PcGVuT3JPbkNsb3NlZCh0aGlzLnN0YXRlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbk9wZW5DaGFuZ2VFZmZlY3QoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcGVuID0gdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUob3BlbiA/IFJkeFBvcG92ZXJTdGF0ZS5PUEVOIDogUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uSXNGaXJzdERlZmF1bHRPcGVuQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBjb25zdCBlZmZlY3RSZWYgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE9wZW4gPSB0aGlzLmRlZmF1bHRPcGVuKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdE9wZW4gfHwgdGhpcy5vcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZWZmZWN0UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU9wZW4oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgb25BbmNob3JDaGFuZ2VFZmZlY3QgPSAoKSA9PiB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcigpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuY2hvci5zZXRQb3BvdmVyUm9vdCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiJdfQ==
@@ -39,29 +39,23 @@ export function getContentPosition(sideAndAlignWithOffsets) {
39
39
  const position = {
40
40
  ...(POPOVER_POSITIONS[side]?.[align] ?? POPOVER_POSITIONS[RdxPopoverSide.Top][RdxPopoverAlign.Center])
41
41
  };
42
- if (sideOffset > 0) {
43
- let xFactor = 0;
44
- let yFactor = 0;
45
- switch (side) {
46
- case RdxPopoverSide.Top:
47
- yFactor = -1;
48
- break;
49
- case RdxPopoverSide.Bottom:
50
- yFactor = 1;
51
- break;
52
- case RdxPopoverSide.Left:
53
- xFactor = -1;
54
- break;
55
- case RdxPopoverSide.Right:
56
- xFactor = 1;
57
- break;
42
+ if (sideOffset || alignOffset) {
43
+ if ([RdxPopoverSide.Top, RdxPopoverSide.Bottom].includes(side)) {
44
+ if (sideOffset) {
45
+ position.offsetY = side === RdxPopoverSide.Top ? -sideOffset : sideOffset;
46
+ }
47
+ if (alignOffset) {
48
+ position.offsetX = alignOffset;
49
+ }
50
+ }
51
+ else {
52
+ if (sideOffset) {
53
+ position.offsetX = side === RdxPopoverSide.Left ? -sideOffset : sideOffset;
54
+ }
55
+ if (alignOffset) {
56
+ position.offsetY = alignOffset;
57
+ }
58
58
  }
59
- position.offsetX = xFactor * sideOffset;
60
- position.offsetY = yFactor * sideOffset;
61
- }
62
- if ([RdxPopoverAlign.Start, RdxPopoverAlign.End].includes(align) && alignOffset) {
63
- const alignOffsetFactor = align === RdxPopoverAlign.End ? -1 : 1;
64
- position.offsetX = alignOffsetFactor * alignOffset;
65
59
  }
66
60
  return position;
67
61
  }
@@ -110,4 +104,4 @@ export function getArrowPositionParams(sideAndAlign, arrowWidthAndHeight, trigge
110
104
  }
111
105
  return posParams;
112
106
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0gsZUFBZSxFQUNmLGNBQWMsRUFHakIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixJQUFJLDZCQUErRCxDQUFDO0FBQ3BFLE1BQU0sVUFBVSxnQ0FBZ0M7SUFDNUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDakMsNkJBQTZCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxRSw2QkFBK0MsQ0FBQyxHQUFHLENBQ2hELEdBQUcsSUFBc0IsSUFBSSxLQUF3QixFQUFFLEVBQ3ZELGlCQUFpQixDQUFDLElBQXNCLENBQUMsQ0FBQyxLQUF3QixDQUFDLENBQ3RFLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sNkJBQTZCLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxnREFBZ0QsQ0FBQyxRQUFnQztJQUM3RixNQUFNLDZCQUE2QixHQUFHLGdDQUFnQyxFQUFFLENBQUM7SUFDekUsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLDZC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YyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsbUNBQW1DLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDbkQsU0FBUyxDQUFDLFNBQVMsR0FBRyxrQ0FBa0MsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDM0YsQ0FBQzthQUFNLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsU0FBUyxDQUFDLEdBQUcsR0FBRyxjQUFjLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDeEcsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQT1BPVkVSX1BPU0lUSU9OUyB9IGZyb20gJy4vcG9wb3Zlci5jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBSZHhBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyxcbiAgICBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zLFxuICAgIFJkeFBvcG92ZXJBbGlnbixcbiAgICBSZHhQb3BvdmVyU2lkZSxcbiAgICBSZHhTaWRlQW5kQWxpZ24sXG4gICAgUmR4U2lkZUFuZEFsaWduT2Zmc2V0c1xufSBmcm9tICcuL3BvcG92ZXIudHlwZXMnO1xuXG5sZXQgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnM6IFJkeEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zKCkge1xuICAgIGlmICghYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMpIHtcbiAgICAgICAgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGlmIChhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucy5zaXplIDwgMSkge1xuICAgICAgICBPYmplY3Qua2V5cyhQT1BPVkVSX1BPU0lUSU9OUykuZm9yRWFjaCgoc2lkZSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoUE9QT1ZFUl9QT1NJVElPTlNbc2lkZSBhcyBSZHhQb3BvdmVyU2lkZV0gPz8ge30pLmZvckVhY2goKGFsaWduKSA9PiB7XG4gICAgICAgICAgICAgICAgKGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zIGFzIE1hcDxhbnksIGFueT4pLnNldChcbiAgICAgICAgICAgICAgICAgICAgYCR7c2lkZSBhcyBSZHhQb3BvdmVyU2lkZX18JHthbGlnbiBhcyBSZHhQb3BvdmVyQWxpZ259YCxcbiAgICAgICAgICAgICAgICAgICAgUE9QT1ZFUl9QT1NJVElPTlNbc2lkZSBhcyBSZHhQb3BvdmVyU2lkZV1bYWxpZ24gYXMgUmR4UG9wb3ZlckFsaWduXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZGVBbmRBbGlnbkZyb21BbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyhwb3NpdGlvbjogQ29ubmVjdGlvblBvc2l0aW9uUGFpcik6IFJkeFNpZGVBbmRBbGlnbiB7XG4gICAgY29uc3QgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBnZXRBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucygpO1xuICAgIGxldCBzaWRlQW5kQWxpZ246IFJkeFNpZGVBbmRBbGlnbiB8IHVuZGVmaW5lZDtcbiAgICBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBvc2l0aW9uLm9yaWdpblggPT09IHZhbHVlLm9yaWdpblggJiZcbiAgICAgICAgICAgIHBvc2l0aW9uLm9yaWdpblkgPT09IHZhbHVlLm9yaWdpblkgJiZcbiAgICAgICAgICAgIHBvc2l0aW9uLm92ZXJsYXlYID09PSB2YWx1ZS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3ZlcmxheVkgPT09IHZhbHVlLm92ZXJsYXlZXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc2lkZUFuZEFsaWduQXJyYXkgPSBrZXkuc3BsaXQoJ3wnKTtcbiAgICAgICAgICAgIHNpZGVBbmRBbGlnbiA9IHtcbiAgICAgICAgICAgICAgICBzaWRlOiBzaWRlQW5kQWxpZ25BcnJheVswXSBhcyBSZHhQb3BvdmVyU2lkZSxcbiAgICAgICAgICAgICAgICBhbGlnbjogc2lkZUFuZEFsaWduQXJyYXlbMV0gYXMgUmR4UG9wb3ZlckFsaWduXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFzaWRlQW5kQWxpZ24pIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBgW1JkeFBvcG92ZXJdIGNhbm5vdCBpbmZlciBib3RoIHNpZGUgYW5kIGFsaWduIGZyb20gdGhlIGdpdmVuIHBvc2l0aW9uICgke0pTT04uc3RyaW5naWZ5KHBvc2l0aW9uKX0pYFxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc2lkZUFuZEFsaWduO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGVudFBvc2l0aW9uKFxuICAgIHNpZGVBbmRBbGlnbldpdGhPZmZzZXRzOiBSZHhTaWRlQW5kQWxpZ24gJiBSZHhTaWRlQW5kQWxpZ25PZmZzZXRzXG4pOiBDb25uZWN0ZWRQb3NpdGlvbiB7XG4gICAgY29uc3QgeyBzaWRlLCBhbGlnbiwgc2lkZU9mZnNldCwgYWxpZ25PZmZzZXQgfSA9IHNpZGVBbmRBbGlnbldpdGhPZmZzZXRzO1xuXG4gICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgIC4uLihQT1BPVkVSX1BPU0lUSU9OU1tzaWRlXT8uW2FsaWduXSA/PyBQT1BPVkVSX1BPU0lUSU9OU1tSZHhQb3BvdmVyU2lkZS5Ub3BdW1JkeFBvcG92ZXJBbGlnbi5DZW50ZXJdKVxuICAgIH07XG5cbiAgICBpZiAoc2lkZU9mZnNldCA+IDApIHtcbiAgICAgICAgbGV0IHhGYWN0b3IgPSAwO1xuICAgICAgICBsZXQgeUZhY3RvciA9IDA7XG5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLlRvcDpcbiAgICAgICAgICAgICAgICB5RmFjdG9yID0gLTE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLkJvdHRvbTpcbiAgICAgICAgICAgICAgICB5RmFjdG9yID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUmR4UG9wb3ZlclNpZGUuTGVmdDpcbiAgICAgICAgICAgICAgICB4RmFjdG9yID0gLTE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLlJpZ2h0OlxuICAgICAgICAgICAgICAgIHhGYWN0b3IgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb24ub2Zmc2V0WCA9IHhGYWN0b3IgKiBzaWRlT2Zmc2V0O1xuICAgICAgICBwb3NpdGlvbi5vZmZzZXRZID0geUZhY3RvciAqIHNpZGVPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKFtSZHhQb3BvdmVyQWxpZ24uU3RhcnQsIFJkeFBvcG92ZXJBbGlnbi5FbmRdLmluY2x1ZGVzKGFsaWduKSAmJiBhbGlnbk9mZnNldCkge1xuICAgICAgICBjb25zdCBhbGlnbk9mZnNldEZhY3RvciA9IGFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uRW5kID8gLTEgOiAxO1xuXG4gICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBhbGlnbk9mZnNldEZhY3RvciAqIGFsaWduT2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFycm93UG9zaXRpb25QYXJhbXMoXG4gICAgc2lkZUFuZEFsaWduOiBSZHhTaWRlQW5kQWxpZ24sXG4gICAgYXJyb3dXaWR0aEFuZEhlaWdodDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIHRyaWdnZXJXaWR0aEFuZEhlaWdodDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9XG4pOiBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zIHtcbiAgICBjb25zdCBwb3NQYXJhbXM6IFJkeEFycm93UG9zaXRpb25QYXJhbXMgPSB7XG4gICAgICAgIHRvcDogJycsXG4gICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICB0cmFuc2Zvcm06ICcnXG4gICAgfTtcblxuICAgIGlmIChbUmR4UG9wb3ZlclNpZGUuVG9wLCBSZHhQb3BvdmVyU2lkZS5Cb3R0b21dLmluY2x1ZGVzKHNpZGVBbmRBbGlnbi5zaWRlKSkge1xuICAgICAgICBpZiAoc2lkZUFuZEFsaWduLnNpZGUgPT09IFJkeFBvcG92ZXJTaWRlLlRvcCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9ICcxMDAlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50b3AgPSBgLSR7YXJyb3dXaWR0aEFuZEhlaWdodC5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybSA9IGByb3RhdGUoMTgwZGVnKWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2lkZUFuZEFsaWduLmFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uU3RhcnQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYCR7KHRyaWdnZXJXaWR0aEFuZEhlaWdodC53aWR0aCAtIGFycm93V2lkdGhBbmRIZWlnaHQud2lkdGgpIC8gMn1weGA7XG4gICAgICAgIH0gZWxzZSBpZiAoc2lkZUFuZEFsaWduLmFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uQ2VudGVyKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMubGVmdCA9IGBjYWxjKDUwJSAtICR7YXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aCAvIDJ9cHgpYDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5FbmQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoMTAwJSAtICR7KHRyaWdnZXJXaWR0aEFuZEhlaWdodC53aWR0aCArIGFycm93V2lkdGhBbmRIZWlnaHQud2lkdGgpIC8gMn1weClgO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChbUmR4UG9wb3ZlclNpZGUuTGVmdCwgUmR4UG9wb3ZlclNpZGUuUmlnaHRdLmluY2x1ZGVzKHNpZGVBbmRBbGlnbi5zaWRlKSkge1xuICAgICAgICBpZiAoc2lkZUFuZEFsaWduLnNpZGUgPT09IFJkeFBvcG92ZXJTaWRlLkxlZnQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYDEwMCVgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybSA9IGByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGUoMCwgLTUwJSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgLSR7YXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aH1weGA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlKDAsIC01MCUpYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5TdGFydCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGAkeyh0cmlnZ2VyV2lkdGhBbmRIZWlnaHQuaGVpZ2h0IC0gYXJyb3dXaWR0aEFuZEhlaWdodC5oZWlnaHQpIC8gMn1weGA7XG4gICAgICAgIH0gZWxzZSBpZiAoc2lkZUFuZEFsaWduLmFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uQ2VudGVyKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LmhlaWdodCAvIDJ9cHgpYDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5FbmQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50b3AgPSBgY2FsYygxMDAlIC0gJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LmhlaWdodCArIGFycm93V2lkdGhBbmRIZWlnaHQuaGVpZ2h0KSAvIDJ9cHgpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb3NQYXJhbXM7XG59XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0gsZUFBZSxFQUNmLGNBQWMsRUFHakIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixJQUFJLDZCQUErRCxDQUFDO0FBQ3BFLE1BQU0sVUFBVSxnQ0FBZ0M7SUFDNUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDakMsNkJBQTZCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxRSw2QkFBK0MsQ0FBQyxHQUFHLENBQ2hELEdBQUcsSUFBc0IsSUFBSSxLQUF3QixFQUFFLEVBQ3ZELGlCQUFpQixDQUFDLElBQXNCLENBQUMsQ0FBQyxLQUF3QixDQUFDLENBQ3RFLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sNkJBQTZCLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxnREFBZ0QsQ0FBQyxRQUFnQztJQUM3RixNQUFNLDZCQUE2QixHQUFHLGdDQUFnQyxFQUFFLENBQUM7SUFDekUsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLDZC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Q0FBQztZQUNuRCxTQUFTLENBQUMsU0FBUyxHQUFHLGtDQUFrQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9DLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMzRixDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxTQUFTLENBQUMsR0FBRyxHQUFHLGNBQWMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3RFLENBQUM7YUFBTSxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3BELFNBQVMsQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN4RyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBPUE9WRVJfUE9TSVRJT05TIH0gZnJvbSAnLi9wb3BvdmVyLmNvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFJkeEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zLFxuICAgIFJkeEFycm93UG9zaXRpb25QYXJhbXMsXG4gICAgUmR4UG9wb3ZlckFsaWduLFxuICAgIFJkeFBvcG92ZXJTaWRlLFxuICAgIFJkeFNpZGVBbmRBbGlnbixcbiAgICBSZHhTaWRlQW5kQWxpZ25PZmZzZXRzXG59IGZyb20gJy4vcG9wb3Zlci50eXBlcyc7XG5cbmxldCBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9uczogUmR4QWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnM7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMoKSB7XG4gICAgaWYgKCFhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucykge1xuICAgICAgICBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgaWYgKGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zLnNpemUgPCAxKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKFBPUE9WRVJfUE9TSVRJT05TKS5mb3JFYWNoKChzaWRlKSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhQT1BPVkVSX1BPU0lUSU9OU1tzaWRlIGFzIFJkeFBvcG92ZXJTaWRlXSA/PyB7fSkuZm9yRWFjaCgoYWxpZ24pID0+IHtcbiAgICAgICAgICAgICAgICAoYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgYXMgTWFwPGFueSwgYW55Pikuc2V0KFxuICAgICAgICAgICAgICAgICAgICBgJHtzaWRlIGFzIFJkeFBvcG92ZXJTaWRlfXwke2FsaWduIGFzIFJkeFBvcG92ZXJBbGlnbn1gLFxuICAgICAgICAgICAgICAgICAgICBQT1BPVkVSX1BPU0lUSU9OU1tzaWRlIGFzIFJkeFBvcG92ZXJTaWRlXVthbGlnbiBhcyBSZHhQb3BvdmVyQWxpZ25dXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lkZUFuZEFsaWduRnJvbUFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zKHBvc2l0aW9uOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyKTogUmR4U2lkZUFuZEFsaWduIHtcbiAgICBjb25zdCBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyA9IGdldEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zKCk7XG4gICAgbGV0IHNpZGVBbmRBbGlnbjogUmR4U2lkZUFuZEFsaWduIHwgdW5kZWZpbmVkO1xuICAgIGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcG9zaXRpb24ub3JpZ2luWCA9PT0gdmFsdWUub3JpZ2luWCAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3JpZ2luWSA9PT0gdmFsdWUub3JpZ2luWSAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3ZlcmxheVggPT09IHZhbHVlLm92ZXJsYXlYICYmXG4gICAgICAgICAgICBwb3NpdGlvbi5vdmVybGF5WSA9PT0gdmFsdWUub3ZlcmxheVlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzaWRlQW5kQWxpZ25BcnJheSA9IGtleS5zcGxpdCgnfCcpO1xuICAgICAgICAgICAgc2lkZUFuZEFsaWduID0ge1xuICAgICAgICAgICAgICAgIHNpZGU6IHNpZGVBbmRBbGlnbkFycmF5WzBdIGFzIFJkeFBvcG92ZXJTaWRlLFxuICAgICAgICAgICAgICAgIGFsaWduOiBzaWRlQW5kQWxpZ25BcnJheVsxXSBhcyBSZHhQb3BvdmVyQWxpZ25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIXNpZGVBbmRBbGlnbikge1xuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIGBbUmR4UG9wb3Zlcl0gY2Fubm90IGluZmVyIGJvdGggc2lkZSBhbmQgYWxpZ24gZnJvbSB0aGUgZ2l2ZW4gcG9zaXRpb24gKCR7SlNPTi5zdHJpbmdpZnkocG9zaXRpb24pfSlgXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzaWRlQW5kQWxpZ247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZW50UG9zaXRpb24oXG4gICAgc2lkZUFuZEFsaWduV2l0aE9mZnNldHM6IFJkeFNpZGVBbmRBbGlnbiAmIFJkeFNpZGVBbmRBbGlnbk9mZnNldHNcbik6IENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICBjb25zdCB7IHNpZGUsIGFsaWduLCBzaWRlT2Zmc2V0LCBhbGlnbk9mZnNldCB9ID0gc2lkZUFuZEFsaWduV2l0aE9mZnNldHM7XG4gICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgIC4uLihQT1BPVkVSX1BPU0lUSU9OU1tzaWRlXT8uW2FsaWduXSA/PyBQT1BPVkVSX1BPU0lUSU9OU1tSZHhQb3BvdmVyU2lkZS5Ub3BdW1JkeFBvcG92ZXJBbGlnbi5DZW50ZXJdKVxuICAgIH07XG4gICAgaWYgKHNpZGVPZmZzZXQgfHwgYWxpZ25PZmZzZXQpIHtcbiAgICAgICAgaWYgKFtSZHhQb3BvdmVyU2lkZS5Ub3AsIFJkeFBvcG92ZXJTaWRlLkJvdHRvbV0uaW5jbHVkZXMoc2lkZSkpIHtcbiAgICAgICAgICAgIGlmIChzaWRlT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24ub2Zmc2V0WSA9IHNpZGUgPT09IFJkeFBvcG92ZXJTaWRlLlRvcCA/IC1zaWRlT2Zmc2V0IDogc2lkZU9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbGlnbk9mZnNldCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBhbGlnbk9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzaWRlT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24ub2Zmc2V0WCA9IHNpZGUgPT09IFJkeFBvcG92ZXJTaWRlLkxlZnQgPyAtc2lkZU9mZnNldCA6IHNpZGVPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxpZ25PZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRZID0gYWxpZ25PZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJyb3dQb3NpdGlvblBhcmFtcyhcbiAgICBzaWRlQW5kQWxpZ246IFJkeFNpZGVBbmRBbGlnbixcbiAgICBhcnJvd1dpZHRoQW5kSGVpZ2h0OiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgdHJpZ2dlcldpZHRoQW5kSGVpZ2h0OiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH1cbik6IFJkeEFycm93UG9zaXRpb25QYXJhbXMge1xuICAgIGNvbnN0IHBvc1BhcmFtczogUmR4QXJyb3dQb3NpdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgbGVmdDogJycsXG4gICAgICAgIHRyYW5zZm9ybTogJydcbiAgICB9O1xuXG4gICAgaWYgKFtSZHhQb3BvdmVyU2lkZS5Ub3AsIFJkeFBvcG92ZXJTaWRlLkJvdHRvbV0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9wb3ZlclNpZGUuVG9wKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gJzEwMCUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGAtJHthcnJvd1dpZHRoQW5kSGVpZ2h0LmhlaWdodH1weGA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSgxODBkZWcpYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5TdGFydCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LndpZHRoIC0gYXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5DZW50ZXIpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRoIC8gMn1weClgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9wb3ZlckFsaWduLkVuZCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgY2FsYygxMDAlIC0gJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LndpZHRoICsgYXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aCkgLyAyfXB4KWA7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFtSZHhQb3BvdmVyU2lkZS5MZWZ0LCBSZHhQb3BvdmVyU2lkZS5SaWdodF0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9wb3ZlclNpZGUuTGVmdCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgMTAwJWA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSgtOTBkZWcpIHRyYW5zbGF0ZSgwLCAtNTAlKWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMubGVmdCA9IGAtJHthcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRofXB4YDtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50cmFuc2Zvcm0gPSBgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGUoMCwgLTUwJSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9wb3ZlckFsaWduLlN0YXJ0KSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gYCR7KHRyaWdnZXJXaWR0aEFuZEhlaWdodC5oZWlnaHQgLSBhcnJvd1dpZHRoQW5kSGVpZ2h0LmhlaWdodCkgLyAyfXB4YDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5DZW50ZXIpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50b3AgPSBgY2FsYyg1MCUgLSAke2Fycm93V2lkdGhBbmRIZWlnaHQuaGVpZ2h0IC8gMn1weClgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9wb3ZlckFsaWduLkVuZCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGBjYWxjKDEwMCUgLSAkeyh0cmlnZ2VyV2lkdGhBbmRIZWlnaHQuaGVpZ2h0ICsgYXJyb3dXaWR0aEFuZEhlaWdodC5oZWlnaHQpIC8gMn1weClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc1BhcmFtcztcbn1cbiJdfQ==
@@ -0,0 +1,153 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { DestroyRef, inject, Injectable, InjectionToken, isDevMode, makeEnvironmentProviders, NgZone, Renderer2, VERSION } from '@angular/core';
3
+ import { RdxCdkEventServiceWindowKey } from './constants';
4
+ import * as i0 from "@angular/core";
5
+ function eventTypeAsPrimitiveConfigKey(eventType) {
6
+ return `prevent${eventType[0].toUpperCase()}${eventType.slice(1)}`;
7
+ }
8
+ class RdxCdkEventService {
9
+ #clickDomRootEventCallbacks;
10
+ constructor() {
11
+ this.document = inject(DOCUMENT);
12
+ this.destroyRef = inject(DestroyRef);
13
+ this.ngZone = inject(NgZone);
14
+ this.renderer2 = inject(Renderer2);
15
+ this.onDestroyCallbacks = new Set([deleteRdxCdkEventServiceWindowKey]);
16
+ this.#clickDomRootEventCallbacks = new Set();
17
+ this.#listenToClickDomRootEvent();
18
+ this.#registerOnDestroyCallbacks();
19
+ }
20
+ registerPrimitive(primitiveInstance) {
21
+ if (!this.primitiveConfigs) {
22
+ this.primitiveConfigs = new Map();
23
+ }
24
+ if (!this.primitiveConfigs.has(primitiveInstance)) {
25
+ this.primitiveConfigs.set(primitiveInstance, {});
26
+ }
27
+ }
28
+ deregisterPrimitive(primitiveInstance) {
29
+ if (this.primitiveConfigs?.has(primitiveInstance)) {
30
+ this.primitiveConfigs.delete(primitiveInstance);
31
+ }
32
+ }
33
+ preventPrimitiveFromCdkEvent(primitiveInstance, eventType) {
34
+ this.#setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, true);
35
+ }
36
+ allowPrimitiveForCdkEvent(primitiveInstance, eventType) {
37
+ this.#setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, false);
38
+ }
39
+ preventPrimitiveFromCdkMultiEvents(primitiveInstance, eventTypes) {
40
+ eventTypes.forEach((eventType) => {
41
+ this.#setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, true);
42
+ });
43
+ }
44
+ allowPrimitiveForCdkMultiEvents(primitiveInstance, eventTypes) {
45
+ eventTypes.forEach((eventType) => {
46
+ this.#setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, false);
47
+ });
48
+ }
49
+ setPreventPrimitiveFromCdkMixEvents(primitiveInstance, eventTypes) {
50
+ Object.keys(eventTypes).forEach((eventType) => {
51
+ this.#setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, eventTypes[eventTypeAsPrimitiveConfigKey(eventType)]);
52
+ });
53
+ }
54
+ primitivePreventedFromCdkEvent(primitiveInstance, eventType) {
55
+ return this.primitiveConfigs?.get(primitiveInstance)?.[eventTypeAsPrimitiveConfigKey(eventType)];
56
+ }
57
+ addClickDomRootEventCallback(callback) {
58
+ this.#clickDomRootEventCallbacks.add(callback);
59
+ }
60
+ removeClickDomRootEventCallback(callback) {
61
+ return this.#clickDomRootEventCallbacks.delete(callback);
62
+ }
63
+ #setPreventPrimitiveFromCdkEvent(primitiveInstance, eventType, value) {
64
+ if (!this.primitiveConfigs?.has(primitiveInstance)) {
65
+ isDevMode() &&
66
+ console.error('[RdxCdkEventService.preventPrimitiveFromCdkEvent] RDX Primitive instance has not been registered!', primitiveInstance);
67
+ return;
68
+ }
69
+ switch (eventType) {
70
+ case 'cdkOverlayOutsideClick':
71
+ this.primitiveConfigs.get(primitiveInstance).preventCdkOverlayOutsideClick = value;
72
+ break;
73
+ case 'cdkOverlayEscapeKeyDown':
74
+ this.primitiveConfigs.get(primitiveInstance).preventCdkOverlayEscapeKeyDown = value;
75
+ break;
76
+ }
77
+ }
78
+ #registerOnDestroyCallbacks() {
79
+ this.destroyRef.onDestroy(() => {
80
+ this.onDestroyCallbacks.forEach((onDestroyCallback) => onDestroyCallback());
81
+ this.onDestroyCallbacks.clear();
82
+ });
83
+ }
84
+ #listenToClickDomRootEvent() {
85
+ const target = this.document;
86
+ const eventName = 'click';
87
+ const options = { capture: true };
88
+ const callback = (event) => {
89
+ this.#clickDomRootEventCallbacks.forEach((clickDomRootEventCallback) => clickDomRootEventCallback(event));
90
+ };
91
+ const major = parseInt(VERSION.major);
92
+ const minor = parseInt(VERSION.minor);
93
+ let destroyClickDomRootEventListener;
94
+ /**
95
+ * @see src/cdk/platform/features/backwards-compatibility.ts in @angular/cdk
96
+ */
97
+ if (major > 19 || (major === 19 && minor > 0) || (major === 0 && minor === 0)) {
98
+ destroyClickDomRootEventListener = this.ngZone.runOutsideAngular(() => {
99
+ const destroyClickDomRootEventListenerInternal = this.renderer2.listen(target, eventName, callback,
100
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
101
+ // @ts-expect-error
102
+ options);
103
+ return () => {
104
+ destroyClickDomRootEventListenerInternal();
105
+ this.#clickDomRootEventCallbacks.clear();
106
+ };
107
+ });
108
+ }
109
+ else {
110
+ /**
111
+ * This part can get removed when v19.1 or higher is on the board
112
+ */
113
+ destroyClickDomRootEventListener = this.ngZone.runOutsideAngular(() => {
114
+ target.addEventListener(eventName, callback, options);
115
+ return () => {
116
+ this.ngZone.runOutsideAngular(() => target.removeEventListener(eventName, callback, options));
117
+ this.#clickDomRootEventCallbacks.clear();
118
+ };
119
+ });
120
+ }
121
+ this.onDestroyCallbacks.add(destroyClickDomRootEventListener);
122
+ }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxCdkEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
124
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxCdkEventService }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxCdkEventService, decorators: [{
127
+ type: Injectable
128
+ }], ctorParameters: () => [] });
129
+ const RdxCdkEventServiceToken = new InjectionToken('RdxCdkEventServiceToken');
130
+ const existsErrorMessage = 'RdxCdkEventService should be provided only once!';
131
+ const deleteRdxCdkEventServiceWindowKey = () => {
132
+ delete window[RdxCdkEventServiceWindowKey];
133
+ };
134
+ const getProvider = (throwWhenExists = true) => ({
135
+ provide: RdxCdkEventServiceToken,
136
+ useFactory: () => {
137
+ isDevMode() && console.log('providing RdxCdkEventService...');
138
+ if (window[RdxCdkEventServiceWindowKey]) {
139
+ if (throwWhenExists) {
140
+ throw Error(existsErrorMessage);
141
+ }
142
+ else {
143
+ isDevMode() && console.warn(existsErrorMessage);
144
+ }
145
+ }
146
+ window[RdxCdkEventServiceWindowKey] ??= new RdxCdkEventService();
147
+ return window[RdxCdkEventServiceWindowKey];
148
+ }
149
+ });
150
+ export const provideRdxCdkEventServiceInRoot = () => makeEnvironmentProviders([getProvider()]);
151
+ export const provideRdxCdkEventService = () => getProvider(false);
152
+ export const injectRdxCdkEventService = () => inject(RdxCdkEventServiceToken, { optional: true });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3BvcG92ZXIvc3JjL3V0aWxzL2Nkay1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsVUFBVSxFQUVWLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsTUFBTSxFQUVOLFNBQVMsRUFDVCxPQUFPLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUcxRCxTQUFTLDZCQUE2QixDQUFDLFNBQW9CO0lBQ3ZELE9BQU8sVUFBVSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBbUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFDTSxrQkFBa0I7SUFVcEIsMkJBQTJCLENBQStDO0lBRTFFO1FBWEEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUk5Qix1QkFBa0IsR0FBb0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUM7UUFFbkYsZ0NBQTJCLEdBQXFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFHdEUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDdkMsQ0FB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LENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgaXNEZXZNb2RlLFxuICAgIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgICBOZ1pvbmUsXG4gICAgUHJvdmlkZXIsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZFUlNJT05cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhDZGtFdmVudFNlcnZpY2VXaW5kb3dLZXkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFdmVudFR5cGUsIEV2ZW50VHlwZUFzUHJpbWl0aXZlQ29uZmlnS2V5LCBQcmltaXRpdmVDb25maWcsIFByaW1pdGl2ZUNvbmZpZ3MgfSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gZXZlbnRUeXBlQXNQcmltaXRpdmVDb25maWdLZXkoZXZlbnRUeXBlOiBFdmVudFR5cGUpOiBFdmVudFR5cGVBc1ByaW1pdGl2ZUNvbmZpZ0tleSB7XG4gICAgcmV0dXJuIGBwcmV2ZW50JHtldmVudFR5cGVbMF0udG9VcHBlckNhc2UoKX0ke2V2ZW50VHlwZS5zbGljZSgxKX1gIGFzIEV2ZW50VHlwZUFzUHJpbWl0aXZlQ29uZmlnS2V5O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBSZHhDZGtFdmVudFNlcnZpY2Uge1xuICAgIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgcHJpbWl0aXZlQ29uZmlncz86IFByaW1pdGl2ZUNvbmZpZ3M7XG5cbiAgICBvbkRlc3Ryb3lDYWxsYmFja3M6IFNldDwoKSA9PiB2b2lkPiA9IG5ldyBTZXQoW2RlbGV0ZVJkeENka0V2ZW50U2VydmljZVdpbmRvd0tleV0pO1xuXG4gICAgI2NsaWNrRG9tUm9vdEV2ZW50Q2FsbGJhY2tzOiBTZXQ8KGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkPiA9IG5ldyBTZXQoKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLiNsaXN0ZW5Ub0NsaWNrRG9tUm9vdEV2ZW50KCk7XG4gICAgICAgIHRoaXMuI3JlZ2lzdGVyT25EZXN0cm95Q2FsbGJhY2tzKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQcmltaXRpdmU8VCBleHRlbmRzIG9iamVjdD4ocHJpbWl0aXZlSW5zdGFuY2U6IFQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByaW1pdGl2ZUNvbmZpZ3MpIHtcbiAgICAgICAgICAgIHRoaXMucHJpbWl0aXZlQ29uZmlncyA9IG5ldyBNYXAoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucHJpbWl0aXZlQ29uZmlncy5oYXMocHJpbWl0aXZlSW5zdGFuY2UpKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZUNvbmZpZ3Muc2V0KHByaW1pdGl2ZUluc3RhbmNlLCB7fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXJlZ2lzdGVyUHJpbWl0aXZlPFQgZXh0ZW5kcyBvYmplY3Q+KHByaW1pdGl2ZUluc3RhbmNlOiBUKSB7XG4gICAgICAgIGlmICh0aGlzLnByaW1pdGl2ZUNvbmZpZ3M/LmhhcyhwcmltaXRpdmVJbnN0YW5jZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJpbWl0aXZlQ29uZmlncy5kZWxldGUocHJpbWl0aXZlSW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldmVudFByaW1pdGl2ZUZyb21DZGtFdmVudDxUIGV4dGVuZHMgb2JqZWN0PihwcmltaXRpdmVJbnN0YW5jZTogVCwgZXZlbnRUeXBlOiBFdmVudFR5cGUpIHtcbiAgICAgICAgdGhpcy4jc2V0UHJldmVudFByaW1pdGl2ZUZyb21DZGtFdmVudChwcmltaXRpdmVJbnN0YW5jZSwgZXZlbnRUeXBlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBhbGxvd1ByaW1pdGl2ZUZvckNka0V2ZW50PFQgZXh0ZW5kcyBvYmplY3Q+KHByaW1pdGl2ZUluc3RhbmNlOiBULCBldmVudFR5cGU6IEV2ZW50VHlwZSkge1xuICAgICAgICB0aGlzLiNzZXRQcmV2ZW50UHJpbWl0aXZlRnJvbUNka0V2ZW50KHByaW1pdGl2ZUluc3RhbmNlLCBldmVudFR5cGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcmV2ZW50UHJpbWl0aXZlRnJvbUNka011bHRpRXZlbnRzPFQgZXh0ZW5kcyBvYmplY3Q+KHByaW1pdGl2ZUluc3RhbmNlOiBULCBldmVudFR5cGVzOiBFdmVudFR5cGVbXSkge1xuICAgICAgICBldmVudFR5cGVzLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2V0UHJldmVudFByaW1pdGl2ZUZyb21DZGtFdmVudChwcmltaXRpdmVJbnN0YW5jZSwgZXZlbnRUeXBlLCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb3dQcmltaXRpdmVGb3JDZGtNdWx0aUV2ZW50czxUIGV4dGVuZHMgb2JqZWN0PihwcmltaXRpdmVJbnN0YW5jZTogVCwgZXZlbnRUeXBlczogRXZlbnRUeXBlW10pIHtcbiAgICAgICAgZXZlbnRUeXBlcy5mb3JFYWNoKChldmVudFR5cGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NldFByZXZlbnRQcmltaXRpdmVGcm9tQ2RrRXZlbnQocHJpbWl0aXZlSW5zdGFuY2UsIGV2ZW50VHlwZSwgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRQcmV2ZW50UHJpbWl0aXZlRnJvbUNka01peEV2ZW50czxUIGV4dGVuZHMgb2JqZWN0PihwcmltaXRpdmVJbnN0YW5jZTogVCwgZXZlbnRUeXBlczogUHJpbWl0aXZlQ29uZmlnKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGV2ZW50VHlwZXMpLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2V0UHJldmVudFByaW1pdGl2ZUZyb21DZGtFdmVudChcbiAgICAgICAgICAgICAgICBwcmltaXRpdmVJbnN0YW5jZSxcbiAgICAgICAgICAgICAgICBldmVudFR5cGUgYXMgRXZlbnRUeXBlLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZXNbZXZlbnRUeXBlQXNQcmltaXRpdmVDb25maWdLZXkoZXZlbnRUeXBlIGFzIEV2ZW50VHlwZSldXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcmltaXRpdmVQcmV2ZW50ZWRGcm9tQ2RrRXZlbnQ8VCBleHRlbmRzIG9iamVjdD4ocHJpbWl0aXZlSW5zdGFuY2U6IFQsIGV2ZW50VHlwZTogRXZlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZUNvbmZpZ3M/LmdldChwcmltaXRpdmVJbnN0YW5jZSk/LltldmVudFR5cGVBc1ByaW1pdGl2ZUNvbmZpZ0tleShldmVudFR5cGUpXTtcbiAgICB9XG5cbiAgICBhZGRDbGlja0RvbVJvb3RFdmVudENhbGxiYWNrKGNhbGxiYWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy4jY2xpY2tEb21Sb290RXZlbnRDYWxsYmFja3MuYWRkKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZW1vdmVDbGlja0RvbVJvb3RFdmVudENhbGxiYWNrKGNhbGxiYWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NsaWNrRG9tUm9vdEV2ZW50Q2FsbGJhY2tzLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgI3NldFByZXZlbnRQcmltaXRpdmVGcm9tQ2RrRXZlbnQ8XG4gICAgICAgIFQgZXh0ZW5kcyBvYmplY3QsXG4gICAgICAgIFIgZXh0ZW5kcyBFdmVudFR5cGUsXG4gICAgICAgIEsgZXh0ZW5kcyBQcmltaXRpdmVDb25maWdbRXZlbnRUeXBlQXNQcmltaXRpdmVDb25maWdLZXk8Uj5dXG4gICAgPihwcmltaXRpdmVJbnN0YW5jZTogVCwgZXZlbnRUeXBlOiBSLCB2YWx1ZTogSykge1xuICAgICAgICBpZiAoIXRoaXMucHJpbWl0aXZlQ29uZmlncz8uaGFzKHByaW1pdGl2ZUluc3RhbmNlKSkge1xuICAgICAgICAgICAgaXNEZXZNb2RlKCkgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAnW1JkeENka0V2ZW50U2VydmljZS5wcmV2ZW50UHJpbWl0aXZlRnJvbUNka0V2ZW50XSBSRFggUHJpbWl0aXZlIGluc3RhbmNlIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkIScsXG4gICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZUluc3RhbmNlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnY2RrT3ZlcmxheU91dHNpZGVDbGljayc6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltaXRpdmVDb25maWdzLmdldChwcmltaXRpdmVJbnN0YW5jZSkhLnByZXZlbnRDZGtPdmVybGF5T3V0c2lkZUNsaWNrID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjZGtPdmVybGF5RXNjYXBlS2V5RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltaXRpdmVDb25maWdzLmdldChwcmltaXRpdmVJbnN0YW5jZSkhLnByZXZlbnRDZGtPdmVybGF5RXNjYXBlS2V5RG93biA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3JlZ2lzdGVyT25EZXN0cm95Q2FsbGJhY2tzKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2goKG9uRGVzdHJveUNhbGxiYWNrKSA9PiBvbkRlc3Ryb3lDYWxsYmFjaygpKTtcbiAgICAgICAgICAgIHRoaXMub25EZXN0cm95Q2FsbGJhY2tzLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNsaXN0ZW5Ub0NsaWNrRG9tUm9vdEV2ZW50KCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmRvY3VtZW50O1xuICAgICAgICBjb25zdCBldmVudE5hbWUgPSAnY2xpY2snO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCB1bmRlZmluZWQgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI2NsaWNrRG9tUm9vdEV2ZW50Q2FsbGJhY2tzLmZvckVhY2goKGNsaWNrRG9tUm9vdEV2ZW50Q2FsbGJhY2spID0+IGNsaWNrRG9tUm9vdEV2ZW50Q2FsbGJhY2soZXZlbnQpKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBtYWpvciA9IHBhcnNlSW50KFZFUlNJT04ubWFqb3IpO1xuICAgICAgICBjb25zdCBtaW5vciA9IHBhcnNlSW50KFZFUlNJT04ubWlub3IpO1xuXG4gICAgICAgIGxldCBkZXN0cm95Q2xpY2tEb21Sb290RXZlbnRMaXN0ZW5lciE6ICgpID0+IHZvaWQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc2VlIHNyYy9jZGsvcGxhdGZvcm0vZmVhdHVyZXMvYmFja3dhcmRzLWNvbXBhdGliaWxpdHkudHMgaW4gQGFuZ3VsYXIvY2RrXG4gICAgICAgICAqL1xuICAgICAgICBpZiAobWFqb3IgPiAxOSB8fCAobWFqb3IgPT09IDE5ICYmIG1pbm9yID4gMCkgfHwgKG1ham9yID09PSAwICYmIG1pbm9yID09PSAwKSkge1xuICAgICAgICAgICAgZGVzdHJveUNsaWNrRG9tUm9vdEV2ZW50TGlzdGVuZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzdHJveUNsaWNrRG9tUm9vdEV2ZW50TGlzdGVuZXJJbnRlcm5hbCA9IHRoaXMucmVuZGVyZXIyLmxpc3RlbihcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdHJveUNsaWNrRG9tUm9vdEV2ZW50TGlzdGVuZXJJbnRlcm5hbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNjbGlja0RvbVJvb3RFdmVudENhbGxiYWNrcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGhpcyBwYXJ0IGNhbiBnZXQgcmVtb3ZlZCB3aGVuIHYxOS4xIG9yIGhpZ2hlciBpcyBvbiB0aGUgYm9hcmRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVzdHJveUNsaWNrRG9tUm9vdEV2ZW50TGlzdGVuZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNjbGlja0RvbVJvb3RFdmVudENhbGxiYWNrcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRGVzdHJveUNhbGxiYWNrcy5hZGQoZGVzdHJveUNsaWNrRG9tUm9vdEV2ZW50TGlzdGVuZXIpO1xuICAgIH1cbn1cblxuY29uc3QgUmR4Q2RrRXZlbnRTZXJ2aWNlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UmR4Q2RrRXZlbnRTZXJ2aWNlPignUmR4Q2RrRXZlbnRTZXJ2aWNlVG9rZW4nKTtcblxuY29uc3QgZXhpc3RzRXJyb3JNZXNzYWdlID0gJ1JkeENka0V2ZW50U2VydmljZSBzaG91bGQgYmUgcHJvdmlkZWQgb25seSBvbmNlISc7XG5cbmNvbnN0IGRlbGV0ZVJkeENka0V2ZW50U2VydmljZVdpbmRvd0tleSA9ICgpID0+IHtcbiAgICBkZWxldGUgKHdpbmRvdyBhcyBhbnkpW1JkeENka0V2ZW50U2VydmljZVdpbmRvd0tleV07XG59O1xuXG5jb25zdCBnZXRQcm92aWRlcjogKHRocm93V2hlbkV4aXN0cz86IGJvb2xlYW4pID0+IFByb3ZpZGVyID0gKHRocm93V2hlbkV4aXN0cyA9IHRydWUpID0+ICh7XG4gICAgcHJvdmlkZTogUmR4Q2RrRXZlbnRTZXJ2aWNlVG9rZW4sXG4gICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBpc0Rldk1vZGUoKSAmJiBjb25zb2xlLmxvZygncHJvdmlkaW5nIFJkeENka0V2ZW50U2VydmljZS4uLicpO1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpW1JkeENka0V2ZW50U2VydmljZVdpbmRvd0tleV0pIHtcbiAgICAgICAgICAgIGlmICh0aHJvd1doZW5FeGlzdHMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihleGlzdHNFcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc0Rldk1vZGUoKSAmJiBjb25zb2xlLndhcm4oZXhpc3RzRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAod2luZG93IGFzIGFueSlbUmR4Q2RrRXZlbnRTZXJ2aWNlV2luZG93S2V5XSA/Pz0gbmV3IFJkeENka0V2ZW50U2VydmljZSgpO1xuICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpW1JkeENka0V2ZW50U2VydmljZVdpbmRvd0tleV07XG4gICAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlUmR4Q2RrRXZlbnRTZXJ2aWNlSW5Sb290OiAoKSA9PiBFbnZpcm9ubWVudFByb3ZpZGVycyA9ICgpID0+XG4gICAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtnZXRQcm92aWRlcigpXSk7XG5leHBvcnQgY29uc3QgcHJvdmlkZVJkeENka0V2ZW50U2VydmljZTogKCkgPT4gUHJvdmlkZXIgPSAoKSA9PiBnZXRQcm92aWRlcihmYWxzZSk7XG5cbmV4cG9ydCBjb25zdCBpbmplY3RSZHhDZGtFdmVudFNlcnZpY2UgPSAoKSA9PiBpbmplY3QoUmR4Q2RrRXZlbnRTZXJ2aWNlVG9rZW4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export const RdxCdkEventServiceWindowKey = Symbol('__RdxCdkEventService__');
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9wb3BvdmVyL3NyYy91dGlscy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUmR4Q2RrRXZlbnRTZXJ2aWNlV2luZG93S2V5ID0gU3ltYm9sKCdfX1JkeENka0V2ZW50U2VydmljZV9fJyk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3BvcG92ZXIvc3JjL3V0aWxzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmVudFR5cGUgPSAnY2RrT3ZlcmxheU91dHNpZGVDbGljaycgfCAnY2RrT3ZlcmxheUVzY2FwZUtleURvd24nO1xuZXhwb3J0IHR5cGUgRXZlbnRUeXBlQ2FwaXRhbGl6ZWQ8UiBleHRlbmRzIEV2ZW50VHlwZSA9IEV2ZW50VHlwZT4gPSBDYXBpdGFsaXplPFI+O1xuZXhwb3J0IHR5cGUgRXZlbnRUeXBlQXNQcmltaXRpdmVDb25maWdLZXk8UiBleHRlbmRzIEV2ZW50VHlwZSA9IEV2ZW50VHlwZT4gPSBgcHJldmVudCR7RXZlbnRUeXBlQ2FwaXRhbGl6ZWQ8Uj59YDtcbmV4cG9ydCB0eXBlIFByaW1pdGl2ZUNvbmZpZyA9IHtcbiAgICBbdmFsdWUgaW4gRXZlbnRUeXBlQXNQcmltaXRpdmVDb25maWdLZXldPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBQcmltaXRpdmVDb25maWdzID0gTWFwPG9iamVjdCwgUHJpbWl0aXZlQ29uZmlnPjtcbiJdfQ==
@@ -10,7 +10,6 @@ import * as i0 from "@angular/core";
10
10
  export class RdxProgressIndicatorDirective {
11
11
  constructor() {
12
12
  /**
13
- *
14
13
  * This allows the directive to access the progress bar state and values.
15
14
  */
16
15
  this.progress = injectProgress();
@@ -31,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
31
30
  }
32
31
  }]
33
32
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcHJvZ3Jlc3Mvc3JjL3Byb2dyZXNzLWluZGljYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTNEOzs7OztHQUtHO0FBV0gsTUFBTSxPQUFPLDZCQUE2QjtJQVYxQztRQVdJOzs7V0FHRztRQUNnQixhQUFRLEdBQUcsY0FBYyxFQUFFLENBQUM7S0FDbEQ7K0dBTlksNkJBQTZCO21HQUE3Qiw2QkFBNkI7OzRGQUE3Qiw2QkFBNkI7a0JBVnpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixtQkFBbUIsRUFBRSxnQkFBZ0I7d0JBQ3JDLG1CQUFtQixFQUFFLGdCQUFnQjt3QkFDckMsaUJBQWlCLEVBQUUsY0FBYztxQkFDcEM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdFByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcy1yb290LmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIG1hbmFnZSBwcm9ncmVzcyBpbmRpY2F0b3Igc3RhdGUgYW5kIGF0dHJpYnV0ZXMuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBkaXNwbGF5IHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgaW5zaWRlIHRoZSBwcm9ncmVzcyBiYXIuXG4gKiBJdCBpbmhlcml0cyB0aGUgc3RhdGUgYW5kIHZhbHVlIGZyb20gdGhlIGBSZHhQcm9ncmVzc1Jvb3REaXJlY3RpdmVgLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQcm9ncmVzc0luZGljYXRvcl0nLFxuICAgIGV4cG9ydEFzOiAncmR4UHJvZ3Jlc3NJbmRpY2F0b3InLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAncHJvZ3Jlc3Muc3RhdGUnLFxuICAgICAgICAnW2F0dHIuZGF0YS12YWx1ZV0nOiAncHJvZ3Jlc3MudmFsdWUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1tYXhdJzogJ3Byb2dyZXNzLm1heCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFByb2dyZXNzSW5kaWNhdG9yRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIFRoaXMgYWxsb3dzIHRoZSBkaXJlY3RpdmUgdG8gYWNjZXNzIHRoZSBwcm9ncmVzcyBiYXIgc3RhdGUgYW5kIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZ3Jlc3MgPSBpbmplY3RQcm9ncmVzcygpO1xufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcHJvZ3Jlc3Mvc3JjL3Byb2dyZXNzLWluZGljYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTNEOzs7OztHQUtHO0FBV0gsTUFBTSxPQUFPLDZCQUE2QjtJQVYxQztRQVdJOztXQUVHO1FBQ2dCLGFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztLQUNsRDsrR0FMWSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFWekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLG1CQUFtQixFQUFFLGdCQUFnQjt3QkFDckMsbUJBQW1CLEVBQUUsZ0JBQWdCO3dCQUNyQyxpQkFBaUIsRUFBRSxjQUFjO3FCQUNwQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0UHJvZ3Jlc3MgfSBmcm9tICcuL3Byb2dyZXNzLXJvb3QuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gbWFuYWdlIHByb2dyZXNzIGluZGljYXRvciBzdGF0ZSBhbmQgYXR0cmlidXRlcy5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIHByb2dyZXNzIGluZGljYXRvciBpbnNpZGUgdGhlIHByb2dyZXNzIGJhci5cbiAqIEl0IGluaGVyaXRzIHRoZSBzdGF0ZSBhbmQgdmFsdWUgZnJvbSB0aGUgYFJkeFByb2dyZXNzUm9vdERpcmVjdGl2ZWAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFByb2dyZXNzSW5kaWNhdG9yXScsXG4gICAgZXhwb3J0QXM6ICdyZHhQcm9ncmVzc0luZGljYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdwcm9ncmVzcy5zdGF0ZScsXG4gICAgICAgICdbYXR0ci5kYXRhLXZhbHVlXSc6ICdwcm9ncmVzcy52YWx1ZScsXG4gICAgICAgICdbYXR0ci5kYXRhLW1heF0nOiAncHJvZ3Jlc3MubWF4J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UHJvZ3Jlc3NJbmRpY2F0b3JEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFRoaXMgYWxsb3dzIHRoZSBkaXJlY3RpdmUgdG8gYWNjZXNzIHRoZSBwcm9ncmVzcyBiYXIgc3RhdGUgYW5kIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZ3Jlc3MgPSBpbmplY3RQcm9ncmVzcygpO1xufVxuIl19
@@ -17,6 +17,8 @@ export function injectProgress() {
17
17
  *
18
18
  * This directive provides a way to create a progress bar with customizable value and max attributes.
19
19
  * It handles aria attributes for accessibility and provides different states like 'indeterminate', 'complete', and 'loading'.
20
+ *
21
+ * @group Components
20
22
  */
21
23
  export class RdxProgressRootDirective {
22
24
  constructor() {
@@ -27,16 +29,19 @@ export class RdxProgressRootDirective {
27
29
  this.id = `rdx-progress-bar-${idIterator++}`;
28
30
  /**
29
31
  * The current value of the progress bar.
30
- * @default 0
32
+ * @group Props
33
+ * @defaultValue 0
31
34
  */
32
35
  this.value = MIN_PERCENT;
33
36
  /**
34
37
  * The maximum value of the progress bar.
35
- * @default 100
38
+ * @defaultValue 100
39
+ * @group Props
36
40
  */
37
41
  this.max = DEFAULT_MAX;
38
42
  /**
39
43
  * Function to generate the value label.
44
+ * @group Props
40
45
  */
41
46
  this.valueLabel = (value, max) => this.defaultGetValueLabel(value, max);
42
47
  }
@@ -124,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
124
129
  type: Input,
125
130
  args: ['rdxValueLabel']
126
131
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Byb2dyZXNzL3NyYy9wcm9ncmVzcy1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBRXBILElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDO0FBRXZDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHNCQUFzQixDQUFDLENBQUM7QUFFOUY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDMUIsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBVUQ7Ozs7O0dBS0c7QUFxQkgsTUFBTSxPQUFPLHdCQUF3QjtJQXBCckM7UUFxQkk7OztXQUdHO1FBQ00sT0FBRSxHQUFHLG9CQUFvQixVQUFVLEVBQUUsRUFBRSxDQUFDO1FBRWpEOzs7V0FHRztRQUN1RCxVQUFLLEdBQUcsV0FBVyxDQUFDO1FBRTlFOzs7V0FHRztRQUNxRCxRQUFHLEdBQUcsV0FBVyxDQUFDO1FBRTFFOztXQUVHO1FBQ3FCLGVBQVUsR0FBMkMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDeEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztLQTBEN0M7SUF4REc7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUks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QkFBc0IsRUFBRSxPQUFPO3dCQUMvQix1QkFBdUIsRUFBRSx3QkFBd0I7d0JBQ2pELG1CQUFtQixFQUFFLE9BQU87d0JBQzVCLG1CQUFtQixFQUFFLE9BQU87d0JBQzVCLGlCQUFpQixFQUFFLEtBQUs7d0JBQ3hCLGlFQUFpRTt3QkFDakUsK0ZBQStGO3dCQUMvRixRQUFRLEVBQUUsSUFBSTtxQkFDakI7aUJBQ0o7OEJBTVksRUFBRTtzQkFBVixLQUFLO2dCQU1vRCxLQUFLO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQU1BLEdBQUc7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBSzlCLFVBQVU7c0JBQWpDLEtBQUs7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIG51bWJlckF0dHJpYnV0ZSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmxldCBpZEl0ZXJhdG9yID0gMDtcblxuY29uc3QgTUlOX1BFUkNFTlQgPSAwO1xuY29uc3QgREVGQVVMVF9NQVggPSAxMDA7XG5jb25zdCBQUk9HUkVTU19OQU1FID0gJ1JhZGl4IFByb2dyZXNzJztcblxuY29uc3QgUmR4UHJvZ3Jlc3NUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZHhQcm9ncmVzc1Jvb3REaXJlY3RpdmU+KCdSZHhQcm9ncmVzc0RpcmVjdGl2ZScpO1xuXG4vKipcbiAqIEluamVjdHMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgUmR4UHJvZ3Jlc3NSb290RGlyZWN0aXZlLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIFJkeFByb2dyZXNzUm9vdERpcmVjdGl2ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByb2dyZXNzKCk6IFJkeFByb2dyZXNzUm9vdERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChSZHhQcm9ncmVzc1Rva2VuKTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NTdGF0ZSA9ICdpbmRldGVybWluYXRlJyB8ICdjb21wbGV0ZScgfCAnbG9hZGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NQcm9wcyB7XG4gICAgdmFsdWU/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBnZXRWYWx1ZUxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBtYW5hZ2UgcHJvZ3Jlc3MgYmFyIHN0YXRlIGFuZCBhdHRyaWJ1dGVzLlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSBhIHByb2dyZXNzIGJhciB3aXRoIGN1c3RvbWl6YWJsZSB2YWx1ZSBhbmQgbWF4IGF0dHJpYnV0ZXMuXG4gKiBJdCBoYW5kbGVzIGFyaWEgYXR0cmlidXRlcyBmb3IgYWNjZXNzaWJpbGl0eSBhbmQgcHJvdmlkZXMgZGlmZmVyZW50IHN0YXRlcyBsaWtlICdpbmRldGVybWluYXRlJywgJ2NvbXBsZXRlJywgYW5kICdsb2FkaW5nJy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UHJvZ3Jlc3NSb290XScsXG4gICAgZXhwb3J0QXM6ICdyZHhQcm9ncmVzc1Jvb3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhQcm9ncmVzc1Rva2VuLCB1c2VFeGlzdGluZzogUmR4UHJvZ3Jlc3NSb290RGlyZWN0aXZlIH1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3Byb2dyZXNzYmFyJyxcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW1heF0nOiAnbWF4JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJzAnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAndmFsdWUnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZXRleHRdJzogJ3ZhbHVlTGFiZWwodmFsdWUsIG1heCknLFxuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnc3RhdGUnLFxuICAgICAgICAnW2F0dHIuZGF0YS12YWx1ZV0nOiAndmFsdWUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1tYXhdJzogJ21heCcsXG4gICAgICAgIC8vIHNldCB0YWIgaW5kZXggdG8gLTEgc28gc2NyZWVuIHJlYWRlcnMgd2lsbCByZWFkIHRoZSBhcmlhLWxhYmVsXG4gICAgICAgIC8vIE5vdGU6IHRoZXJlIGlzIGEga25vd24gaXNzdWUgd2l0aCBKQVdTIHRoYXQgZG9lcyBub3QgcmVhZCBwcm9ncmVzc2JhciBhcmlhIGxhYmVscyBvbiBGaXJlRm94XG4gICAgICAgIHRhYmluZGV4OiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhQcm9ncmVzc1Jvb3REaXJlY3RpdmUgaW1wbGVtZW50cyBQcm9ncmVzc1Byb3BzLCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSB1bmlxdWUgSUQgZm9yIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAgICogQGRlZmF1bHQgJ3JkeC1wcm9ncmVzcy1iYXIte2lkSXRlcmF0b3J9J1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkID0gYHJkeC1wcm9ncmVzcy1iYXItJHtpZEl0ZXJhdG9yKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAncmR4VmFsdWUnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB2YWx1ZSA9IE1JTl9QRVJDRU5UO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICAgKiBAZGVmYXVsdCAxMDBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3JkeE1heCcsIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1heCA9IERFRkFVTFRfTUFYO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIGxhYmVsLlxuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VmFsdWVMYWJlbCcpIHZhbHVlTGFiZWw6ICh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gc3RyaW5nID0gKHZhbHVlLCBtYXgpID0+XG4gICAgICAgIHRoaXMuZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCk7XG5cbiAgICAvKipcbiAgICAgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIGFueSBkYXRhLWJvdW5kIHByb3BlcnR5IG9mIGEgZGlyZWN0aXZlIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGNoYW5nZXMgLSBUaGUgY2hhbmdlZCBwcm9wZXJ0aWVzLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydtYXgnXSAmJiAhdGhpcy5pc1ZhbGlkTWF4TnVtYmVyKHRoaXMubWF4KSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLmdldEludmFsaWRNYXhFcnJvcihgJHt0aGlzLm1heH1gLCBQUk9HUkVTU19OQU1FKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1sndmFsdWUnXSAmJiB0aGlzLnZhbHVlICE9PSBudWxsICYmICF0aGlzLmlzVmFsaWRWYWx1ZU51bWJlcih0aGlzLnZhbHVlLCB0aGlzLm1heCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5nZXRJbnZhbGlkVmFsdWVFcnJvcihgJHt0aGlzLnZhbHVlfWAsIFBST0dSRVNTX05BTUUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc3RhdGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICAgKiBAcmV0dXJucyAnaW5kZXRlcm1pbmF0ZScgfCAnbG9hZGluZycgfCAnY29tcGxldGUnXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGdldCBzdGF0ZSgpOiBQcm9ncmVzc1N0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvZ3Jlc3NTdGF0ZSh0aGlzLnZhbHVlLCB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcm9ncmVzc1N0YXRlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsLCBtYXhWYWx1ZTogbnVtYmVyKTogUHJvZ3Jlc3NTdGF0ZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmF1bHRHZXRWYWx1ZUxhYmVsKHZhbHVlOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKCh2YWx1ZSAvIG1heCkgKiAxMDApfSVgO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZE1heE51bWJlcihtYXg6IHVua25vd24pOiBtYXggaXMgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNOdW1iZXIobWF4KSAmJiAhaXNOYU4obWF4KSAmJiBtYXggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRWYWx1ZU51bWJlcih2YWx1ZTogdW5rbm93biwgbWF4OiBudW1iZXIpOiB2YWx1ZSBpcyBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc051bWJlcih2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA8PSBtYXggJiYgdmFsdWUgPj0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEludmFsaWRNYXhFcnJvcihwcm9wVmFsdWU6IHN0cmluZywgY29tcG9uZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHtERUZBVUxUX01BWH1cXGAuYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEludmFsaWRWYWx1ZUVycm9yKHByb3BWYWx1ZTogc3RyaW5nLCBjb21wb25lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYEludmFsaWQgcHJvcCBcXGB2YWx1ZVxcYCBvZiB2YWx1ZSBcXGAke3Byb3BWYWx1ZX1cXGAgc3VwcGxpZWQgdG8gXFxgJHtjb21wb25lbnROYW1lfVxcYC4gVGhlIFxcYHZhbHVlXFxgIHByb3AgbXVzdCBiZTpcbiAgICAtIGEgcG9zaXRpdmUgbnVtYmVyXG4gICAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7REVGQVVMVF9NQVh9IGlmIG5vIFxcYG1heFxcYCBwcm9wIGlzIHNldClcbiAgICAtIFxcYG51bGxcXGAgb3IgXFxgdW5kZWZpbmVkXFxgIGlmIHRoZSBwcm9ncmVzcyBpcyBpbmRldGVybWluYXRlLlxuXG4gICAgRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG4gICAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Byb2dyZXNzL3NyYy9wcm9ncmVzcy1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBRXBILElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDO0FBRXZDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHNCQUFzQixDQUFDLENBQUM7QUFFOUY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDMUIsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBVUQ7Ozs7Ozs7R0FPRztBQXFCSCxNQUFNLE9BQU8sd0JBQXdCO0lBcEJyQztRQXFCSTs7O1dBR0c7UUFDTSxPQUFFLEdBQUcsb0JBQW9CLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFFakQ7Ozs7V0FJRztRQUN1RCxVQUFLLEdBQUcsV0FBVyxDQUFDO1FBRTlFOzs7O1dBSUc7UUFDcUQsUUFBRyxHQUFHLFdBQVcsQ0FBQztRQUUxRTs7O1dBR0c7UUFDcUIsZUFBVSxHQUEyQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUN4RixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBMEQ3QztJQXhERzs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMs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QzNCLHNCQUFzQixFQUFFLE9BQU87d0JBQy9CLHVCQUF1QixFQUFFLHdCQUF3Qjt3QkFDakQsbUJBQW1CLEVBQUUsT0FBTzt3QkFDNUIsbUJBQW1CLEVBQUUsT0FBTzt3QkFDNUIsaUJBQWlCLEVBQUUsS0FBSzt3QkFDeEIsaUVBQWlFO3dCQUNqRSwrRkFBK0Y7d0JBQy9GLFFBQVEsRUFBRSxJQUFJO3FCQUNqQjtpQkFDSjs4QkFNWSxFQUFFO3NCQUFWLEtBQUs7Z0JBT29ELEtBQUs7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBT0EsR0FBRztzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFNOUIsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxubGV0IGlkSXRlcmF0b3IgPSAwO1xuXG5jb25zdCBNSU5fUEVSQ0VOVCA9IDA7XG5jb25zdCBERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFBST0dSRVNTX05BTUUgPSAnUmFkaXggUHJvZ3Jlc3MnO1xuXG5jb25zdCBSZHhQcm9ncmVzc1Rva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFByb2dyZXNzUm9vdERpcmVjdGl2ZT4oJ1JkeFByb2dyZXNzRGlyZWN0aXZlJyk7XG5cbi8qKlxuICogSW5qZWN0cyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiBSZHhQcm9ncmVzc1Jvb3REaXJlY3RpdmUuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgUmR4UHJvZ3Jlc3NSb290RGlyZWN0aXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UHJvZ3Jlc3MoKTogUmR4UHJvZ3Jlc3NSb290RGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFByb2dyZXNzVG9rZW4pO1xufVxuXG5leHBvcnQgdHlwZSBQcm9ncmVzc1N0YXRlID0gJ2luZGV0ZXJtaW5hdGUnIHwgJ2NvbXBsZXRlJyB8ICdsb2FkaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1Byb3BzIHtcbiAgICB2YWx1ZT86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgbWF4PzogbnVtYmVyO1xuICAgIGdldFZhbHVlTGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIG1hbmFnZSBwcm9ncmVzcyBiYXIgc3RhdGUgYW5kIGF0dHJpYnV0ZXMuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgcHJvdmlkZXMgYSB3YXkgdG8gY3JlYXRlIGEgcHJvZ3Jlc3MgYmFyIHdpdGggY3VzdG9taXphYmxlIHZhbHVlIGFuZCBtYXggYXR0cmlidXRlcy5cbiAqIEl0IGhhbmRsZXMgYXJpYSBhdHRyaWJ1dGVzIGZvciBhY2Nlc3NpYmlsaXR5IGFuZCBwcm92aWRlcyBkaWZmZXJlbnQgc3RhdGVzIGxpa2UgJ2luZGV0ZXJtaW5hdGUnLCAnY29tcGxldGUnLCBhbmQgJ2xvYWRpbmcnLlxuICpcbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFByb2dyZXNzUm9vdF0nLFxuICAgIGV4cG9ydEFzOiAncmR4UHJvZ3Jlc3NSb290JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUmR4UHJvZ3Jlc3NUb2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFByb2dyZXNzUm9vdERpcmVjdGl2ZSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdwcm9ncmVzc2JhcicsXG4gICAgICAgICdbaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtYXhdJzogJ21heCcsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWluXSc6ICcwJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVub3ddJzogJ3ZhbHVlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWV0ZXh0XSc6ICd2YWx1ZUxhYmVsKHZhbHVlLCBtYXgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3N0YXRlJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtdmFsdWVdJzogJ3ZhbHVlJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtbWF4XSc6ICdtYXgnLFxuICAgICAgICAvLyBzZXQgdGFiIGluZGV4IHRvIC0xIHNvIHNjcmVlbiByZWFkZXJzIHdpbGwgcmVhZCB0aGUgYXJpYS1sYWJlbFxuICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBhIGtub3duIGlzc3VlIHdpdGggSkFXUyB0aGF0IGRvZXMgbm90IHJlYWQgcHJvZ3Jlc3NiYXIgYXJpYSBsYWJlbHMgb24gRmlyZUZveFxuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UHJvZ3Jlc3NSb290RGlyZWN0aXZlIGltcGxlbWVudHMgUHJvZ3Jlc3NQcm9wcywgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdW5pcXVlIElEIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgICAqIEBkZWZhdWx0ICdyZHgtcHJvZ3Jlc3MtYmFyLXtpZEl0ZXJhdG9yfSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZCA9IGByZHgtcHJvZ3Jlc3MtYmFyLSR7aWRJdGVyYXRvcisrfWA7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAncmR4VmFsdWUnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB2YWx1ZSA9IE1JTl9QRVJDRU5UO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICAgKiBAZGVmYXVsdFZhbHVlIDEwMFxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAncmR4TWF4JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4ID0gREVGQVVMVF9NQVg7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgbGFiZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCdyZHhWYWx1ZUxhYmVsJykgdmFsdWVMYWJlbDogKHZhbHVlOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiBzdHJpbmcgPSAodmFsdWUsIG1heCkgPT5cbiAgICAgICAgdGhpcy5kZWZhdWx0R2V0VmFsdWVMYWJlbCh2YWx1ZSwgbWF4KTtcblxuICAgIC8qKlxuICAgICAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgb2YgYSBkaXJlY3RpdmUgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0gY2hhbmdlcyAtIFRoZSBjaGFuZ2VkIHByb3BlcnRpZXMuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ21heCddICYmICF0aGlzLmlzVmFsaWRNYXhOdW1iZXIodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHRoaXMuZ2V0SW52YWxpZE1heEVycm9yKGAke3RoaXMubWF4fWAsIFBST0dSRVNTX05BTUUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddICYmIHRoaXMudmFsdWUgIT09IG51bGwgJiYgIXRoaXMuaXNWYWxpZFZhbHVlTnVtYmVyKHRoaXMudmFsdWUsIHRoaXMubWF4KSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLmdldEludmFsaWRWYWx1ZUVycm9yKGAke3RoaXMudmFsdWV9YCwgUFJPR1JFU1NfTkFNRSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgICAqIEByZXR1cm5zICdpbmRldGVybWluYXRlJyB8ICdsb2FkaW5nJyB8ICdjb21wbGV0ZSdcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgZ2V0IHN0YXRlKCk6IFByb2dyZXNzU3RhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm9ncmVzc1N0YXRlKHRoaXMudmFsdWUsIHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2dyZXNzU3RhdGUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsIG1heFZhbHVlOiBudW1iZXIpOiBQcm9ncmVzc1N0YXRlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnaW5kZXRlcm1pbmF0ZScgOiB2YWx1ZSA9PT0gbWF4VmFsdWUgPyAnY29tcGxldGUnIDogJ2xvYWRpbmcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWU6IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDEwMCl9JWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkTWF4TnVtYmVyKG1heDogdW5rbm93bik6IG1heCBpcyBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlOiB1bmtub3duLCBtYXg6IG51bWJlcik6IHZhbHVlIGlzIG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW52YWxpZE1heEVycm9yKHByb3BWYWx1ZTogc3RyaW5nLCBjb21wb25lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYEludmFsaWQgcHJvcCBcXGBtYXhcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIE9ubHkgbnVtYmVycyBncmVhdGVyIHRoYW4gMCBhcmUgdmFsaWQgbWF4IHZhbHVlcy4gRGVmYXVsdGluZyB0byBcXGAke0RFRkFVTFRfTUFYfVxcYC5gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgSW52YWxpZCBwcm9wIFxcYHZhbHVlXFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBUaGUgXFxgdmFsdWVcXGAgcHJvcCBtdXN0IGJlOlxuICAgIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgICAtIGxlc3MgdGhhbiB0aGUgdmFsdWUgcGFzc2VkIHRvIFxcYG1heFxcYCAob3IgJHtERUZBVUxUX01BWH0gaWYgbm8gXFxgbWF4XFxgIHByb3AgaXMgc2V0KVxuICAgIC0gXFxgbnVsbFxcYCBvciBcXGB1bmRlZmluZWRcXGAgaWYgdGhlIHByb2dyZXNzIGlzIGluZGV0ZXJtaW5hdGUuXG5cbiAgICBEZWZhdWx0aW5nIHRvIFxcYG51bGxcXGAuYDtcbiAgICB9XG59XG4iXX0=