@fundamental-ngx/core 0.36.0-rc.19 → 0.36.0-rc.21

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 (129) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/content-density/package.json +2 -2
  16. package/date-picker/package.json +1 -1
  17. package/datetime/package.json +1 -1
  18. package/datetime-picker/package.json +1 -1
  19. package/dialog/package.json +1 -1
  20. package/dynamic-page/package.json +1 -1
  21. package/dynamic-side-content/package.json +1 -1
  22. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +23 -13
  23. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +5 -1
  24. package/esm2020/feed-list-item/feed-list-item.module.mjs +4 -5
  25. package/esm2020/utils/directives/truncate/truncate.directive.mjs +27 -96
  26. package/esm2020/utils/pipes/pipe.module.mjs +33 -4
  27. package/esm2020/utils/pipes/truncate.pipe.mjs +16 -0
  28. package/esm2020/utils/public_api.mjs +2 -1
  29. package/facets/package.json +1 -1
  30. package/feed-input/package.json +1 -1
  31. package/feed-list-item/components/item/feed-list-item.component.d.ts +6 -6
  32. package/feed-list-item/esm2020/components/item/feed-list-item.component.mjs +23 -13
  33. package/feed-list-item/esm2020/components/list/feed-list.component.mjs +5 -1
  34. package/feed-list-item/esm2020/feed-list-item.module.mjs +4 -5
  35. package/feed-list-item/feed-list-item.module.d.ts +1 -1
  36. package/feed-list-item/fesm2015/fundamental-ngx-core-feed-list-item.mjs +29 -15
  37. package/feed-list-item/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  38. package/feed-list-item/fesm2020/fundamental-ngx-core-feed-list-item.mjs +29 -15
  39. package/feed-list-item/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  40. package/feed-list-item/package.json +1 -1
  41. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +29 -15
  42. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  43. package/fesm2015/fundamental-ngx-core-utils.mjs +71 -96
  44. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  45. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +29 -15
  46. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  47. package/fesm2020/fundamental-ngx-core-utils.mjs +71 -96
  48. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  49. package/file-uploader/package.json +1 -1
  50. package/fixed-card-layout/package.json +1 -1
  51. package/flexible-column-layout/package.json +1 -1
  52. package/form/package.json +1 -1
  53. package/formatted-text/package.json +1 -1
  54. package/grid-list/package.json +1 -1
  55. package/icon/package.json +1 -1
  56. package/illustrated-message/package.json +1 -1
  57. package/infinite-scroll/package.json +1 -1
  58. package/info-label/package.json +1 -1
  59. package/inline-help/package.json +1 -1
  60. package/input-group/package.json +1 -1
  61. package/layout-grid/package.json +1 -1
  62. package/layout-panel/package.json +1 -1
  63. package/link/package.json +1 -1
  64. package/list/package.json +1 -1
  65. package/menu/package.json +1 -1
  66. package/message-box/package.json +1 -1
  67. package/message-strip/package.json +1 -1
  68. package/message-toast/package.json +1 -1
  69. package/micro-process-flow/package.json +1 -1
  70. package/mobile-mode/package.json +1 -1
  71. package/multi-input/package.json +1 -1
  72. package/nested-list/package.json +1 -1
  73. package/notification/package.json +1 -1
  74. package/object-identifier/package.json +1 -1
  75. package/object-marker/package.json +1 -1
  76. package/object-number/package.json +1 -1
  77. package/object-status/package.json +1 -1
  78. package/overflow-layout/package.json +4 -4
  79. package/package.json +2 -2
  80. package/pagination/package.json +1 -1
  81. package/panel/package.json +1 -1
  82. package/popover/package.json +1 -1
  83. package/product-switch/package.json +1 -1
  84. package/progress-indicator/package.json +1 -1
  85. package/quick-view/package.json +1 -1
  86. package/radio/package.json +1 -1
  87. package/rating-indicator/package.json +1 -1
  88. package/resizable-card-layout/package.json +1 -1
  89. package/scroll-spy/package.json +1 -1
  90. package/scrollbar/package.json +1 -1
  91. package/segmented-button/package.json +1 -1
  92. package/select/package.json +1 -1
  93. package/shared/package.json +1 -1
  94. package/shellbar/package.json +1 -1
  95. package/side-navigation/package.json +1 -1
  96. package/slider/package.json +1 -1
  97. package/split-button/package.json +1 -1
  98. package/splitter/package.json +1 -1
  99. package/status-indicator/package.json +1 -1
  100. package/step-input/package.json +1 -1
  101. package/switch/package.json +1 -1
  102. package/table/package.json +1 -1
  103. package/tabs/package.json +1 -1
  104. package/text/package.json +1 -1
  105. package/theming/package.json +1 -1
  106. package/tile/package.json +1 -1
  107. package/time/package.json +1 -1
  108. package/time-picker/package.json +1 -1
  109. package/timeline/package.json +1 -1
  110. package/title/package.json +1 -1
  111. package/token/package.json +1 -1
  112. package/toolbar/package.json +1 -1
  113. package/tree/package.json +1 -1
  114. package/upload-collection/package.json +1 -1
  115. package/utils/directives/truncate/truncate.directive.d.ts +21 -51
  116. package/utils/esm2020/directives/truncate/truncate.directive.mjs +27 -96
  117. package/utils/esm2020/pipes/pipe.module.mjs +33 -4
  118. package/utils/esm2020/pipes/truncate.pipe.mjs +16 -0
  119. package/utils/esm2020/public_api.mjs +2 -1
  120. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +71 -96
  121. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  122. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +71 -96
  123. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  124. package/utils/package.json +1 -1
  125. package/utils/pipes/pipe.module.d.ts +2 -1
  126. package/utils/pipes/truncate.pipe.d.ts +7 -0
  127. package/utils/public_api.d.ts +1 -0
  128. package/vertical-navigation/package.json +1 -1
  129. package/wizard/package.json +1 -1
@@ -1,32 +1,23 @@
1
- import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';
2
- import { fromEvent } from 'rxjs';
1
+ import { Directive, ElementRef, Input } from '@angular/core';
3
2
  import { coerceNumberProperty } from '@angular/cdk/coercion';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
3
  import * as i0 from "@angular/core";
