@tilde-nlp/ngx-menu 6.1.35 → 6.1.37

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.
@@ -35,154 +35,152 @@ function SideNavMenuComponent_a_14_Template(rf, ctx) { if (rf & 1) {
35
35
  i0.ɵɵadvance(2);
36
36
  i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
37
37
  } }
38
- function SideNavMenuComponent_button_25_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "mat-icon", 26);
38
+ function SideNavMenuComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵtext(0);
40
+ } if (rf & 2) {
41
+ const ctx_r2 = i0.ɵɵnextContext();
42
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
43
+ } }
44
+ function SideNavMenuComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "mat-icon");
46
+ i0.ɵɵtext(1, "person");
47
+ i0.ɵɵelementEnd();
48
+ } }
49
+ function SideNavMenuComponent_ng_container_30_mat_icon_4_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "mat-icon", 25);
40
51
  i0.ɵɵtext(1);
41
52
  i0.ɵɵelementEnd();
42
53
  } if (rf & 2) {
43
54
  i0.ɵɵadvance();
44
55
  i0.ɵɵtextInterpolate("keyboard_arrow_down");
45
56
  } }
46
- function SideNavMenuComponent_button_25_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "mat-icon", 26);
57
+ function SideNavMenuComponent_ng_container_30_ng_template_5_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "mat-icon", 25);
48
59
  i0.ɵɵtext(1);
49
60
  i0.ɵɵelementEnd();
50
61
  } if (rf & 2) {
51
62
  i0.ɵɵadvance();
52
63
  i0.ɵɵtextInterpolate("keyboard_arrow_up");
53
64
  } }
54
- function SideNavMenuComponent_button_25_ng_container_4_Template(rf, ctx) { if (rf & 1) {
65
+ function SideNavMenuComponent_ng_container_30_Template(rf, ctx) { if (rf & 1) {
55
66
  i0.ɵɵelementContainerStart(0);
56
- i0.ɵɵelementStart(1, "span", 24);
67
+ i0.ɵɵelementStart(1, "span", 23);
57
68
  i0.ɵɵtext(2);
69
+ i0.ɵɵpipe(3, "translate");
58
70
  i0.ɵɵelementEnd();
59
- i0.ɵɵtemplate(3, SideNavMenuComponent_button_25_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 25)(4, SideNavMenuComponent_button_25_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
71
+ i0.ɵɵtemplate(4, SideNavMenuComponent_ng_container_30_mat_icon_4_Template, 2, 1, "mat-icon", 24)(5, SideNavMenuComponent_ng_container_30_ng_template_5_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
60
72
  i0.ɵɵelementContainerEnd();
61
73
  } if (rf & 2) {
62
- const iconDown_r4 = i0.ɵɵreference(5);
63
- i0.ɵɵnextContext();
64
- const state_r5 = i0.ɵɵreference(1);
74
+ let tmp_5_0;
75
+ const iconDown_r4 = i0.ɵɵreference(6);
65
76
  const ctx_r2 = i0.ɵɵnextContext();
77
+ const state_r5 = i0.ɵɵreference(26);
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 3, (tmp_5_0 = ctx_r2.username) !== null && tmp_5_0 !== undefined ? tmp_5_0 : "MENU.ANONYMOUS"), " ");
66
80
  i0.ɵɵadvance(2);
67
- i0.ɵɵtextInterpolate1(" ", ctx_r2.username, " ");
68
- i0.ɵɵadvance();
69
81
  i0.ɵɵproperty("ngIf", state_r5.menuOpen)("ngIfElse", iconDown_r4);
70
82
  } }
71
- function SideNavMenuComponent_button_25_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementStart(0, "button", 21, 2)(2, "div", 22);
73
- i0.ɵɵtext(3);
74
- i0.ɵɵelementEnd();
75
- i0.ɵɵtemplate(4, SideNavMenuComponent_button_25_ng_container_4_Template, 6, 3, "ng-container", 23);
76
- i0.ɵɵelementEnd();
77
- } if (rf & 2) {
78
- const ctx_r2 = i0.ɵɵnextContext();
79
- const menu_r6 = i0.ɵɵreference(27);
80
- i0.ɵɵproperty("matMenuTriggerFor", menu_r6);
81
- i0.ɵɵadvance(3);
82
- i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
83
- i0.ɵɵadvance();
84
- i0.ɵɵproperty("ngIf", !ctx_r2.collapsed);
85
- } }
86
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
83
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
87
84
  i0.ɵɵelementContainer(0);
88
85
  } }
89
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
90
- const _r7 = i0.ɵɵgetCurrentView();
91
- i0.ɵɵelementStart(0, "a", 30);
92
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const item_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r8.link)); });
93
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 31);
86
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
87
+ const _r6 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "a", 29);
89
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const item_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r7.link)); });
90
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 30);
94
91
  i0.ɵɵelementEnd();
95
92
  } if (rf & 2) {
96
- const item_r8 = i0.ɵɵnextContext(2).$implicit;
93
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
97
94
  i0.ɵɵnextContext();
98
- const profileMenuItem_r9 = i0.ɵɵreference(31);
99
- i0.ɵɵproperty("href", item_r8.link.href, i0.ɵɵsanitizeUrl);
95
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
96
+ i0.ɵɵproperty("href", item_r7.link.href, i0.ɵɵsanitizeUrl);
100
97
  i0.ɵɵadvance();
101
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
98
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
102
99
  } }
