@theseam/ui-common 0.4.12-beta.0 → 0.4.13

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 (119) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +1 -10
  3. package/datatable/services/columns-manager.service.d.ts +0 -7
  4. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  5. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  6. package/esm2020/datatable/datatable/datatable.component.mjs +4 -20
  7. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  8. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  9. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  10. package/esm2020/datatable/services/columns-manager.service.mjs +2 -27
  11. package/esm2020/datatable/utils/create-action-menu-column.mjs +3 -4
  12. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  13. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  14. package/esm2020/framework/base-layout/base-layout.component.mjs +4 -14
  15. package/esm2020/framework/base-layout/base-layout.module.mjs +1 -6
  16. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +5 -21
  17. package/esm2020/framework/base-layout/index.mjs +1 -2
  18. package/esm2020/framework/public-api.mjs +1 -2
  19. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  20. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +67 -28
  21. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +5 -12
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +38 -116
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/side-nav/side-nav.module.mjs +39 -9
  25. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  26. package/esm2020/framework/top-bar/index.mjs +1 -3
  27. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +4 -10
  28. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +4 -6
  29. package/esm2020/framework/top-bar/top-bar.component.mjs +11 -55
  30. package/esm2020/framework/top-bar/top-bar.module.mjs +5 -15
  31. package/esm2020/layout/layout.service.mjs +2 -12
  32. package/esm2020/menu/menu-item.component.mjs +3 -3
  33. package/esm2020/menu/menu-toggle.directive.mjs +2 -7
  34. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +2 -4
  35. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  36. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  37. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  38. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  39. package/fesm2015/theseam-ui-common-datatable.mjs +10 -56
  40. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  41. package/fesm2015/theseam-ui-common-framework.mjs +156 -905
  42. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2015/theseam-ui-common-layout.mjs +2 -11
  44. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  45. package/fesm2015/theseam-ui-common-menu.mjs +3 -8
  46. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  47. package/fesm2015/theseam-ui-common-table-cell-types.mjs +1 -3
  48. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  49. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  50. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  51. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  52. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  53. package/fesm2020/theseam-ui-common-datatable.mjs +10 -56
  54. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  55. package/fesm2020/theseam-ui-common-framework.mjs +156 -907
  56. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  57. package/fesm2020/theseam-ui-common-layout.mjs +2 -11
  58. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  59. package/fesm2020/theseam-ui-common-menu.mjs +3 -8
  60. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  61. package/fesm2020/theseam-ui-common-table-cell-types.mjs +1 -3
  62. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  63. package/framework/base-layout/base-layout.component.d.ts +2 -4
  64. package/framework/base-layout/base-layout.component.scss +10 -18
  65. package/framework/base-layout/base-layout.module.d.ts +10 -11
  66. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +3 -8
  67. package/framework/base-layout/index.d.ts +0 -1
  68. package/framework/base-layout/styles/_variables.scss +0 -21
  69. package/framework/public-api.d.ts +0 -1
  70. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +14 -7
  71. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -7
  72. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +3 -5
  73. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +6 -3
  74. package/framework/side-nav/side-nav.component.d.ts +1 -13
  75. package/framework/side-nav/side-nav.component.scss +1 -0
  76. package/framework/side-nav/side-nav.models.d.ts +1 -7
  77. package/framework/side-nav/side-nav.module.d.ts +9 -1
  78. package/framework/side-nav/styles/_themes/light/_variables.scss +14 -24
  79. package/framework/side-nav/styles/_themes/primary/_variables.scss +0 -8
  80. package/framework/top-bar/index.d.ts +0 -2
  81. package/framework/top-bar/top-bar-item.directive.d.ts +1 -4
  82. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +2 -5
  83. package/framework/top-bar/top-bar.component.d.ts +3 -25
  84. package/framework/top-bar/top-bar.component.scss +2 -7
  85. package/framework/top-bar/top-bar.module.d.ts +8 -10
  86. package/layout/layout.service.d.ts +1 -9
  87. package/menu/menu-toggle.directive.d.ts +1 -2
  88. package/package.json +2 -2
  89. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +14 -57
  90. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +5 -33
  91. package/datatable/models/action-item-column-position.d.ts +0 -13
  92. package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
  93. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
  94. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
  95. package/esm2020/framework/nav/index.mjs +0 -6
  96. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
  97. package/esm2020/framework/nav/nav-utils.mjs +0 -107
  98. package/esm2020/framework/nav/nav.models.mjs +0 -2
  99. package/esm2020/framework/nav/nav.module.mjs +0 -67
  100. package/esm2020/framework/nav/nav.service.mjs +0 -204
  101. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
  102. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
  103. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
  104. package/framework/nav/_nav-theme.scss +0 -4
  105. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
  106. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +0 -50
  107. package/framework/nav/index.d.ts +0 -5
  108. package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
  109. package/framework/nav/nav-item/nav-item.component.scss +0 -203
  110. package/framework/nav/nav-utils.d.ts +0 -20
  111. package/framework/nav/nav.models.d.ts +0 -77
  112. package/framework/nav/nav.module.d.ts +0 -17
  113. package/framework/nav/nav.service.d.ts +0 -27
  114. package/framework/nav/styles/_themes/light/_variables.scss +0 -56
  115. package/framework/nav/styles/_themes/primary/_variables.scss +0 -56
  116. package/framework/nav/styles/_utilities.scss +0 -3
  117. package/framework/nav/styles/_variables.scss +0 -2
  118. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
  119. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +0 -8
@@ -1,5 +1,4 @@
1
1
  import { Directive, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core';
2
- import { tap } from 'rxjs/operators';
3
2
  import { THESEAM_BASE_LAYOUT_REF } from '../base-layout-tokens';
4
3
  import * as i0 from "@angular/core";
5
4
  /**
@@ -13,31 +12,22 @@ export class BaseLayoutNavToggleDirective {
13
12
  this.baseLayout.registeredNav.toggle();
14
13
  }
15
14
  }
16
- constructor(_cdr, _baseLayout) {
17
- this._cdr = _cdr;
15
+ constructor(_baseLayout) {
18
16
  this.type = 'button';
19
17
  /** Screenreader label for the button. */
20
18
  this.ariaLabel = 'Navigation toggle';
21
- this._toggleClass = true;
22
- this._expandedClass = false;
23
19
  this.baseLayout = _baseLayout;
24
20
  }
25
- ngOnInit() {
26
- this.baseLayout?.registeredNav?.expanded$.pipe(tap(exp => {
27
- this._expandedClass = exp;
28
- this._cdr.markForCheck();
29
- })).subscribe();
30
- }
31
21
  }
