@agnos-ui/angular-bootstrap 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +15 -0
  2. package/agnos-ui-angular.module.d.ts +16 -0
  3. package/components/accordion/accordion.component.d.ts +239 -0
  4. package/components/accordion/accordion.d.ts +11 -0
  5. package/components/accordion/index.d.ts +2 -0
  6. package/components/alert/alert.component.d.ts +95 -0
  7. package/components/alert/alert.d.ts +7 -0
  8. package/components/alert/index.d.ts +2 -0
  9. package/components/modal/index.d.ts +3 -0
  10. package/components/modal/modal.component.d.ts +164 -0
  11. package/components/modal/modal.d.ts +9 -0
  12. package/components/modal/modal.service.d.ts +13 -0
  13. package/components/pagination/index.d.ts +2 -0
  14. package/components/pagination/pagination.component.d.ts +252 -0
  15. package/components/pagination/pagination.d.ts +8 -0
  16. package/components/progressbar/index.d.ts +2 -0
  17. package/components/progressbar/progressbar.component.d.ts +77 -0
  18. package/components/progressbar/progressbar.d.ts +7 -0
  19. package/components/rating/index.d.ts +2 -0
  20. package/components/rating/rating.component.d.ts +95 -0
  21. package/components/rating/rating.d.ts +6 -0
  22. package/components/select/index.d.ts +2 -0
  23. package/components/select/select.component.d.ts +107 -0
  24. package/components/select/select.d.ts +8 -0
  25. package/components/slider/index.d.ts +2 -0
  26. package/components/slider/slider.component.d.ts +130 -0
  27. package/components/slider/slider.d.ts +9 -0
  28. package/components/toast/index.d.ts +2 -0
  29. package/components/toast/toast.component.d.ts +106 -0
  30. package/components/toast/toast.d.ts +7 -0
  31. package/config.d.ts +18 -0
  32. package/esm2022/agnos-ui-angular-bootstrap.mjs +5 -0
  33. package/esm2022/agnos-ui-angular.module.mjs +151 -0
  34. package/esm2022/components/accordion/accordion.component.mjs +579 -0
  35. package/esm2022/components/accordion/accordion.mjs +4 -0
  36. package/esm2022/components/accordion/index.mjs +3 -0
  37. package/esm2022/components/alert/alert.component.mjs +230 -0
  38. package/esm2022/components/alert/alert.mjs +4 -0
  39. package/esm2022/components/alert/index.mjs +3 -0
  40. package/esm2022/components/modal/index.mjs +4 -0
  41. package/esm2022/components/modal/modal.component.mjs +423 -0
  42. package/esm2022/components/modal/modal.mjs +4 -0
  43. package/esm2022/components/modal/modal.service.mjs +47 -0
  44. package/esm2022/components/pagination/index.mjs +3 -0
  45. package/esm2022/components/pagination/pagination.component.mjs +581 -0
  46. package/esm2022/components/pagination/pagination.mjs +4 -0
  47. package/esm2022/components/progressbar/index.mjs +3 -0
  48. package/esm2022/components/progressbar/progressbar.component.mjs +180 -0
  49. package/esm2022/components/progressbar/progressbar.mjs +4 -0
  50. package/esm2022/components/rating/index.mjs +3 -0
  51. package/esm2022/components/rating/rating.component.mjs +185 -0
  52. package/esm2022/components/rating/rating.mjs +4 -0
  53. package/esm2022/components/select/index.mjs +3 -0
  54. package/esm2022/components/select/select.component.mjs +280 -0
  55. package/esm2022/components/select/select.mjs +4 -0
  56. package/esm2022/components/slider/index.mjs +3 -0
  57. package/esm2022/components/slider/slider.component.mjs +443 -0
  58. package/esm2022/components/slider/slider.mjs +4 -0
  59. package/esm2022/components/toast/index.mjs +3 -0
  60. package/esm2022/components/toast/toast.component.mjs +284 -0
  61. package/esm2022/components/toast/toast.mjs +4 -0
  62. package/esm2022/config.mjs +5 -0
  63. package/esm2022/index.mjs +27 -0
  64. package/fesm2022/agnos-ui-angular-bootstrap.mjs +3382 -0
  65. package/fesm2022/agnos-ui-angular-bootstrap.mjs.map +1 -0
  66. package/index.d.ts +33 -0
  67. package/package.json +48 -0