103
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
100
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
104
101
  i0.ɵɵelementContainer(0);
105
102
  } }
106
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
107
- const _r10 = i0.ɵɵgetCurrentView();
108
- i0.ɵɵelementStart(0, "a", 32);
109
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r8.link)); });
110
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 31);
103
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
104
+ const _r9 = i0.ɵɵgetCurrentView();
105
+ i0.ɵɵelementStart(0, "a", 31);
106
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const item_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r7.link)); });
107
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 30);
111
108
  i0.ɵɵelementEnd();
112
109
  } if (rf & 2) {
113
- const item_r8 = i0.ɵɵnextContext(2).$implicit;
110
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
114
111
  i0.ɵɵnextContext();
115
- const profileMenuItem_r9 = i0.ɵɵreference(31);
116
- i0.ɵɵproperty("routerLink", item_r8.link.href);
112
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
113
+ i0.ɵɵproperty("routerLink", item_r7.link.href);
117
114
  i0.ɵɵadvance();
118
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
115
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
119
116
  } }
120
- function SideNavMenuComponent_For_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template, 2, 6, "a", 28)(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template, 2, 6, "a", 29);
117
+ function SideNavMenuComponent_For_34_Conditional_0_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template, 2, 6, "a", 27)(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template, 2, 6, "a", 28);
122
119
  } if (rf & 2) {
123
- const item_r8 = i0.ɵɵnextContext().$implicit;
124
- i0.ɵɵconditional(item_r8.link.isExternal ? 0 : 1);
120
+ const item_r7 = i0.ɵɵnextContext().$implicit;
121
+ i0.ɵɵconditional(item_r7.link.isExternal ? 0 : 1);
125
122
  } }
126
- function SideNavMenuComponent_For_29_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
123
+ function SideNavMenuComponent_For_34_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
127
124
  i0.ɵɵelementContainer(0);
128
125
  } }
129
- function SideNavMenuComponent_For_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
130
- const _r11 = i0.ɵɵgetCurrentView();
131
- i0.ɵɵelementStart(0, "button", 33);
132
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const item_r8 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r8.button == null ? null : item_r8.button.callback()); });
133
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 31);
126
+ function SideNavMenuComponent_For_34_Conditional_1_Template(rf, ctx) { if (rf & 1) {
127
+ const _r10 = i0.ɵɵgetCurrentView();
128
+ i0.ɵɵelementStart(0, "button", 32);
129
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r7 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r7.button == null ? null : item_r7.button.callback()); });
130
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 30);
134
131
  i0.ɵɵelementEnd();
135
132
  } if (rf & 2) {
136
- const item_r8 = i0.ɵɵnextContext().$implicit;
133
+ const item_r7 = i0.ɵɵnextContext().$implicit;
137
134
  i0.ɵɵnextContext();
138
- const profileMenuItem_r9 = i0.ɵɵreference(31);
135
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
139
136
  i0.ɵɵadvance();
140
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r8.icon, item_r8.label));
137
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r7.icon, item_r7.label));
141
138
  } }
142
- function SideNavMenuComponent_For_29_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_29_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_29_Conditional_1_Template, 2, 5, "button", 27);
139
+ function SideNavMenuComponent_For_34_Template(rf, ctx) { if (rf & 1) {
140
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_34_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_34_Conditional_1_Template, 2, 5, "button", 26);
144
141
  } if (rf & 2) {
145
- const item_r8 = ctx.$implicit;
146
- i0.ɵɵconditional(item_r8.link ? 0 : 1);
142
+ const item_r7 = ctx.$implicit;
143
+ i0.ɵɵconditional(item_r7.link ? 0 : 1);
147
144
  } }
148
- function SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "span", 36);
145
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵelementStart(0, "span", 35);
150
147
  i0.ɵɵtext(1);
151
148
  i0.ɵɵelementEnd();
152
149
  } if (rf & 2) {
153
- const icon_r12 = i0.ɵɵnextContext(2).icon;
154
- i0.ɵɵclassProp("material-icons-outlined", icon_r12 == null ? null : icon_r12.isOutlined);
150
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
151
+ i0.ɵɵclassProp("material-icons-outlined", icon_r11 == null ? null : icon_r11.isOutlined);
155
152
  i0.ɵɵadvance();
156
- i0.ɵɵtextInterpolate1(" ", icon_r12 == null ? null : icon_r12.name, " ");
153
+ i0.ɵɵtextInterpolate1(" ", icon_r11 == null ? null : icon_r11.name, " ");
157
154
  } }
158
- function SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
159
- i0.ɵɵelement(0, "mat-icon", 35);
155
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelement(0, "mat-icon", 34);
160
157
  } if (rf & 2) {
161
- const icon_r12 = i0.ɵɵnextContext(2).icon;
162
- i0.ɵɵproperty("svgIcon", icon_r12 == null ? null : icon_r12.name);
158
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
159
+ i0.ɵɵproperty("svgIcon", icon_r11 == null ? null : icon_r11.name);
163
160
  } }