32
- BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
33
- BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel", "class.base-layout-nav-toggle": "this._toggleClass", "class.base-layout-nav-toggle--expanded": "this._expandedClass" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
22
+ BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
23
+ BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
34
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, decorators: [{
35
25
  type: Directive,
36
26
  args: [{
37
27
  selector: 'button[seamBaseLayoutNavToggle]',
38
28
  exportAs: 'seamBaseLayoutNavToggle'
39
29
  }]
40
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
30
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
41
31
  type: Optional
42
32
  }, {
43
33
  type: Inject,
@@ -53,14 +43,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
53
43
  }], ariaLabel: [{
54
44
  type: Input,
55
45
  args: ['aria-label']
56
- }], _toggleClass: [{
57
- type: HostBinding,
58
- args: ['class.base-layout-nav-toggle']
59
- }], _expandedClass: [{
60
- type: HostBinding,
61
- args: ['class.base-layout-nav-toggle--expanded']
62
46
  }], _onClick: [{
63
47
  type: HostListener,
64
48
  args: ['click']
65
49
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4SCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHcEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUE7O0FBRS9EOztHQUVHO0FBS0gsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBSXBDLElBQ0ksY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBU3RELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDdkM7SUFDSCxDQUFDO0lBRUQsWUFDbUIsSUFBdUIsRUFDSyxXQUFrQztRQUQ5RCxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQW5CakMsU0FBSSxHQUE4QixRQUFRLENBQUE7UUFLbkQseUNBQXlDO1FBQ3BCLGNBQVMsR0FBOEIsbUJBQW1CLENBQUE7UUFFbEMsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFDVCxtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQWEzRSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQTtJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQzVDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFBO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNmLENBQUM7O3lIQXZDVSw0QkFBNEIsbURBMkJqQix1QkFBdUI7NkdBM0JsQyw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxRQUFRLEVBQUUseUJBQXlCO2lCQUNwQzs7MEJBNEJJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsdUJBQXVCOzRDQXRCekMsU0FBUztzQkFEWixXQUFXO3VCQUFDLFdBQVc7Z0JBR2YsSUFBSTtzQkFBWixLQUFLO2dCQUdGLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUlULFNBQVM7c0JBQTdCLEtBQUs7dUJBQUMsWUFBWTtnQkFFMEIsWUFBWTtzQkFBeEQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBQ1ksY0FBYztzQkFBcEUsV0FBVzt1QkFBQyx3Q0FBd0M7Z0JBR3JELFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHR5cGUgeyBJVGhlU2VhbUJhc2VMYXlvdXRSZWYgfSBmcm9tICcuLi9iYXNlLWxheW91dC1yZWYnXG5pbXBvcnQgeyBUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRiB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0LXRva2VucydcblxuLyoqXG4gKiBDYW4gYmUgdXNlZCB0byB0b2dnbGUgdGhlIGV4cGFuZCBzdGF0ZSBvZiB0aGUgcmVnaXN0ZXJlZCBuYXYuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltzZWFtQmFzZUxheW91dE5hdlRvZ2dsZV0nLFxuICBleHBvcnRBczogJ3NlYW1CYXNlTGF5b3V0TmF2VG9nZ2xlJ1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlTGF5b3V0TmF2VG9nZ2xlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgYmFzZUxheW91dDogSVRoZVNlYW1CYXNlTGF5b3V0UmVmIHwgdW5kZWZpbmVkXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKVxuICBnZXQgX2F0dHJUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlIH1cblxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ2J1dHRvbidcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gIGdldCBfYXR0ckFyaWFMYWJlbCgpIHsgcmV0dXJuIHRoaXMuYXJpYUxhYmVsIHx8IG51bGwgfVxuXG4gIC8qKiBTY3JlZW5yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdOYXZpZ2F0aW9uIHRvZ2dsZSdcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJhc2UtbGF5b3V0LW5hdi10b2dnbGUnKSBfdG9nZ2xlQ2xhc3MgPSB0cnVlXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS0tZXhwYW5kZWQnKSBfZXhwYW5kZWRDbGFzcyA9IGZhbHNlXG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBfb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5iYXNlTGF5b3V0ICYmIHRoaXMuYmFzZUxheW91dC5yZWdpc3RlcmVkTmF2KSB7XG4gICAgICB0aGlzLmJhc2VMYXlvdXQucmVnaXN0ZXJlZE5hdi50b2dnbGUoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRikgX2Jhc2VMYXlvdXQ6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLmJhc2VMYXlvdXQgPSBfYmFzZUxheW91dFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iYXNlTGF5b3V0Py5yZWdpc3RlcmVkTmF2Py5leHBhbmRlZCQucGlwZShcbiAgICAgIHRhcChleHAgPT4ge1xuICAgICAgICB0aGlzLl9leHBhbmRlZENsYXNzID0gZXhwXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBOztBQUUvRDs7R0FFRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7SUFJdkMsSUFDSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUlwQyxJQUNJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFBLENBQUMsQ0FBQztJQU10RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELFlBQytDLFdBQWtDO1FBaEJ4RSxTQUFJLEdBQThCLFFBQVEsQ0FBQTtRQUtuRCx5Q0FBeUM7UUFDcEIsY0FBUyxHQUE4QixtQkFBbUIsQ0FBQTtRQVk3RSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQTtJQUMvQixDQUFDOzt5SEExQlUsNEJBQTRCLGtCQXVCakIsdUJBQXVCOzZHQXZCbEMsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEM7OzBCQXdCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0FsQnpDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxXQUFXO2dCQUdmLElBQUk7c0JBQVosS0FBSztnQkFHRixjQUFjO3NCQURqQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFJVCxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBR25CLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB0eXBlIHsgSVRoZVNlYW1CYXNlTGF5b3V0UmVmIH0gZnJvbSAnLi4vYmFzZS1sYXlvdXQtcmVmJ1xuaW1wb3J0IHsgVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYgfSBmcm9tICcuLi9iYXNlLWxheW91dC10b2tlbnMnXG5cbi8qKlxuICogQ2FuIGJlIHVzZWQgdG8gdG9nZ2xlIHRoZSBleHBhbmQgc3RhdGUgb2YgdGhlIHJlZ2lzdGVyZWQgbmF2LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdidXR0b25bc2VhbUJhc2VMYXlvdXROYXZUb2dnbGVdJyxcbiAgZXhwb3J0QXM6ICdzZWFtQmFzZUxheW91dE5hdlRvZ2dsZSdcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUxheW91dE5hdlRvZ2dsZURpcmVjdGl2ZSB7XG5cbiAgcHVibGljIGJhc2VMYXlvdXQ6IElUaGVTZWFtQmFzZUxheW91dFJlZiB8IHVuZGVmaW5lZFxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50eXBlJylcbiAgZ2V0IF9hdHRyVHlwZSgpIHsgcmV0dXJuIHRoaXMudHlwZSB9XG5cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdidXR0b24nXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICBnZXQgX2F0dHJBcmlhTGFiZWwoKSB7IHJldHVybiB0aGlzLmFyaWFMYWJlbCB8fCBudWxsIH1cblxuICAvKiogU2NyZWVucmVhZGVyIGxhYmVsIGZvciB0aGUgYnV0dG9uLiAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnTmF2aWdhdGlvbiB0b2dnbGUnXG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBfb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5iYXNlTGF5b3V0ICYmIHRoaXMuYmFzZUxheW91dC5yZWdpc3RlcmVkTmF2KSB7XG4gICAgICB0aGlzLmJhc2VMYXlvdXQucmVnaXN0ZXJlZE5hdi50b2dnbGUoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYpIF9iYXNlTGF5b3V0OiBJVGhlU2VhbUJhc2VMYXlvdXRSZWZcbiAgKSB7XG4gICAgdGhpcy5iYXNlTGF5b3V0ID0gX2Jhc2VMYXlvdXRcbiAgfVxuXG59XG4iXX0=
@@ -5,11 +5,10 @@ export * from './directives/base-layout-nav-toggle.directive';
5
5
  export * from './directives/base-layout-side-bar-footer.directive';
6
6
  export * from './directives/base-layout-side-bar.directive';
7
7
  export * from './directives/base-layout-top-bar.directive';
8
- export * from './directives/base-layout-side-bar-header.directive';
9
8
  export * from './base-layout.component';
10
9
  export * from './base-layout.module';
11
10
  export * from './base-layout-nav';
12
11
  export * from './base-layout-ref';
13
12
  export * from './base-layout-tokens';
14
13
  export * from './base-layout-action';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLDRDQUE0QyxDQUFBO0FBQzFELGNBQWMsK0NBQStDLENBQUE7QUFDN0QsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyxvREFBb0QsQ0FBQTtBQUVsRSxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1jb250ZW50LWZvb3Rlci5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtY29udGVudC1oZWFkZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LW5hdi10b2dnbGUuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLWZvb3Rlci5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXRvcC1iYXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLWhlYWRlci5kaXJlY3RpdmUnXG5cbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWxheW91dC5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtbGF5b3V0LW5hdidcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQtcmVmJ1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWxheW91dC10b2tlbnMnXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtbGF5b3V0LWFjdGlvbidcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLDRDQUE0QyxDQUFBO0FBQzFELGNBQWMsK0NBQStDLENBQUE7QUFDN0QsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsNENBQTRDLENBQUE7QUFFMUQsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtY29udGVudC1mb290ZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtaGVhZGVyLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1jb250ZW50LmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1uYXYtdG9nZ2xlLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1zaWRlLWJhci1mb290ZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC10b3AtYmFyLmRpcmVjdGl2ZSdcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWxheW91dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtbGF5b3V0Lm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQtbmF2J1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWxheW91dC1yZWYnXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtbGF5b3V0LXRva2VucydcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQtYWN0aW9uJ1xuIl19
@@ -4,5 +4,4 @@ export * from './side-nav/index';
4
4
  export * from './top-bar/index';
5
5
  export * from './dynamic-router/index';
6
6
  export * from './schema-form/index';
7
- export * from './nav/index';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC9pbmRleCdcbmV4cG9ydCAqIGZyb20gJy4vc2lkZS1uYXYvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL3RvcC1iYXIvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtcm91dGVyL2luZGV4J1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9pbmRleCdcbmV4cG9ydCAqIGZyb20gJy4vbmF2L2luZGV4J1xuIl19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXlvdXQvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC9pbmRleCdcbmV4cG9ydCAqIGZyb20gJy4vc2lkZS1uYXYvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL3RvcC1iYXIvaW5kZXgnXG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtcm91dGVyL2luZGV4J1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEtZm9ybS9pbmRleCdcbiJdfQ==
@@ -130,7 +130,7 @@ export class TheSeamSchemaFormSubmitSplitComponent {
130
130
  }
131
131
  }
132
132
  TheSeamSchemaFormSubmitSplitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
133
- TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i4.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
133
+ TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i4.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
134
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
135
135
  type: Component,
136
136
  args: [{ selector: 'seam-schema-form-submit-split', template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
@@ -1,17 +1,12 @@
1
1
  import { __decorate } from "tslib";
2
+ import { animate, state, style, transition, trigger, } from '@angular/animations';
2
3
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
- import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, ViewEncapsulation } from '@angular/core';
4
- import { BehaviorSubject, map, Subject } from 'rxjs';
4
+ import { ChangeDetectionStrategy, Component, Host, HostBinding, Inject, Input, Optional, SkipSelf, ViewEncapsulation } from '@angular/core';
5
+ import { BehaviorSubject, Subject } from 'rxjs';
6
+ import { map } from 'rxjs/operators';
5
7
  import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
6
8
  import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
7
- import { TheSeamIconModule } from '@theseam/ui-common/icon';
8
- import { notNullOrUndefined } from '@theseam/ui-common/utils';
9
9
  import { THESEAM_SIDE_NAV_ACCESSOR } from '../side-nav-tokens';
10
- import { CommonModule } from '@angular/common';
11
- import { RouterModule } from '@angular/router';
12
- import { A11yModule } from '@angular/cdk/a11y';
13
- import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
14
- import { animate, state, style, transition, trigger } from '@angular/animations';
15
10
  import * as i0 from "@angular/core";
16
11
  import * as i1 from "@angular/common";
17
12
  import * as i2 from "@angular/router";
@@ -20,6 +15,8 @@ import * as i4 from "@angular/cdk/a11y";
20
15
  import * as i5 from "@ng-bootstrap/ng-bootstrap";
21
16
  const EXPANDED_STATE = 'expanded';
22
17
  const COLLAPSED_STATE = 'collapsed';
18
+ const FULL_STATE = 'full';
19
+ const COMPACT_STATE = 'compact';
23
20
  export class SideNavItemComponent {
24
21
  set link(value) { this._link.next(value); }
25
22
  get link() { return this._link.value; }
@@ -45,7 +42,7 @@ export class SideNavItemComponent {
45
42
  container: value.container || 'body',
46
43
  disabled: typeof value?.disabled === 'boolean'
47
44
  ? value.disabled
48
- : typeof value.tooltip === 'string',
45
+ : typeof value.tooltip !== 'string'
49
46
  };
50
47
  }
51
48
  }
@@ -55,8 +52,9 @@ export class SideNavItemComponent {
55
52
  }
56
53
  get _isActiveCssClass() { return this.active; }
57
54
  get _attrDataHierLevel() { return this.hierLevel; }
58
- constructor(_sideNav) {
55
+ constructor(_sideNav, _parent) {
59
56
  this._sideNav = _sideNav;
57
+ this._parent = _parent;
60
58
  this._ngUnsubscribe = new Subject();
61
59
  this.faAngleLeft = faAngleLeft;
62
60
  this.active = false;
@@ -71,6 +69,8 @@ export class SideNavItemComponent {
71
69
  this.badgeTheme = 'danger';
72
70
  this.childGroupAnimState$ = this.expanded$
73
71
  .pipe(map(expanded => expanded ? EXPANDED_STATE : COLLAPSED_STATE));
72
+ this.compactAnimState$ = this.compact$
73
+ .pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE));
74
74
  }
75
75
  ngOnDestroy() {
76
76
  this._ngUnsubscribe.next(undefined);
@@ -88,17 +88,36 @@ export class SideNavItemComponent {
88
88
  this._sideNav.collapse();
89
89
  }
90
90
  }
91
- get showIconBlock() {
92
- return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
93
- }
94
91
  }