@@ -0,0 +1,581 @@
1
+ import { BaseWidgetDirective, ComponentTemplate, SlotDirective, UseDirective, auBooleanAttribute, auNumberAttribute } from '@agnos-ui/angular-headless';
2
+ import { ChangeDetectionStrategy, Component, ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';
3
+ import { callWidgetFactory } from '../../config';
4
+ import { createPagination } from './pagination';
5
+ import * as i0 from "@angular/core";
6
+ const _c0 = ["pages"];
7
+ const _c1 = ["structure"];
8
+ const _c2 = (a0, a1) => ({ state: a0, widget: a1 });
9
+ const _c3 = a0 => ({ page: a0 });
10
+ const _c4 = (a0, a1) => [a0, a1];
11
+ const _c5 = (a0, a1, a2) => ({ state: a0, widget: a1, displayedPage: a2 });
12
+ const _c6 = (a0, a1) => ({ widget: a0, state: a1 });
13
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_1_ng_template_1_Template(rf, ctx) { }
14
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵelementStart(0, "div", 6);
16
+ i0.ɵɵtemplate(1, PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_1_ng_template_1_Template, 0, 0, "ng-template", 7);
17
+ i0.ɵɵelementEnd();
18
+ i0.ɵɵelementStart(2, "span", 8);
19
+ i0.ɵɵtext(3);
20
+ i0.ɵɵelementEnd();
21
+ } if (rf & 2) {
22
+ const ctx_r0 = i0.ɵɵnextContext(2);
23
+ const state_r2 = ctx_r0.state;
24
+ const widget_r3 = ctx_r0.widget;
25
+ i0.ɵɵadvance();
26
+ i0.ɵɵproperty("auSlot", state_r2.slotEllipsis)("auSlotProps", i0.ɵɵpureFunction2(3, _c2, state_r2, widget_r3));
27
+ i0.ɵɵadvance(2);
28
+ i0.ɵɵtextInterpolate(state_r2.ariaEllipsisLabel);
29
+ } }
30
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_ng_template_1_Template(rf, ctx) { }
31
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "span", 8);
33
+ i0.ɵɵtext(1);
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const state_r2 = i0.ɵɵnextContext(3).state;
37
+ i0.ɵɵadvance();
38
+ i0.ɵɵtextInterpolate(state_r2.activeLabel);
39
+ } }
40
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementStart(0, "a", 9);
42
+ i0.ɵɵtemplate(1, PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_ng_template_1_Template, 0, 0, "ng-template", 7)(2, PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_Conditional_2_Template, 2, 1, "span", 8);
43
+ i0.ɵɵelementEnd();
44
+ } if (rf & 2) {
45
+ const page_r4 = i0.ɵɵnextContext().$implicit;
46
+ const ctx_r0 = i0.ɵɵnextContext();
47
+ const state_r2 = ctx_r0.state;
48
+ const widget_r3 = ctx_r0.widget;
49
+ i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(6, _c4, widget_r3.directives.pageLink, i0.ɵɵpureFunction1(4, _c3, page_r4)));
50
+ i0.ɵɵadvance();
51
+ i0.ɵɵproperty("auSlot", state_r2.slotNumberLabel)("auSlotProps", i0.ɵɵpureFunction3(9, _c5, state_r2, widget_r3, page_r4));
52
+ i0.ɵɵadvance();
53
+ i0.ɵɵconditional(2, state_r2.page === page_r4 ? 2 : -1);
54
+ } }
55
+ function PaginationDefaultSlotsComponent_ng_template_0_For_1_Template(rf, ctx) { if (rf & 1) {
56
+ i0.ɵɵelementStart(0, "li", 5);
57
+ i0.ɵɵtemplate(1, PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_1_Template, 4, 6)(2, PaginationDefaultSlotsComponent_ng_template_0_For_1_Conditional_2_Template, 3, 13);
58
+ i0.ɵɵelementEnd();
59
+ } if (rf & 2) {
60
+ const page_r4 = ctx.$implicit;
61
+ const state_r2 = i0.ɵɵnextContext().state;
62
+ i0.ɵɵclassProp("active", page_r4 === state_r2.page)("disabled", page_r4 === -1 || state_r2.disabled);
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵconditional(1, page_r4 === -1 ? 1 : 2);
65
+ } }
66
+ function PaginationDefaultSlotsComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵrepeaterCreate(0, PaginationDefaultSlotsComponent_ng_template_0_For_1_Template, 3, 5, "li", 4, i0.ɵɵrepeaterTrackByIdentity);
68
+ } if (rf & 2) {
69
+ const state_r2 = ctx.state;
70
+ i0.ɵɵrepeater(state_r2.pages);
71
+ } }
72
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_1_ng_template_3_Template(rf, ctx) { }
73
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelementStart(0, "li", 5)(1, "a", 9)(2, "span", 12);
75
+ i0.ɵɵtemplate(3, PaginationDefaultSlotsComponent_ng_template_2_Conditional_1_ng_template_3_Template, 0, 0, "ng-template", 7);
76
+ i0.ɵɵelementEnd()()();
77
+ } if (rf & 2) {
78
+ const ctx_r4 = i0.ɵɵnextContext();
79
+ const state_r6 = ctx_r4.state;
80
+ const widget_r7 = ctx_r4.widget;
81
+ i0.ɵɵclassProp("disabled", state_r6.previousDisabled);
82
+ i0.ɵɵadvance();
83
+ i0.ɵɵproperty("auUse", widget_r7.directives.pageFirst);
84
+ i0.ɵɵadvance(2);
85
+ i0.ɵɵproperty("auSlot", state_r6.slotFirst)("auSlotProps", i0.ɵɵpureFunction2(5, _c6, widget_r7, state_r6));
86
+ } }
87
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_2_ng_template_3_Template(rf, ctx) { }
88
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "li", 5)(1, "a", 9)(2, "span", 12);
90
+ i0.ɵɵtemplate(3, PaginationDefaultSlotsComponent_ng_template_2_Conditional_2_ng_template_3_Template, 0, 0, "ng-template", 7);
91
+ i0.ɵɵelementEnd()()();
92
+ } if (rf & 2) {
93
+ const ctx_r4 = i0.ɵɵnextContext();
94
+ const state_r6 = ctx_r4.state;
95
+ const widget_r7 = ctx_r4.widget;
96
+ i0.ɵɵclassProp("disabled", state_r6.previousDisabled);
97
+ i0.ɵɵadvance();
98
+ i0.ɵɵproperty("auUse", widget_r7.directives.pagePrev);
99
+ i0.ɵɵadvance(2);
100
+ i0.ɵɵproperty("auSlot", state_r6.slotPrevious)("auSlotProps", i0.ɵɵpureFunction2(5, _c6, widget_r7, state_r6));
101
+ } }
102
+ function PaginationDefaultSlotsComponent_ng_template_2_ng_template_3_Template(rf, ctx) { }
103
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_4_ng_template_3_Template(rf, ctx) { }
104
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "li", 5)(1, "a", 9)(2, "span", 12);
106
+ i0.ɵɵtemplate(3, PaginationDefaultSlotsComponent_ng_template_2_Conditional_4_ng_template_3_Template, 0, 0, "ng-template", 7);
107
+ i0.ɵɵelementEnd()()();
108
+ } if (rf & 2) {
109
+ const ctx_r4 = i0.ɵɵnextContext();
110
+ const state_r6 = ctx_r4.state;
111
+ const widget_r7 = ctx_r4.widget;
112
+ i0.ɵɵclassProp("disabled", state_r6.nextDisabled);
113
+ i0.ɵɵadvance();
114
+ i0.ɵɵproperty("auUse", widget_r7.directives.pageNext);
115
+ i0.ɵɵadvance(2);
116
+ i0.ɵɵproperty("auSlot", state_r6.slotNext)("auSlotProps", i0.ɵɵpureFunction2(5, _c6, widget_r7, state_r6));
117
+ } }
118
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_5_ng_template_3_Template(rf, ctx) { }
119
+ function PaginationDefaultSlotsComponent_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
120
+ i0.ɵɵelementStart(0, "li", 5)(1, "a", 9)(2, "span", 12);
121
+ i0.ɵɵtemplate(3, PaginationDefaultSlotsComponent_ng_template_2_Conditional_5_ng_template_3_Template, 0, 0, "ng-template", 7);
122
+ i0.ɵɵelementEnd()()();
123
+ } if (rf & 2) {
124
+ const ctx_r4 = i0.ɵɵnextContext();
125
+ const state_r6 = ctx_r4.state;
126
+ const widget_r7 = ctx_r4.widget;
127
+ i0.ɵɵclassProp("disabled", state_r6.nextDisabled);
128
+ i0.ɵɵadvance();
129
+ i0.ɵɵproperty("auUse", widget_r7.directives.pageLast);
130
+ i0.ɵɵadvance(2);
131
+ i0.ɵɵproperty("auSlot", state_r6.slotLast)("auSlotProps", i0.ɵɵpureFunction2(5, _c6, widget_r7, state_r6));
132
+ } }
133
+ function PaginationDefaultSlotsComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "ul");
135
+ i0.ɵɵtemplate(1, PaginationDefaultSlotsComponent_ng_template_2_Conditional_1_Template, 4, 8, "li", 10)(2, PaginationDefaultSlotsComponent_ng_template_2_Conditional_2_Template, 4, 8, "li", 10)(3, PaginationDefaultSlotsComponent_ng_template_2_ng_template_3_Template, 0, 0, "ng-template", 7)(4, PaginationDefaultSlotsComponent_ng_template_2_Conditional_4_Template, 4, 8, "li", 10)(5, PaginationDefaultSlotsComponent_ng_template_2_Conditional_5_Template, 4, 8, "li", 10);
136
+ i0.ɵɵelementEnd();
137
+ i0.ɵɵelementStart(6, "div", 11);
138
+ i0.ɵɵtext(7);
139
+ i0.ɵɵelementEnd();
140
+ } if (rf & 2) {
141
+ const state_r6 = ctx.state;
142
+ const widget_r7 = ctx.widget;
143
+ i0.ɵɵclassMap("au-pagination pagination" + (state_r6.size ? " pagination-" + state_r6.size : "") + " " + state_r6.className);
144
+ i0.ɵɵadvance();
145
+ i0.ɵɵconditional(1, state_r6.boundaryLinks ? 1 : -1);
146
+ i0.ɵɵadvance();
147
+ i0.ɵɵconditional(2, state_r6.directionLinks ? 2 : -1);
148
+ i0.ɵɵadvance();
149
+ i0.ɵɵproperty("auSlot", state_r6.slotPages)("auSlotProps", i0.ɵɵpureFunction2(9, _c6, widget_r7, state_r6));
150
+ i0.ɵɵadvance();
151
+ i0.ɵɵconditional(4, state_r6.directionLinks ? 4 : -1);
152
+ i0.ɵɵadvance();
153
+ i0.ɵɵconditional(5, state_r6.boundaryLinks ? 5 : -1);
154
+ i0.ɵɵadvance(2);
155
+ i0.ɵɵtextInterpolate(state_r6.ariaLiveLabelText);
156
+ } }
157
+ const _c7 = ["auPagination", ""];
158
+ function PaginationComponent_ng_template_0_Template(rf, ctx) { }
159
+ /**
160
+ * A directive to use to give the 'ellipsis' link template to the pagination component
161
+ */
162
+ export class PaginationEllipsisDirective {
163
+ constructor() {
164
+ this.templateRef = inject((TemplateRef));
165
+ }
166
+ static ngTemplateContextGuard(_dir, context) {
167
+ return true;
168
+ }
169
+ static { this.ɵfac = function PaginationEllipsisDirective_Factory(t) { return new (t || PaginationEllipsisDirective)(); }; }
170
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationEllipsisDirective, selectors: [["ng-template", "auPaginationEllipsis", ""]], standalone: true }); }
171
+ }
172
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationEllipsisDirective, [{
173
+ type: Directive,
174
+ args: [{ selector: 'ng-template[auPaginationEllipsis]', standalone: true }]
175
+ }], null, null); })();
176
+ /**
177
+ * A directive to use to give the 'first' link template to the pagination component
178
+ */
179
+ export class PaginationFirstDirective {
180
+ constructor() {
181
+ this.templateRef = inject((TemplateRef));
182
+ }
183
+ static ngTemplateContextGuard(_dir, context) {
184
+ return true;
185
+ }
186
+ static { this.ɵfac = function PaginationFirstDirective_Factory(t) { return new (t || PaginationFirstDirective)(); }; }
187
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationFirstDirective, selectors: [["ng-template", "auPaginationFirst", ""]], standalone: true }); }
188
+ }
189
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationFirstDirective, [{
190
+ type: Directive,
191
+ args: [{ selector: 'ng-template[auPaginationFirst]', standalone: true }]
192
+ }], null, null); })();
193
+ /**
194
+ * A directive to use to give the 'last' link template to the pagination component
195
+ */
196
+ export class PaginationLastDirective {
197
+ constructor() {
198
+ this.templateRef = inject((TemplateRef));
199
+ }
200
+ static ngTemplateContextGuard(_dir, context) {
201
+ return true;
202
+ }
203
+ static { this.ɵfac = function PaginationLastDirective_Factory(t) { return new (t || PaginationLastDirective)(); }; }
204
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationLastDirective, selectors: [["ng-template", "auPaginationLast", ""]], standalone: true }); }
205
+ }
206
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationLastDirective, [{
207
+ type: Directive,
208
+ args: [{ selector: 'ng-template[auPaginationLast]', standalone: true }]
209
+ }], null, null); })();
210
+ /**
211
+ * A directive to use to give the 'next' link template to the pagination component
212
+ */
213
+ export class PaginationNextDirective {
214
+ constructor() {
215
+ this.templateRef = inject((TemplateRef));
216
+ }
217
+ static ngTemplateContextGuard(_dir, context) {
218
+ return true;
219
+ }
220
+ static { this.ɵfac = function PaginationNextDirective_Factory(t) { return new (t || PaginationNextDirective)(); }; }
221
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationNextDirective, selectors: [["ng-template", "auPaginationNext", ""]], standalone: true }); }
222
+ }
223
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationNextDirective, [{
224
+ type: Directive,
225
+ args: [{ selector: 'ng-template[auPaginationNext]', standalone: true }]
226
+ }], null, null); })();
227
+ /**
228
+ * A directive to use to give the page 'number' template to the pagination component
229
+ */
230
+ export class PaginationNumberDirective {
231
+ constructor() {
232
+ this.templateRef = inject((TemplateRef));
233
+ }
234
+ static ngTemplateContextGuard(_dir, context) {
235
+ return true;
236
+ }
237
+ static { this.ɵfac = function PaginationNumberDirective_Factory(t) { return new (t || PaginationNumberDirective)(); }; }
238
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationNumberDirective, selectors: [["ng-template", "auPaginationNumber", ""]], standalone: true }); }
239
+ }
240
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationNumberDirective, [{
241
+ type: Directive,
242
+ args: [{ selector: 'ng-template[auPaginationNumber]', standalone: true }]
243
+ }], null, null); })();
244
+ /**
245
+ * A directive to use to give the 'previous' link template to the pagination component
246
+ */
247
+ export class PaginationPreviousDirective {
248
+ constructor() {
249
+ this.templateRef = inject((TemplateRef));
250
+ }
251
+ static ngTemplateContextGuard(_dir, context) {
252
+ return true;
253
+ }
254
+ static { this.ɵfac = function PaginationPreviousDirective_Factory(t) { return new (t || PaginationPreviousDirective)(); }; }
255
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationPreviousDirective, selectors: [["ng-template", "auPaginationPrevious", ""]], standalone: true }); }
256
+ }
257
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationPreviousDirective, [{
258
+ type: Directive,
259
+ args: [{ selector: 'ng-template[auPaginationPrevious]', standalone: true }]
260
+ }], null, null); })();
261
+ /**
262
+ * A directive to use to give the 'Pages' template for the Pages slot
263
+ */
264
+ export class PaginationPagesDirective {
265
+ constructor() {
266
+ this.templateRef = inject((TemplateRef));
267
+ }
268
+ static ngTemplateContextGuard(_dir, context) {
269
+ return true;
270
+ }
271
+ static { this.ɵfac = function PaginationPagesDirective_Factory(t) { return new (t || PaginationPagesDirective)(); }; }
272
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationPagesDirective, selectors: [["ng-template", "auPaginationPages", ""]], standalone: true }); }
273
+ }
274
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationPagesDirective, [{
275
+ type: Directive,
276
+ args: [{ selector: 'ng-template[auPaginationPages]', standalone: true }]
277
+ }], null, null); })();
278
+ /**
279
+ * Directive to provide the slot structure for the pagination widget.
280
+ */
281
+ export class PaginationStructureDirective {
282
+ constructor() {
283
+ this.templateRef = inject((TemplateRef));
284
+ }
285
+ static ngTemplateContextGuard(dir, context) {
286
+ return true;
287
+ }
288
+ static { this.ɵfac = function PaginationStructureDirective_Factory(t) { return new (t || PaginationStructureDirective)(); }; }
289
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PaginationStructureDirective, selectors: [["ng-template", "auPaginationStructure", ""]], standalone: true }); }
290
+ }
291
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationStructureDirective, [{
292
+ type: Directive,
293
+ args: [{ selector: 'ng-template[auPaginationStructure]', standalone: true }]
294
+ }], null, null); })();
295
+ export class PaginationDefaultSlotsComponent {
296
+ static { this.ɵfac = function PaginationDefaultSlotsComponent_Factory(t) { return new (t || PaginationDefaultSlotsComponent)(); }; }
297
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaginationDefaultSlotsComponent, selectors: [["ng-component"]], viewQuery: function PaginationDefaultSlotsComponent_Query(rf, ctx) { if (rf & 1) {
298
+ i0.ɵɵviewQuery(_c0, 7);
299
+ i0.ɵɵviewQuery(_c1, 7);
300
+ } if (rf & 2) {
301
+ let _t;
302
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pages = _t.first);
303
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.structure = _t.first);
304
+ } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 4, vars: 0, consts: [["pages", ""], ["structure", ""], ["auPaginationPages", ""], ["auPaginationStructure", ""], [1, "page-item", 3, "active", "disabled"], [1, "page-item"], ["aria-hidden", "true", 1, "page-link", "au-ellipsis"], [3, "auSlot", "auSlotProps"], [1, "visually-hidden"], [1, "page-link", 3, "auUse"], [1, "page-item", 3, "disabled"], ["aria-live", "polite", 1, "visually-hidden"], ["aria-hidden", "true"]], template: function PaginationDefaultSlotsComponent_Template(rf, ctx) { if (rf & 1) {
305
+ i0.ɵɵtemplate(0, PaginationDefaultSlotsComponent_ng_template_0_Template, 2, 0, "ng-template", 2, 0, i0.ɵɵtemplateRefExtractor)(2, PaginationDefaultSlotsComponent_ng_template_2_Template, 8, 12, "ng-template", 3, 1, i0.ɵɵtemplateRefExtractor);
306
+ } }, dependencies: [SlotDirective, PaginationPagesDirective, PaginationStructureDirective, UseDirective], encapsulation: 2, changeDetection: 0 }); }
307
+ }
308
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationDefaultSlotsComponent, [{
309
+ type: Component,
310
+ args: [{
311
+ standalone: true,
312
+ imports: [SlotDirective, PaginationPagesDirective, PaginationStructureDirective, UseDirective],
313
+ changeDetection: ChangeDetectionStrategy.OnPush,
314
+ template: `
315
+ <ng-template auPaginationPages #pages let-state="state" let-widget="widget">
316
+ @for (page of state.pages; track page; let i = $index) {
317
+ <li class="page-item" [class.active]="page === state.page" [class.disabled]="page === -1 || state.disabled">
318
+ @if (page === -1) {
319
+ <div class="page-link au-ellipsis" aria-hidden="true">
320
+ <ng-template [auSlot]="state.slotEllipsis" [auSlotProps]="{state, widget}"></ng-template>
321
+ </div>
322
+ <span class="visually-hidden">{{ state.ariaEllipsisLabel }}</span>
323
+ } @else {
324
+ <a class="page-link" [auUse]="[widget.directives.pageLink, {page}]">
325
+ <ng-template [auSlot]="state.slotNumberLabel" [auSlotProps]="{state, widget, displayedPage: page}"></ng-template>
326
+ @if (state.page === page) {
327
+ <span class="visually-hidden">{{ state.activeLabel }}</span>
328
+ }
329
+ </a>
330
+ }
331
+ </li>
332
+ }
333
+ </ng-template>
334
+ <ng-template auPaginationStructure #structure let-state="state" let-widget="widget">
335
+ <ul [class]="'au-pagination pagination' + (state.size ? ' pagination-' + state.size : '') + ' ' + state.className">
336
+ @if (state.boundaryLinks) {
337
+ <li class="page-item" [class.disabled]="state.previousDisabled">
338
+ <a class="page-link" [auUse]="widget.directives.pageFirst">
339
+ <span aria-hidden="true">
340
+ <ng-template [auSlot]="state.slotFirst" [auSlotProps]="{widget, state}"></ng-template>
341
+ </span>
342
+ </a>
343
+ </li>
344
+ }
345
+ @if (state.directionLinks) {
346
+ <li class="page-item" [class.disabled]="state.previousDisabled">
347
+ <a class="page-link" [auUse]="widget.directives.pagePrev">
348
+ <span aria-hidden="true">
349
+ <ng-template [auSlot]="state.slotPrevious" [auSlotProps]="{widget, state}"></ng-template>
350
+ </span>
351
+ </a>
352
+ </li>
353
+ }
354
+ <ng-template [auSlot]="state.slotPages" [auSlotProps]="{widget, state}"></ng-template>
355
+ @if (state.directionLinks) {
356
+ <li class="page-item" [class.disabled]="state.nextDisabled">
357
+ <a class="page-link" [auUse]="widget.directives.pageNext">
358
+ <span aria-hidden="true">
359
+ <ng-template [auSlot]="state.slotNext" [auSlotProps]="{widget, state}"></ng-template>
360
+ </span>
361
+ </a>
362
+ </li>
363
+ }
364
+ @if (state.boundaryLinks) {
365
+ <li class="page-item" [class.disabled]="state.nextDisabled">
366
+ <a class="page-link" [auUse]="widget.directives.pageLast">
367
+ <span aria-hidden="true">
368
+ <ng-template [auSlot]="state.slotLast" [auSlotProps]="{widget, state}"></ng-template>
369
+ </span>
370
+ </a>
371
+ </li>
372
+ }
373
+ </ul>
374
+ <div aria-live="polite" class="visually-hidden">{{ state.ariaLiveLabelText }}</div>
375
+ </ng-template>
376
+ `,
377
+ }]
378
+ }], null, { pages: [{
379
+ type: ViewChild,
380
+ args: ['pages', { static: true }]
381
+ }], structure: [{
382
+ type: ViewChild,
383
+ args: ['structure', { static: true }]
384
+ }] }); })();
385
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaginationDefaultSlotsComponent, { className: "PaginationDefaultSlotsComponent", filePath: "components/pagination/pagination.component.ts", lineNumber: 177 }); })();
386
+ /**
387
+ * The default slot for the pages
388
+ */
389
+ export const paginationDefaultSlotPages = new ComponentTemplate(PaginationDefaultSlotsComponent, 'pages');
390
+ /**
391
+ * The default slot for the structure
392
+ */
393
+ export const paginationDefaultSlotStructure = new ComponentTemplate(PaginationDefaultSlotsComponent, 'structure');
394
+ const defaultConfig = {
395
+ slotStructure: paginationDefaultSlotStructure,
396
+ slotPages: paginationDefaultSlotPages,
397
+ };
398
+ export class PaginationComponent extends BaseWidgetDirective {
399
+ constructor() {
400
+ super(...arguments);
401
+ this._widget = callWidgetFactory({
402
+ factory: createPagination,
403
+ widgetName: 'pagination',
404
+ defaultConfig,
405
+ events: {
406
+ onPageChange: (page) => this.pageChange.emit(page),
407
+ },
408
+ });
409
+ /**
410
+ * An event fired when the page is changed.
411
+ *
412
+ * Event payload is the number of the newly selected page.
413
+ *
414
+ * Page numbers start with `1`.
415
+ */
416
+ this.pageChange = new EventEmitter();
417
+ }
418
+ ngAfterContentChecked() {
419
+ this._widget.patchSlots({
420
+ slotEllipsis: this.slotEllipsisFromContent?.templateRef,
421
+ slotFirst: this.slotFirstFromContent?.templateRef,
422
+ slotLast: this.slotLastFromContent?.templateRef,
423
+ slotNext: this.slotNextFromContent?.templateRef,
424
+ slotNumberLabel: this.slotNumberLabelFromContent?.templateRef,
425
+ slotPages: this.slotPagesFromContent?.templateRef,
426
+ slotPrevious: this.slotPreviousFromContent?.templateRef,
427
+ slotStructure: this.slotStructureFromContent?.templateRef,
428
+ });
429
+ }
430
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵPaginationComponent_BaseFactory; return function PaginationComponent_Factory(t) { return (ɵPaginationComponent_BaseFactory || (ɵPaginationComponent_BaseFactory = i0.ɵɵgetInheritedFactory(PaginationComponent)))(t || PaginationComponent); }; })(); }
431
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaginationComponent, selectors: [["", "auPagination", ""]], contentQueries: function PaginationComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
432
+ i0.ɵɵcontentQuery(dirIndex, PaginationEllipsisDirective, 5);
433
+ i0.ɵɵcontentQuery(dirIndex, PaginationFirstDirective, 5);
434
+ i0.ɵɵcontentQuery(dirIndex, PaginationPreviousDirective, 5);
435
+ i0.ɵɵcontentQuery(dirIndex, PaginationNextDirective, 5);
436
+ i0.ɵɵcontentQuery(dirIndex, PaginationLastDirective, 5);
437
+ i0.ɵɵcontentQuery(dirIndex, PaginationPagesDirective, 5);
438
+ i0.ɵɵcontentQuery(dirIndex, PaginationNumberDirective, 5);
439
+ i0.ɵɵcontentQuery(dirIndex, PaginationStructureDirective, 5);
440
+ } if (rf & 2) {
441
+ let _t;
442
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotEllipsisFromContent = _t.first);
443
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotFirstFromContent = _t.first);
444
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotPreviousFromContent = _t.first);
445
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotNextFromContent = _t.first);
446
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotLastFromContent = _t.first);
447
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotPagesFromContent = _t.first);
448
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotNumberLabelFromContent = _t.first);
449
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotStructureFromContent = _t.first);
450
+ } }, hostVars: 1, hostBindings: function PaginationComponent_HostBindings(rf, ctx) { if (rf & 2) {
451
+ i0.ɵɵattribute("aria-label", ctx.state().ariaLabel);
452
+ } }, inputs: { ariaPageLabel: [i0.ɵɵInputFlags.None, "auAriaPageLabel", "ariaPageLabel"], ariaLiveLabel: [i0.ɵɵInputFlags.None, "auAriaLiveLabel", "ariaLiveLabel"], ariaLabel: [i0.ɵɵInputFlags.None, "auAriaLabel", "ariaLabel"], activeLabel: [i0.ɵɵInputFlags.None, "auActiveLabel", "activeLabel"], ariaFirstLabel: [i0.ɵɵInputFlags.None, "auAriaFirstLabel", "ariaFirstLabel"], ariaPreviousLabel: [i0.ɵɵInputFlags.None, "auAriaPreviousLabel", "ariaPreviousLabel"], ariaNextLabel: [i0.ɵɵInputFlags.None, "auAriaNextLabel", "ariaNextLabel"], ariaLastLabel: [i0.ɵɵInputFlags.None, "auAriaLastLabel", "ariaLastLabel"], ariaEllipsisLabel: [i0.ɵɵInputFlags.None, "auAriaEllipsisLabel", "ariaEllipsisLabel"], pageLink: [i0.ɵɵInputFlags.None, "auPageLink", "pageLink"], slotEllipsis: [i0.ɵɵInputFlags.None, "auSlotEllipsis", "slotEllipsis"], slotFirst: [i0.ɵɵInputFlags.None, "auSlotFirst", "slotFirst"], slotPrevious: [i0.ɵɵInputFlags.None, "auSlotPrevious", "slotPrevious"], slotNext: [i0.ɵɵInputFlags.None, "auSlotNext", "slotNext"], slotLast: [i0.ɵɵInputFlags.None, "auSlotLast", "slotLast"], slotPages: [i0.ɵɵInputFlags.None, "auSlotPages", "slotPages"], slotNumberLabel: [i0.ɵɵInputFlags.None, "auSlotNumberLabel", "slotNumberLabel"], slotStructure: [i0.ɵɵInputFlags.None, "auSlotStructure", "slotStructure"], disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auDisabled", "disabled", auBooleanAttribute], boundaryLinks: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auBoundaryLinks", "boundaryLinks", auBooleanAttribute], directionLinks: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auDirectionLinks", "directionLinks", auBooleanAttribute], collectionSize: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auCollectionSize", "collectionSize", auNumberAttribute], page: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auPage", "page", auNumberAttribute], pageSize: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "auPageSize", "pageSize", auNumberAttribute], size: [i0.ɵɵInputFlags.None, "auSize", "size"], pagesFactory: [i0.ɵɵInputFlags.None, "auPagesFactory", "pagesFactory"], className: [i0.ɵɵInputFlags.None, "auClassName", "className"] }, outputs: { pageChange: "auPageChange" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], attrs: _c7, decls: 1, vars: 5, consts: [[3, "auSlotProps", "auSlot"]], template: function PaginationComponent_Template(rf, ctx) { if (rf & 1) {
453
+ i0.ɵɵtemplate(0, PaginationComponent_ng_template_0_Template, 0, 0, "ng-template", 0);
454
+ } if (rf & 2) {
455
+ i0.ɵɵproperty("auSlotProps", i0.ɵɵpureFunction2(2, _c2, ctx.state(), ctx.widget))("auSlot", ctx.state().slotStructure);
456
+ } }, dependencies: [SlotDirective], encapsulation: 2, changeDetection: 0 }); }
457
+ }
458
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationComponent, [{
459
+ type: Component,
460
+ args: [{
461
+ selector: '[auPagination]',
462
+ standalone: true,
463
+ imports: [SlotDirective],
464
+ changeDetection: ChangeDetectionStrategy.OnPush,
465
+ host: {
466
+ '[attr.aria-label]': 'state().ariaLabel',
467
+ },
468
+ encapsulation: ViewEncapsulation.None,
469
+ template: `<ng-template [auSlotProps]="{state: state(), widget}" [auSlot]="state().slotStructure"></ng-template>`,
470
+ }]
471
+ }], null, { ariaPageLabel: [{
472
+ type: Input,
473
+ args: ['auAriaPageLabel']
474
+ }], ariaLiveLabel: [{
475
+ type: Input,
476
+ args: ['auAriaLiveLabel']
477
+ }], ariaLabel: [{
478
+ type: Input,
479
+ args: ['auAriaLabel']
480
+ }], activeLabel: [{
481
+ type: Input,
482
+ args: ['auActiveLabel']
483
+ }], ariaFirstLabel: [{
484
+ type: Input,
485
+ args: ['auAriaFirstLabel']
486
+ }], ariaPreviousLabel: [{
487
+ type: Input,
488
+ args: ['auAriaPreviousLabel']
489
+ }], ariaNextLabel: [{
490
+ type: Input,
491
+ args: ['auAriaNextLabel']
492
+ }], ariaLastLabel: [{
493
+ type: Input,
494
+ args: ['auAriaLastLabel']
495
+ }], ariaEllipsisLabel: [{
496
+ type: Input,
497
+ args: ['auAriaEllipsisLabel']
498
+ }], pageLink: [{
499
+ type: Input,
500
+ args: ['auPageLink']
501
+ }], slotEllipsis: [{
502
+ type: Input,
503
+ args: ['auSlotEllipsis']
504
+ }], slotEllipsisFromContent: [{
505
+ type: ContentChild,
506
+ args: [PaginationEllipsisDirective, { static: false }]
507
+ }], slotFirst: [{
508
+ type: Input,
509
+ args: ['auSlotFirst']
510
+ }], slotFirstFromContent: [{
511
+ type: ContentChild,
512
+ args: [PaginationFirstDirective, { static: false }]
513
+ }], slotPrevious: [{
514
+ type: Input,
515
+ args: ['auSlotPrevious']
516
+ }], slotPreviousFromContent: [{
517
+ type: ContentChild,
518
+ args: [PaginationPreviousDirective, { static: false }]
519
+ }], slotNext: [{
520
+ type: Input,
521
+ args: ['auSlotNext']
522
+ }], slotNextFromContent: [{
523
+ type: ContentChild,
524
+ args: [PaginationNextDirective, { static: false }]
525
+ }], slotLast: [{
526
+ type: Input,
527
+ args: ['auSlotLast']
528
+ }], slotLastFromContent: [{
529
+ type: ContentChild,
530
+ args: [PaginationLastDirective, { static: false }]
531
+ }], slotPages: [{
532
+ type: Input,
533
+ args: ['auSlotPages']
534
+ }], slotPagesFromContent: [{
535
+ type: ContentChild,
536
+ args: [PaginationPagesDirective, { static: false }]
537
+ }], slotNumberLabel: [{
538
+ type: Input,
539
+ args: ['auSlotNumberLabel']
540
+ }], slotNumberLabelFromContent: [{
541
+ type: ContentChild,
542
+ args: [PaginationNumberDirective, { static: false }]
543
+ }], slotStructure: [{
544
+ type: Input,
545
+ args: ['auSlotStructure']
546
+ }], slotStructureFromContent: [{
547
+ type: ContentChild,
548
+ args: [PaginationStructureDirective, { static: false }]
549
+ }], disabled: [{
550
+ type: Input,
551
+ args: [{ alias: 'auDisabled', transform: auBooleanAttribute }]
552
+ }], boundaryLinks: [{
553
+ type: Input,
554
+ args: [{ alias: 'auBoundaryLinks', transform: auBooleanAttribute }]
555
+ }], directionLinks: [{
556
+ type: Input,
557
+ args: [{ alias: 'auDirectionLinks', transform: auBooleanAttribute }]
558
+ }], collectionSize: [{
559
+ type: Input,
560
+ args: [{ alias: 'auCollectionSize', transform: auNumberAttribute }]
561
+ }], page: [{
562
+ type: Input,
563
+ args: [{ alias: 'auPage', transform: auNumberAttribute }]
564
+ }], pageSize: [{
565
+ type: Input,
566
+ args: [{ alias: 'auPageSize', transform: auNumberAttribute }]
567
+ }], size: [{
568
+ type: Input,
569
+ args: ['auSize']
570
+ }], pagesFactory: [{
571
+ type: Input,
572
+ args: ['auPagesFactory']
573
+ }], pageChange: [{
574
+ type: Output,
575
+ args: ['auPageChange']
576
+ }], className: [{
577
+ type: Input,
578
+ args: ['auClassName']
579
+ }] }); })();
580
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaginationComponent, { className: "PaginationComponent", filePath: "components/pagination/pagination.component.ts", lineNumber: 206 }); })();
581
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEosT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7SUFtR3hDLDhCQUFzRDtJQUNyRCxrSUFBMkU7SUFDNUUsaUJBQU07SUFDTiwrQkFBOEI7SUFBQSxZQUE2QjtJQUFBLGlCQUFPOzs7OztJQUZwRCxjQUE2QjtJQUFDLEFBQTlCLDhDQUE2QixnRUFBZ0M7SUFFN0MsZUFBNkI7SUFBN0IsZ0RBQTZCOzs7O0lBS3pELCtCQUE4QjtJQUFBLFlBQXVCO0lBQUEsaUJBQU87OztJQUE5QixjQUF1QjtJQUF2QiwwQ0FBdUI7OztJQUh2RCw0QkFBb0U7SUFFbkUsQUFEQSxrSUFBbUcsOEdBQ3hFO0lBRzVCLGlCQUFJOzs7Ozs7SUFMaUIsc0hBQThDO0lBQ3JELGNBQWdDO0lBQUMsQUFBakMsaURBQWdDLHlFQUFxRDtJQUNsRyxjQUVDO0lBRkQsdURBRUM7OztJQVhKLDZCQUE0RztJQU16RyxBQUxGLGtHQUFtQixzRkFLVjtJQVFWLGlCQUFLOzs7O0lBZHNELEFBQXJD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QiwwQkFBMEI7a0JBRHpCLFlBQVk7bUJBQUMseUJBQXlCLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO1lBRzlCLGFBQWE7a0JBQXRDLEtBQUs7bUJBQUMsaUJBQWlCO1lBRXhCLHdCQUF3QjtrQkFEdkIsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7WUFNRSxRQUFRO2tCQUFwRSxLQUFLO21CQUFDLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUM7WUFLTyxhQUFhO2tCQUE5RSxLQUFLO21CQUFDLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBQztZQUtHLGNBQWM7a0JBQWhGLEtBQUs7bUJBQUMsRUFBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDO1lBV0MsY0FBYztrQkFBL0UsS0FBSzttQkFBQyxFQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUM7WUFRUixJQUFJO2tCQUEzRCxLQUFLO21CQUFDLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUM7WUFNTSxRQUFRO2tCQUFuRSxLQUFLO21CQUFDLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUM7WUFRekMsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBT1UsWUFBWTtrQkFBcEMsS0FBSzttQkFBQyxnQkFBZ0I7WUFTQyxVQUFVO2tCQUFqQyxNQUFNO21CQUFDLGNBQWM7WUFLQSxTQUFTO2tCQUE5QixLQUFLO21CQUFDLGFBQWE7O2tGQWhNUixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7U2xvdENvbnRlbnR9IGZyb20gJ0BhZ25vcy11aS9hbmd1bGFyLWhlYWRsZXNzJztcbmltcG9ydCB7QmFzZVdpZGdldERpcmVjdGl2ZSwgQ29tcG9uZW50VGVtcGxhdGUsIFNsb3REaXJlY3RpdmUsIFVzZURpcmVjdGl2ZSwgYXVCb29sZWFuQXR0cmlidXRlLCBhdU51bWJlckF0dHJpYnV0ZX0gZnJvbSAnQGFnbm9zLXVpL2FuZ3VsYXItaGVhZGxlc3MnO1xuaW1wb3J0IHR5cGUge0FmdGVyQ29udGVudENoZWNrZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHREaXJlY3RpdmUsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZCxcblx0Vmlld0VuY2Fwc3VsYXRpb24sXG5cdGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NhbGxXaWRnZXRGYWN0b3J5fSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHR5cGUge1BhZ2luYXRpb25Db250ZXh0LCBQYWdpbmF0aW9uTnVtYmVyQ29udGV4dCwgUGFnaW5hdGlvblByb3BzLCBQYWdpbmF0aW9uV2lkZ2V0fSBmcm9tICcuL3BhZ2luYXRpb24nO1xuaW1wb3J0IHtjcmVhdGVQYWdpbmF0aW9ufSBmcm9tICcuL3BhZ2luYXRpb24nO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHVzZSB0byBnaXZlIHRoZSAnZWxsaXBzaXMnIGxpbmsgdGVtcGxhdGUgdG8gdGhlIHBhZ2luYXRpb24gY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVQYWdpbmF0aW9uRWxsaXBzaXNdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkVsbGlwc2lzRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFBhZ2luYXRpb25Db250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFBhZ2luYXRpb25FbGxpcHNpc0RpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgUGFnaW5hdGlvbkNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gdXNlIHRvIGdpdmUgdGhlICdmaXJzdCcgbGluayB0ZW1wbGF0ZSB0byB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnRcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVthdVBhZ2luYXRpb25GaXJzdF0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uRmlyc3REaXJlY3RpdmUge1xuXHRwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkNvbnRleHQ+KTtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoX2RpcjogUGFnaW5hdGlvbkZpcnN0RGlyZWN0aXZlLCBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBQYWdpbmF0aW9uQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byB1c2UgdG8gZ2l2ZSB0aGUgJ2xhc3QnIGxpbmsgdGVtcGxhdGUgdG8gdGhlIHBhZ2luYXRpb24gY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVQYWdpbmF0aW9uTGFzdF0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uTGFzdERpcmVjdGl2ZSB7XG5cdHB1YmxpYyB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxQYWdpbmF0aW9uQ29udGV4dD4pO1xuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfZGlyOiBQYWdpbmF0aW9uTGFzdERpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgUGFnaW5hdGlvbkNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gdXNlIHRvIGdpdmUgdGhlICduZXh0JyBsaW5rIHRlbXBsYXRlIHRvIHRoZSBwYWdpbmF0aW9uIGNvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2F1UGFnaW5hdGlvbk5leHRdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbk5leHREaXJlY3RpdmUge1xuXHRwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkNvbnRleHQ+KTtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoX2RpcjogUGFnaW5hdGlvbk5leHREaXJlY3RpdmUsIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIFBhZ2luYXRpb25Db250ZXh0IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHVzZSB0byBnaXZlIHRoZSBwYWdlICdudW1iZXInIHRlbXBsYXRlIHRvIHRoZSBwYWdpbmF0aW9uIGNvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2F1UGFnaW5hdGlvbk51bWJlcl0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uTnVtYmVyRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFBhZ2luYXRpb25OdW1iZXJDb250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFBhZ2luYXRpb25OdW1iZXJEaXJlY3RpdmUsIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIFBhZ2luYXRpb25OdW1iZXJDb250ZXh0IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHVzZSB0byBnaXZlIHRoZSAncHJldmlvdXMnIGxpbmsgdGVtcGxhdGUgdG8gdGhlIHBhZ2luYXRpb24gY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVQYWdpbmF0aW9uUHJldmlvdXNdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblByZXZpb3VzRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFBhZ2luYXRpb25Db250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFBhZ2luYXRpb25QcmV2aW91c0RpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgUGFnaW5hdGlvbkNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gdXNlIHRvIGdpdmUgdGhlICdQYWdlcycgdGVtcGxhdGUgZm9yIHRoZSBQYWdlcyBzbG90XG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVQYWdpbmF0aW9uUGFnZXNdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblBhZ2VzRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFBhZ2luYXRpb25Db250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFBhZ2luYXRpb25QYWdlc0RpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgUGFnaW5hdGlvbkNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIHByb3ZpZGUgdGhlIHNsb3Qgc3RydWN0dXJlIGZvciB0aGUgcGFnaW5hdGlvbiB3aWRnZXQuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVQYWdpbmF0aW9uU3RydWN0dXJlXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25TdHJ1Y3R1cmVEaXJlY3RpdmUge1xuXHRwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkNvbnRleHQ+KTtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoZGlyOiBQYWdpbmF0aW9uU3RydWN0dXJlRGlyZWN0aXZlLCBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBQYWdpbmF0aW9uQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtTbG90RGlyZWN0aXZlLCBQYWdpbmF0aW9uUGFnZXNEaXJlY3RpdmUsIFBhZ2luYXRpb25TdHJ1Y3R1cmVEaXJlY3RpdmUsIFVzZURpcmVjdGl2ZV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy10ZW1wbGF0ZSBhdVBhZ2luYXRpb25QYWdlcyAjcGFnZXMgbGV0LXN0YXRlPVwic3RhdGVcIiBsZXQtd2lkZ2V0PVwid2lkZ2V0XCI+XG5cdFx0XHRAZm9yIChwYWdlIG9mIHN0YXRlLnBhZ2VzOyB0cmFjayBwYWdlOyBsZXQgaSA9ICRpbmRleCkge1xuXHRcdFx0XHQ8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IHN0YXRlLnBhZ2VcIiBbY2xhc3MuZGlzYWJsZWRdPVwicGFnZSA9PT0gLTEgfHwgc3RhdGUuZGlzYWJsZWRcIj5cblx0XHRcdFx0XHRAaWYgKHBhZ2UgPT09IC0xKSB7XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1saW5rIGF1LWVsbGlwc2lzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLnNsb3RFbGxpcHNpc1wiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldH1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7IHN0YXRlLmFyaWFFbGxpcHNpc0xhYmVsIH19PC9zcGFuPlxuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBbYXVVc2VdPVwiW3dpZGdldC5kaXJlY3RpdmVzLnBhZ2VMaW5rLCB7cGFnZX1dXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLnNsb3ROdW1iZXJMYWJlbFwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgZGlzcGxheWVkUGFnZTogcGFnZX1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRAaWYgKHN0YXRlLnBhZ2UgPT09IHBhZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7IHN0YXRlLmFjdGl2ZUxhYmVsIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2xpPlxuXHRcdFx0fVxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0PG5nLXRlbXBsYXRlIGF1UGFnaW5hdGlvblN0cnVjdHVyZSAjc3RydWN0dXJlIGxldC1zdGF0ZT1cInN0YXRlXCIgbGV0LXdpZGdldD1cIndpZGdldFwiPlxuXHRcdFx0PHVsIFtjbGFzc109XCInYXUtcGFnaW5hdGlvbiBwYWdpbmF0aW9uJyArIChzdGF0ZS5zaXplID8gJyBwYWdpbmF0aW9uLScgKyBzdGF0ZS5zaXplIDogJycpICsgJyAnICsgc3RhdGUuY2xhc3NOYW1lXCI+XG5cdFx0XHRcdEBpZiAoc3RhdGUuYm91bmRhcnlMaW5rcykge1xuXHRcdFx0XHRcdDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJzdGF0ZS5wcmV2aW91c0Rpc2FibGVkXCI+XG5cdFx0XHRcdFx0XHQ8YSBjbGFzcz1cInBhZ2UtbGlua1wiIFthdVVzZV09XCJ3aWRnZXQuZGlyZWN0aXZlcy5wYWdlRmlyc3RcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUuc2xvdEZpcnN0XCIgW2F1U2xvdFByb3BzXT1cInt3aWRnZXQsIHN0YXRlfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc3RhdGUuZGlyZWN0aW9uTGlua3MpIHtcblx0XHRcdFx0XHQ8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwic3RhdGUucHJldmlvdXNEaXNhYmxlZFwiPlxuXHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBbYXVVc2VdPVwid2lkZ2V0LmRpcmVjdGl2ZXMucGFnZVByZXZcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUuc2xvdFByZXZpb3VzXCIgW2F1U2xvdFByb3BzXT1cInt3aWRnZXQsIHN0YXRlfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHR9XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLnNsb3RQYWdlc1wiIFthdVNsb3RQcm9wc109XCJ7d2lkZ2V0LCBzdGF0ZX1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRAaWYgKHN0YXRlLmRpcmVjdGlvbkxpbmtzKSB7XG5cdFx0XHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cInN0YXRlLm5leHREaXNhYmxlZFwiPlxuXHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBbYXVVc2VdPVwid2lkZ2V0LmRpcmVjdGl2ZXMucGFnZU5leHRcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUuc2xvdE5leHRcIiBbYXVTbG90UHJvcHNdPVwie3dpZGdldCwgc3RhdGV9XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9hPlxuXHRcdFx0XHRcdDwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdFx0QGlmIChzdGF0ZS5ib3VuZGFyeUxpbmtzKSB7XG5cdFx0XHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cInN0YXRlLm5leHREaXNhYmxlZFwiPlxuXHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBbYXVVc2VdPVwid2lkZ2V0LmRpcmVjdGl2ZXMucGFnZUxhc3RcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUuc2xvdExhc3RcIiBbYXVTbG90UHJvcHNdPVwie3dpZGdldCwgc3RhdGV9XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9hPlxuXHRcdFx0XHRcdDwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdDwvdWw+XG5cdFx0XHQ8ZGl2IGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgc3RhdGUuYXJpYUxpdmVMYWJlbFRleHQgfX08L2Rpdj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uRGVmYXVsdFNsb3RzQ29tcG9uZW50IHtcblx0QFZpZXdDaGlsZCgncGFnZXMnLCB7c3RhdGljOiB0cnVlfSkgcGFnZXM6IFRlbXBsYXRlUmVmPFBhZ2luYXRpb25Db250ZXh0Pjtcblx0QFZpZXdDaGlsZCgnc3RydWN0dXJlJywge3N0YXRpYzogdHJ1ZX0pIHN0cnVjdHVyZTogVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkNvbnRleHQ+O1xufVxuLyoqXG4gKiBUaGUgZGVmYXVsdCBzbG90IGZvciB0aGUgcGFnZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBhZ2luYXRpb25EZWZhdWx0U2xvdFBhZ2VzID0gbmV3IENvbXBvbmVudFRlbXBsYXRlKFBhZ2luYXRpb25EZWZhdWx0U2xvdHNDb21wb25lbnQsICdwYWdlcycpO1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBzbG90IGZvciB0aGUgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBjb25zdCBwYWdpbmF0aW9uRGVmYXVsdFNsb3RTdHJ1Y3R1cmUgPSBuZXcgQ29tcG9uZW50VGVtcGxhdGUoUGFnaW5hdGlvbkRlZmF1bHRTbG90c0NvbXBvbmVudCwgJ3N0cnVjdHVyZScpO1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPFBhZ2luYXRpb25Qcm9wcz4gPSB7XG5cdHNsb3RTdHJ1Y3R1cmU6IHBhZ2luYXRpb25EZWZhdWx0U2xvdFN0cnVjdHVyZSxcblx0c2xvdFBhZ2VzOiBwYWdpbmF0aW9uRGVmYXVsdFNsb3RQYWdlcyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ1thdVBhZ2luYXRpb25dJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1Nsb3REaXJlY3RpdmVdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbYXR0ci5hcmlhLWxhYmVsXSc6ICdzdGF0ZSgpLmFyaWFMYWJlbCcsXG5cdH0sXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG5cdHRlbXBsYXRlOiBgPG5nLXRlbXBsYXRlIFthdVNsb3RQcm9wc109XCJ7c3RhdGU6IHN0YXRlKCksIHdpZGdldH1cIiBbYXVTbG90XT1cInN0YXRlKCkuc2xvdFN0cnVjdHVyZVwiPjwvbmctdGVtcGxhdGU+YCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VXaWRnZXREaXJlY3RpdmU8UGFnaW5hdGlvbldpZGdldD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcblx0LyoqXG5cdCAqIFByb3ZpZGUgdGhlIGxhYmVsIGZvciBlYWNoIFwiUGFnZVwiIHBhZ2UgYnV0dG9uLlxuXHQgKiBUaGlzIGlzIHVzZWQgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMuXG5cdCAqIGZvciBJMThuLCB3ZSBzdWdnZXN0IHRvIHVzZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cblx0ICogb3ZlcnJpZGUgYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwcm92aWRlZCBmb3IgdGhpc1xuXHQgKiBAcGFyYW0gcHJvY2Vzc1BhZ2UgLSBUaGUgY3VycmVudCBwYWdlIG51bWJlclxuXHQgKiBAcGFyYW0gcGFnZUNvdW50IC0gVGhlIHRvdGFsIG51bWJlciBvZiBwYWdlc1xuXHQgKi9cblx0QElucHV0KCdhdUFyaWFQYWdlTGFiZWwnKSBhcmlhUGFnZUxhYmVsOiAoKHByb2Nlc3NQYWdlOiBudW1iZXIsIHBhZ2VDb3VudDogbnVtYmVyKSA9PiBzdHJpbmcpIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBQcm92aWRlIHRoZSBsYWJlbCBmb3IgdGhlIGFyaWEtbGl2ZSBlbGVtZW50XG5cdCAqIFRoaXMgaXMgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3Nlcy5cblx0ICogZm9yIEkxOG4sIHdlIHN1Z2dlc3QgdG8gdXNlIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvblxuXHQgKiBvdmVycmlkZSBhbnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHByb3ZpZGVkIGZvciB0aGlzXG5cdCAqL1xuXHRASW5wdXQoJ2F1QXJpYUxpdmVMYWJlbCcpIGFyaWFMaXZlTGFiZWw6ICgoY3VycmVudFBhZ2U6IG51bWJlciwgcGFnZUNvdW50OiBudW1iZXIpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSBsYWJlbCBmb3IgdGhlIG5hdiBlbGVtZW50LlxuXHQgKlxuXHQgKiBmb3IgSTE4biwgd2Ugc3VnZ2VzdCB0byB1c2UgdGhlIGdsb2JhbCBjb25maWd1cmF0aW9uXG5cdCAqIG92ZXJyaWRlIGFueSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcHJvdmlkZWQgZm9yIHRoaXNcblx0ICogQGRlZmF1bHRWYWx1ZSAnUGFnZSBuYXZpZ2F0aW9uJ1xuXHQgKi9cblx0QElucHV0KCdhdUFyaWFMYWJlbCcpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGFiZWwgZm9yIHRoZSBcImFjdGl2ZVwiIHBhZ2UuXG5cdCAqIGZvciBJMThuLCB3ZSBzdWdnZXN0IHRvIHVzZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cblx0ICogb3ZlcnJpZGUgYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwcm92aWRlZCBmb3IgdGhpc1xuXHQgKiBAZGVmYXVsdFZhbHVlICcoY3VycmVudCknXG5cdCAqL1xuXHRASW5wdXQoJ2F1QWN0aXZlTGFiZWwnKSBhY3RpdmVMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGFiZWwgZm9yIHRoZSBcIkZpcnN0XCIgcGFnZSBidXR0b24uXG5cdCAqIGZvciBJMThuLCB3ZSBzdWdnZXN0IHRvIHVzZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cblx0ICogb3ZlcnJpZGUgYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwcm92aWRlZCBmb3IgdGhpc1xuXHQgKiBAZGVmYXVsdFZhbHVlICdBY3Rpb24gbGluayBmb3IgZmlyc3QgcGFnZSdcblx0ICovXG5cdEBJbnB1dCgnYXVBcmlhRmlyc3RMYWJlbCcpIGFyaWFGaXJzdExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSBsYWJlbCBmb3IgdGhlIFwiUHJldmlvdXNcIiBwYWdlIGJ1dHRvbi5cblx0ICogZm9yIEkxOG4sIHdlIHN1Z2dlc3QgdG8gdXNlIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvblxuXHQgKiBvdmVycmlkZSBhbnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHByb3ZpZGVkIGZvciB0aGlzXG5cdCAqIEBkZWZhdWx0VmFsdWUgJ0FjdGlvbiBsaW5rIGZvciBwcmV2aW91cyBwYWdlJ1xuXHQgKi9cblx0QElucHV0KCdhdUFyaWFQcmV2aW91c0xhYmVsJykgYXJpYVByZXZpb3VzTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogVGhlIGxhYmVsIGZvciB0aGUgXCJOZXh0XCIgcGFnZSBidXR0b24uXG5cdCAqIGZvciBJMThuLCB3ZSBzdWdnZXN0IHRvIHVzZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cblx0ICogb3ZlcnJpZGUgYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwcm92aWRlZCBmb3IgdGhpc1xuXHQgKiBAZGVmYXVsdFZhbHVlICdBY3Rpb24gbGluayBmb3IgbmV4dCBwYWdlJ1xuXHQgKi9cblx0QElucHV0KCdhdUFyaWFOZXh0TGFiZWwnKSBhcmlhTmV4dExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSBsYWJlbCBmb3IgdGhlIFwiTGFzdFwiIHBhZ2UgYnV0dG9uLlxuXHQgKiBmb3IgSTE4biwgd2Ugc3VnZ2VzdCB0byB1c2UgdGhlIGdsb2JhbCBjb25maWd1cmF0aW9uXG5cdCAqIG92ZXJyaWRlIGFueSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcHJvdmlkZWQgZm9yIHRoaXNcblx0ICogQGRlZmF1bHRWYWx1ZSAnQWN0aW9uIGxpbmsgZm9yIGxhc3QgcGFnZSdcblx0ICovXG5cdEBJbnB1dCgnYXVBcmlhTGFzdExhYmVsJykgYXJpYUxhc3RMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGFiZWwgZm9yIHRoZSBcIkVsbGlwc2lzXCIgcGFnZS5cblx0ICogZm9yIEkxOG4sIHdlIHN1Z2dlc3QgdG8gdXNlIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvblxuXHQgKiBvdmVycmlkZSBhbnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHByb3ZpZGVkIGZvciB0aGlzXG5cdCAqIEBkZWZhdWx0VmFsdWUgJ0VsbGlwc2lzIHBhZ2UgZWxlbWVudCdcblx0ICovXG5cdEBJbnB1dCgnYXVBcmlhRWxsaXBzaXNMYWJlbCcpIGFyaWFFbGxpcHNpc0xhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEZhY3RvcnkgZnVuY3Rpb24gcHJvdmlkaW5nIHRoZSBocmVmIGZvciBhIFwiUGFnZVwiIHBhZ2UgYW5jaG9yLFxuXHQgKiBiYXNlZCBvbiB0aGUgY3VycmVudCBwYWdlIG51bWJlclxuXHQgKiBAcGFyYW0gcGFnZU51bWJlciAtIFRoZSBpbmRleCB0byB1c2UgaW4gdGhlIGxpbmtcblx0ICpcblx0ICovXG5cdEBJbnB1dCgnYXVQYWdlTGluaycpIHBhZ2VMaW5rOiAoKHBhZ2VOdW1iZXI6IG51bWJlcikgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcblxuXHRyZWFkb25seSBfd2lkZ2V0ID0gY2FsbFdpZGdldEZhY3Rvcnkoe1xuXHRcdGZhY3Rvcnk6IGNyZWF0ZVBhZ2luYXRpb24sXG5cdFx0d2lkZ2V0TmFtZTogJ3BhZ2luYXRpb24nLFxuXHRcdGRlZmF1bHRDb25maWcsXG5cdFx0ZXZlbnRzOiB7XG5cdFx0XHRvblBhZ2VDaGFuZ2U6IChwYWdlOiBudW1iZXIpID0+IHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpLFxuXHRcdH0sXG5cdH0pO1xuXG5cdEBJbnB1dCgnYXVTbG90RWxsaXBzaXMnKSBzbG90RWxsaXBzaXM6IFNsb3RDb250ZW50PFBhZ2luYXRpb25Db250ZXh0Pjtcblx0QENvbnRlbnRDaGlsZChQYWdpbmF0aW9uRWxsaXBzaXNEaXJlY3RpdmUsIHtzdGF0aWM6IGZhbHNlfSlcblx0c2xvdEVsbGlwc2lzRnJvbUNvbnRlbnQ6IFBhZ2luYXRpb25FbGxpcHNpc0RpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuXHRASW5wdXQoJ2F1U2xvdEZpcnN0Jykgc2xvdEZpcnN0OiBTbG90Q29udGVudDxQYWdpbmF0aW9uQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoUGFnaW5hdGlvbkZpcnN0RGlyZWN0aXZlLCB7c3RhdGljOiBmYWxzZX0pXG5cdHNsb3RGaXJzdEZyb21Db250ZW50OiBQYWdpbmF0aW9uRmlyc3REaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KCdhdVNsb3RQcmV2aW91cycpIHNsb3RQcmV2aW91czogU2xvdENvbnRlbnQ8UGFnaW5hdGlvbkNvbnRleHQ+O1xuXHRAQ29udGVudENoaWxkKFBhZ2luYXRpb25QcmV2aW91c0RpcmVjdGl2ZSwge3N0YXRpYzogZmFsc2V9KVxuXHRzbG90UHJldmlvdXNGcm9tQ29udGVudDogUGFnaW5hdGlvblByZXZpb3VzRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG5cdEBJbnB1dCgnYXVTbG90TmV4dCcpIHNsb3ROZXh0OiBTbG90Q29udGVudDxQYWdpbmF0aW9uQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoUGFnaW5hdGlvbk5leHREaXJlY3RpdmUsIHtzdGF0aWM6IGZhbHNlfSlcblx0c2xvdE5leHRGcm9tQ29udGVudDogUGFnaW5hdGlvbk5leHREaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KCdhdVNsb3RMYXN0Jykgc2xvdExhc3Q6IFNsb3RDb250ZW50PFBhZ2luYXRpb25Db250ZXh0Pjtcblx0QENvbnRlbnRDaGlsZChQYWdpbmF0aW9uTGFzdERpcmVjdGl2ZSwge3N0YXRpYzogZmFsc2V9KVxuXHRzbG90TGFzdEZyb21Db250ZW50OiBQYWdpbmF0aW9uTGFzdERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuXHRASW5wdXQoJ2F1U2xvdFBhZ2VzJykgc2xvdFBhZ2VzOiBTbG90Q29udGVudDxQYWdpbmF0aW9uQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoUGFnaW5hdGlvblBhZ2VzRGlyZWN0aXZlLCB7c3RhdGljOiBmYWxzZX0pXG5cdHNsb3RQYWdlc0Zyb21Db250ZW50OiBQYWdpbmF0aW9uUGFnZXNEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KCdhdVNsb3ROdW1iZXJMYWJlbCcpIHNsb3ROdW1iZXJMYWJlbDogU2xvdENvbnRlbnQ8UGFnaW5hdGlvbk51bWJlckNvbnRleHQ+O1xuXHRAQ29udGVudENoaWxkKFBhZ2luYXRpb25OdW1iZXJEaXJlY3RpdmUsIHtzdGF0aWM6IGZhbHNlfSlcblx0c2xvdE51bWJlckxhYmVsRnJvbUNvbnRlbnQ6IFBhZ2luYXRpb25OdW1iZXJEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KCdhdVNsb3RTdHJ1Y3R1cmUnKSBzbG90U3RydWN0dXJlOiBTbG90Q29udGVudDxQYWdpbmF0aW9uQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoUGFnaW5hdGlvblN0cnVjdHVyZURpcmVjdGl2ZSwge3N0YXRpYzogZmFsc2V9KVxuXHRzbG90U3RydWN0dXJlRnJvbUNvbnRlbnQ6IFBhZ2luYXRpb25TdHJ1Y3R1cmVEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCwgcGFnaW5hdGlvbiBsaW5rcyB3aWxsIGJlIGRpc2FibGVkLlxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1RGlzYWJsZWQnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAsIHRoZSBcIkZpcnN0XCIgYW5kIFwiTGFzdFwiIHBhZ2UgbGlua3MgYXJlIHNob3duLlxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1Qm91bmRhcnlMaW5rcycsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSkgYm91bmRhcnlMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgYHRydWVgLCB0aGUgXCJOZXh0XCIgYW5kIFwiUHJldmlvdXNcIiBwYWdlIGxpbmtzIGFyZSBzaG93bi5cblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdURpcmVjdGlvbkxpbmtzJywgdHJhbnNmb3JtOiBhdUJvb2xlYW5BdHRyaWJ1dGV9KSBkaXJlY3Rpb25MaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogVGhlIG51bWJlciBvZiBpdGVtcyBpbiB5b3VyIHBhZ2luYXRlZCBjb2xsZWN0aW9uLlxuXHQgKlxuXHQgKiBOb3RlLCB0aGF0IHRoaXMgaXMgbm90IHRoZSBudW1iZXIgb2YgcGFnZXMuIFBhZ2UgbnVtYmVycyBhcmUgY2FsY3VsYXRlZCBkeW5hbWljYWxseSBiYXNlZCBvblxuXHQgKiBgY29sbGVjdGlvblNpemVgIGFuZCBgcGFnZVNpemVgLiBFeC4gaWYgeW91IGhhdmUgMTAwIGl0ZW1zIGluIHlvdXIgY29sbGVjdGlvbiBhbmQgZGlzcGxheWluZyAyMCBpdGVtcyBwZXIgcGFnZSxcblx0ICogeW91J2xsIGVuZCB1cCB3aXRoIDUgcGFnZXMuXG5cdCAqIFdoYXRldmVyIHRoZSBjb2xsZWN0aW9uU2l6ZSB0aGUgcGFnZSBudW1iZXIgaXMgb2YgbWluaW11bSAxLlxuXHQgKiBAZGVmYXVsdFZhbHVlIDBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdUNvbGxlY3Rpb25TaXplJywgdHJhbnNmb3JtOiBhdU51bWJlckF0dHJpYnV0ZX0pIGNvbGxlY3Rpb25TaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqXG5cdCAqIFBhZ2UgbnVtYmVycyBzdGFydCB3aXRoIGAxYC5cblx0ICogQGRlZmF1bHRWYWx1ZSAxXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVQYWdlJywgdHJhbnNmb3JtOiBhdU51bWJlckF0dHJpYnV0ZX0pIHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogVGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS5cblx0ICogQGRlZmF1bHRWYWx1ZSAxMFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1UGFnZVNpemUnLCB0cmFuc2Zvcm06IGF1TnVtYmVyQXR0cmlidXRlfSkgcGFnZVNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogVGhlIHBhZ2luYXRpb24gZGlzcGxheSBzaXplLlxuXHQgKlxuXHQgKiBCb290c3RyYXAgY3VycmVudGx5IHN1cHBvcnRzIHNtYWxsIGFuZCBsYXJnZSBzaXplcy5cblx0ICogQGRlZmF1bHRWYWx1ZSBudWxsXG5cdCAqL1xuXHRASW5wdXQoJ2F1U2l6ZScpIHNpemU6ICdzbScgfCAnbGcnIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogcGFnZXNGYWN0b3J5IHJldHVybnMgYSBmdW5jdGlvbiBjb21wdXRpbmcgdGhlIGFycmF5IG9mIHBhZ2VzIHRvIGJlIGRpc3BsYXllZFxuXHQgKiBhcyBudW1iZXIgKC0xIGFyZSB0cmVhdGVkIGFzIGVsbGlwc2lzKS5cblx0ICogVXNlIFBhZ2Ugc2xvdCB0byBjdXN0b21pemUgdGhlIHBhZ2VzIHZpZXcgYW5kIG5vdCB0aGlzXG5cdCAqL1xuXHRASW5wdXQoJ2F1UGFnZXNGYWN0b3J5JykgcGFnZXNGYWN0b3J5OiAoKHBhZ2U6IG51bWJlciwgcGFnZUNvdW50OiBudW1iZXIpID0+IG51bWJlcltdKSB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgZmlyZWQgd2hlbiB0aGUgcGFnZSBpcyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBFdmVudCBwYXlsb2FkIGlzIHRoZSBudW1iZXIgb2YgdGhlIG5ld2x5IHNlbGVjdGVkIHBhZ2UuXG5cdCAqXG5cdCAqIFBhZ2UgbnVtYmVycyBzdGFydCB3aXRoIGAxYC5cblx0ICovXG5cdEBPdXRwdXQoJ2F1UGFnZUNoYW5nZScpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKipcblx0ICogQ1NTIGNsYXNzZXMgdG8gYmUgYXBwbGllZCBvbiB0aGUgd2lkZ2V0IG1haW4gY29udGFpbmVyXG5cdCAqL1xuXHRASW5wdXQoJ2F1Q2xhc3NOYW1lJykgY2xhc3NOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0bmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuX3dpZGdldC5wYXRjaFNsb3RzKHtcblx0XHRcdHNsb3RFbGxpcHNpczogdGhpcy5zbG90RWxsaXBzaXNGcm9tQ29udGVudD8udGVtcGxhdGVSZWYsXG5cdFx0XHRzbG90Rmlyc3Q6IHRoaXMuc2xvdEZpcnN0RnJvbUNvbnRlbnQ/LnRlbXBsYXRlUmVmLFxuXHRcdFx0c2xvdExhc3Q6IHRoaXMuc2xvdExhc3RGcm9tQ29udGVudD8udGVtcGxhdGVSZWYsXG5cdFx0XHRzbG90TmV4dDogdGhpcy5zbG90TmV4dEZyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHRcdHNsb3ROdW1iZXJMYWJlbDogdGhpcy5zbG90TnVtYmVyTGFiZWxGcm9tQ29udGVudD8udGVtcGxhdGVSZWYsXG5cdFx0XHRzbG90UGFnZXM6IHRoaXMuc2xvdFBhZ2VzRnJvbUNvbnRlbnQ/LnRlbXBsYXRlUmVmLFxuXHRcdFx0c2xvdFByZXZpb3VzOiB0aGlzLnNsb3RQcmV2aW91c0Zyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHRcdHNsb3RTdHJ1Y3R1cmU6IHRoaXMuc2xvdFN0cnVjdHVyZUZyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHR9KTtcblx0fVxufVxuIl19