164
- function SideNavMenuComponent_ng_template_30_Conditional_0_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_0_Template, 2, 3, "span", 34)(1, SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 35);
161
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_0_Template, 2, 3, "span", 33)(1, SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 34);
166
163
  } if (rf & 2) {
167
- const icon_r12 = i0.ɵɵnextContext().icon;
168
- i0.ɵɵconditional(!(icon_r12 == null ? null : icon_r12.isCustom) ? 0 : 1);
164
+ const icon_r11 = i0.ɵɵnextContext().icon;
165
+ i0.ɵɵconditional(!(icon_r11 == null ? null : icon_r11.isCustom) ? 0 : 1);
169
166
  } }
170
- function SideNavMenuComponent_ng_template_30_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_30_Conditional_0_Template, 2, 1);
167
+ function SideNavMenuComponent_ng_template_35_Template(rf, ctx) { if (rf & 1) {
168
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_35_Conditional_0_Template, 2, 1);
172
169
  i0.ɵɵtext(1);
173
170
  i0.ɵɵpipe(2, "translate");
174
171
  } if (rf & 2) {
175
- const icon_r12 = ctx.icon;
176
- const label_r13 = ctx.label;
177
- i0.ɵɵconditional(icon_r12 ? 0 : -1);
172
+ const icon_r11 = ctx.icon;
173
+ const label_r12 = ctx.label;
174
+ i0.ɵɵconditional(icon_r11 ? 0 : -1);
178
175
  i0.ɵɵadvance();
179
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r13), " ");
176
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r12), " ");
180
177
  } }
181
178
  export class SideNavMenuComponent extends NavBaseComponent {
182
179
  #username;
183
180
  get username() { return this.#username; }
184
181
  set username(value) {
185
- this.#username = value;
182
+ // if username is passed whith whitespace in begginining, it breaks UI, so trim it for safety.
183
+ this.#username = value.trim();
186
184
  this.setUserInitials();
187
185
  }
188
186
  get menuLogoImage() {
@@ -269,7 +267,7 @@ export class SideNavMenuComponent extends NavBaseComponent {
269
267
  this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];
270
268
  }
271
269
  static { this.ɵfac = function SideNavMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SideNavMenuComponent)(i0.ɵɵdirectiveInject(i1.StrapiLinkService), i0.ɵɵdirectiveInject(i2.DOMService), i0.ɵɵdirectiveInject(i3.MenuItemsService)); }; }
272
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 32, vars: 31, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["fxHide.gt-xs", ""], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent", "matTooltip"], ["fxHide.lt-sm", ""], ["fxLayout", "column", 1, "menu-wrapper"], ["role", "navigation", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], [1, "profile"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "profile-arrow spin", 4, "ngIf", "ngIfElse"], [1, "profile-arrow", "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "click", "href"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "mat-mdc-menu-item", 3, "click", "routerLink"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
270
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 33, consts: [["state", "matMenuTrigger"], ["menu", "matMenu"], ["profileMenuItem", ""], ["iconDown", ""], ["fxHide.gt-xs", ""], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent", "matTooltip"], ["fxHide.lt-sm", ""], ["fxLayout", "column", 1, "menu-wrapper"], ["role", "navigation", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], [1, "profile"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-menu"], [1, "profile-name"], ["class", "profile-arrow spin", 4, "ngIf", "ngIfElse"], [1, "profile-arrow", "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "click", "href"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "mat-mdc-menu-item", 3, "click", "routerLink"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
273
271
  const _r1 = i0.ɵɵgetCurrentView();
274
272
  i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "a", 6);
275
273
  i0.ɵɵpipe(3, "translate");
@@ -299,26 +297,30 @@ export class SideNavMenuComponent extends NavBaseComponent {
299
297
  i0.ɵɵelementStart(22, "div", 16)(23, "menu-columns", 17);
300
298
  i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_23_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
301
299
  i0.ɵɵelementEnd()();
302
- i0.ɵɵelementStart(24, "div", 18);
303
- i0.ɵɵtemplate(25, SideNavMenuComponent_button_25_Template, 5, 3, "button", 19);
304
- i0.ɵɵelementStart(26, "mat-menu", 20, 0);
305
- i0.ɵɵrepeaterCreate(28, SideNavMenuComponent_For_29_Template, 2, 1, null, null, _forTrack0);
300
+ i0.ɵɵelementStart(24, "div", 18)(25, "button", 19, 0)(27, "div", 20);
301
+ i0.ɵɵtemplate(28, SideNavMenuComponent_Conditional_28_Template, 1, 1)(29, SideNavMenuComponent_Conditional_29_Template, 2, 0, "mat-icon");
302
+ i0.ɵɵelementEnd();
303
+ i0.ɵɵtemplate(30, SideNavMenuComponent_ng_container_30_Template, 7, 5, "ng-container", 21);
304
+ i0.ɵɵelementEnd();
305
+ i0.ɵɵelementStart(31, "mat-menu", 22, 1);
306
+ i0.ɵɵrepeaterCreate(33, SideNavMenuComponent_For_34_Template, 2, 1, null, null, _forTrack0);
306
307
  i0.ɵɵelementEnd()();
307
- i0.ɵɵtemplate(30, SideNavMenuComponent_ng_template_30_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
308
+ i0.ɵɵtemplate(35, SideNavMenuComponent_ng_template_35_Template, 3, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
308
309
  i0.ɵɵelementEnd()();
309
310
  } if (rf & 2) {
311
+ const menu_r13 = i0.ɵɵreference(32);
310
312
  i0.ɵɵadvance();
311
313
  i0.ɵɵproperty("fxHide", !ctx.collapsed);
312
314
  i0.ɵɵadvance();
313
315
  i0.ɵɵproperty("libPlausibleEvent", ctx.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx.baseUrl, i0.ɵɵsanitizeUrl);
314
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 23, "MENU.ARIA_LABELS.LOGO"));
316
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 25, "MENU.ARIA_LABELS.LOGO"));
315
317
  i0.ɵɵadvance(2);