95
- SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }], target: i0.ɵɵFactoryTarget.Component });
96
- SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], animations: [
92
+ SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }, { token: SideNavItemComponent, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
93
+ SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [
97
94
  trigger('childGroupAnim', [
98
95
  state(EXPANDED_STATE, style({ height: '*' })),
99
- state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
96
+ state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
100
97
  transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
101
98
  ]),
99
+ trigger('compactAnim', [
100
+ // transition('* <=> *', [
101
+ // query(':enter', [
102
+ // style({ opacity: '0' }),
103
+ // animate('5.2s ease-in-out', style({ opacity: '1' }))
104
+ // ], { optional: true }),
105
+ // query(':leave', [
106
+ // style({ opacity: '1' }),
107
+ // animate('5.2s ease-in-out', style({ opacity: '0' }))
108
+ // ], { optional: true })
109
+ // ])
110
+ // state(FULL_STATE, style({ opacity: '1' })),
111
+ // state(COMPACT_STATE, style({ opacity: '0' })),
112
+ // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
113
+ // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
114
+ // transition('* <=> *', [
115
+ // query(':leave', [
116
+ // style({ opacity: '1' }),
117
+ // animate('5.2s ease-in-out', style({ opacity: '0' }))
118
+ // ], { optional: true })
119
+ // ]),
120
+ ])
102
121
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
103
122
  __decorate([
104
123
  InputBoolean()
@@ -114,25 +133,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
114
133
  args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
115
134
  trigger('childGroupAnim', [
116
135
  state(EXPANDED_STATE, style({ height: '*' })),
117
- state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
136
+ state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
118
137
  transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
119
138
  ]),
120
- ], imports: [
121
- CommonModule,
122
- RouterModule,
123
- TheSeamIconModule,
124
- A11yModule,
125
- NgbTooltipModule,
126
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
139
+ trigger('compactAnim', [
140
+ // transition('* <=> *', [
141
+ // query(':enter', [
142
+ // style({ opacity: '0' }),
143
+ // animate('5.2s ease-in-out', style({ opacity: '1' }))
144
+ // ], { optional: true }),
145
+ // query(':leave', [
146
+ // style({ opacity: '1' }),
147
+ // animate('5.2s ease-in-out', style({ opacity: '0' }))
148
+ // ], { optional: true })
149
+ // ])
150
+ // state(FULL_STATE, style({ opacity: '1' })),
151
+ // state(COMPACT_STATE, style({ opacity: '0' })),
152
+ // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
153
+ // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
154
+ // transition('* <=> *', [
155
+ // query(':leave', [
156
+ // style({ opacity: '1' }),
157
+ // animate('5.2s ease-in-out', style({ opacity: '0' }))
158
+ // ], { optional: true })
159
+ // ]),
160
+ ])
161
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
127
162
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
128
163
  type: Inject,
129
164
  args: [THESEAM_SIDE_NAV_ACCESSOR]
165
+ }] }, { type: SideNavItemComponent, decorators: [{
166
+ type: Optional
167
+ }, {
168
+ type: SkipSelf
169
+ }, {
170
+ type: Host
130
171
  }] }]; }, propDecorators: { itemType: [{
131
172
  type: Input
132
173
  }], icon: [{
133
174
  type: Input
134
- }], hideEmptyIcon: [{
135
- type: Input
136
175
  }], label: [{
137
176
  type: Input
138
177
  }], active: [{
@@ -172,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
172
211
  type: HostBinding,
173
212
  args: ['attr.data-hier-level']
174
213
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQ3hGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbkUsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFtQix5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRC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QixDQUFDLElBQUksY0FDekIsSUFBSTs7MEJBaUdiLE1BQU07MkJBQUMseUJBQXlCOzRDQXBGMUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRW1CLE1BQU07c0JBQTlCLEtBQUs7Z0JBR0YsSUFBSTtzQkFEUCxLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFbUIsU0FBUztzQkFBakMsS0FBSztnQkFFb0IsVUFBVTtzQkFBbkMsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBT0YsT0FBTztzQkFEVixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0YsWUFBWTtzQkFEZixLQUFLO2dCQTJCRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQUUrQyxpQkFBaUI7c0JBQXJFLFdBQVc7dUJBQUMsa0NBQWtDO2dCQUVOLGtCQUFrQjtzQkFBMUQsV0FBVzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgU2VhbUljb24sIFRoZVNlYW1JY29uTW9kdWxlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5pbXBvcnQgdHlwZSB7IFRoZW1lVHlwZXMgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbW9kZWxzJ1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBTaWRlTmF2QWNjZXNzb3IsIFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuLi9zaWRlLW5hdi10b2tlbnMnXG5pbXBvcnQgeyBJU2lkZU5hdkl0ZW0sIFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwLCBTaWRlTmF2SXRlbU1lbnVJdGVtVG9vbHRpcENvbmZpZyB9IGZyb20gJy4uL3NpZGUtbmF2Lm1vZGVscydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IE5nYlRvb2x0aXBNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCdcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5cbmNvbnN0IEVYUEFOREVEX1NUQVRFID0gJ2V4cGFuZGVkJ1xuY29uc3QgQ09MTEFQU0VEX1NUQVRFID0gJ2NvbGxhcHNlZCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1zaWRlLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc2VhbVNpZGVOYXZJdGVtJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NoaWxkR3JvdXBBbmltJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IGhlaWdodDogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIFRoZVNlYW1JY29uTW9kdWxlLFxuICAgIEExMXlNb2R1bGUsXG4gICAgTmdiVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVOYXZJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hpZXJMZXZlbDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2luZGVudFNpemU6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHBhbmRlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jb21wYWN0OiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2FjdGl2ZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICByZWFkb25seSBmYUFuZ2xlTGVmdCA9IGZhQW5nbGVMZWZ0XG5cbiAgQElucHV0KCkgaXRlbVR5cGU6ICdkaXZpZGVyJyB8ICdiYXNpYycgfCAnbGluaycgfCAnYnV0dG9uJyB8ICd0aXRsZScgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgaWNvbjogU2VhbUljb24gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgaGlkZUVtcHR5SWNvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaW5rKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2xpbmsubmV4dCh2YWx1ZSkgfVxuICBnZXQgbGluaygpIHsgcmV0dXJuIHRoaXMuX2xpbmsudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9saW5rID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG4gIHB1YmxpYyByZWFkb25seSBsaW5rJCA9IHRoaXMuX2xpbmsuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRyZW46IElTaWRlTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWwgPSAwXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDEwKSBpbmRlbnRTaXplID0gMTBcblxuICBASW5wdXQoKVxuICBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKSB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB7XG4gICAgICAgICAgdG9vbHRpcDogdmFsdWUsXG4gICAgICAgICAgcGxhY2VtZW50OiAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHZhbHVlLnBsYWNlbWVudCB8fCAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiB2YWx1ZS5jb250YWluZXIgfHwgJ2JvZHknLFxuICAgICAgICAgIGRpc2FibGVkOiB0eXBlb2YgdmFsdWU/LmRpc2FibGVkID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgID8gdmFsdWUuZGlzYWJsZWRcbiAgICAgICAgICAgIDogdHlwZW9mIHZhbHVlLnRvb2x0aXAgPT09ICdzdHJpbmcnLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9iYWRnZVRvb2x0aXA6IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIG1lbnVJdGVtVG9vbHRpcENvbmZpZzogU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWFtLXNpZGUtbmF2LWl0ZW0tLWFjdGl2ZScpIGdldCBfaXNBY3RpdmVDc3NDbGFzcygpIHsgcmV0dXJuIHRoaXMuYWN0aXZlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1oaWVyLWxldmVsJykgZ2V0IF9hdHRyRGF0YUhpZXJMZXZlbCgpIHsgcmV0dXJuIHRoaXMuaGllckxldmVsIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2hpbGRHcm91cEFuaW1TdGF0ZSQ6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEhFU0VBTV9TSURFX05BVl9BQ0NFU1NPUikgcHJpdmF0ZSByZWFkb25seSBfc2lkZU5hdjogU2lkZU5hdkFjY2Vzc29yLFxuICApIHtcbiAgICB0aGlzLmNoaWxkR3JvdXBBbmltU3RhdGUkID0gdGhpcy5leHBhbmRlZCRcbiAgICAgIC5waXBlKG1hcChleHBhbmRlZCA9PiBleHBhbmRlZCA/IEVYUEFOREVEX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFKSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBnZXQgaGFzQ2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5jaGlsZHJlbikgJiYgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwXG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkXG4gIH1cblxuICBfbGlua0NsaWNrZWQoKSB7XG4gICAgLy8gQ2xvc2UgbmF2IHdoZW4gbGluayBpcyBjbGlja2VkIHdoaWxlIGluIG92ZXJsYXkgc3RhdGVcbiAgICBpZiAodGhpcy5fc2lkZU5hdi5vdmVybGF5KSB7XG4gICAgICB0aGlzLl9zaWRlTmF2LmNvbGxhcHNlKClcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0ljb25CbG9jaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuaWNvbikgfHwgdGhpcy5oaWRlRW1wdHlJY29uICE9PSB0cnVlXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBzaWRlLW5hdi1pdGVtLXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UeXBlID09PSAnYmFzaWMnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlQmFzaWNcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UeXBlID09PSAnbGluaydcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVR5cGVMaW5rXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2RpdmlkZXInXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlRGl2aWRlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVR5cGUgPT09ICd0aXRsZSdcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVR5cGVUaXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDaGlsZHJlblwiPlxuICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtLWdyb3VwIHNpZGUtbmF2LS1ncm91cC0tbGV2ZWwte3sgaGllckxldmVsICsgMSB9fVwiXG4gICAgW0BjaGlsZEdyb3VwQW5pbV09XCJjaGlsZEdyb3VwQW5pbVN0YXRlJCB8IGFzeW5jXCI+XG4gICAgPHNlYW0tc2lkZS1uYXYtaXRlbSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY2hpbGRyZW5cIlxuICAgICAgW2hpZXJMZXZlbF09XCJjb21wYWN0ID8gMCA6IChoaWVyTGV2ZWwgKyAxKVwiXG4gICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICBbaXRlbVR5cGVdPVwiJGFueShjaGlsZCkuaXRlbVR5cGVcIlxuICAgICAgW2ljb25dPVwiJGFueShjaGlsZCkuaWNvblwiXG4gICAgICBbbGFiZWxdPVwiJGFueShjaGlsZCkubGFiZWxcIlxuICAgICAgW2xpbmtdPVwiJGFueShjaGlsZCkubGlua1wiXG4gICAgICBbYmFkZ2VUZXh0XT1cIiRhbnkoY2hpbGQpLmJhZGdlPy50ZXh0XCJcbiAgICAgIFtiYWRnZVRoZW1lXT1cIiRhbnkoY2hpbGQpLmJhZGdlPy50aGVtZSB8fCAnZGFuZ2VyJ1wiXG4gICAgICBbYmFkZ2VTckNvbnRlbnRdPVwiJGFueShjaGlsZCkuYmFkZ2U/LnNyQ29udGVudFwiXG4gICAgICBbYmFkZ2VUb29sdGlwXT1cIiRhbnkoY2hpbGQpPy5iYWRnZT8udG9vbHRpcFwiXG4gICAgICBbcXVlcnlQYXJhbXNdPVwiJGFueShjaGlsZCkucXVlcnlQYXJhbXNcIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogdHJ1ZSB9XCJcbiAgICAgIFtjaGlsZHJlbl09XCIkYW55KGNoaWxkKT8uY2hpbGRyZW5cIlxuICAgICAgW2FjdGl2ZV09XCIkYW55KGNoaWxkKS5fX3N0YXRlPy5hY3RpdmVcIlxuICAgICAgW2V4cGFuZGVkXT1cIiRhbnkoY2hpbGQpLl9fc3RhdGU/LmV4cGFuZGVkXCJcbiAgICAgIFtoaWRlRW1wdHlJY29uXT1cImhpZGVFbXB0eUljb25cIlxuICAgICAgW2luZGVudFNpemVdPVwiaW5kZW50U2l6ZVwiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwQ29uZmlnXT1cIm1lbnVJdGVtVG9vbHRpcENvbmZpZ1wiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRdPVwibWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRcIj5cbiAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHlwZUJhc2ljPlxuICA8YnV0dG9uIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBidG4gc2lkZS1uYXYtYnRuIHAtMCBkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtc3RyZXRjaCByb3VuZGVkLTAgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1ub3dyYXAgdy0xMDBcIlxuICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oKVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgW25nYlRvb2x0aXBdPVwibGFiZWxcIlxuICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jbGFzc1wiXG4gICAgW3BsYWNlbWVudF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LnBsYWNlbWVudFwiXG4gICAgW2NvbnRhaW5lcl09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LmNvbnRhaW5lclwiXG4gICAgW2Rpc2FibGVUb29sdGlwXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdi1saW5rIGQtZmxleCBmbGV4LXJvdyB3LTEwMFwiIFtjbGFzcy5uYXYtbGlua19fY29tcGFjdF09XCJjb21wYWN0XCI+XG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIiAqbmdJZj1cInNob3dJY29uQmxvY2tcIj5cbiAgICAgICAgPHNlYW0taWNvbiAqbmdJZj1cImljb25cIiBbaWNvbl09XCJpY29uXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wYWN0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFjb21wYWN0XCIgc2lkZS1uYXYtaXRlbS1sYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMXB4O1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb21wYWN0XCIgY2xhc3M9XCJzci1vbmx5XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkcmVuICYmICFjb21wYWN0XCJcbiAgICAgIGNsYXNzPVwiYnRuIHNpZGUtbmF2LWJ0biBzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWNvbnRhaW5lciByb3VuZGVkLTBcIj5cbiAgICAgIDxzZWFtLWljb25cbiAgICAgICAgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuXCJcbiAgICAgICAgW2NsYXNzLnNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG4tZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbaWNvbl09XCJmYUFuZ2xlTGVmdFwiXG4gICAgICAgIHR5cGU+XG4gICAgICA8L3NlYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlTGluaz5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyB3LTEwMFwiXG4gICAgW25nYlRvb2x0aXBdPVwibGFiZWxcIlxuICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jbGFzc1wiXG4gICAgW3BsYWNlbWVudF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LnBsYWNlbWVudFwiXG4gICAgW2NvbnRhaW5lcl09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LmNvbnRhaW5lclwiXG4gICAgW2Rpc2FibGVUb29sdGlwXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQpXCI+XG4gICAgPGEgKm5nSWY9XCJsaW5rOyBlbHNlIG5vTGlua1wiIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBuYXYtbGluayBkLWZsZXggZmxleC1yb3cgdGV4dC1ub3dyYXAgdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgIFtjbGFzcy5uYXYtbGlua19fY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cImxpbmtcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cInF1ZXJ5UGFyYW1zXCJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICAoY2xpY2spPVwiX2xpbmtDbGlja2VkKClcIj5cbiAgICAgIDxkaXYgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJoaWVyTGV2ZWwgKiBpbmRlbnRTaXplXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaXRlbS0taWNvblwiICpuZ0lmPVwic2hvd0ljb25CbG9ja1wiPlxuICAgICAgICA8c2VhbS1pY29uICpuZ0lmPVwiaWNvblwiIFtpY29uXT1cImljb25cIj48L3NlYW0taWNvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbXBhY3RcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbXBhY3RcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMXB4O1wiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbXBhY3RcIiBjbGFzcz1cInNyLW9ubHlcIiBzaWRlLW5hdi1pdGVtLWxhYmVsPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtQmFkZ2VcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuXG4gICAgPG5nLXRlbXBsYXRlICNub0xpbms+XG4gICAgICA8YSBjbGFzcz1cInNpZGUtbmF2LWl0ZW0gbmF2LWxpbmsgZC1mbGV4IGZsZXgtcm93IHRleHQtbm93cmFwIHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtjbGFzcy5uYXYtbGlua19fY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgW25nYlRvb2x0aXBdPVwibGFiZWxcIlxuICAgICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8uY2xhc3NcIlxuICAgICAgICBbcGxhY2VtZW50XT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8ucGxhY2VtZW50XCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LmNvbnRhaW5lclwiXG4gICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcERpc2FibGVkKVwiPlxuICAgICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaXRlbS0taWNvblwiPlxuICAgICAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJpY29uXCIgW2ljb25dPVwiaWNvblwiPjwvc2VhbS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tcGFjdFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDExcHg7XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29tcGFjdFwiIGNsYXNzPVwic3Itb25seVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxidXR0b24gKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhY29tcGFjdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIHNpZGUtbmF2LWJ0biBzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWNvbnRhaW5lciByb3VuZGVkLTBcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzPlxuICAgICAgPHNlYW0taWNvblxuICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG5cIlxuICAgICAgICBbY2xhc3Muc2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0bi1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgIFtpY29uXT1cImZhQW5nbGVMZWZ0XCJcbiAgICAgICAgdHlwZT5cbiAgICAgIDwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+R3JvdXAgVG9nZ2xlPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVR5cGVEaXZpZGVyPlxuICA8ZGl2IGNsYXNzPVwicHgtMiB3LTEwMFwiPlxuICAgIDxociBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWRpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVR5cGVUaXRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10aXRsZSBwdC0xXCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1CYWRnZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJhZGdlVGV4dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJiYWRnZS1zcGFjZXIgZmxleC1ncm93LTFcIiAqbmdJZj1cIiFjb21wYWN0XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWJhZGdlXCJcbiAgICAgIFtjbGFzcy5zaWRlLW5hdi1pdGVtLS1iYWRnZS1uby1pY29uXT1cIiFpY29uXCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8udG9vbHRpcFwiXG4gICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8uY2xhc3NcIlxuICAgICAgW3BsYWNlbWVudF09XCIkYW55KGJhZGdlVG9vbHRpcCk/LnBsYWNlbWVudFwiXG4gICAgICBbY29udGFpbmVyXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8uY29udGFpbmVyXCJcbiAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJpc01vYmlsZSB8fCAhYmFkZ2VUb29sdGlwIHx8ICEhJGFueShiYWRnZVRvb2x0aXApPy5kaXNhYmxlZFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXt7IGJhZGdlVGhlbWUgfX1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0IHx8ICFpY29uXCI+XG4gICAgICAgICAge3sgYmFkZ2VUZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImJhZGdlU3JDb250ZW50XCI+e3sgYmFkZ2VTckNvbnRlbnQgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQWdCLHFCQUFxQixFQUFlLE1BQU0sdUJBQXVCLENBQUE7QUFDeEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQW1CLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7Ozs7Ozs7QUFXL0UsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFBO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUE7QUFDekIsTUFB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Z0JBMkJHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRStDLGlCQUFpQjtzQkFBckUsV0FBVzt1QkFBQyxrQ0FBa0M7Z0JBRU4sa0JBQWtCO3NCQUExRCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHF1ZXJ5LFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IGZhQW5nbGVMZWZ0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgdHlwZSB7IFNlYW1JY29uIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5pbXBvcnQgdHlwZSB7IFRoZW1lVHlwZXMgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbW9kZWxzJ1xuXG5pbXBvcnQgeyBTaWRlTmF2QWNjZXNzb3IsIFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuLi9zaWRlLW5hdi10b2tlbnMnXG5pbXBvcnQgeyBJU2lkZU5hdkl0ZW0sIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIH0gZnJvbSAnLi4vc2lkZS1uYXYubW9kZWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHtcbiAgdG9vbHRpcD86IHN0cmluZ1xuICBjbGFzcz86IHN0cmluZ1xuICBwbGFjZW1lbnQ/OiBzdHJpbmdcbiAgY29udGFpbmVyPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5jb25zdCBFWFBBTkRFRF9TVEFURSA9ICdleHBhbmRlZCdcbmNvbnN0IENPTExBUFNFRF9TVEFURSA9ICdjb2xsYXBzZWQnXG5cbmNvbnN0IEZVTExfU1RBVEUgPSAnZnVsbCdcbmNvbnN0IENPTVBBQ1RfU1RBVEUgPSAnY29tcGFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1zaWRlLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc2VhbVNpZGVOYXZJdGVtJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NoaWxkR3JvdXBBbmltJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IGhlaWdodDogMCwgJ292ZXJmbG93LXknOiAnaGlkZGVuJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG5cbiAgICB0cmlnZ2VyKCdjb21wYWN0QW5pbScsIFtcbiAgICAgIC8vIHRyYW5zaXRpb24oJyogPD0+IConLCBbXG4gICAgICAvLyAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAvLyAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSksXG4gICAgICAvLyAgICAgYW5pbWF0ZSgnNS4ycyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pKVxuICAgICAgLy8gICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgLy8gICAgIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pLFxuICAgICAgLy8gICAgIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6ICcwJyB9KSlcbiAgICAgIC8vICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgLy8gXSlcblxuICAgICAgLy8gc3RhdGUoRlVMTF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgLy8gc3RhdGUoQ09NUEFDVF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtGVUxMX1NUQVRFfSA8PT4gJHtDT01QQUNUX1NUQVRFfWAsIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0ZVTExfU1RBVEV9IDw9PiAke0NPTVBBQ1RfU1RBVEV9YCwgW1xuICAgICAgLy8gdHJhbnNpdGlvbignKiA8PT4gKicsIFtcbiAgICAgIC8vICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgIC8vICAgICBzdHlsZSh7IG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpXG4gICAgICAvLyAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIC8vIF0pLFxuXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGllckxldmVsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5kZW50U2l6ZTogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvbXBhY3Q6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWN0aXZlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHJlYWRvbmx5IGZhQW5nbGVMZWZ0ID0gZmFBbmdsZUxlZnRcblxuICBASW5wdXQoKSBpdGVtVHlwZTogJ2RpdmlkZXInIHwgJ2Jhc2ljJyB8ICdsaW5rJyB8ICdidXR0b24nIHwgJ3RpdGxlJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaW5rKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2xpbmsubmV4dCh2YWx1ZSkgfVxuICBnZXQgbGluaygpIHsgcmV0dXJuIHRoaXMuX2xpbmsudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9saW5rID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG4gIHB1YmxpYyByZWFkb25seSBsaW5rJCA9IHRoaXMuX2xpbmsuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRyZW46IElTaWRlTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWwgPSAwXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDEwKSBpbmRlbnRTaXplID0gMTBcblxuICBASW5wdXQoKVxuICBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKSB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB7XG4gICAgICAgICAgdG9vbHRpcDogdmFsdWUsXG4gICAgICAgICAgcGxhY2VtZW50OiAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHZhbHVlLnBsYWNlbWVudCB8fCAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiB2YWx1ZS5jb250YWluZXIgfHwgJ2JvZHknLFxuICAgICAgICAgIGRpc2FibGVkOiB0eXBlb2YgdmFsdWU/LmRpc2FibGVkID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgID8gdmFsdWUuZGlzYWJsZWRcbiAgICAgICAgICAgIDogdHlwZW9mIHZhbHVlLnRvb2x0aXAgIT09ICdzdHJpbmcnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYmFkZ2VUb29sdGlwID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2JhZGdlVG9vbHRpcDogU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgbWVudUl0ZW1Ub29sdGlwQ29uZmlnOiBTaWRlTmF2SXRlbU1lbnVJdGVtVG9vbHRpcENvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBtZW51SXRlbVRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tc2lkZS1uYXYtaXRlbS0tYWN0aXZlJykgZ2V0IF9pc0FjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5hY3RpdmUgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWhpZXItbGV2ZWwnKSBnZXQgX2F0dHJEYXRhSGllckxldmVsKCkgeyByZXR1cm4gdGhpcy5oaWVyTGV2ZWwgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjaGlsZEdyb3VwQW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0QW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUSEVTRUFNX1NJREVfTkFWX0FDQ0VTU09SKSBwcml2YXRlIHJlYWRvbmx5IF9zaWRlTmF2OiBTaWRlTmF2QWNjZXNzb3IsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnQ/OiBTaWRlTmF2SXRlbUNvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmNoaWxkR3JvdXBBbmltU3RhdGUkID0gdGhpcy5leHBhbmRlZCRcbiAgICAgIC5waXBlKG1hcChleHBhbmRlZCA9PiBleHBhbmRlZCA/IEVYUEFOREVEX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFKSlcblxuICAgIHRoaXMuY29tcGFjdEFuaW1TdGF0ZSQgPSB0aGlzLmNvbXBhY3QkXG4gICAgICAucGlwZShtYXAoY29tcGFjdCA9PiBjb21wYWN0ID8gQ09NUEFDVF9TVEFURSA6IEZVTExfU1RBVEUpKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmNoaWxkcmVuKSAmJiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbigpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWRcbiAgfVxuXG4gIF9saW5rQ2xpY2tlZCgpIHtcbiAgICAvLyBDbG9zZSBuYXYgd2hlbiBsaW5rIGlzIGNsaWNrZWQgd2hpbGUgaW4gb3ZlcmxheSBzdGF0ZVxuICAgIGlmICh0aGlzLl9zaWRlTmF2Lm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX3NpZGVOYXYuY29sbGFwc2UoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2Jhc2ljJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZUJhc2ljXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2xpbmsnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlTGlua1wiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVR5cGUgPT09ICdkaXZpZGVyJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZURpdmlkZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UeXBlID09PSAndGl0bGUnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlVGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2hpbGRyZW5cIj5cbiAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LS1ncm91cCBzaWRlLW5hdi0tZ3JvdXAtLWxldmVsLXt7IGhpZXJMZXZlbCArIDEgfX1cIlxuICAgIFtAY2hpbGRHcm91cEFuaW1dPVwiY2hpbGRHcm91cEFuaW1TdGF0ZSQgfCBhc3luY1wiPlxuICAgIDxzZWFtLXNpZGUtbmF2LWl0ZW0gKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCJcbiAgICAgIFtoaWVyTGV2ZWxdPVwiY29tcGFjdCA/IDAgOiAoaGllckxldmVsICsgMSlcIlxuICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgW2l0ZW1UeXBlXT1cIiRhbnkoY2hpbGQpLml0ZW1UeXBlXCJcbiAgICAgIFtpY29uXT1cIiRhbnkoY2hpbGQpLmljb25cIlxuICAgICAgW2xhYmVsXT1cIiRhbnkoY2hpbGQpLmxhYmVsXCJcbiAgICAgIFtsaW5rXT1cIiRhbnkoY2hpbGQpLmxpbmtcIlxuICAgICAgW2JhZGdlVGV4dF09XCIkYW55KGNoaWxkKS5iYWRnZT8udGV4dFwiXG4gICAgICBbYmFkZ2VUaGVtZV09XCIkYW55KGNoaWxkKS5iYWRnZT8udGhlbWUgfHwgJ2RhbmdlcidcIlxuICAgICAgW2JhZGdlU3JDb250ZW50XT1cIiRhbnkoY2hpbGQpLmJhZGdlPy5zckNvbnRlbnRcIlxuICAgICAgW2JhZGdlVG9vbHRpcF09XCIkYW55KGNoaWxkKT8uYmFkZ2U/LnRvb2x0aXBcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIiRhbnkoY2hpbGQpLnF1ZXJ5UGFyYW1zXCJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICBbY2hpbGRyZW5dPVwiJGFueShjaGlsZCk/LmNoaWxkcmVuXCJcbiAgICAgIFthY3RpdmVdPVwiJGFueShjaGlsZCkuX19zdGF0ZT8uYWN0aXZlXCJcbiAgICAgIFtleHBhbmRlZF09XCIkYW55KGNoaWxkKS5fX3N0YXRlPy5leHBhbmRlZFwiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwQ29uZmlnXT1cIm1lbnVJdGVtVG9vbHRpcENvbmZpZ1wiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRdPVwibWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRcIj5cbiAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHlwZUJhc2ljPlxuICA8YnV0dG9uIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBidG4gc2lkZS1uYXYtYnRuIHAtMCBkLWZsZXggZmxleC1yb3cgcm91bmRlZC0wIHRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbm93cmFwIHctMTAwXCJcbiAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzXG4gICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKClcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8uY2xhc3NcIlxuICAgIFtwbGFjZW1lbnRdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5wbGFjZW1lbnRcIlxuICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgIFtkaXNhYmxlVG9vbHRpcF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcERpc2FibGVkKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJuYXYtbGluayBkLWZsZXggZmxleC1yb3cgdy0xMDBcIiBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiPlxuICAgICAgPGRpdiBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cImhpZXJMZXZlbCAqIGluZGVudFNpemVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1pY29uXCI+XG4gICAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJpY29uXCIgW2ljb25dPVwiaWNvblwiPjwvc2VhbS1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tcGFjdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtQmFkZ2VcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gKm5nSWY9XCIhY29tcGFjdFwiIHNpZGUtbmF2LWl0ZW0tbGFiZWwgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTFweDtcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29tcGFjdFwiIGNsYXNzPVwic3Itb25seVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbXBhY3RcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhY29tcGFjdFwiXG4gICAgICBjbGFzcz1cImJ0biBzaWRlLW5hdi1idG4gc2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0bi1jb250YWluZXIgcm91bmRlZC0wXCI+XG4gICAgICA8c2VhbS1pY29uXG4gICAgICAgIGNsYXNzPVwic2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0blwiXG4gICAgICAgIFtjbGFzcy5zaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWV4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgW2ljb25dPVwiZmFBbmdsZUxlZnRcIlxuICAgICAgICB0eXBlPlxuICAgICAgPC9zZWFtLWljb24+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHlwZUxpbms+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgdy0xMDBcIlxuICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8uY2xhc3NcIlxuICAgIFtwbGFjZW1lbnRdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5wbGFjZW1lbnRcIlxuICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgIFtkaXNhYmxlVG9vbHRpcF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcERpc2FibGVkKVwiPlxuICAgIDxhICpuZ0lmPVwibGluazsgZWxzZSBub0xpbmtcIiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0gbmF2LWxpbmsgZC1mbGV4IGZsZXgtcm93IHRleHQtbm93cmFwIHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbcm91dGVyTGlua109XCJsaW5rXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJxdWVyeVBhcmFtc1wiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiB0cnVlIH1cIlxuICAgICAgKGNsaWNrKT1cIl9saW5rQ2xpY2tlZCgpXCI+XG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIj5cbiAgICAgICAgPHNlYW0taWNvbiAqbmdJZj1cImljb25cIiBbaWNvbl09XCJpY29uXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wYWN0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFjb21wYWN0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTFweDtcIiBzaWRlLW5hdi1pdGVtLWxhYmVsPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb21wYWN0XCIgY2xhc3M9XCJzci1vbmx5XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbm9MaW5rPlxuICAgICAgPGEgY2xhc3M9XCJzaWRlLW5hdi1pdGVtIG5hdi1saW5rIGQtZmxleCBmbGV4LXJvdyB0ZXh0LW5vd3JhcCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LmNsYXNzXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LnBsYWNlbWVudFwiXG4gICAgICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiJGFueShtZW51SXRlbVRvb2x0aXBEaXNhYmxlZClcIj5cbiAgICAgICAgPGRpdiBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cImhpZXJMZXZlbCAqIGluZGVudFNpemVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIj5cbiAgICAgICAgICA8c2VhbS1pY29uICpuZ0lmPVwiaWNvblwiIFtpY29uXT1cImljb25cIj48L3NlYW0taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbXBhY3RcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMXB4O1wiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImNvbXBhY3RcIiBjbGFzcz1cInNyLW9ubHlcIiBzaWRlLW5hdi1pdGVtLWxhYmVsPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ2hpbGRyZW4gJiYgIWNvbXBhY3RcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBzaWRlLW5hdi1idG4gc2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0bi1jb250YWluZXIgcm91bmRlZC0wXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZHJlbigpXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1cz5cbiAgICAgIDxzZWFtLWljb25cbiAgICAgICAgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuXCJcbiAgICAgICAgW2NsYXNzLnNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG4tZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbaWNvbl09XCJmYUFuZ2xlTGVmdFwiXG4gICAgICAgIHR5cGU+XG4gICAgICA8L3NlYW0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdyb3VwIFRvZ2dsZTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlRGl2aWRlcj5cbiAgPGRpdiBjbGFzcz1cInB4LTIgdy0xMDBcIj5cbiAgICA8aHIgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1kaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlVGl0bGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgIDxzcGFuIGNsYXNzPVwic2lkZS1uYXYtaXRlbS0tdGl0bGUgcHQtMVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtQmFkZ2U+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJiYWRnZVRleHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmFkZ2Utc3BhY2VyIGZsZXgtZ3Jvdy0xXCIgKm5nSWY9XCIhY29tcGFjdFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1iYWRnZVwiXG4gICAgICBbY2xhc3Muc2lkZS1uYXYtaXRlbS0tYmFkZ2Utbm8taWNvbl09XCIhaWNvblwiXG4gICAgICBbbmdiVG9vbHRpcF09XCIkYW55KGJhZGdlVG9vbHRpcCk/LnRvb2x0aXBcIlxuICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KGJhZGdlVG9vbHRpcCk/LmNsYXNzXCJcbiAgICAgIFtwbGFjZW1lbnRdPVwiJGFueShiYWRnZVRvb2x0aXApPy5wbGFjZW1lbnRcIlxuICAgICAgW2NvbnRhaW5lcl09XCIkYW55KGJhZGdlVG9vbHRpcCk/LmNvbnRhaW5lclwiXG4gICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiaXNNb2JpbGUgfHwgIWJhZGdlVG9vbHRpcCB8fCAhISRhbnkoYmFkZ2VUb29sdGlwKT8uZGlzYWJsZWRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS17eyBiYWRnZVRoZW1lIH19XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdCB8fCAhaWNvblwiPlxuICAgICAgICAgIHt7IGJhZGdlVGV4dCB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWRnZVNyQ29udGVudFwiPnt7IGJhZGdlU3JDb250ZW50IH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=