6
- export var DefaultTruncateCharCount;
7
- (function (DefaultTruncateCharCount) {
8
- DefaultTruncateCharCount[DefaultTruncateCharCount["MAX"] = 500] = "MAX";
9
- DefaultTruncateCharCount[DefaultTruncateCharCount["MIN"] = 300] = "MIN";
10
- })(DefaultTruncateCharCount || (DefaultTruncateCharCount = {}));
11
4
  export class TruncateDirective {
12
5
  /** @hidden */
13
- constructor(_elementRef, _renderer) {
6
+ constructor(_elementRef) {
14
7
  this._elementRef = _elementRef;
15
- this._renderer = _renderer;
16
8
  /**
17
9
  * Truncating state
18
10
  */
19
11
  this.fdTruncateState = false;
20
- /**
21
- * Event return count of characters from the target
22
- */
23
- this.charCountUpdate = new EventEmitter();
12
+ /** @hidden */
13
+ this._customWidthCount = 200;
14
+ this.takeDefaultStyleOnce = true;
24
15
  }
25
16
  /**
26
- * Count chars for truncating
17
+ * Width in pixel for truncation of an element , by default
27
18
  */
28
- set fdTruncateChars(value) {
29
- this._customCharCount = coerceNumberProperty(value);
19
+ set fdTruncateWidth(value) {
20
+ this._customWidthCount = coerceNumberProperty(value);
30
21
  }
31
22
  /**
32
23
  * Root native element
@@ -34,106 +25,46 @@ export class TruncateDirective {
34
25
  get rootElement() {
35
26
  return this._elementRef.nativeElement;
36
27
  }
37
- /** @hidden */
38
- ngAfterViewInit() {
39
- if (this.rootElement) {
40
- this._initTruncate();
41
- this.windowResize$ = fromEvent(window, 'resize')
42
- .pipe(distinctUntilChanged(), debounceTime(200))
43
- .subscribe({
44
- next: () => this._checkWidth()
45
- });
46
- this.refreshTruncate();
28
+ /**
29
+ * Method saves default style of target element before first truncate.
30
+ */
31
+ setDefaultStyle() {
32
+ if (this.takeDefaultStyleOnce) {
33
+ this._defaultStyle = this._truncateTarget.style.cssText;
34
+ this.takeDefaultStyleOnce = false;
47
35
  }
48
36
  }
49
37
  /** @hidden */
50
- ngOnDestroy() {
51
- if (this.windowResize$) {
52
- this.windowResize$.unsubscribe();
38
+ ngAfterViewInit() {
39
+ if (this.rootElement) {
40
+ this._truncate();
53
41
  }
54
42
  }
55
43
  /** @hidden */
56
44
  ngOnChanges() {
57
- this.refreshTarget(this);
58
- this.reset();
59
- this.refreshTruncate();
60
- }
61
- reset() {
62
- if (this._truncateTarget && this._originalText) {
63
- this._truncateTarget.textContent = this._originalText + ' ';
64
- }
65
- }
66
- refreshTarget(event) {
67
- this._truncateTarget = event.rootElement;
68
- this._originalText = event.fdTruncateTargetText;
69
- this.reset();
70
- this.refreshTruncate();
71
- }
72
- refreshTruncate() {
73
- if (this.fdTruncateState && this._hasMore) {
74
- this._toggleTruncate();
75
- }
76
- }
77
- /** @hidden
78
- * Initialising truncate properties
79
- */
80
- _initTruncate() {
81
- const style = window.getComputedStyle(this.rootElement, null);
82
- this._widthCount = parseInt(style.getPropertyValue('font-size'), 10) * 25;
83
- this._checkWidth();
84
- if (this._originalText && this._originalText.length > this._maxChars) {
85
- this._hasMore = true;
86
- this.charCountUpdate.emit(this._hasMore);
87
- this._truncate();
88
- }
89
- }
90
- /** @hidden
91
- * Toggle present text
92
- */
93
- _toggleTruncate() {
94
- this._truncateTarget.textContent = this.fdTruncateState ? this._truncatedText : this._originalText;
45
+ this._truncate();
95
46
  }
96
- /** @hidden
97
- * Truncate text in the target box, if the target exceeds the number of characters
98
- */
99
47
  _truncate() {
48
+ this._truncateTarget = this.rootElement;
100
49
  if (!this._truncateTarget) {
101
50
  return;
102
51
  }
103
- const ellipsisTextArray = this._originalText.split('');
104
- while (ellipsisTextArray.length >= this._maxChars) {
105
- ellipsisTextArray.pop();
106
- }
107
- this._truncatedText = this._truncateTarget.textContent = ellipsisTextArray.join('') + ' … ';
108
- }
109
- /** @hidden */
110
- _checkWidth() {
111
- const width = this.rootElement.offsetWidth;
112
- this._maxChars = this._customCharCount
113
- ? this._customCharCount
114
- : width >= this._widthCount
115
- ? DefaultTruncateCharCount.MAX
116
- : DefaultTruncateCharCount.MIN;
117
- if (this.fdTruncateState && this._hasMore) {
118
- this._truncate();
119
- }
52
+ this.setDefaultStyle();
53
+ this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;
54
+ this._truncateTarget.style.cssText = this.fdTruncateState ? this._truncationStyle : this._defaultStyle;
120
55
  }
121
56
  }
122
- TruncateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
123
- TruncateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: TruncateDirective, selector: "[fd-truncate]", inputs: { fdTruncateTargetText: "fdTruncateTargetText", fdTruncateChars: "fdTruncateChars", fdTruncateState: "fdTruncateState" }, outputs: { charCountUpdate: "charCountUpdate" }, usesOnChanges: true, ngImport: i0 });
57
+ TruncateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TruncateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
58
+ TruncateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: TruncateDirective, selector: "[fd-truncate]", inputs: { fdTruncateWidth: "fdTruncateWidth", fdTruncateState: "fdTruncateState" }, usesOnChanges: true, ngImport: i0 });
124
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TruncateDirective, decorators: [{
125
60
  type: Directive,
126
61
  args: [{
127
62
  // eslint-disable-next-line @angular-eslint/directive-selector
128
63
  selector: '[fd-truncate]'
129
64
  }]
130
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { fdTruncateTargetText: [{
131
- type: Input
132
- }], fdTruncateChars: [{
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fdTruncateWidth: [{
133
66
  type: Input
134
67
  }], fdTruncateState: [{
135
68
  type: Input
136
- }], charCountUpdate: [{
137
- type: Output
138
69
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHcEUsTUFBTSxDQUFOLElBQVksd0JBR1g7QUFIRCxXQUFZLHdCQUF3QjtJQUNoQyx1RUFBUyxDQUFBO0lBQ1QsdUVBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBTUQsTUFBTSxPQUFPLGlCQUFpQjtJQW1EMUIsY0FBYztJQUNkLFlBQTZCLFdBQXVCLEVBQW1CLFNBQW9CO1FBQTlELGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQW1CLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFyQzNGOztXQUVHO1FBRUgsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEI7O1dBRUc7UUFFSCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUEyQmdELENBQUM7SUE3Qy9GOztPQUVHO0lBQ0gsSUFDSSxlQUFlLENBQUMsS0FBdUI7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUF5Q0Q7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztpQkFDM0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQyxTQUFTLENBQUM7Z0JBQ1AsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1lBRVAsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1NBQy9EO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUF3QjtRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8saUJBQWlCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDL0MsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDaEcsQ0FBQztJQUVELGNBQWM7SUFDTixXQUFXO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFFM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZCLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVc7Z0JBQzNCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHO2dCQUM5QixDQUFDLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7OzhHQWpLUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGVBQWU7aUJBQzVCO3lIQU1HLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFPRixlQUFlO3NCQURsQixLQUFLO2dCQVNOLGVBQWU7c0JBRGQsS0FBSztnQkFPTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuZXhwb3J0IGVudW0gRGVmYXVsdFRydW5jYXRlQ2hhckNvdW50IHtcbiAgICBNQVggPSA1MDAsXG4gICAgTUlOID0gMzAwXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmQtdHJ1bmNhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUcnVuY2F0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgdGV4dCBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHJ1bmNhdGVUYXJnZXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb3VudCBjaGFycyBmb3IgdHJ1bmNhdGluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZkVHJ1bmNhdGVDaGFycyh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9jdXN0b21DaGFyQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGluZyBzdGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUcnVuY2F0ZVN0YXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCByZXR1cm4gY291bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSB0YXJnZXRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBjaGFyQ291bnRVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RydW5jYXRlVGFyZ2V0OiBIVE1MRWxlbWVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RydW5jYXRlZFRleHQ6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ2hhckNvdW50OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpZHRoQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4Q2hhcnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFzTW9yZTogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB3aW5kb3dSZXNpemUkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgICAvKipcbiAgICAgKiBSb290IG5hdGl2ZSBlbGVtZW50XG4gICAgICovXG4gICAgZ2V0IHJvb3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRUcnVuY2F0ZSgpO1xuXG4gICAgICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZSQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5fY2hlY2tXaWR0aCgpXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRydW5jYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy53aW5kb3dSZXNpemUkKSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaFRhcmdldCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hUcnVuY2F0ZSgpO1xuICAgIH1cblxuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdHJ1bmNhdGVUYXJnZXQgJiYgdGhpcy5fb3JpZ2luYWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl90cnVuY2F0ZVRhcmdldC50ZXh0Q29udGVudCA9IHRoaXMuX29yaWdpbmFsVGV4dCArICcgJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2hUYXJnZXQoZXZlbnQ6IFRydW5jYXRlRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RydW5jYXRlVGFyZ2V0ID0gZXZlbnQucm9vdEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX29yaWdpbmFsVGV4dCA9IGV2ZW50LmZkVHJ1bmNhdGVUYXJnZXRUZXh0O1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucmVmcmVzaFRydW5jYXRlKCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaFRydW5jYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mZFRydW5jYXRlU3RhdGUgJiYgdGhpcy5faGFzTW9yZSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlVHJ1bmNhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogIEluaXRpYWxpc2luZyB0cnVuY2F0ZSBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdFRydW5jYXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsIG51bGwpO1xuICAgICAgICB0aGlzLl93aWR0aENvdW50ID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksIDEwKSAqIDI1O1xuXG4gICAgICAgIHRoaXMuX2NoZWNrV2lkdGgoKTtcblxuICAgICAgICBpZiAodGhpcy5fb3JpZ2luYWxUZXh0ICYmIHRoaXMuX29yaWdpbmFsVGV4dC5sZW5ndGggPiB0aGlzLl9tYXhDaGFycykge1xuICAgICAgICAgICAgdGhpcy5faGFzTW9yZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNoYXJDb3VudFVwZGF0ZS5lbWl0KHRoaXMuX2hhc01vcmUpO1xuICAgICAgICAgICAgdGhpcy5fdHJ1bmNhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogIFRvZ2dsZSBwcmVzZW50IHRleHRcbiAgICAgKi9cbiAgICBwcml2YXRlIF90b2dnbGVUcnVuY2F0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJ1bmNhdGVUYXJnZXQudGV4dENvbnRlbnQgPSB0aGlzLmZkVHJ1bmNhdGVTdGF0ZSA/IHRoaXMuX3RydW5jYXRlZFRleHQgOiB0aGlzLl9vcmlnaW5hbFRleHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUcnVuY2F0ZSB0ZXh0IGluIHRoZSB0YXJnZXQgYm94LCBpZiB0aGUgdGFyZ2V0IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHJ1bmNhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fdHJ1bmNhdGVUYXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsbGlwc2lzVGV4dEFycmF5ID0gdGhpcy5fb3JpZ2luYWxUZXh0LnNwbGl0KCcnKTtcbiAgICAgICAgd2hpbGUgKGVsbGlwc2lzVGV4dEFycmF5Lmxlbmd0aCA+PSB0aGlzLl9tYXhDaGFycykge1xuICAgICAgICAgICAgZWxsaXBzaXNUZXh0QXJyYXkucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90cnVuY2F0ZWRUZXh0ID0gdGhpcy5fdHJ1bmNhdGVUYXJnZXQudGV4dENvbnRlbnQgPSBlbGxpcHNpc1RleHRBcnJheS5qb2luKCcnKSArICcg4oCmICc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja1dpZHRoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMucm9vdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgdGhpcy5fbWF4Q2hhcnMgPSB0aGlzLl9jdXN0b21DaGFyQ291bnRcbiAgICAgICAgICAgID8gdGhpcy5fY3VzdG9tQ2hhckNvdW50XG4gICAgICAgICAgICA6IHdpZHRoID49IHRoaXMuX3dpZHRoQ291bnRcbiAgICAgICAgICAgID8gRGVmYXVsdFRydW5jYXRlQ2hhckNvdW50Lk1BWFxuICAgICAgICAgICAgOiBEZWZhdWx0VHJ1bmNhdGVDaGFyQ291bnQuTUlOO1xuXG4gICAgICAgIGlmICh0aGlzLmZkVHJ1bmNhdGVTdGF0ZSAmJiB0aGlzLl9oYXNNb3JlKSB7XG4gICAgICAgICAgICB0aGlzLl90cnVuY2F0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPN0QsTUFBTSxPQUFPLGlCQUFpQjtJQWlDMUIsY0FBYztJQUNkLFlBQTZCLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBekJwRDs7V0FFRztRQUVILG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGNBQWM7UUFDTixzQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFVeEIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO0lBUW1CLENBQUM7SUFqQ3hEOztPQUVHO0lBQ0gsSUFDSSxlQUFlLENBQUMsS0FBdUI7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUE2QkQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUNELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sU0FBUztRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsZUFBZSxJQUFJLENBQUMsaUJBQWlCLHFFQUFxRSxDQUFDO1FBQ3hKLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0csQ0FBQzs7OEdBekVRLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZUFBZTtpQkFDNUI7aUdBTU8sZUFBZTtzQkFEbEIsS0FBSztnQkFTTixlQUFlO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmQtdHJ1bmNhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUcnVuY2F0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogV2lkdGggaW4gcGl4ZWwgZm9yIHRydW5jYXRpb24gb2YgYW4gZWxlbWVudCAsIGJ5IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmZFRydW5jYXRlV2lkdGgodmFsdWU6IE51bGxhYmxlPG51bWJlcj4pIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tV2lkdGhDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcnVuY2F0aW5nIHN0YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmZFRydW5jYXRlU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VzdG9tV2lkdGhDb3VudCA9IDIwMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJ1bmNhdGVUYXJnZXQ6IEhUTUxFbGVtZW50O1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBzYXZlcyBkZWZhdWx0IHN0eWxlIG9mIGVsZW1lbnQgYmVmb3JlIHRydW5jYXRpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0U3R5bGU6IHN0cmluZztcblxuICAgIHByaXZhdGUgdGFrZURlZmF1bHRTdHlsZU9uY2UgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiB0cnVuY2F0aW9uIHN0eWxlIGZvciB0cnVuY2F0aW5nIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF90cnVuY2F0aW9uU3R5bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKlxuICAgICAqIFJvb3QgbmF0aXZlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBnZXQgcm9vdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBzYXZlcyBkZWZhdWx0IHN0eWxlIG9mIHRhcmdldCBlbGVtZW50IGJlZm9yZSBmaXJzdCB0cnVuY2F0ZS5cbiAgICAgKi9cbiAgICBzZXREZWZhdWx0U3R5bGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRha2VEZWZhdWx0U3R5bGVPbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0U3R5bGUgPSB0aGlzLl90cnVuY2F0ZVRhcmdldC5zdHlsZS5jc3NUZXh0O1xuICAgICAgICAgICAgdGhpcy50YWtlRGVmYXVsdFN0eWxlT25jZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yb290RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5fdHJ1bmNhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RydW5jYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdHJ1bmNhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RydW5jYXRlVGFyZ2V0ID0gdGhpcy5yb290RWxlbWVudDtcblxuICAgICAgICBpZiAoIXRoaXMuX3RydW5jYXRlVGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREZWZhdWx0U3R5bGUoKTtcbiAgICAgICAgdGhpcy5fdHJ1bmNhdGlvblN0eWxlID0gYCR7dGhpcy5fZGVmYXVsdFN0eWxlfSBtYXgtd2lkdGg6ICR7dGhpcy5fY3VzdG9tV2lkdGhDb3VudH1weDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IHdoaXRlLXNwYWNlOiBub3dyYXA7YDtcbiAgICAgICAgdGhpcy5fdHJ1bmNhdGVUYXJnZXQuc3R5bGUuY3NzVGV4dCA9IHRoaXMuZmRUcnVuY2F0ZVN0YXRlID8gdGhpcy5fdHJ1bmNhdGlvblN0eWxlIDogdGhpcy5fZGVmYXVsdFN0eWxlO1xuICAgIH1cbn1cbiJdfQ==
@@ -5,17 +5,46 @@ import { TwoDigitsPipe } from './two-digits.pipe';
5
5
  import { SafePipe } from './safe.pipe';
6
6
  import { ValueByPathPipe } from './value-by-path.pipe';
7
7
  import { IsCompactDensityPipe } from './is-compact.pipe';
8
+ import { TruncatePipe } from './truncate.pipe';
8
9
  import * as i0 from "@angular/core";
9
10
  export class PipeModule {
10
11
  }
11
12
  PipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- PipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PipeModule, declarations: [DisplayFnPipe, SearchHighlightPipe, TwoDigitsPipe, SafePipe, ValueByPathPipe, IsCompactDensityPipe], exports: [DisplayFnPipe, SearchHighlightPipe, TwoDigitsPipe, SafePipe, ValueByPathPipe, IsCompactDensityPipe] });
13
+ PipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PipeModule, declarations: [DisplayFnPipe,
14
+ SearchHighlightPipe,
15
+ TwoDigitsPipe,
16
+ SafePipe,
17
+ ValueByPathPipe,
18
+ IsCompactDensityPipe,
19
+ TruncatePipe], exports: [DisplayFnPipe,
20
+ SearchHighlightPipe,
21
+ TwoDigitsPipe,
22
+ SafePipe,
23
+ ValueByPathPipe,
24
+ IsCompactDensityPipe,
25
+ TruncatePipe] });
13
26
  PipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PipeModule });
14
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PipeModule, decorators: [{
15
28
  type: NgModule,
16
29
  args: [{
17
- declarations: [DisplayFnPipe, SearchHighlightPipe, TwoDigitsPipe, SafePipe, ValueByPathPipe, IsCompactDensityPipe],
18
- exports: [DisplayFnPipe, SearchHighlightPipe, TwoDigitsPipe, SafePipe, ValueByPathPipe, IsCompactDensityPipe]
30
+ declarations: [
31
+ DisplayFnPipe,
32
+ SearchHighlightPipe,
33
+ TwoDigitsPipe,
34
+ SafePipe,
35
+ ValueByPathPipe,
36
+ IsCompactDensityPipe,
37
+ TruncatePipe
38
+ ],
39
+ exports: [
40
+ DisplayFnPipe,
41
+ SearchHighlightPipe,
42
+ TwoDigitsPipe,
43
+ SafePipe,
44
+ ValueByPathPipe,
45
+ IsCompactDensityPipe,
46
+ TruncatePipe
47
+ ]
19
48
  }]
20
49
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9waXBlcy9waXBlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTXpELE1BQU0sT0FBTyxVQUFVOzt1R0FBVixVQUFVO3dHQUFWLFVBQVUsaUJBSEosYUFBYSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixhQUN2RyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsb0JBQW9CO3dHQUVuRyxVQUFVOzJGQUFWLFVBQVU7a0JBSnRCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDO29CQUNsSCxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLENBQUM7aUJBQ2hIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGlzcGxheUZuUGlwZSB9IGZyb20gJy4vZGlzcGxheUZuLnBpcGUnO1xuaW1wb3J0IHsgU2VhcmNoSGlnaGxpZ2h0UGlwZSB9IGZyb20gJy4vc2VhcmNoLWhpZ2hsaWdodC5waXBlJztcbmltcG9ydCB7IFR3b0RpZ2l0c1BpcGUgfSBmcm9tICcuL3R3by1kaWdpdHMucGlwZSc7XG5pbXBvcnQgeyBTYWZlUGlwZSB9IGZyb20gJy4vc2FmZS5waXBlJztcbmltcG9ydCB7IFZhbHVlQnlQYXRoUGlwZSB9IGZyb20gJy4vdmFsdWUtYnktcGF0aC5waXBlJztcbmltcG9ydCB7IElzQ29tcGFjdERlbnNpdHlQaXBlIH0gZnJvbSAnLi9pcy1jb21wYWN0LnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0Rpc3BsYXlGblBpcGUsIFNlYXJjaEhpZ2hsaWdodFBpcGUsIFR3b0RpZ2l0c1BpcGUsIFNhZmVQaXBlLCBWYWx1ZUJ5UGF0aFBpcGUsIElzQ29tcGFjdERlbnNpdHlQaXBlXSxcbiAgICBleHBvcnRzOiBbRGlzcGxheUZuUGlwZSwgU2VhcmNoSGlnaGxpZ2h0UGlwZSwgVHdvRGlnaXRzUGlwZSwgU2FmZVBpcGUsIFZhbHVlQnlQYXRoUGlwZSwgSXNDb21wYWN0RGVuc2l0eVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVNb2R1bGUge31cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9waXBlcy9waXBlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQXNCL0MsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkFsQmYsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsUUFBUTtRQUNSLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsWUFBWSxhQUdaLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsYUFBYTtRQUNiLFFBQVE7UUFDUixlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLFlBQVk7d0dBR1AsVUFBVTsyRkFBVixVQUFVO2tCQXBCdEIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDZjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpc3BsYXlGblBpcGUgfSBmcm9tICcuL2Rpc3BsYXlGbi5waXBlJztcbmltcG9ydCB7IFNlYXJjaEhpZ2hsaWdodFBpcGUgfSBmcm9tICcuL3NlYXJjaC1oaWdobGlnaHQucGlwZSc7XG5pbXBvcnQgeyBUd29EaWdpdHNQaXBlIH0gZnJvbSAnLi90d28tZGlnaXRzLnBpcGUnO1xuaW1wb3J0IHsgU2FmZVBpcGUgfSBmcm9tICcuL3NhZmUucGlwZSc7XG5pbXBvcnQgeyBWYWx1ZUJ5UGF0aFBpcGUgfSBmcm9tICcuL3ZhbHVlLWJ5LXBhdGgucGlwZSc7XG5pbXBvcnQgeyBJc0NvbXBhY3REZW5zaXR5UGlwZSB9IGZyb20gJy4vaXMtY29tcGFjdC5waXBlJztcbmltcG9ydCB7IFRydW5jYXRlUGlwZSB9IGZyb20gJy4vdHJ1bmNhdGUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIERpc3BsYXlGblBpcGUsXG4gICAgICAgIFNlYXJjaEhpZ2hsaWdodFBpcGUsXG4gICAgICAgIFR3b0RpZ2l0c1BpcGUsXG4gICAgICAgIFNhZmVQaXBlLFxuICAgICAgICBWYWx1ZUJ5UGF0aFBpcGUsXG4gICAgICAgIElzQ29tcGFjdERlbnNpdHlQaXBlLFxuICAgICAgICBUcnVuY2F0ZVBpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRGlzcGxheUZuUGlwZSxcbiAgICAgICAgU2VhcmNoSGlnaGxpZ2h0UGlwZSxcbiAgICAgICAgVHdvRGlnaXRzUGlwZSxcbiAgICAgICAgU2FmZVBpcGUsXG4gICAgICAgIFZhbHVlQnlQYXRoUGlwZSxcbiAgICAgICAgSXNDb21wYWN0RGVuc2l0eVBpcGUsXG4gICAgICAgIFRydW5jYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGlwZU1vZHVsZSB7fVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TruncatePipe {
4
+ transform(value, limit = 500) {
5
+ return value && value.length > limit ? value.substring(0, limit) + '...' : value;
6
+ }
7
+ }
8
+ TruncatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ TruncatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: TruncatePipe, name: "truncate" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TruncatePipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'truncate'
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3BpcGVzL3RydW5jYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsR0FBRztRQUN4QyxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckYsQ0FBQzs7eUdBSFEsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFVBQVU7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RydW5jYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBUcnVuY2F0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDUwMCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBsaW1pdCA/IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdCkgKyAnLi4uJyA6IHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -28,6 +28,7 @@ export * from './pipes/search-highlight.pipe';
28
28
  export * from './pipes/safe.pipe';
29
29
  export * from './pipes/is-compact.pipe';
30
30
  export * from './pipes/value-by-path.pipe';
31
+ export * from './pipes/truncate.pipe';
31
32
  export * from './drag-and-drop/drag-and-drop.module';
32
33
  export * from './drag-and-drop/dnd-list/dnd-list.directive';
33
34
  export * from './drag-and-drop/dnd-item/dnd-item.directive';
@@ -64,4 +65,4 @@ export * from './list-item/list-item-utils';
64
65
  export * from './mixins/apply-mixin';
65
66
  export * from './services/focus-trap.service';
66
67
  export * from './tokens/module-deprecations.token';
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlFQUFpRSxDQUFDO0FBRWhGLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLCtEQUErRCxDQUFDO0FBRTlFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGdDQUFnQyxDQUFDO0FBRS9DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGlEQUFpRCxDQUFDO0FBRWhFLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsVUFBVSxDQUFDO0FBRXpCLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb25seS1kaWdpdHMvb25seS1kaWdpdHMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Jlc2l6ZS9yZXNpemUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9yZXNpemUvcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Jlc2l6ZS9yZXNpemUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pbml0aWFsLWZvY3VzL2luaXRpYWwtZm9jdXMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9saW5lLWNsYW1wL2xpbmUtY2xhbXAubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9saW5lLWNsYW1wL2xpbmUtY2xhbXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pbml0aWFsLWZvY3VzL2luaXRpYWwtZm9jdXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RydW5jYXRlL3RydW5jYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdHJ1bmNhdGUvdHJ1bmNhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9mb2N1cy1rZXktbWFuYWdlci9mb2N1cy1rZXktbWFuYWdlci1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZm9jdXMta2V5LW1hbmFnZXIvZm9jdXMta2V5LW1hbmFnZXItbGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWhlbHBlcnMubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9waXBlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Rpc3BsYXlGbi5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdHdvLWRpZ2l0cy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2VhcmNoLWhpZ2hsaWdodC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FmZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvaXMtY29tcGFjdC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdmFsdWUtYnktcGF0aC5waXBlJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3AubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1hbmQtZHJvcC9kbmQtbGlzdC9kbmQtbGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RuZC1pdGVtL2RuZC1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctYW5kLWRyb3AvZG5kLWtleWJvYXJkLWdyb3VwL2RuZC1rZXlib2FyZC1ncm91cC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RuZC1rZXlib2FyZC1pdGVtL2RuZC1rZXlib2FyZC1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jc3MtY2xhc3MtYnVpbGRlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Nzcy1zdHlsZS1idWlsZGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMva2V5Ym9hcmQtc3VwcG9ydC1pdGVtLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvbW9kdWxlLWRlcHJlY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvcmVxdWlyZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLWNsYXNzLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLXN0eWxlLmRlY29yYXRvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtaW5qZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29udGFpbmVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3JhbmdlLXNlbGVjdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0eXBlcy9oYXNoLmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXR5cGVzL3NpemUuZGF0YXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdHlwZXMvY29sb3ItYWNjZW50LmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RoZW1lcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2Rlc3Ryb3llZC5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QtZmQtbmd4LWNsYXNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saXN0LWl0ZW0vbGlzdC1pdGVtLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9taXhpbnMvYXBwbHktbWl4aW4nO1xuXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZvY3VzLXRyYXAuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zL21vZHVsZS1kZXByZWNhdGlvbnMudG9rZW4nO1xuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlFQUFpRSxDQUFDO0FBRWhGLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsK0RBQStELENBQUM7QUFFOUUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsaURBQWlELENBQUM7QUFFaEUsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFFN0MsY0FBYyxhQUFhLENBQUM7QUFFNUIsY0FBYyxVQUFVLENBQUM7QUFFekIsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL29ubHktZGlnaXRzL29ubHktZGlnaXRzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXplL3Jlc2l6ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXplL3Jlc2l6ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdHJ1bmNhdGUvdHJ1bmNhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9mb2N1cy1rZXktbWFuYWdlci9mb2N1cy1rZXktbWFuYWdlci1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZm9jdXMta2V5LW1hbmFnZXIvZm9jdXMta2V5LW1hbmFnZXItaGVscGVycy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3BpcGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZGlzcGxheUZuLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90d28tZGlnaXRzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zZWFyY2gtaGlnaGxpZ2h0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zYWZlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9pcy1jb21wYWN0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy92YWx1ZS1ieS1wYXRoLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90cnVuY2F0ZS5waXBlJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3AubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1hbmQtZHJvcC9kbmQtbGlzdC9kbmQtbGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RuZC1pdGVtL2RuZC1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctYW5kLWRyb3AvZG5kLWtleWJvYXJkLWdyb3VwL2RuZC1rZXlib2FyZC1ncm91cC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RuZC1rZXlib2FyZC1pdGVtL2RuZC1rZXlib2FyZC1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jc3MtY2xhc3MtYnVpbGRlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Nzcy1zdHlsZS1idWlsZGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMva2V5Ym9hcmQtc3VwcG9ydC1pdGVtLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvbW9kdWxlLWRlcHJlY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvcmVxdWlyZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLWNsYXNzLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLXN0eWxlLmRlY29yYXRvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtaW5qZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29udGFpbmVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3JhbmdlLXNlbGVjdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0eXBlcy9oYXNoLmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXR5cGVzL3NpemUuZGF0YXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdHlwZXMvY29sb3ItYWNjZW50LmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RoZW1lcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2Rlc3Ryb3llZC5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QtZmQtbmd4LWNsYXNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saXN0LWl0ZW0vbGlzdC1pdGVtLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9taXhpbnMvYXBwbHktbWl4aW4nO1xuXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZvY3VzLXRyYXAuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zL21vZHVsZS1kZXByZWNhdGlvbnMudG9rZW4nO1xuIl19
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.36.0-rc.19",
3
+ "version": "0.36.0-rc.21",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.36.0-rc.19",
3
+ "version": "0.36.0-rc.21",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
@@ -1,10 +1,9 @@
1
- import { SimpleChanges, ElementRef, OnInit, OnChanges, ChangeDetectorRef } from '@angular/core';
1
+ import { SimpleChanges, ElementRef, OnInit, OnChanges } from '@angular/core';
2
2
  import { CssClassBuilder } from '@fundamental-ngx/core/utils';
3
3
  import { Nullable } from '@fundamental-ngx/core/shared';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class FeedListItemComponent implements OnInit, OnChanges, CssClassBuilder {
6
6
  private readonly _elementRef;
7
- private readonly _changeDetectorRef;
8
7
  /** User's custom classes */
9
8
  class: string;
10
9
  /**
@@ -22,7 +21,7 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
22
21
  /**
23
22
  * Max preview characters of Feed text. If you have more than max characters text, you can toggle preview/full text with more/less button.
24
23
  */
25
- maxChars?: number;
24
+ maxChars: number;
26
25
  /**
27
26
  * Sets the `aria-label` attribute to the element.
28
27
  */
@@ -50,6 +49,7 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
50
49
  * Apply mobile view
51
50
  */
52
51
  mobile: boolean;
52
+ maxCharsAtDefault: boolean;
53
53
  /**
54
54
  * Apply body class by default
55
55
  */
@@ -63,7 +63,9 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
63
63
  */
64
64
  hasMore: boolean;
65
65
  /** @hidden */
66
- constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef);
66
+ constructor(_elementRef: ElementRef);
67
+ setHasMore(): void;
68
+ setDefaultMaxChars(): void;
67
69
  /** @hidden */
68
70
  ngOnInit(): void;
69
71
  /** @hidden */
@@ -77,8 +79,6 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
77
79
  elementRef(): ElementRef<any>;
78
80
  /** @hidden */
79
81
  toggleTextView(): void;
80
- /** @hidden */
81
- checkCharCount(isMore: boolean): void;
82
82
  static ɵfac: i0.ɵɵFactoryDeclaration<FeedListItemComponent, never>;
83
83
  static ɵcmp: i0.ɵɵComponentDeclaration<FeedListItemComponent, "fd-feed-list-item", never, { "class": "class"; "authorTitle": "authorTitle"; "authorLink": "authorLink"; "text": "text"; "maxChars": "maxChars"; "ariaLabel": "ariaLabel"; "ariaLabelledby": "ariaLabelledby"; "moreLabel": "moreLabel"; "lessLabel": "lessLabel"; "isRichText": "isRichText"; "mobile": "mobile"; }, {}, never, ["fd-feed-list-avatar", "fd-feed-list-action", "fd-feed-list-footer"], false>;
84
84
  }
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { HostBinding } from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ElementRef, ChangeDetectorRef } from '@angular/core';
3
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ElementRef } from '@angular/core';
4
4
  import { applyCssClass } from '@fundamental-ngx/core/utils';
5
5
  import { CSS_CLASS_NAME } from '../../constants';
6
6
  import * as i0 from "@angular/core";
@@ -11,9 +11,8 @@ import * as i4 from "@fundamental-ngx/core/utils";
11
11
  import * as i5 from "@fundamental-ngx/i18n";
12
12
  export class FeedListItemComponent {
13
13
  /** @hidden */
14
- constructor(_elementRef, _changeDetectorRef) {
14
+ constructor(_elementRef) {
15
15
  this._elementRef = _elementRef;
16
- this._changeDetectorRef = _changeDetectorRef;
17
16
  /**
18
17
  * Sets the `aria-label` attribute to the element.
19
18
  */
@@ -27,6 +26,7 @@ export class FeedListItemComponent {
27
26
  * Apply mobile view
28
27
  */
29
28
  this.mobile = false;
29
+ this.maxCharsAtDefault = false;
30
30
  /**
31
31
  * Apply body class by default
32
32
  */
@@ -40,15 +40,30 @@ export class FeedListItemComponent {
40
40
  */
41
41
  this.hasMore = false;
42
42
  }
43
+ setHasMore() {
44
+ if (this.text) {
45
+ this.hasMore = this.text.length > this.maxChars;
46
+ }
47
+ }
48
+ setDefaultMaxChars() {
49
+ this.maxChars = this.mobile ? 300 : 500;
50
+ }
43
51
  /** @hidden */
44
52
  ngOnInit() {
45
53
  this.buildComponentCssClass();
54
+ if (!this.maxChars) {
55
+ this.setDefaultMaxChars();
56
+ this.maxCharsAtDefault = true;
57
+ }
58
+ this.setHasMore();
46
59
  }
47
60
  /** @hidden */
48
61
  ngOnChanges(changes) {
49
62
  if ('class' in changes || 'isRichText' in changes) {
50
63
  this.buildComponentCssClass();
51
64
  }
65
+ this.maxCharsAtDefault && this.setDefaultMaxChars();
66
+ this.setHasMore();
52
67
  }
53
68
  /** CssClassBuilder interface implementation
54
69
  * function must return single string
@@ -65,14 +80,9 @@ export class FeedListItemComponent {
65
80
  toggleTextView() {
66
81
  this.isCollapsed = !this.isCollapsed;
67
82
  }
68
- /** @hidden */
69
- checkCharCount(isMore) {
70
- this.hasMore = isMore;
71
- this._changeDetectorRef.detectChanges();
72
- }
73
83
  }
74
- FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
75
- FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "directive", type: i4.TruncateDirective, selector: "[fd-truncate]", inputs: ["fdTruncateTargetText", "fdTruncateChars", "fdTruncateState"], outputs: ["charCountUpdate"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
+ FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
85
+ FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i4.TruncatePipe, name: "truncate" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
76
86
  __decorate([
77
87
  applyCssClass,
78
88
  __metadata("design:type", Function),
@@ -81,8 +91,8 @@ __decorate([
81
91
  ], FeedListItemComponent.prototype, "buildComponentCssClass", null);
82
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, decorators: [{
83
93
  type: Component,
84
- args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
85
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
94
+ args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
95
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { class: [{
86
96
  type: Input
87
97
  }], authorTitle: [{
88
98
  type: Input
@@ -113,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
113
123
  * function is responsible for order which css classes are applied
114
124
  */
115
125
  buildComponentCssClass: [] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vY29tcG9uZW50cy9pdGVtL2ZlZWQtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2ZlZWQtbGlzdC1pdGVtL2NvbXBvbmVudHMvaXRlbS9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLFVBQVUsRUFHVixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFTakQsTUFBTSxPQUFPLHFCQUFxQjtJQW9GOUIsY0FBYztJQUNkLFlBQTZCLFdBQXVCLEVBQW1CLGtCQUFxQztRQUEvRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFtQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBeEQ1Rzs7V0FFRztRQUVILGNBQVMsR0FBRyxFQUFFLENBQUM7UUFzQmY7OztXQUdHO1FBRUgsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQjs7V0FFRztRQUVILFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZjs7V0FFRztRQUVILHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQjs7V0FFRztRQUNILGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5COztXQUVHO1FBQ0gsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUcrRixDQUFDO0lBRWhILGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUU7WUFDL0MsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBT0QsQUFKQTs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYztRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYyxDQUFDLE1BQWU7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7O2tIQTFIUSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwyYUN4QmxDLHkrRkFtRkE7QUQ2Q0k7SUFMQyxhQUFhOzs7O21FQU9iOzJGQTFHUSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUlBSy9DLEtBQUs7c0JBREosS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLFVBQVU7c0JBRFQsS0FBSztnQkFPTixNQUFNO3NCQURMLEtBQUs7Z0JBT04sa0JBQWtCO3NCQURqQixXQUFXO3VCQUFDLDBCQUEwQjs7UUE2QnZDOzs7V0FHRztRQUNILHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBDU1NfQ0xBU1NfTkFNRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZmVlZC1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmVlZC1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIge1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBdXRob3Igb2YgZmVlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0aG9yVGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIExpbmsgdG8gQXV0aG9yIG9mIGZlZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dGhvckxpbms6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBGZWVkIHRleHRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1heCBwcmV2aWV3IGNoYXJhY3RlcnMgb2YgRmVlZCB0ZXh0LiBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gbWF4IGNoYXJhY3RlcnMgdGV4dCwgeW91IGNhbiB0b2dnbGUgcHJldmlldy9mdWxsIHRleHQgd2l0aCBtb3JlL2xlc3MgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4Q2hhcnM/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBhcmlhLWxhYmVsbGVkYnkgZm9yIGVsZW1lbnQgZGVzY3JpYmluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZGJ5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgZm9yIG1vcmUgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb3JlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCBmb3IgbGVzcyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGxlc3NMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQXBwbHkgcmljaCBmZWVkIHRleHQsIHBsZWFzZSBub3RlIC0gd2UgdXNlIGEgZm9ybWF0dGVkIHRleHQgY29tcG9uZW50IHdpdGggdGhpcyBvcHRpb24sIGl0IGhhcyBhIGxpc3Qgb2YgY29udHJvbGxlZCB0YWdzIGFuZCBhdHRpYnV0ZXMuXG4gICAgICogVGhpcyBmZWF0dXJlIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggY2FyZSBhcyBpdCBhbGxvd3MgZm9yIGNvdW50bGVzcyBjdXN0b20gbGF5b3V0cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUmljaFRleHQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFwcGx5IG1vYmlsZSB2aWV3XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFwcGx5IGJvZHkgY2xhc3MgYnkgZGVmYXVsdFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtZmVlZC1saXN0X19ib2R5JylcbiAgICBpc0ZlZWRMaXN0SXRlbUJvZHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdG9nZ2xlIHN0YXRlIG9mIGZlZWQgdGV4dCAtIG1vcmUgb3IgbGVzc1xuICAgICAqL1xuICAgIGlzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNob3dzIGhhdmUgeW91IG1vcmUgbGluZSB0aGFuIG1heCBsaW5lc1xuICAgICAqL1xuICAgIGhhc01vcmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnY2xhc3MnIGluIGNoYW5nZXMgfHwgJ2lzUmljaFRleHQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICAvKiogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtDU1NfQ0xBU1NfTkFNRS5pdGVtLCB0aGlzLmNsYXNzLCB0aGlzLmlzUmljaFRleHQgPyAnJyA6IGAke0NTU19DTEFTU19OQU1FLml0ZW19LS1jb2xsYXBzaWJsZWBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvZ2dsZVRleHRWaWV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGVja0NoYXJDb3VudChpc01vcmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNNb3JlID0gaXNNb3JlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZTsgdGhlbiBoZWFkZXJUbXBsOyBlbHNlIGF2YXRhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjxkaXYgY2xhc3M9XCJmZC1mZWVkLWxpc3RfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vYmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxwIGNsYXNzPVwiZmQtZmVlZC1saXN0X190ZXh0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSaWNoVGV4dFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZlZWRDb250ZW50OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYXV0aG9yIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JpY2hUZXh0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZmQtZm9ybWF0dGVkLXRleHQgW2h0bWxUZXh0XT1cInRleHRcIj48L2ZkLWZvcm1hdHRlZC10ZXh0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3A+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2JpbGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2F2YXRhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWF2YXRhclwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FjdGlvbkNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWFjdGlvblwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvb3RlckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXV0aG9yPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtZmVlZC1saXN0X19uYW1lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdXRob3JMaW5rOyBlbHNlIGF1dGhvclRpdGxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICBmZC1saW5rXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiYXV0aG9yVGl0bGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiYXV0aG9yTGluayB8IHNhZmU6ICd1cmwnXCJcbiAgICAgICAgICAgICAgICBbZW1waGFzaXplZF09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9hPiA8L25nLWNvbnRhaW5lclxuICAgICAgICA+OlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2F1dGhvclRpdGxlVGVtcGxhdGU+XG4gICAge3sgYXV0aG9yVGl0bGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmVlZENvbnRlbnQgbGV0LXBhcmFtPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXJhbVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxzcGFuXG4gICAgICAgIGZkLXRydW5jYXRlXG4gICAgICAgIFtmZFRydW5jYXRlU3RhdGVdPVwiaXNDb2xsYXBzZWRcIlxuICAgICAgICBbZmRUcnVuY2F0ZUNoYXJzXT1cIm1heENoYXJzXCJcbiAgICAgICAgW2ZkVHJ1bmNhdGVUYXJnZXRUZXh0XT1cInRleHRcIlxuICAgICAgICAoY2hhckNvdW50VXBkYXRlKT1cImNoZWNrQ2hhckNvdW50KCRldmVudClcIlxuICAgID5cbiAgICA8L3NwYW4+XG4gICAgPGFcbiAgICAgICAgZmQtbGlua1xuICAgICAgICBjbGFzcz1cImZkLWZlZWQtbGlzdF9fbGluay0tbW9yZVwiXG4gICAgICAgICpuZ0lmPVwiIWlzUmljaFRleHQgJiYgaGFzTW9yZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVUZXh0VmlldygpXCJcbiAgICAgICAgW2lubmVyVGV4dF09XCJcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkXG4gICAgICAgICAgICAgICAgPyBtb3JlTGFiZWwgfHwgKCdjb3JlRmVlZExpc3RJdGVtLm1vcmVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IGxlc3NMYWJlbCB8fCAoJ2NvcmVGZWVkTGlzdEl0ZW0ubGVzc0xhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgID48L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRtcGw+XG4gICAgPGRpdiBjbGFzcz1cImZkLWZlZWQtbGlzdF9fd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZmVlZC1saXN0X193cmFwcGVyIGZkLWZlZWQtbGlzdF9fd3JhcHBlci0taGVhZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXZhdGFyQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vY29tcG9uZW50cy9pdGVtL2ZlZWQtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2ZlZWQtbGlzdC1pdGVtL2NvbXBvbmVudHMvaXRlbS9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLFVBQVUsRUFHYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFtQixNQUFNLDZCQUE2QixDQUFDO0FBRzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVNqRCxNQUFNLE9BQU8scUJBQXFCO0lBcUY5QixjQUFjO0lBQ2QsWUFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF6RHBEOztXQUVHO1FBRUgsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQXNCZjs7O1dBR0c7UUFFSCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5COztXQUVHO1FBRUgsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUVILHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQjs7V0FFRztRQUNILGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5COztXQUVHO1FBQ0gsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUd1QyxDQUFDO0lBRXhELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFO1lBQy9DLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBT0QsQUFKQTs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYztRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7O2tIQXJJUSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwyYUN2QmxDLDQxRkE4RUE7QURrRUk7SUFMQyxhQUFhOzs7O21FQU9iOzJGQTNIUSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUdBSy9DLEtBQUs7c0JBREosS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLFVBQVU7c0JBRFQsS0FBSztnQkFPTixNQUFNO3NCQURMLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQURqQixXQUFXO3VCQUFDLDBCQUEwQjs7UUE2Q3ZDOzs7V0FHRztRQUNILHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBDU1NfQ0xBU1NfTkFNRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZmVlZC1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmVlZC1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIge1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBdXRob3Igb2YgZmVlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0aG9yVGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIExpbmsgdG8gQXV0aG9yIG9mIGZlZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dGhvckxpbms6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBGZWVkIHRleHRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1heCBwcmV2aWV3IGNoYXJhY3RlcnMgb2YgRmVlZCB0ZXh0LiBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gbWF4IGNoYXJhY3RlcnMgdGV4dCwgeW91IGNhbiB0b2dnbGUgcHJldmlldy9mdWxsIHRleHQgd2l0aCBtb3JlL2xlc3MgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4Q2hhcnM6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgICAqIGFyaWEtbGFiZWxsZWRieSBmb3IgZWxlbWVudCBkZXNjcmliaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCBmb3IgbW9yZSBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vcmVMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBUZXh0IGZvciBsZXNzIGJ1dHRvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGVzc0xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBcHBseSByaWNoIGZlZWQgdGV4dCwgcGxlYXNlIG5vdGUgLSB3ZSB1c2UgYSBmb3JtYXR0ZWQgdGV4dCBjb21wb25lbnQgd2l0aCB0aGlzIG9wdGlvbiwgaXQgaGFzIGEgbGlzdCBvZiBjb250cm9sbGVkIHRhZ3MgYW5kIGF0dGlidXRlcy5cbiAgICAgKiBUaGlzIGZlYXR1cmUgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBjYXJlIGFzIGl0IGFsbG93cyBmb3IgY291bnRsZXNzIGN1c3RvbSBsYXlvdXRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNSaWNoVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQXBwbHkgbW9iaWxlIHZpZXdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgbWF4Q2hhcnNBdERlZmF1bHQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBBcHBseSBib2R5IGNsYXNzIGJ5IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWZlZWQtbGlzdF9fYm9keScpXG4gICAgaXNGZWVkTGlzdEl0ZW1Cb2R5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRvZ2dsZSBzdGF0ZSBvZiBmZWVkIHRleHQgLSBtb3JlIG9yIGxlc3NcbiAgICAgKi9cbiAgICBpc0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyBoYXZlIHlvdSBtb3JlIGxpbmUgdGhhbiBtYXggbGluZXNcbiAgICAgKi9cbiAgICBoYXNNb3JlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBzZXRIYXNNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmhhc01vcmUgPSB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhDaGFycztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERlZmF1bHRNYXhDaGFycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXhDaGFycyA9IHRoaXMubW9iaWxlID8gMzAwIDogNTAwO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgaWYgKCF0aGlzLm1heENoYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRNYXhDaGFycygpO1xuICAgICAgICAgICAgdGhpcy5tYXhDaGFyc0F0RGVmYXVsdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRIYXNNb3JlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnY2xhc3MnIGluIGNoYW5nZXMgfHwgJ2lzUmljaFRleHQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF4Q2hhcnNBdERlZmF1bHQgJiYgdGhpcy5zZXREZWZhdWx0TWF4Q2hhcnMoKTtcbiAgICAgICAgdGhpcy5zZXRIYXNNb3JlKCk7XG4gICAgfVxuXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICAvKiogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtDU1NfQ0xBU1NfTkFNRS5pdGVtLCB0aGlzLmNsYXNzLCB0aGlzLmlzUmljaFRleHQgPyAnJyA6IGAke0NTU19DTEFTU19OQU1FLml0ZW19LS1jb2xsYXBzaWJsZWBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvZ2dsZVRleHRWaWV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZTsgdGhlbiBoZWFkZXJUbXBsOyBlbHNlIGF2YXRhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjxkaXYgY2xhc3M9XCJmZC1mZWVkLWxpc3RfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vYmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxwIGNsYXNzPVwiZmQtZmVlZC1saXN0X190ZXh0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSaWNoVGV4dFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZlZWRDb250ZW50OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYXV0aG9yIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JpY2hUZXh0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZmQtZm9ybWF0dGVkLXRleHQgW2h0bWxUZXh0XT1cInRleHRcIj48L2ZkLWZvcm1hdHRlZC10ZXh0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3A+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2JpbGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2F2YXRhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWF2YXRhclwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FjdGlvbkNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWFjdGlvblwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvb3RlckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZmVlZC1saXN0LWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXV0aG9yPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtZmVlZC1saXN0X19uYW1lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdXRob3JMaW5rOyBlbHNlIGF1dGhvclRpdGxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICBmZC1saW5rXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiYXV0aG9yVGl0bGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiYXV0aG9yTGluayB8IHNhZmU6ICd1cmwnXCJcbiAgICAgICAgICAgICAgICBbZW1waGFzaXplZF09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9hPiA8L25nLWNvbnRhaW5lclxuICAgICAgICA+OlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2F1dGhvclRpdGxlVGVtcGxhdGU+XG4gICAge3sgYXV0aG9yVGl0bGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmVlZENvbnRlbnQgbGV0LXBhcmFtPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXJhbVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxzcGFuPlxuICAgICAgICB7eyBpc0NvbGxhcHNlZCA/ICh0ZXh0IHwgdHJ1bmNhdGU6IG1heENoYXJzKSA6IHRleHQgfX1cbiAgICA8L3NwYW4+XG4gICAgPGFcbiAgICAgICAgZmQtbGlua1xuICAgICAgICBjbGFzcz1cImZkLWZlZWQtbGlzdF9fbGluay0tbW9yZVwiXG4gICAgICAgICpuZ0lmPVwiIWlzUmljaFRleHQgJiYgaGFzTW9yZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVUZXh0VmlldygpXCJcbiAgICAgICAgW2lubmVyVGV4dF09XCJcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkXG4gICAgICAgICAgICAgICAgPyBtb3JlTGFiZWwgfHwgKCdjb3JlRmVlZExpc3RJdGVtLm1vcmVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICA6IGxlc3NMYWJlbCB8fCAoJ2NvcmVGZWVkTGlzdEl0ZW0ubGVzc0xhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgID48L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRtcGw+XG4gICAgPGRpdiBjbGFzcz1cImZkLWZlZWQtbGlzdF9fd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZmVlZC1saXN0X193cmFwcGVyIGZkLWZlZWQtbGlzdF9fd3JhcHBlci0taGVhZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXZhdGFyQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXV0aG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=