316
318
  i0.ɵɵproperty("src", ctx.menuLogoImage, i0.ɵɵsanitizeUrl);
317
319
  i0.ɵɵadvance(2);
318
320
  i0.ɵɵtextInterpolate1(" ", ctx.productName, " ");
319
321
  i0.ɵɵadvance();
320
322
  i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT);
321
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(8, 25, "ARIA_LABELS.MENU_TOGGLER"));
323
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(8, 27, "ARIA_LABELS.MENU_TOGGLER"));
322
324
  i0.ɵɵadvance(4);
323
325
  i0.ɵɵstyleProp("width", ctx.sideNavWidth);
324
326
  i0.ɵɵclassProp("collapsed", ctx.collapsed);
@@ -328,21 +330,25 @@ export class SideNavMenuComponent extends NavBaseComponent {
328
330
  i0.ɵɵadvance();
329
331
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
330
332
  i0.ɵɵadvance();
331
- i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT)("matTooltip", i0.ɵɵpipeBind1(16, 27, ctx.collapsed ? "MENU.EXPAND" : "MENU.COLLAPSE"));
332
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(17, 29, "ARIA_LABELS.MENU_TOGGLER"));
333
+ i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT)("matTooltip", i0.ɵɵpipeBind1(16, 29, ctx.collapsed ? "MENU.EXPAND" : "MENU.COLLAPSE"));
334
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(17, 31, "ARIA_LABELS.MENU_TOGGLER"));
333
335
  i0.ɵɵadvance(6);
334
336
  i0.ɵɵtextInterpolate(ctx.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
335
337
  i0.ɵɵadvance(2);
336
338
  i0.ɵɵproperty("direction", ctx.direction)("isOpen", !ctx.collapsed)("active", ctx.active);
337
339
  i0.ɵɵadvance(2);
338
- i0.ɵɵproperty("ngIf", ctx.userInitials);
340
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r13);
341
+ i0.ɵɵadvance(3);
342
+ i0.ɵɵconditional(ctx.userInitials ? 28 : 29);
343
+ i0.ɵɵadvance(2);
344
+ i0.ɵɵproperty("ngIf", !ctx.collapsed);
339
345
  i0.ɵɵadvance(3);
340
346
  i0.ɵɵrepeater(ctx.menuSettings.userOptions);
341
- } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;height:100%;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
347
+ } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;height:100%;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
342
348
  }
343
349
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
344
350
  type: Component,
345
- args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n <div class=\"profile\">\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;height:100%;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
351
+ args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;height:100%;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
346
352
  }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: i3.MenuItemsService }], { username: [{
347
353
  type: Input
348
354
  }], menuSettings: [{
@@ -351,4 +357,4 @@ export class SideNavMenuComponent extends NavBaseComponent {
351
357
  type: Input
352
358
  }] }); })();
353
359
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 15 }); })();
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3VCNUQsNEJBRUM7O0lBRHlELGdMQUFTLHdCQUFpQixLQUFDO0lBRW5GLHlCQUFpRjtJQUNqRiwrQkFBZ0M7SUFDOUIsWUFDRjtJQUNGLEFBREUsaUJBQU8sRUFDTDs7O0lBUG1GLEFBQWpFLG9FQUErQywwQ0FBa0M7O0lBR3ZELGVBQXFCO0lBQXJCLDREQUFxQjtJQUVqRSxlQUNGO0lBREUsbURBQ0Y7OztJQWdDQSxvQ0FBMkU7SUFBQSxZQUF5QjtJQUFBLGlCQUFXOztJQUFwQyxjQUF5QjtJQUF6QiwyQ0FBeUI7OztJQUdsRyxvQ0FBcUM7SUFBQSxZQUF3QjtJQUFBLGlCQUFXOztJQUFuQyxjQUF3QjtJQUF4Qix5Q0FBd0I7OztJQVJqRSw2QkFBaUM7SUFDL0IsZ0NBQTJCO0lBQ3pCLFlBQ0Y7SUFBQSxpQkFBTztJQUlQLEFBRkEseUdBQTJFLGtJQUVwRDs7Ozs7OztJQUxyQixlQUNGO0lBREUsZ0RBQ0Y7SUFFVyxjQUFzQjtJQUFBLEFBQXRCLHdDQUFzQix5QkFBYTs7O0lBVGhE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QixlQTBCQztZQTFCRCwyQ0EwQkM7OztpRkRyRk0sb0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0UsbUJBQW1COzBHQU9oQixRQUFRO2tCQUFwQixLQUFLO1lBS0csWUFBWTtrQkFBcEIsS0FBSztZQVFHLFdBQVc7a0JBQW5CLEtBQUs7O2tGQWhCSyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET01TZXJ2aWNlLCBQbGF1c2libGVFdmVudCwgUmVzb2x1dGlvbkhlbHBlciB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IFN0cmFwaUxpbmtTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtc3RyYXBpJztcclxuaW1wb3J0IHsgTmF2QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL25hdi1iYXNlL25hdi1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGVOYXZTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWxzL3NpZGUtbmF2LXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgTWVudUl0ZW1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lbnUtaXRlbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJNZW51T3B0aW9uTGluayB9IGZyb20gJy4vbW9kZWxzL3VzZXItbWVudS1vcHRpb24tbGluay5tb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc2lkZS1uYXYtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NpZGUtbmF2LW1lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZU5hdk1lbnVDb21wb25lbnQgZXh0ZW5kcyBOYXZCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICN1c2VybmFtZSE6IHN0cmluZztcclxuICBnZXQgdXNlcm5hbWUoKSB7IHJldHVybiB0aGlzLiN1c2VybmFtZTsgfVxyXG4gIEBJbnB1dCgpIHNldCB1c2VybmFtZSh2YWx1ZSkge1xyXG4gICAgdGhpcy4jdXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0VXNlckluaXRpYWxzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBtZW51U2V0dGluZ3M6IFNpZGVOYXZTZXR0aW5ncyA9IHtcclxuICAgIGV4cGFuZGVkV2lkdGg6ICcyNDFweCcsXHJcbiAgICBjb2xsYXBzZWRXaWR0aDogJzU2cHgnLFxyXG4gICAgbWVudUxvZ286ICcnLFxyXG4gICAgbWVudUxvZ29Db2xsYXBzZWQ6ICcnLFxyXG4gICAgZGlzYWJsZVN0cmFwaTogZmFsc2VcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHByb2R1Y3ROYW1lITogc3RyaW5nO1xyXG5cclxuICB1c2VySW5pdGlhbHMhOiBzdHJpbmc7XHJcbiAgY29sbGFwc2VkID0gZmFsc2U7XHJcblxyXG4gIHJlYWRvbmx5IENPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSA9IFwiVExEX01FTlVfU0lERV9OQVZfQ09MTEFQU0VEXCI7XHJcblxyXG4gIC8vI3JlZ2lvbiBQbGF1c2libGUgZXZlbnQgdmFyaWFibGVzIGZvciBjb2xsYXBzZSBidXR0b25cclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCA9IFwiY29sbGFwc2VNZW51XCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSA9IFwiYWN0aW9uXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBMT0dPQ0xJQ0tfUExBVVNJQkxFX0FDVElPTl9JRCA9IFwidGlsZGVfbG9nb19jbGlja1wiXHJcblxyXG4gIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5MT0dPQ0xJQ0tfUExBVVNJQkxFX0FDVElPTl9JRCxcclxuICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBFWFBBTkRfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lELFxyXG4gICAgcHJvcGVydGllczogW3sga2V5OiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZLCB2YWx1ZTogXCJleHBhbmRcIiB9XVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lELFxyXG4gICAgcHJvcGVydGllczogW3sga2V5OiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZLCB2YWx1ZTogXCJjb2xsYXBzZVwiIH1dXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBtZW51TG9nb0ltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWRcclxuICAgICAgPyB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nb0NvbGxhcHNlZCA/PyB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nb1xyXG4gICAgICA6IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNpZGVOYXZXaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkID8gdGhpcy5tZW51U2V0dGluZ3MuY29sbGFwc2VkV2lkdGggOiB0aGlzLm1lbnVTZXR0aW5ncy5leHBhbmRlZFdpZHRoO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3RyYXBpTGlua1NlcnZpY2U6IFN0cmFwaUxpbmtTZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgZG9tU2VydmljZTogRE9NU2VydmljZSxcclxuICAgIHJlYWRvbmx5IG1lbnVJdGVtczogTWVudUl0ZW1zU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKG1lbnVJdGVtcyk7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBtZW51SXRlbXMubWVudVNoYXJlZENvbmZpZy5iYXNlVXJsIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5nZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIHRoaXMuc2V0VXNlckluaXRpYWxzKCk7XHJcbiAgfVxyXG5cclxuICBsb2dvQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyYXBpTGlua1NlcnZpY2Uuc3RyYXBpTGlua0NsaWNrKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7XHJcbiAgICB0aGlzLnNldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgbGlua0NhbGxiYWNrKGxpbms6IFVzZXJNZW51T3B0aW9uTGluaykge1xyXG4gICAgaWYgKGxpbmsuY2FsbGJhY2spIHtcclxuICAgICAgbGluay5jYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29sbGFwc2VkID0gKHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSkgPT0gJ3RydWUnIHx8IFJlc29sdXRpb25IZWxwZXIuaXNNb2JpbGVSZXMoKSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVksIHRoaXMuY29sbGFwc2VkLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVc2VySW5pdGlhbHMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXNlcm5hbWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRpc3BsYXlpbmcgZmlyc3QgbGV0dGVycyBvZiBuYW1lIGFuZCBzdXJuYW1lXHJcbiAgICBjb25zdCBzcGxpdHRlZFVzZXJuYW1lID0gdGhpcy51c2VybmFtZS5zcGxpdCgnICcpO1xyXG5cclxuICAgIGlmIChzcGxpdHRlZFVzZXJuYW1lLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHdvcmQsIHVzZSB0aGUgZmlyc3QgbGV0dGVyXHJcbiAgICAgIHRoaXMudXNlckluaXRpYWxzID0gc3BsaXR0ZWRVc2VybmFtZVswXVswXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgd29yZCwgdXNlIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIGZpcnN0IHR3byBuYW1lc1xyXG4gICAgdGhpcy51c2VySW5pdGlhbHMgPSBzcGxpdHRlZFVzZXJuYW1lWzBdWzBdICsgc3BsaXR0ZWRVc2VybmFtZVsxXVswXTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeEhpZGUuZ3QteHM+XHJcbiAgPGRpdiBbZnhIaWRlXT1cIiFjb2xsYXBzZWRcIiBjbGFzcz1cIm1vYmlsZS1oZWFkZXJcIj5cclxuICAgIDxhIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNRU5VLkFSSUFfTEFCRUxTLkxPR08nIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImxvZ29DbGljaygkZXZlbnQpXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXByb2R1Y3QtbmFtZVwiPlxyXG4gICAgICAgIHt7IHByb2R1Y3ROYW1lIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBjbGFzcz1cInRvZ2dsZXJcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5NRU5VX1RPR0dMRVInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgW25nQ2xhc3MubHQtc21dPVwiJ21vYmlsZSdcIiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgW3N0eWxlLndpZHRoXT1cInNpZGVOYXZXaWR0aFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgW2NsYXNzLmNvbGxhcHNlZF09XCJjb2xsYXBzZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lci1oZWFkZXJcIiBmeExheW91dD1cInJvd1wiIFtmeExheW91dEFsaWduXT1cImNvbGxhcHNlZCA/ICdjZW50ZXIgY2VudGVyJyA6ICdzcGFjZS1iZXR3ZWVuIGNlbnRlcidcIj5cclxuICAgICAgPGEgKm5nSWY9XCIhY29sbGFwc2VkXCIgW2xpYlBsYXVzaWJsZUV2ZW50XT1cIkxPR09DTElDS19QTEFVU0lCTEVfRVZFTlRcIiBmeEZsZXg9XCIzLjEyNWVtXCIgW2hyZWZdPVwiYmFzZVVybFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTUVOVS5BUklBX0xBQkVMUy5MT0dPJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJsb2dvQ2xpY2soJGV2ZW50KVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBoZWlnaHQ9XCI0MFwiIHdpZHRoPVwiNDBcIiBjbGFzcz1cIm1lbnUtbG9nb1wiIFtzcmNdPVwibWVudUxvZ29JbWFnZVwiIGFsdD1cImxvZ29cIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1wcm9kdWN0LW5hbWVcIj5cclxuICAgICAgICAgIHt7IHByb2R1Y3ROYW1lIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5NRU5VX1RPR0dMRVInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbbGliUGxhdXNpYmxlRXZlbnRdPVwiY29sbGFwc2VkID8gRVhQQU5EX1BMQVVTSUJMRV9FVkVOVCA6IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVFwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiKGNvbGxhcHNlZCA/ICdNRU5VLkVYUEFORCcgOiAnTUVOVS5DT0xMQVBTRScpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24gZnhIaWRlLmd0LXhzPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWljb24gZnhIaWRlLmx0LXNtPnt7IGNvbGxhcHNlZCA/ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQnIDogJ2tleWJvYXJkX2RvdWJsZV9hcnJvd19sZWZ0JyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtd3JhcHBlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIDxtZW51LWNvbHVtbnMgKHRvZ2dsZUNvbGxhcHNlRXZlbnQpPVwidG9nZ2xlQ29sbGFwc2UoKVwiIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCIgcm9sZT1cIm5hdmlnYXRpb25cIiBbaXNPcGVuXT1cIiFjb2xsYXBzZWRcIlxyXG4gICAgICAgIFthY3RpdmVdPVwiYWN0aXZlXCI+PC9tZW51LWNvbHVtbnM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInByb2ZpbGVcIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJ1c2VySW5pdGlhbHNcIiAjc3RhdGU9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJwcm9maWxlLXdyYXBwZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaWNvblwiPlxyXG4gICAgICAgIHt7dXNlckluaXRpYWxzfX1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1uYW1lXCI+XHJcbiAgICAgICAgICB7eyB1c2VybmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3RhdGUubWVudU9wZW47IGVsc2UgaWNvbkRvd25cIiBjbGFzcz1cInByb2ZpbGUtYXJyb3cgc3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd19kb3duXCJ9fTwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkRvd24+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLWFycm93IHNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfdXBcIiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwcm9maWxlLW1lbnVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBtZW51U2V0dGluZ3MudXNlck9wdGlvbnM7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcclxuICAgICAgICBAaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgQGlmIChpdGVtLmxpbmsuaXNFeHRlcm5hbCkge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW2hyZWZdPVwiaXRlbS5saW5rLmhyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwibGlua0NhbGxiYWNrKGl0ZW0ubGluaylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmsuaHJlZlwiIChjbGljayk9XCJsaW5rQ2FsbGJhY2soaXRlbS5saW5rKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLW9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmJ1dHRvbj8uY2FsbGJhY2soKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9maWxlTWVudUl0ZW0gbGV0LWljb249XCJpY29uXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICBAaWYgKCFpY29uPy5pc0N1c3RvbSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcHJvZmlsZS1vcHRpb24taWNvblwiIFtjbGFzcy5tYXRlcmlhbC1pY29ucy1vdXRsaW5lZF09XCJpY29uPy5pc091dGxpbmVkXCI+XHJcbiAgICAgICAgICB7e2ljb24/Lm5hbWV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1vcHRpb24taWNvblwiIFtzdmdJY29uXT1cImljb24/Lm5hbWVcIj48L21hdC1pY29uPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3VCNUQsNEJBRUM7O0lBRHlELGdMQUFTLHdCQUFpQixLQUFDO0lBRW5GLHlCQUFpRjtJQUNqRiwrQkFBZ0M7SUFDOUIsWUFDRjtJQUNGLEFBREUsaUJBQU8sRUFDTDs7O0lBUG1GLEFBQWpFLG9FQUErQywwQ0FBa0M7O0lBR3ZELGVBQXFCO0lBQXJCLDREQUFxQjtJQUVqRSxlQUNGO0lBREUsbURBQ0Y7OztJQXlCRSxZQUNGOzs7SUFERSxvREFDRjs7O0lBQ0UsZ0NBQVU7SUFBQSxzQkFBTTtJQUFBLGlCQUFXOzs7SUFTN0Isb0NBQTJFO0lBQUEsWUFBeUI7SUFBQSxpQkFBVzs7SUFBcEMsY0FBeUI7SUFBekIsMkNBQXlCOzs7SUFHbEcsb0NBQXFDO0lBQUEsWUFBd0I7SUFBQSxpQkFBVzs7SUFBbkMsY0FBd0I7SUFBeEIseUNBQXdCOzs7SUFSakUsNkJBQWlDO0lBQy9CLGdDQUEyQjtJQUN6QixZQUNGOztJQUFBLGlCQUFPO0lBSVAsQUFGQSxnR0FBMkUseUhBRXBEOzs7Ozs7O0lB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QTBCO1lBQTFCLDRDQUEwQjtZQUV0RCxlQUlDO1lBSkQsNENBSUM7WUFHWSxlQUFnQjtZQUFoQixxQ0FBZ0I7WUFjL0IsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEekZNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjswR0FPaEIsUUFBUTtrQkFBcEIsS0FBSztZQU1HLFlBQVk7a0JBQXBCLEtBQUs7WUFRRyxXQUFXO2tCQUFuQixLQUFLOztrRkFqQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTWVudU9wdGlvbkxpbmsgfSBmcm9tICcuL21vZGVscy91c2VyLW1lbnUtb3B0aW9uLWxpbmsubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIC8vIGlmIHVzZXJuYW1lIGlzIHBhc3NlZCB3aGl0aCB3aGl0ZXNwYWNlIGluIGJlZ2dpbmluaW5nLCBpdCBicmVha3MgVUksIHNvIHRyaW0gaXQgZm9yIHNhZmV0eS5cclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG1lbnVTZXR0aW5nczogU2lkZU5hdlNldHRpbmdzID0ge1xyXG4gICAgZXhwYW5kZWRXaWR0aDogJzI0MXB4JyxcclxuICAgIGNvbGxhcHNlZFdpZHRoOiAnNTZweCcsXHJcbiAgICBtZW51TG9nbzogJycsXHJcbiAgICBtZW51TG9nb0NvbGxhcHNlZDogJycsXHJcbiAgICBkaXNhYmxlU3RyYXBpOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHJvZHVjdE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIHVzZXJJbml0aWFscyE6IHN0cmluZztcclxuICBjb2xsYXBzZWQgPSBmYWxzZTtcclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZID0gXCJUTERfTUVOVV9TSURFX05BVl9DT0xMQVBTRURcIjtcclxuXHJcbiAgLy8jcmVnaW9uIFBsYXVzaWJsZSBldmVudCB2YXJpYWJsZXMgZm9yIGNvbGxhcHNlIGJ1dHRvblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lEID0gXCJjb2xsYXBzZU1lbnVcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZID0gXCJhY3Rpb25cIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lEID0gXCJ0aWxkZV9sb2dvX2NsaWNrXCJcclxuXHJcbiAgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkxPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lELFxyXG4gICAgcHJvcGVydGllczogW11cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImV4cGFuZFwiIH1dXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImNvbGxhcHNlXCIgfV1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IG1lbnVMb2dvSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZFxyXG4gICAgICA/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvQ29sbGFwc2VkID8/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvXHJcbiAgICAgIDogdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ287XHJcbiAgfVxyXG5cclxuICBnZXQgc2lkZU5hdldpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQgPyB0aGlzLm1lbnVTZXR0aW5ncy5jb2xsYXBzZWRXaWR0aCA6IHRoaXMubWVudVNldHRpbmdzLmV4cGFuZGVkV2lkdGg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdHJhcGlMaW5rU2VydmljZTogU3RyYXBpTGlua1NlcnZpY2UsXHJcbiAgICByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgbWVudUl0ZW1zOiBNZW51SXRlbXNTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUl0ZW1zKTtcclxuICAgIHRoaXMuYmFzZVVybCA9IG1lbnVJdGVtcy5tZW51U2hhcmVkQ29uZmlnLmJhc2VVcmwgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIGxvZ29DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJhcGlMaW5rU2VydmljZS5zdHJhcGlMaW5rQ2xpY2soZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICAgIHRoaXMuc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgfVxyXG5cclxuICBsaW5rQ2FsbGJhY2sobGluazogVXNlck1lbnVPcHRpb25MaW5rKSB7XHJcbiAgICBpZiAobGluay5jYWxsYmFjaykge1xyXG4gICAgICBsaW5rLmNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSAodGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZKSA9PSAndHJ1ZScgfHwgUmVzb2x1dGlvbkhlbHBlci5pc01vYmlsZVJlcygpKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSwgdGhpcy5jb2xsYXBzZWQudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJbml0aWFscygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VybmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlzcGxheWluZyBmaXJzdCBsZXR0ZXJzIG9mIG5hbWUgYW5kIHN1cm5hbWVcclxuICAgIGNvbnN0IHNwbGl0dGVkVXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3BsaXR0ZWRVc2VybmFtZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlclxyXG4gICAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHdvcmQsIHVzZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBmaXJzdCB0d28gbmFtZXNcclxuICAgIHRoaXMudXNlckluaXRpYWxzID0gc3BsaXR0ZWRVc2VybmFtZVswXVswXSArIHNwbGl0dGVkVXNlcm5hbWVbMV1bMF07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhIaWRlLmd0LXhzPlxyXG4gIDxkaXYgW2Z4SGlkZV09XCIhY29sbGFwc2VkXCIgY2xhc3M9XCJtb2JpbGUtaGVhZGVyXCI+XHJcbiAgICA8YSBbbGliUGxhdXNpYmxlRXZlbnRdPVwiTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVFwiIGZ4RmxleD1cIjMuMTI1ZW1cIiBbaHJlZl09XCJiYXNlVXJsXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTUVOVS5BUklBX0xBQkVMUy5MT0dPJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJsb2dvQ2xpY2soJGV2ZW50KVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nIGhlaWdodD1cIjQwXCIgd2lkdGg9XCI0MFwiIGNsYXNzPVwibWVudS1sb2dvXCIgW3NyY109XCJtZW51TG9nb0ltYWdlXCIgYWx0PVwibG9nb1wiIC8+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1wcm9kdWN0LW5hbWVcIj5cclxuICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFtsaWJQbGF1c2libGVFdmVudF09XCJjb2xsYXBzZWQgPyBFWFBBTkRfUExBVVNJQkxFX0VWRU5UIDogQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IFtuZ0NsYXNzLmx0LXNtXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aF09XCJzaWRlTmF2V2lkdGhcIiBmeExheW91dD1cImNvbHVtblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiY29sbGFwc2VkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXItaGVhZGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBbZnhMYXlvdXRBbGlnbl09XCJjb2xsYXBzZWQgPyAnY2VudGVyIGNlbnRlcicgOiAnc3BhY2UtYmV0d2VlbiBjZW50ZXInXCI+XHJcbiAgICAgIDxhICpuZ0lmPVwiIWNvbGxhcHNlZFwiIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01FTlUuQVJJQV9MQUJFTFMuTE9HTycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibG9nb0NsaWNrKCRldmVudClcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtcHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIihjb2xsYXBzZWQgPyAnTUVOVS5FWFBBTkQnIDogJ01FTlUuQ09MTEFQU0UnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5ndC14cz5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5sdC1zbT57eyBjb2xsYXBzZWQgPyAna2V5Ym9hcmRfZG91YmxlX2Fycm93X3JpZ2h0JyA6ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdCcgfX08L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8bWVudS1jb2x1bW5zICh0b2dnbGVDb2xsYXBzZUV2ZW50KT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgW2lzT3Blbl09XCIhY29sbGFwc2VkXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiPjwvbWVudS1jb2x1bW5zPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwcm9maWxlXCI+XHJcbiAgICA8YnV0dG9uICNzdGF0ZT1cIm1hdE1lbnVUcmlnZ2VyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cInByb2ZpbGUtd3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pY29uXCI+XHJcbiAgICAgICAgQGlmICh1c2VySW5pdGlhbHMpIHtcclxuICAgICAgICAgIHt7dXNlckluaXRpYWxzfX1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbj5wZXJzb248L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAge3sgdXNlcm5hbWUgPz8gJ01FTlUuQU5PTllNT1VTJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3RhdGUubWVudU9wZW47IGVsc2UgaWNvbkRvd25cIiBjbGFzcz1cInByb2ZpbGUtYXJyb3cgc3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd19kb3duXCJ9fTwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkRvd24+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLWFycm93IHNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfdXBcIiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwcm9maWxlLW1lbnVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBtZW51U2V0dGluZ3MudXNlck9wdGlvbnM7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcclxuICAgICAgICBAaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgQGlmIChpdGVtLmxpbmsuaXNFeHRlcm5hbCkge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW2hyZWZdPVwiaXRlbS5saW5rLmhyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwibGlua0NhbGxiYWNrKGl0ZW0ubGluaylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmsuaHJlZlwiIChjbGljayk9XCJsaW5rQ2FsbGJhY2soaXRlbS5saW5rKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLW9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmJ1dHRvbj8uY2FsbGJhY2soKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9maWxlTWVudUl0ZW0gbGV0LWljb249XCJpY29uXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICBAaWYgKCFpY29uPy5pc0N1c3RvbSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcHJvZmlsZS1vcHRpb24taWNvblwiIFtjbGFzcy5tYXRlcmlhbC1pY29ucy1vdXRsaW5lZF09XCJpY29uPy5pc091dGxpbmVkXCI+XHJcbiAgICAgICAgICB7e2ljb24/Lm5hbWV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1vcHRpb24taWNvblwiIFtzdmdJY29uXT1cImljb24/Lm5hbWVcIj48L21hdC1pY29uPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=