tide-design-system 2.0.8 → 2.0.10

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 (80) hide show
  1. package/dist/{IconAccountBalance-f188d7c3.js → IconAccountBalance-02661aa3.js} +2 -2
  2. package/dist/{IconAdd-924ee7b8.js → IconAdd-d8a1cf9d.js} +2 -2
  3. package/dist/{IconAi-d04b53d1.js → IconAi-7c6a602b.js} +2 -2
  4. package/dist/{IconAlignSpace-a902dd82.js → IconAlignSpace-3823b6fc.js} +2 -2
  5. package/dist/{IconApplePay-f4a0af2f.js → IconApplePay-b153e3b7.js} +2 -2
  6. package/dist/{IconArrowBack-8e341c11.js → IconArrowBack-11f50435.js} +2 -2
  7. package/dist/{IconArrowForward-3c47be0d.js → IconArrowForward-b35cab51.js} +2 -2
  8. package/dist/{IconArrowRight-af91d5b0.js → IconArrowRight-fc4780ca.js} +2 -2
  9. package/dist/{IconAssignment-8902b1c4.js → IconAssignment-d2ab760a.js} +2 -2
  10. package/dist/{IconAwardStar-2e86f3ee.js → IconAwardStar-3afc62b5.js} +2 -2
  11. package/dist/{IconBookmark-b148af92.js → IconBookmark-4029d540.js} +2 -2
  12. package/dist/{IconCalendarMonth-a66e49c3.js → IconCalendarMonth-cda8a0b3.js} +2 -2
  13. package/dist/{IconCall-286e2e2c.js → IconCall-913bf298.js} +2 -2
  14. package/dist/{IconCheck-f226395e.js → IconCheck-47e28edc.js} +2 -2
  15. package/dist/{IconChevronLeft-1df56f5b.js → IconChevronLeft-f028b794.js} +2 -2
  16. package/dist/{IconChevronRight-a293ebab.js → IconChevronRight-9a55a3ab.js} +2 -2
  17. package/dist/{IconClear-c3120ff6.js → IconClear-e0ba2dce.js} +2 -2
  18. package/dist/{IconClose-d01a7195.js → IconClose-cff3d9fd.js} +2 -2
  19. package/dist/{IconCycle-f24ca489.js → IconCycle-3d562469.js} +2 -2
  20. package/dist/{IconDelete-112cfb44.js → IconDelete-92b2bf27.js} +2 -2
  21. package/dist/{IconDiamond-97e262b6.js → IconDiamond-552da5d2.js} +2 -2
  22. package/dist/{IconEdit-55acf233.js → IconEdit-ebd715f8.js} +2 -2
  23. package/dist/{IconError-636bae79.js → IconError-43534431.js} +2 -2
  24. package/dist/{IconExpandContent-4e2c65bd.js → IconExpandContent-2917c46b.js} +2 -2
  25. package/dist/{IconExpandLess-d891e216.js → IconExpandLess-d51f8efc.js} +2 -2
  26. package/dist/{IconExpandMore-f50b372f.js → IconExpandMore-d4d2742e.js} +2 -2
  27. package/dist/{IconFacebook-ea393a00.js → IconFacebook-d5c8ee88.js} +2 -2
  28. package/dist/{IconFavorite-e48c4831.js → IconFavorite-d6b9473c.js} +2 -2
  29. package/dist/{IconFavoriteFilled-5e56ee15.js → IconFavoriteFilled-e718a96c.js} +2 -2
  30. package/dist/{IconFormatBold-f54ed521.js → IconFormatBold-1e0e316b.js} +2 -2
  31. package/dist/{IconFormatItalic-839a567b.js → IconFormatItalic-187bb45c.js} +2 -2
  32. package/dist/{IconFormatListBulleted-968b2805.js → IconFormatListBulleted-a48b2abd.js} +2 -2
  33. package/dist/{IconForum-d24ae7f5.js → IconForum-f99305b7.js} +2 -2
  34. package/dist/{IconGoogle-09d632e9.js → IconGoogle-0ff8c23e.js} +2 -2
  35. package/dist/{IconGooglePay-21519293.js → IconGooglePay-83062788.js} +2 -2
  36. package/dist/{IconGrid-6285dc93.js → IconGrid-a180d709.js} +2 -2
  37. package/dist/{IconHelp-dac96db2.js → IconHelp-2ec52772.js} +2 -2
  38. package/dist/{IconInfo-3e44ee8e.js → IconInfo-7f36943d.js} +2 -2
  39. package/dist/{IconInsertText-cf9e8d94.js → IconInsertText-d62ab204.js} +2 -2
  40. package/dist/{IconInstagram-0e9cbad8.js → IconInstagram-26b5e292.js} +2 -2
  41. package/dist/{IconIosShare-966f94c6.js → IconIosShare-408b856f.js} +2 -2
  42. package/dist/{IconLayout-7b7e3db5.js → IconLayout-1dc5c944.js} +2 -2
  43. package/dist/{IconLinkedIn-c112a15e.js → IconLinkedIn-93b18ad8.js} +2 -2
  44. package/dist/{IconLocalShipping-c40fb702.js → IconLocalShipping-215aee80.js} +2 -2
  45. package/dist/{IconLock-a6a7c6c8.js → IconLock-b36a1524.js} +2 -2
  46. package/dist/{IconMail-0e4f0f93.js → IconMail-cef0d19d.js} +2 -2
  47. package/dist/{IconMenu-b1856c29.js → IconMenu-749768d8.js} +2 -2
  48. package/dist/{IconMoreHoriz-439473cc.js → IconMoreHoriz-4bc42fbd.js} +2 -2
  49. package/dist/{IconNotifications-b39d4c46.js → IconNotifications-57da13ba.js} +2 -2
  50. package/dist/{IconOpenInNew-84c05770.js → IconOpenInNew-2fc6ea43.js} +2 -2
  51. package/dist/{IconPalette-79cda0d3.js → IconPalette-72204e43.js} +2 -2
  52. package/dist/{IconPaypal-f82fae6d.js → IconPaypal-f7fa926b.js} +2 -2
  53. package/dist/{IconPerson-d0315473.js → IconPerson-263fc38c.js} +2 -2
  54. package/dist/{IconPhotoCamera-f011623d.js → IconPhotoCamera-969a2214.js} +2 -2
  55. package/dist/{IconPinterest-b3397953.js → IconPinterest-89945fd9.js} +2 -2
  56. package/dist/{IconPlayArrow-91ec13b9.js → IconPlayArrow-f4fc6ac0.js} +2 -2
  57. package/dist/{IconRemove-4818dbe1.js → IconRemove-1fa301c5.js} +2 -2
  58. package/dist/{IconRoundedCorners-d81943f5.js → IconRoundedCorners-7551f5ab.js} +2 -2
  59. package/dist/{IconSearch-d733de31.js → IconSearch-26542de4.js} +2 -2
  60. package/dist/{IconSell-805923a0.js → IconSell-ca227b87.js} +2 -2
  61. package/dist/{IconShare-1127eb49.js → IconShare-e2b3468f.js} +2 -2
  62. package/dist/{IconShoppingCart-560d3a93.js → IconShoppingCart-1c44f96a.js} +2 -2
  63. package/dist/{IconSms-1703a868.js → IconSms-a0657fb7.js} +2 -2
  64. package/dist/{IconStar-3e439338.js → IconStar-246d2f5c.js} +2 -2
  65. package/dist/{IconSwapVert-7f3e9c79.js → IconSwapVert-902ded58.js} +2 -2
  66. package/dist/{IconThreeDRotation-a88613fe.js → IconThreeDRotation-f7da52e8.js} +2 -2
  67. package/dist/{IconTune-081fa5f1.js → IconTune-1ccf1acb.js} +2 -2
  68. package/dist/{IconTwitter-3df89b18.js → IconTwitter-1d5b5b01.js} +2 -2
  69. package/dist/{IconVideocam-2df877fc.js → IconVideocam-7b5e3939.js} +2 -2
  70. package/dist/{IconViewInAr-e8b3c840.js → IconViewInAr-f1b91278.js} +2 -2
  71. package/dist/{IconVisibility-6d82554e.js → IconVisibility-477253ed.js} +2 -2
  72. package/dist/{IconWarning-f74b8658.js → IconWarning-9235353c.js} +2 -2
  73. package/dist/{IconYoutube-67040fb5.js → IconYoutube-c3992fd7.js} +2 -2
  74. package/dist/css/grid-layout.css +8 -3
  75. package/dist/index-cff3a970.js +2116 -0
  76. package/dist/style.css +1 -1
  77. package/dist/tide-design-system.js +1 -1
  78. package/dist/types/Styles.ts +1 -1
  79. package/package.json +1 -1
  80. package/dist/index-76cfd397.js +0 -2116
@@ -0,0 +1,2116 @@
1
+ import { defineComponent as v, openBlock as l, createElementBlock as r, normalizeClass as i, unref as t, ref as A, watch as Q, defineAsyncComponent as Oe, markRaw as ue, createBlock as S, resolveDynamicComponent as z, createCommentVNode as N, toDisplayString as L, onMounted as j, createElementVNode as c, createVNode as G, renderSlot as X, withCtx as J, computed as F, Fragment as $, renderList as Z, createTextVNode as Ee, onUnmounted as Ae, onUpdated as Ne, normalizeStyle as ae, onBeforeUnmount as Le, getCurrentInstance as ee, withDirectives as ie, vModelSelect as pe, withModifiers as Te, vModelDynamic as ve, vModelText as Fe, Teleport as _e } from "vue";
2
+ const e = {
3
+ ALIGN: {
4
+ X: {
5
+ CENTER: "tide-text-center",
6
+ LEFT: "tide-text-left",
7
+ RIGHT: "tide-text-right"
8
+ },
9
+ Y: {
10
+ MIDDLE: "tide-align-middle"
11
+ }
12
+ },
13
+ AXIS1: {
14
+ AROUND: "tide-axis1-around",
15
+ BETWEEN: "tide-axis1-between",
16
+ CENTER: "tide-axis1-center",
17
+ END: "tide-axis1-end",
18
+ START: "tide-axis1-start"
19
+ },
20
+ AXIS2: {
21
+ AROUND: "tide-axis2-around",
22
+ CENTER: "tide-axis2-center",
23
+ END: "tide-axis2-end",
24
+ START: "tide-axis2-start"
25
+ },
26
+ BG: {
27
+ ERROR: "tide-bg-error",
28
+ INFO: "tide-bg-info",
29
+ PRIMARY: "tide-bg-primary",
30
+ SECONDARY: "tide-bg-secondary",
31
+ SUCCESS: "tide-bg-success",
32
+ SURFACE: {
33
+ ACCENT: "tide-bg-surface-accent",
34
+ ACCENT_VARIANT: "tide-bg-surface-accent-variant",
35
+ BRAND: "tide-bg-surface-brand",
36
+ DEFAULT: "tide-bg-surface",
37
+ ERROR: "tide-bg-surface-error",
38
+ FLOATING: "tide-bg-surface-floating",
39
+ GRADIENT: "tide-bg-surface-gradient",
40
+ INFO: "tide-bg-surface-info",
41
+ SUCCESS: "tide-bg-surface-success",
42
+ VARIANT: "tide-bg-surface-variant",
43
+ WARNING: "tide-bg-surface-warning"
44
+ },
45
+ WARNING: "tide-bg-warning"
46
+ },
47
+ BORDER: {
48
+ BOTTOM: {
49
+ ONE: "tide-border-bottom-1",
50
+ TWO: "tide-border-bottom-2"
51
+ },
52
+ COLOR: {
53
+ DEFAULT: "tide-border",
54
+ FLOATING: "tide-border-floating",
55
+ HIGH: "tide-border-high",
56
+ LOW: "tide-border-low",
57
+ PRIMARY: "tide-border-primary"
58
+ },
59
+ FULL: {
60
+ ONE: "tide-border-1",
61
+ TWO: "tide-border-2"
62
+ },
63
+ LEFT: {
64
+ ONE: "tide-border-left-1",
65
+ TWO: "tide-border-left-2"
66
+ },
67
+ RADIUS: {
68
+ FULL: "tide-radius-full",
69
+ HALF: "tide-radius-1/2",
70
+ ONE: "tide-radius-1",
71
+ QUARTER: "tide-radius-1/4"
72
+ },
73
+ RIGHT: {
74
+ ONE: "tide-border-right-1",
75
+ TWO: "tide-border-right-2"
76
+ },
77
+ TOP: {
78
+ ONE: "tide-border-top-1",
79
+ TWO: "tide-border-top-2"
80
+ }
81
+ },
82
+ BOX_SIZING: {
83
+ BORDER_BOX: "tide-box-border",
84
+ CONTENT_BOX: "tide-box-content"
85
+ },
86
+ BREAK_WORD: {
87
+ ON: "tide-break-word"
88
+ },
89
+ CURSOR: {
90
+ NOT_ALLOWED: "tide-cursor-not-allowed",
91
+ POINTER: "tide-cursor-pointer",
92
+ TEXT: "tide-cursor-text"
93
+ },
94
+ DISPLAY: {
95
+ BLOCK: "tide-display-block",
96
+ CONTENTS: "tide-contents",
97
+ FLEX: "tide-display-flex",
98
+ GRID: "tide-display-grid",
99
+ INITIAL: "initial",
100
+ INLINE: "tide-display-inline",
101
+ INLINE_BLOCK: "tide-display-inline-block",
102
+ INLINE_FLEX: "tide-display-inline-flex",
103
+ NONE: "tide-display-none"
104
+ },
105
+ FLEX: {
106
+ DIRECTION: {
107
+ COLUMN: "tide-flex-column",
108
+ COLUMN_REVERSE: "tide-flex-column-reverse",
109
+ ROW: "tide-flex-row",
110
+ ROW_REVERSE: "tide-row-reverse"
111
+ },
112
+ GROW: {
113
+ OFF: "tide-grow-none",
114
+ ON: "tide-grow"
115
+ },
116
+ SHRINK: {
117
+ OFF: "tide-shrink-none",
118
+ ON: "tide-shrink"
119
+ },
120
+ WRAP: "tide-flex-wrap"
121
+ },
122
+ FONT: {
123
+ COLOR: {
124
+ PRIMARY: "tide-font-on-primary",
125
+ SECONDARY: "tide-font-on-secondary",
126
+ SURFACE: {
127
+ BRAND: "tide-font-on-surface-brand",
128
+ DEFAULT: "tide-font-on-surface",
129
+ INVERSE: "tide-font-on-surface-inverse",
130
+ VARIANT: "tide-font-on-surface-variant",
131
+ VARIANT_INVERSE: "tide-font-on-surface-variant-inverse"
132
+ }
133
+ },
134
+ SIZE: {
135
+ FOURTEEN: "tide-font-14",
136
+ SIXTEEN: "tide-font-16",
137
+ THIRTY_TWO: "tide-font-32",
138
+ TWELVE: "tide-font-12",
139
+ TWENTY: "tide-font-20",
140
+ TWENTY_FOUR: "tide-font-24"
141
+ },
142
+ WEIGHT: {
143
+ FIVE_HUNDRED: "tide-font-500",
144
+ FOUR_HUNDRED: "tide-font-400",
145
+ SEVEN_HUNDRED: "tide-font-700",
146
+ SIX_HUNDRED: "tide-font-600"
147
+ }
148
+ },
149
+ GAP: {
150
+ FOUR: "tide-gap-4",
151
+ HALF: "tide-gap-1/2",
152
+ ONE: "tide-gap-1",
153
+ QUARTER: "tide-gap-1/4",
154
+ TWO: "tide-gap-2"
155
+ },
156
+ GRID: {
157
+ END: {
158
+ END_1: "tide-start-1",
159
+ END_10: "tide-start-10",
160
+ END_11: "tide-start-11",
161
+ END_12: "tide-start-12",
162
+ END_13: "tide-start-13",
163
+ END_2: "tide-start-2",
164
+ END_3: "tide-start-3",
165
+ END_4: "tide-start-4",
166
+ END_5: "tide-start-5",
167
+ END_6: "tide-start-6",
168
+ END_7: "tide-start-7",
169
+ END_8: "tide-start-8",
170
+ END_9: "tide-start-9"
171
+ },
172
+ FLUID: "tide-fluid",
173
+ LAYOUT: "tide-grid-layout",
174
+ START: {
175
+ START_0: "tide-start-0",
176
+ START_1: "tide-start-1",
177
+ START_10: "tide-start-10",
178
+ START_11: "tide-start-11",
179
+ START_12: "tide-start-12",
180
+ START_2: "tide-start-2",
181
+ START_3: "tide-start-3",
182
+ START_4: "tide-start-4",
183
+ START_5: "tide-start-5",
184
+ START_6: "tide-start-6",
185
+ START_7: "tide-start-7",
186
+ START_8: "tide-start-8",
187
+ START_9: "tide-start-9"
188
+ },
189
+ XL: "tide-grid-xl"
190
+ },
191
+ HEIGHT: {
192
+ FULL: "tide-height-full"
193
+ },
194
+ LIST_BULLETS: {
195
+ OFF: "tide-list-none"
196
+ },
197
+ MARGIN: {
198
+ BOTTOM: {
199
+ FOUR: "tide-margin-bottom-4",
200
+ HALF: "tide-margin-bottom-1/2",
201
+ ONE: "tide-margin-bottom-1",
202
+ QUARTER: "tide-margin-bottom-1/4",
203
+ TWO: "tide-margin-bottom-2"
204
+ },
205
+ FULL: {
206
+ FOUR: "tide-margin-4",
207
+ HALF: "tide-margin-1/2",
208
+ ONE: "tide-margin-1",
209
+ QUARTER: "tide-margin-1/4",
210
+ TWO: "tide-margin-2"
211
+ },
212
+ LEFT: {
213
+ AUTO: "tide-margin-left-auto",
214
+ FOUR: "tide-margin-left-4",
215
+ HALF: "tide-margin-left-1/2",
216
+ ONE: "tide-margin-left-1",
217
+ QUARTER: "tide-margin-left-1/4",
218
+ TWO: "tide-margin-left-2"
219
+ },
220
+ RIGHT: {
221
+ AUTO: "tide-margin-right-auto",
222
+ FOUR: "tide-margin-right-4",
223
+ HALF: "tide-margin-right-1/2",
224
+ ONE: "tide-margin-right-1",
225
+ QUARTER: "tide-margin-right-1/4",
226
+ TWO: "tide-margin-right-2"
227
+ },
228
+ TOP: {
229
+ FOUR: "tide-margin-top-4",
230
+ HALF: "tide-margin-top-1/2",
231
+ ONE: "tide-margin-top-1",
232
+ QUARTER: "tide-margin-top-1/4",
233
+ TWO: "tide-margin-top-2"
234
+ },
235
+ X: {
236
+ AUTO: "tide-margin-x-auto",
237
+ FOUR: "tide-margin-x-4",
238
+ HALF: "tide-margin-x-1/2",
239
+ ONE: "tide-margin-x-1",
240
+ QUARTER: "tide-margin-x-1/4",
241
+ TWO: "tide-margin-x-2"
242
+ },
243
+ Y: {
244
+ FOUR: "tide-margin-y-4",
245
+ HALF: "tide-margin-y-1/2",
246
+ ONE: "tide-margin-y-1",
247
+ QUARTER: "tide-margin-y-1/4",
248
+ TWO: "tide-margin-y-2"
249
+ }
250
+ },
251
+ OBJECT: {
252
+ CENTER: "tide-object-center",
253
+ CONTAIN: "tide-object-contain",
254
+ COVER: "tide-object-cover",
255
+ SCALE_DOWN: "tide-object-scale-down"
256
+ },
257
+ OPACITY: {
258
+ OFF: "tide-opacity-none",
259
+ ON: "tide-opacity"
260
+ },
261
+ OVERFLOW: {
262
+ X: {
263
+ AUTO: "tide-x-auto",
264
+ HIDDEN: "tide-x-hidden",
265
+ SCROLL: "tide-x-scroll"
266
+ },
267
+ XY: {
268
+ AUTO: "tide-xy-auto",
269
+ HIDDEN: "tide-xy-hidden"
270
+ },
271
+ Y: {
272
+ AUTO: "tide-y-auto",
273
+ HIDDEN: "tide-y-hidden"
274
+ }
275
+ },
276
+ PADDING: {
277
+ BOTTOM: {
278
+ FOUR: "tide-padding-bottom-4",
279
+ HALF: "tide-padding-bottom-1/2",
280
+ ONE: "tide-padding-bottom-1",
281
+ QUARTER: "tide-padding-bottom-1/4",
282
+ TWO: "tide-padding-bottom-2"
283
+ },
284
+ FULL: {
285
+ FOUR: "tide-padding-4",
286
+ HALF: "tide-padding-1/2",
287
+ ONE: "tide-padding-1",
288
+ QUARTER: "tide-padding-1/4",
289
+ TWO: "tide-padding-2"
290
+ },
291
+ LEFT: {
292
+ FOUR: "tide-padding-left-4",
293
+ HALF: "tide-padding-left-1/2",
294
+ ONE: "tide-padding-left-1",
295
+ QUARTER: "tide-padding-left-1/4",
296
+ TWO: "tide-padding-left-2"
297
+ },
298
+ RIGHT: {
299
+ FOUR: "tide-padding-right-4",
300
+ HALF: "tide-padding-right-1/2",
301
+ ONE: "tide-padding-right-1",
302
+ QUARTER: "tide-padding-right-1/4",
303
+ TWO: "tide-padding-right-2"
304
+ },
305
+ TOP: {
306
+ FOUR: "tide-padding-top-4",
307
+ HALF: "tide-padding-top-1/2",
308
+ ONE: "tide-padding-top-1",
309
+ QUARTER: "tide-padding-top-1/4",
310
+ TWO: "tide-padding-top-2"
311
+ },
312
+ X: {
313
+ FOUR: "tide-padding-x-4",
314
+ HALF: "tide-padding-x-1/2",
315
+ ONE: "tide-padding-x-1",
316
+ QUARTER: "tide-padding-x-1/4",
317
+ TWO: "tide-padding-x-2"
318
+ },
319
+ Y: {
320
+ FOUR: "tide-padding-y-4",
321
+ HALF: "tide-padding-y-1/2",
322
+ ONE: "tide-padding-y-1",
323
+ QUARTER: "tide-padding-y-1/4",
324
+ TWO: "tide-padding-y-2"
325
+ }
326
+ },
327
+ POINTER_EVENTS: {
328
+ OFF: "tide-pointer-events-none",
329
+ ON: "tide-pointer-events"
330
+ },
331
+ POSITION: {
332
+ ABSOLUTE: "tide-position-absolute",
333
+ FIXED: "tide-position-fixed",
334
+ RELATIVE: "tide-position-relative",
335
+ STICKY: "tide-sticky"
336
+ },
337
+ POSITIONING: {
338
+ BOTTOM_0: "tide-bottom-0",
339
+ LEFT_0: "tide-left-0",
340
+ RIGHT_0: "tide-right-0",
341
+ TOP_0: "tide-top-0"
342
+ },
343
+ SCROLLBAR: {
344
+ OFF: "tide-scrollbar-none"
345
+ },
346
+ SHADOW: {
347
+ BOTTOM: "tide-shadow-bottom",
348
+ TOP: "tide-shadow-top"
349
+ },
350
+ SNAP: {
351
+ ON: "tide-snap"
352
+ },
353
+ SNAP_ALIGN: {
354
+ START: "tide-snap-start"
355
+ },
356
+ TEXT_TRANSFORM: {
357
+ LOWER: "tide-text-transform-lower",
358
+ NONE: "tide-text-transform-none",
359
+ UPPER: "tide-text-transform-upper"
360
+ },
361
+ UNDERLINE: {
362
+ HOVER: "tide-underline-hover",
363
+ OFF: "tide-underline-none",
364
+ ON: "tide-underline"
365
+ },
366
+ VISIBILITY: {
367
+ OFF: "tide-visible-none",
368
+ ON: "tide-visible"
369
+ },
370
+ WHITESPACE_WRAP: {
371
+ OFF: "tide-whitespace-nowrap"
372
+ },
373
+ WIDTH: {
374
+ FULL: "tide-width-full",
375
+ MAX_FULL: "tide-max-width-full"
376
+ }
377
+ };
378
+ e.DISPLAY.BLOCK, e.DISPLAY.CONTENTS, e.DISPLAY.FLEX, e.DISPLAY.GRID, e.DISPLAY.NONE, e.DISPLAY.INITIAL, e.DISPLAY.INLINE, e.DISPLAY.INLINE_BLOCK, e.DISPLAY.INLINE_FLEX, e.AXIS1.AROUND, e.AXIS1.BETWEEN, e.AXIS1.CENTER, e.AXIS1.END, e.AXIS1.START, e.AXIS2.AROUND, e.AXIS2.CENTER, e.AXIS2.END, e.AXIS2.START, e.FLEX.DIRECTION.COLUMN, e.FLEX.DIRECTION.COLUMN_REVERSE, e.FLEX.DIRECTION.ROW, e.FLEX.DIRECTION.ROW_REVERSE, e.GAP.ONE, e.GAP.HALF, e.GAP.QUARTER, e.GAP.TWO, e.GAP.FOUR, e.FLEX.GROW.ON, e.FLEX.GROW.OFF, e.FLEX.SHRINK.ON, e.FLEX.SHRINK.OFF, e.FLEX.WRAP, e.POSITION.ABSOLUTE, e.POSITION.FIXED, e.POSITION.RELATIVE, e.POSITION.STICKY, e.POSITIONING.TOP_0, e.POSITIONING.RIGHT_0, e.POSITIONING.BOTTOM_0, e.POSITIONING.LEFT_0, e.BOX_SIZING.BORDER_BOX, e.BOX_SIZING.CONTENT_BOX, e.MARGIN.FULL.ONE, e.MARGIN.FULL.HALF, e.MARGIN.FULL.QUARTER, e.MARGIN.FULL.TWO, e.MARGIN.FULL.FOUR, e.MARGIN.Y.ONE, e.MARGIN.Y.HALF, e.MARGIN.Y.QUARTER, e.MARGIN.Y.TWO, e.MARGIN.Y.FOUR, e.MARGIN.TOP.ONE, e.MARGIN.TOP.HALF, e.MARGIN.TOP.QUARTER, e.MARGIN.TOP.TWO, e.MARGIN.TOP.FOUR, e.MARGIN.X.ONE, e.MARGIN.X.HALF, e.MARGIN.X.QUARTER, e.MARGIN.X.TWO, e.MARGIN.X.FOUR, e.MARGIN.X.AUTO, e.MARGIN.RIGHT.ONE, e.MARGIN.RIGHT.HALF, e.MARGIN.RIGHT.QUARTER, e.MARGIN.RIGHT.TWO, e.MARGIN.RIGHT.FOUR, e.MARGIN.RIGHT.AUTO, e.MARGIN.BOTTOM.ONE, e.MARGIN.BOTTOM.HALF, e.MARGIN.BOTTOM.QUARTER, e.MARGIN.BOTTOM.TWO, e.MARGIN.BOTTOM.FOUR, e.MARGIN.LEFT.ONE, e.MARGIN.LEFT.HALF, e.MARGIN.LEFT.QUARTER, e.MARGIN.LEFT.TWO, e.MARGIN.LEFT.FOUR, e.MARGIN.LEFT.AUTO, e.BORDER.FULL.ONE, e.BORDER.FULL.TWO, e.BORDER.TOP.ONE, e.BORDER.TOP.TWO, e.BORDER.RIGHT.ONE, e.BORDER.RIGHT.TWO, e.BORDER.BOTTOM.ONE, e.BORDER.BOTTOM.TWO, e.BORDER.LEFT.ONE, e.BORDER.LEFT.TWO, e.BORDER.RADIUS.ONE, e.BORDER.RADIUS.HALF, e.BORDER.RADIUS.QUARTER, e.BORDER.RADIUS.FULL, e.PADDING.FULL.ONE, e.PADDING.FULL.HALF, e.PADDING.FULL.QUARTER, e.PADDING.FULL.TWO, e.PADDING.FULL.FOUR, e.PADDING.Y.ONE, e.PADDING.Y.HALF, e.PADDING.Y.QUARTER, e.PADDING.Y.TWO, e.PADDING.Y.FOUR, e.PADDING.TOP.ONE, e.PADDING.TOP.HALF, e.PADDING.TOP.QUARTER, e.PADDING.TOP.TWO, e.PADDING.TOP.FOUR, e.PADDING.X.ONE, e.PADDING.X.HALF, e.PADDING.X.QUARTER, e.PADDING.X.TWO, e.PADDING.X.FOUR, e.PADDING.RIGHT.ONE, e.PADDING.RIGHT.HALF, e.PADDING.RIGHT.QUARTER, e.PADDING.RIGHT.TWO, e.PADDING.RIGHT.FOUR, e.PADDING.BOTTOM.ONE, e.PADDING.BOTTOM.HALF, e.PADDING.BOTTOM.QUARTER, e.PADDING.BOTTOM.TWO, e.PADDING.BOTTOM.FOUR, e.PADDING.LEFT.ONE, e.PADDING.LEFT.HALF, e.PADDING.LEFT.QUARTER, e.PADDING.LEFT.TWO, e.PADDING.LEFT.FOUR, e.WIDTH.MAX_FULL, e.WIDTH.FULL, e.HEIGHT.FULL, e.ALIGN.Y.MIDDLE, e.BREAK_WORD, e.CURSOR.NOT_ALLOWED, e.CURSOR.POINTER, e.FONT.SIZE.TWELVE, e.FONT.SIZE.FOURTEEN, e.FONT.SIZE.SIXTEEN, e.FONT.SIZE.TWENTY, e.FONT.SIZE.TWENTY_FOUR, e.FONT.SIZE.THIRTY_TWO, e.FONT.WEIGHT.FOUR_HUNDRED, e.FONT.WEIGHT.FIVE_HUNDRED, e.FONT.WEIGHT.SIX_HUNDRED, e.FONT.WEIGHT.SEVEN_HUNDRED, e.LIST_BULLETS.OFF, e.OBJECT.CENTER, e.OBJECT.CONTAIN, e.OBJECT.COVER, e.OBJECT.SCALE_DOWN, e.POINTER_EVENTS.ON, e.POINTER_EVENTS.OFF, e.SCROLLBAR.OFF, e.SHADOW.BOTTOM, e.SHADOW.TOP, e.SNAP.ON, e.SNAP_ALIGN.START, e.ALIGN.X.LEFT, e.ALIGN.X.CENTER, e.ALIGN.X.RIGHT, e.TEXT_TRANSFORM.LOWER, e.TEXT_TRANSFORM.NONE, e.TEXT_TRANSFORM.UPPER, e.UNDERLINE, e.UNDERLINE.HOVER, e.UNDERLINE.OFF, e.VISIBILITY.ON, e.VISIBILITY.OFF, e.WHITESPACE_WRAP.OFF, e.OVERFLOW.XY.AUTO, e.OVERFLOW.XY.HIDDEN, e.OVERFLOW.X.AUTO, e.OVERFLOW.X.HIDDEN, e.OVERFLOW.X.SCROLL, e.OVERFLOW.Y.AUTO, e.OVERFLOW.Y.HIDDEN;
379
+ const de = {
380
+ HORIZONTAL: "horizontal",
381
+ VERTICAL: "vertical"
382
+ }, re = /* @__PURE__ */ v({
383
+ __name: "TideDivider",
384
+ props: {
385
+ orientation: { default: de.HORIZONTAL }
386
+ },
387
+ setup(n) {
388
+ const s = n;
389
+ return (a, o) => (l(), r("div", {
390
+ class: i([
391
+ t(e).BORDER.COLOR.LOW,
392
+ s.orientation === t(de).HORIZONTAL ? [t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE] : [t(e).MARGIN.X.HALF, t(e).BORDER.RIGHT.ONE]
393
+ ])
394
+ }, null, 2));
395
+ }
396
+ }), De = (n, s) => {
397
+ const a = n[s];
398
+ return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((o, d) => {
399
+ (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
400
+ });
401
+ }, y = {
402
+ LARGE: "large",
403
+ SMALL: "small"
404
+ }, Se = (n) => n && typeof n == "string" ? n.replace(/([a-z]{1})([A-Z]{1})/g, "$1 $2").replace(/[\s_-]/g, " ").toLowerCase().split(" ").map((s) => s.slice(0, 1).toUpperCase() + s.slice(1)).join("") : n, fe = ["data-icon"], Ue = /* @__PURE__ */ v({
405
+ __name: "TideIcon",
406
+ props: {
407
+ icon: {},
408
+ size: { default: y.SMALL }
409
+ },
410
+ setup(n) {
411
+ const s = n, a = A();
412
+ return Q(
413
+ () => s.icon,
414
+ () => {
415
+ const o = s.icon, d = Se(o), T = Oe(() => De(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.vue": () => import("./IconAccountBalance-02661aa3.js"), "../assets/svg/icons/IconAdd.vue": () => import("./IconAdd-d8a1cf9d.js"), "../assets/svg/icons/IconAi.vue": () => import("./IconAi-7c6a602b.js"), "../assets/svg/icons/IconAlignSpace.vue": () => import("./IconAlignSpace-3823b6fc.js"), "../assets/svg/icons/IconApplePay.vue": () => import("./IconApplePay-b153e3b7.js"), "../assets/svg/icons/IconArrowBack.vue": () => import("./IconArrowBack-11f50435.js"), "../assets/svg/icons/IconArrowForward.vue": () => import("./IconArrowForward-b35cab51.js"), "../assets/svg/icons/IconArrowRight.vue": () => import("./IconArrowRight-fc4780ca.js"), "../assets/svg/icons/IconAssignment.vue": () => import("./IconAssignment-d2ab760a.js"), "../assets/svg/icons/IconAwardStar.vue": () => import("./IconAwardStar-3afc62b5.js"), "../assets/svg/icons/IconBookmark.vue": () => import("./IconBookmark-4029d540.js"), "../assets/svg/icons/IconCalendarMonth.vue": () => import("./IconCalendarMonth-cda8a0b3.js"), "../assets/svg/icons/IconCall.vue": () => import("./IconCall-913bf298.js"), "../assets/svg/icons/IconCheck.vue": () => import("./IconCheck-47e28edc.js"), "../assets/svg/icons/IconChevronLeft.vue": () => import("./IconChevronLeft-f028b794.js"), "../assets/svg/icons/IconChevronRight.vue": () => import("./IconChevronRight-9a55a3ab.js"), "../assets/svg/icons/IconClear.vue": () => import("./IconClear-e0ba2dce.js"), "../assets/svg/icons/IconClose.vue": () => import("./IconClose-cff3d9fd.js"), "../assets/svg/icons/IconCycle.vue": () => import("./IconCycle-3d562469.js"), "../assets/svg/icons/IconDelete.vue": () => import("./IconDelete-92b2bf27.js"), "../assets/svg/icons/IconDiamond.vue": () => import("./IconDiamond-552da5d2.js"), "../assets/svg/icons/IconEdit.vue": () => import("./IconEdit-ebd715f8.js"), "../assets/svg/icons/IconError.vue": () => import("./IconError-43534431.js"), "../assets/svg/icons/IconExpandContent.vue": () => import("./IconExpandContent-2917c46b.js"), "../assets/svg/icons/IconExpandLess.vue": () => import("./IconExpandLess-d51f8efc.js"), "../assets/svg/icons/IconExpandMore.vue": () => import("./IconExpandMore-d4d2742e.js"), "../assets/svg/icons/IconFacebook.vue": () => import("./IconFacebook-d5c8ee88.js"), "../assets/svg/icons/IconFavorite.vue": () => import("./IconFavorite-d6b9473c.js"), "../assets/svg/icons/IconFavoriteFilled.vue": () => import("./IconFavoriteFilled-e718a96c.js"), "../assets/svg/icons/IconFormatBold.vue": () => import("./IconFormatBold-1e0e316b.js"), "../assets/svg/icons/IconFormatItalic.vue": () => import("./IconFormatItalic-187bb45c.js"), "../assets/svg/icons/IconFormatListBulleted.vue": () => import("./IconFormatListBulleted-a48b2abd.js"), "../assets/svg/icons/IconForum.vue": () => import("./IconForum-f99305b7.js"), "../assets/svg/icons/IconGoogle.vue": () => import("./IconGoogle-0ff8c23e.js"), "../assets/svg/icons/IconGooglePay.vue": () => import("./IconGooglePay-83062788.js"), "../assets/svg/icons/IconGrid.vue": () => import("./IconGrid-a180d709.js"), "../assets/svg/icons/IconHelp.vue": () => import("./IconHelp-2ec52772.js"), "../assets/svg/icons/IconInfo.vue": () => import("./IconInfo-7f36943d.js"), "../assets/svg/icons/IconInsertText.vue": () => import("./IconInsertText-d62ab204.js"), "../assets/svg/icons/IconInstagram.vue": () => import("./IconInstagram-26b5e292.js"), "../assets/svg/icons/IconIosShare.vue": () => import("./IconIosShare-408b856f.js"), "../assets/svg/icons/IconLayout.vue": () => import("./IconLayout-1dc5c944.js"), "../assets/svg/icons/IconLinkedIn.vue": () => import("./IconLinkedIn-93b18ad8.js"), "../assets/svg/icons/IconLocalShipping.vue": () => import("./IconLocalShipping-215aee80.js"), "../assets/svg/icons/IconLock.vue": () => import("./IconLock-b36a1524.js"), "../assets/svg/icons/IconMail.vue": () => import("./IconMail-cef0d19d.js"), "../assets/svg/icons/IconMenu.vue": () => import("./IconMenu-749768d8.js"), "../assets/svg/icons/IconMoreHoriz.vue": () => import("./IconMoreHoriz-4bc42fbd.js"), "../assets/svg/icons/IconNotifications.vue": () => import("./IconNotifications-57da13ba.js"), "../assets/svg/icons/IconOpenInNew.vue": () => import("./IconOpenInNew-2fc6ea43.js"), "../assets/svg/icons/IconPalette.vue": () => import("./IconPalette-72204e43.js"), "../assets/svg/icons/IconPaypal.vue": () => import("./IconPaypal-f7fa926b.js"), "../assets/svg/icons/IconPerson.vue": () => import("./IconPerson-263fc38c.js"), "../assets/svg/icons/IconPhotoCamera.vue": () => import("./IconPhotoCamera-969a2214.js"), "../assets/svg/icons/IconPinterest.vue": () => import("./IconPinterest-89945fd9.js"), "../assets/svg/icons/IconPlayArrow.vue": () => import("./IconPlayArrow-f4fc6ac0.js"), "../assets/svg/icons/IconRemove.vue": () => import("./IconRemove-1fa301c5.js"), "../assets/svg/icons/IconRoundedCorners.vue": () => import("./IconRoundedCorners-7551f5ab.js"), "../assets/svg/icons/IconSearch.vue": () => import("./IconSearch-26542de4.js"), "../assets/svg/icons/IconSell.vue": () => import("./IconSell-ca227b87.js"), "../assets/svg/icons/IconShare.vue": () => import("./IconShare-e2b3468f.js"), "../assets/svg/icons/IconShoppingCart.vue": () => import("./IconShoppingCart-1c44f96a.js"), "../assets/svg/icons/IconSms.vue": () => import("./IconSms-a0657fb7.js"), "../assets/svg/icons/IconStar.vue": () => import("./IconStar-246d2f5c.js"), "../assets/svg/icons/IconSwapVert.vue": () => import("./IconSwapVert-902ded58.js"), "../assets/svg/icons/IconThreeDRotation.vue": () => import("./IconThreeDRotation-f7da52e8.js"), "../assets/svg/icons/IconTune.vue": () => import("./IconTune-1ccf1acb.js"), "../assets/svg/icons/IconTwitter.vue": () => import("./IconTwitter-1d5b5b01.js"), "../assets/svg/icons/IconVideocam.vue": () => import("./IconVideocam-7b5e3939.js"), "../assets/svg/icons/IconViewInAr.vue": () => import("./IconViewInAr-f1b91278.js"), "../assets/svg/icons/IconVisibility.vue": () => import("./IconVisibility-477253ed.js"), "../assets/svg/icons/IconWarning.vue": () => import("./IconWarning-9235353c.js"), "../assets/svg/icons/IconYoutube.vue": () => import("./IconYoutube-c3992fd7.js") }), `../assets/svg/icons/Icon${d}.vue`));
416
+ a.value = ue(T);
417
+ },
418
+ { immediate: !0 }
419
+ ), (o, d) => (l(), r("div", {
420
+ class: i(["tide-icon", s.size])
421
+ }, [
422
+ (l(), r("svg", {
423
+ class: i([t(e).DISPLAY.BLOCK]),
424
+ "data-icon": o.icon,
425
+ fill: "currentColor",
426
+ viewBox: "0 0 24 24",
427
+ xmlns: "http://www.w3.org/2000/svg"
428
+ }, [
429
+ a.value ? (l(), S(z(a.value), { key: 0 })) : N("", !0)
430
+ ], 10, fe))
431
+ ], 2));
432
+ }
433
+ });
434
+ const C = (n, s) => {
435
+ const a = n.__vccOpts || n;
436
+ for (const [o, d] of s)
437
+ a[o] = d;
438
+ return a;
439
+ }, f = /* @__PURE__ */ C(Ue, [["__scopeId", "data-v-30daad21"]]), me = /* @__PURE__ */ v({
440
+ __name: "TideIndicator",
441
+ props: {
442
+ label: { default: void 0 }
443
+ },
444
+ setup(n) {
445
+ const s = n;
446
+ return (a, o) => (l(), r("div", {
447
+ class: i([
448
+ s.label ? "tide-indicator-label" : "tide-indicator",
449
+ "border-white",
450
+ t(e).BG.SURFACE.ACCENT,
451
+ t(e).BORDER.FULL.ONE,
452
+ t(e).BORDER.RADIUS.FULL,
453
+ s.label ? [t(e).POSITION.RELATIVE, t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT] : []
454
+ ])
455
+ }, [
456
+ s.label ? (l(), r("div", {
457
+ key: 0,
458
+ class: i([
459
+ t(e).POSITION.ABSOLUTE,
460
+ t(e).POSITIONING.TOP_0,
461
+ t(e).DISPLAY.FLEX,
462
+ t(e).AXIS1.CENTER,
463
+ t(e).AXIS2.CENTER,
464
+ t(e).WIDTH.FULL,
465
+ t(e).HEIGHT.FULL
466
+ ])
467
+ }, L(s.label), 3)) : N("", !0)
468
+ ], 2));
469
+ }
470
+ });
471
+ const ge = /* @__PURE__ */ C(me, [["__scopeId", "data-v-b3905972"]]), _ = {
472
+ ACCOUNT_BALANCE: "account-balance",
473
+ ADD: "add",
474
+ AI: "ai",
475
+ ALIGN_SPACE: "align-space",
476
+ APPLE_PAY: "apple-pay",
477
+ ARROW_BACK: "arrow-back",
478
+ ARROW_FORWARD: "arrow-forward",
479
+ ARROW_RIGHT: "arrow-right",
480
+ ASSIGNMENT: "assignment",
481
+ AWARD_STAR: "award-star",
482
+ BOOKMARK: "bookmark",
483
+ CALENDAR_MONTH: "calendar-month",
484
+ CALL: "call",
485
+ CHECK: "check",
486
+ CHEVRON_LEFT: "chevron-left",
487
+ CHEVRON_RIGHT: "chevron-right",
488
+ CLEAR: "clear",
489
+ CLOSE: "close",
490
+ CYCLE: "cycle",
491
+ DELETE: "delete",
492
+ DIAMOND: "diamond",
493
+ EDIT: "edit",
494
+ ERROR: "error",
495
+ EXPAND_CONTENT: "expand-content",
496
+ EXPAND_LESS: "expand-less",
497
+ EXPAND_MORE: "expand-more",
498
+ FACEBOOK: "facebook",
499
+ FAVORITE: "favorite",
500
+ FAVORITE_FILLED: "favorite-filled",
501
+ FORMAT_BOLD: "format-bold",
502
+ FORMAT_ITALIC: "format-italic",
503
+ FORMAT_LIST_BULLETED: "format-list-bulleted",
504
+ FORUM: "forum",
505
+ GOOGLE: "google",
506
+ GOOGLE_PAY: "google-pay",
507
+ GRID: "grid",
508
+ HELP: "help",
509
+ INFO: "info",
510
+ INSERT_TEXT: "insert-text",
511
+ INSTAGRAM: "instagram",
512
+ IOS_SHARE: "ios-share",
513
+ LAYOUT: "layout",
514
+ LINKED_IN: "linked in",
515
+ LOCAL_SHIPPING: "local-shipping",
516
+ LOCK: "lock",
517
+ MAIL: "mail",
518
+ MENU: "menu",
519
+ MORE_HORIZ: "more-horiz",
520
+ NOTIFICATIONS: "notifications",
521
+ OPEN_IN_NEW: "open-in-new",
522
+ PALETTE: "palette",
523
+ PAYPAL: "paypal",
524
+ PERSON: "person",
525
+ PHOTO_CAMERA: "photo-camera",
526
+ PINTEREST: "pinterest",
527
+ PLAY_ARROW: "play-arrow",
528
+ REMOVE: "remove",
529
+ ROUNDED_CORNERS: "rounded-corners",
530
+ SEARCH: "search",
531
+ SELL: "sell",
532
+ SHARE: "share",
533
+ SHOPPING_CART: "shopping-cart",
534
+ SMS: "sms",
535
+ STAR: "star",
536
+ SWAP_VERT: "swap-vert",
537
+ THREE_D_ROTATION: "three-d-rotation",
538
+ TUNE: "tune",
539
+ TWITTER: "twitter",
540
+ VIDEOCAM: "videocam",
541
+ VIEW_IN_AR: "view-in-ar",
542
+ VISIBILITY: "visibility",
543
+ WARNING: "warning",
544
+ YOUTUBE: "youtube"
545
+ }, Ce = { class: "tide-accordion-item" }, Pe = /* @__PURE__ */ v({
546
+ __name: "TideAccordionItem",
547
+ props: {
548
+ hasBottomDivider: {
549
+ default: !1,
550
+ required: !1,
551
+ type: Boolean
552
+ },
553
+ hasTopDivider: {
554
+ default: !1,
555
+ required: !1,
556
+ type: Boolean
557
+ },
558
+ isActive: {
559
+ default: !1,
560
+ required: !1,
561
+ type: Boolean
562
+ },
563
+ isExpandedInitial: {
564
+ default: !1,
565
+ required: !1,
566
+ type: Boolean
567
+ },
568
+ isOptional: {
569
+ default: !1,
570
+ required: !1,
571
+ type: Boolean
572
+ },
573
+ label: {
574
+ default: "",
575
+ required: !0,
576
+ type: String
577
+ }
578
+ },
579
+ setup(n) {
580
+ const s = n, a = A(s.isExpandedInitial);
581
+ let o = A();
582
+ const d = () => {
583
+ const T = o.value;
584
+ a.value = !a.value, T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
585
+ };
586
+ return j(() => {
587
+ const T = o.value;
588
+ T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
589
+ }), (T, I) => (l(), r("div", Ce, [
590
+ s.hasTopDivider ? (l(), S(re, { key: 0 })) : N("", !0),
591
+ c("div", {
592
+ class: i(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
593
+ onClick: d
594
+ }, [
595
+ c("div", {
596
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
597
+ }, [
598
+ c("span", null, L(s.label), 1),
599
+ s.isOptional ? (l(), r("span", {
600
+ key: 0,
601
+ class: i([t(e).FONT.COLOR.SURFACE.VARIANT])
602
+ }, " (optional) ", 2)) : N("", !0),
603
+ s.isActive ? (l(), S(ge, { key: 1 })) : N("", !0)
604
+ ], 2),
605
+ G(f, {
606
+ icon: a.value ? t(_).EXPAND_LESS : t(_).EXPAND_MORE
607
+ }, null, 8, ["icon"])
608
+ ], 2),
609
+ c("div", {
610
+ class: i(["tide-accordion-body", t(e).DISPLAY.GRID]),
611
+ ref_key: "accordionBody",
612
+ ref: o
613
+ }, [
614
+ c("div", {
615
+ class: i([t(e).OVERFLOW.Y.HIDDEN])
616
+ }, [
617
+ c("div", {
618
+ class: i([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
619
+ }, [
620
+ X(T.$slots, "default", {}, void 0, !0)
621
+ ], 2)
622
+ ], 2)
623
+ ], 2),
624
+ s.hasBottomDivider ? (l(), S(re, { key: 1 })) : N("", !0)
625
+ ]));
626
+ }
627
+ });
628
+ const _t = /* @__PURE__ */ C(Pe, [["__scopeId", "data-v-ad283103"]]), D = {
629
+ BUTTON: "button",
630
+ LINK: "a"
631
+ }, x = {
632
+ BUTTON: "button",
633
+ DIV: "div",
634
+ LINK: "a"
635
+ }, w = {
636
+ PRIMARY: "primary",
637
+ SECONDARY: "secondary",
638
+ TERTIARY: "tertiary",
639
+ QUATERNARY: "quaternary",
640
+ FLOATING: "floating"
641
+ }, W = {
642
+ BLANK: "_blank",
643
+ SELF: void 0
644
+ }, q = /* @__PURE__ */ v({
645
+ __name: "TideButtonIcon",
646
+ props: {
647
+ disabled: { type: Boolean, default: !1 },
648
+ element: { default: D.BUTTON },
649
+ href: { default: void 0 },
650
+ icon: { default: void 0 },
651
+ isNewTab: { type: Boolean, default: !1 },
652
+ priority: { default: w.PRIMARY }
653
+ },
654
+ setup(n) {
655
+ const s = n;
656
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? "a" : "button"), {
657
+ "aria-label": s.icon,
658
+ class: i([
659
+ s.element === t(D).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
660
+ s.priority && s.priority,
661
+ [t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
662
+ s.element === t(D).LINK ? [t(e).UNDERLINE.OFF] : ""
663
+ ]),
664
+ disabled: s.element === t(D).BUTTON && s.disabled,
665
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
666
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
667
+ }, {
668
+ default: J(() => [
669
+ s.icon ? (l(), S(f, {
670
+ key: 0,
671
+ icon: s.icon,
672
+ size: t(y).LARGE
673
+ }, null, 8, ["icon", "size"])) : N("", !0)
674
+ ]),
675
+ _: 1
676
+ }, 8, ["aria-label", "class", "disabled", "href", "target"]));
677
+ }
678
+ }), b = {
679
+ ERROR: "error",
680
+ INFO: "info",
681
+ SUCCESS: "success",
682
+ WARNING: "warning"
683
+ }, Ge = /* @__PURE__ */ v({
684
+ __name: "TideAlert",
685
+ props: {
686
+ heading: { default: void 0 },
687
+ isToast: { type: Boolean, default: !1 },
688
+ type: { default: b.INFO }
689
+ },
690
+ setup(n) {
691
+ const s = n, a = F(() => {
692
+ let o = _.VIEW_IN_AR;
693
+ switch (s.type) {
694
+ case b.ERROR:
695
+ o = _.ERROR;
696
+ break;
697
+ default:
698
+ case b.INFO:
699
+ o = _.INFO;
700
+ break;
701
+ case b.SUCCESS:
702
+ o = _.CHECK;
703
+ break;
704
+ case b.WARNING:
705
+ o = _.WARNING;
706
+ break;
707
+ }
708
+ return o;
709
+ });
710
+ return (o, d) => (l(), r("div", {
711
+ class: i([
712
+ s.type,
713
+ "tide-alert",
714
+ t(e).DISPLAY.GRID,
715
+ t(e).BORDER.RADIUS.HALF,
716
+ t(e).PADDING.FULL.ONE,
717
+ s.type === t(b).ERROR && t(e).BG.SURFACE.ERROR,
718
+ s.type === t(b).INFO && t(e).BG.SURFACE.INFO,
719
+ s.type === t(b).SUCCESS && t(e).BG.SURFACE.SUCCESS,
720
+ s.type === t(b).WARNING && t(e).BG.SURFACE.WARNING,
721
+ s.isToast ? t(e).SHADOW.BOTTOM : ""
722
+ ])
723
+ }, [
724
+ c("div", {
725
+ class: i(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
726
+ }, [
727
+ G(f, {
728
+ class: i([
729
+ s.type,
730
+ t(e).BORDER.RADIUS.FULL,
731
+ t(e).PADDING.FULL.HALF,
732
+ t(e).FONT.COLOR.SURFACE.INVERSE,
733
+ s.type === t(b).ERROR && t(e).BG.ERROR,
734
+ s.type === t(b).INFO && t(e).BG.INFO,
735
+ s.type === t(b).SUCCESS && t(e).BG.SUCCESS,
736
+ s.type === t(b).WARNING && t(e).BG.WARNING
737
+ ]),
738
+ icon: a.value
739
+ }, null, 8, ["class", "icon"])
740
+ ], 2),
741
+ c("div", {
742
+ class: i(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
743
+ }, [
744
+ c("h2", {
745
+ class: i([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
746
+ }, L(s.heading), 3)
747
+ ], 2),
748
+ G(q, {
749
+ class: i(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
750
+ icon: t(_).CLOSE,
751
+ priority: t(w).QUATERNARY,
752
+ "aria-label": "Close alert"
753
+ }, null, 8, ["class", "icon", "priority"]),
754
+ c("div", {
755
+ class: i(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
756
+ }, [
757
+ X(o.$slots, "default", {}, void 0, !0)
758
+ ], 2)
759
+ ], 2));
760
+ }
761
+ });
762
+ const Dt = /* @__PURE__ */ C(Ge, [["__scopeId", "data-v-279a5605"]]), St = /* @__PURE__ */ v({
763
+ __name: "TideBadge",
764
+ props: {
765
+ label: {}
766
+ },
767
+ setup(n) {
768
+ const s = n;
769
+ return (a, o) => (l(), r("div", {
770
+ class: i([
771
+ "tide-badge",
772
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
773
+ t(e).BG.SURFACE.FLOATING,
774
+ t(e).DISPLAY.INLINE_FLEX,
775
+ t(e).AXIS2.CENTER,
776
+ t(e).GAP.QUARTER,
777
+ t(e).BORDER.RADIUS.QUARTER,
778
+ t(e).PADDING.Y.QUARTER,
779
+ t(e).PADDING.X.HALF,
780
+ t(e).FONT.SIZE.FOURTEEN
781
+ ])
782
+ }, L(s.label), 3));
783
+ }
784
+ }), ft = /* @__PURE__ */ v({
785
+ __name: "TideBadgePremium",
786
+ props: {
787
+ label: {}
788
+ },
789
+ setup(n) {
790
+ const s = n;
791
+ return (a, o) => (l(), r("div", {
792
+ class: i([
793
+ "tide-badge",
794
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
795
+ t(e).BG.SURFACE.VARIANT,
796
+ t(e).DISPLAY.INLINE_FLEX,
797
+ t(e).GAP.QUARTER,
798
+ t(e).BORDER.RADIUS.QUARTER,
799
+ t(e).PADDING.Y.QUARTER,
800
+ t(e).PADDING.X.HALF,
801
+ t(e).FONT.SIZE.TWELVE
802
+ ])
803
+ }, L(s.label), 3));
804
+ }
805
+ }), Ut = {
806
+ JUST_LISTED: "Just listed",
807
+ NATIONWIDE: "Nationwide",
808
+ REDUCED: "Reduced",
809
+ UPDATED: "Updated"
810
+ }, mt = {
811
+ PREMIUM: "Premium",
812
+ PREMIUM_SELECT: "Premium SELECT"
813
+ }, he = {
814
+ YEARS_10: "10",
815
+ YEARS_15: "15",
816
+ YEARS_5: "5"
817
+ }, He = {
818
+ class: /* @__PURE__ */ i([])
819
+ }, gt = /* @__PURE__ */ v({
820
+ __name: "TideBadgeTrustedPartner",
821
+ props: {
822
+ years: { default: he.YEARS_5 }
823
+ },
824
+ setup(n) {
825
+ const s = n;
826
+ return (a, o) => (l(), r("div", {
827
+ class: i([
828
+ "tide-badge-trusted-partner",
829
+ t(e).FONT.COLOR.SURFACE.BRAND,
830
+ t(e).DISPLAY.INLINE_FLEX,
831
+ t(e).AXIS2.CENTER,
832
+ t(e).GAP.QUARTER,
833
+ t(e).PADDING.Y.QUARTER,
834
+ t(e).PADDING.X.HALF,
835
+ t(e).FONT.SIZE.FOURTEEN
836
+ ])
837
+ }, [
838
+ G(f, {
839
+ icon: t(_).VIEW_IN_AR
840
+ }, null, 8, ["icon"]),
841
+ c("div", He, [
842
+ c("span", null, L(s.years) + " year trusted partner", 1)
843
+ ])
844
+ ], 2));
845
+ }
846
+ }), be = ["data-track", "href"], ye = ["data-track"], Be = { key: 0 }, Ct = /* @__PURE__ */ v({
847
+ __name: "TideBreadCrumbs",
848
+ props: {
849
+ breadCrumbs: {
850
+ default: void 0,
851
+ required: !0,
852
+ type: Object
853
+ }
854
+ },
855
+ setup(n) {
856
+ const s = n;
857
+ return (a, o) => (l(), r("ul", {
858
+ class: i(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
859
+ }, [
860
+ (l(!0), r($, null, Z(s.breadCrumbs, (d, T) => (l(), r($, {
861
+ key: d.label
862
+ }, [
863
+ c("li", {
864
+ class: i([t(e).FONT.SIZE.FOURTEEN])
865
+ }, [
866
+ d.url ? (l(), r("a", {
867
+ key: 0,
868
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
869
+ "data-track": d.dataTrack || void 0,
870
+ href: d.url
871
+ }, L(d.label), 11, be)) : (l(), r("span", {
872
+ key: 1,
873
+ class: i([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
874
+ "data-track": d.dataTrack || void 0
875
+ }, L(d.label), 11, ye))
876
+ ], 2),
877
+ s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), r("li", Be, [
878
+ G(f, {
879
+ icon: t(_).ARROW_RIGHT,
880
+ size: t(y).SMALL
881
+ }, null, 8, ["icon", "size"])
882
+ ])) : N("", !0)
883
+ ], 64))), 128))
884
+ ], 2));
885
+ }
886
+ }), Pt = /* @__PURE__ */ v({
887
+ __name: "TideButton",
888
+ props: {
889
+ disabled: { type: Boolean, default: !1 },
890
+ element: { default: D.BUTTON },
891
+ href: { default: void 0 },
892
+ iconLeading: { default: void 0 },
893
+ iconTrailing: { default: void 0 },
894
+ isNewTab: { type: Boolean, default: !1 },
895
+ label: { default: void 0 },
896
+ priority: { default: w.PRIMARY }
897
+ },
898
+ setup(n) {
899
+ const s = n;
900
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
901
+ class: i([
902
+ s.element === t(D).LINK ? "tide-link-as-button" : "tide-button",
903
+ s.priority && s.priority,
904
+ s.element === t(D).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
905
+ [t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).BORDER.RADIUS.HALF],
906
+ s.element === t(D).LINK ? t(e).UNDERLINE.OFF : "",
907
+ t(e).PADDING.Y.ONE,
908
+ t(e).PADDING.X.TWO,
909
+ t(e).FONT.WEIGHT.SIX_HUNDRED
910
+ ]),
911
+ disabled: s.element === t(D).BUTTON && s.disabled,
912
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
913
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
914
+ }, {
915
+ default: J(() => [
916
+ s.iconLeading ? (l(), S(f, {
917
+ key: 0,
918
+ icon: s.iconLeading,
919
+ size: t(y).LARGE
920
+ }, null, 8, ["icon", "size"])) : N("", !0),
921
+ Ee(" " + L(s.label) + " ", 1),
922
+ s.iconTrailing ? (l(), S(f, {
923
+ key: 1,
924
+ icon: s.iconTrailing,
925
+ size: t(y).LARGE
926
+ }, null, 8, ["icon", "size"])) : N("", !0)
927
+ ]),
928
+ _: 1
929
+ }, 8, ["class", "disabled", "href", "target"]));
930
+ }
931
+ }), Xe = /* @__PURE__ */ v({
932
+ __name: "TideButtonPagination",
933
+ props: {
934
+ disabled: { type: Boolean, default: !1 },
935
+ element: { default: x.BUTTON },
936
+ href: { default: void 0 },
937
+ label: { default: void 0 }
938
+ },
939
+ setup(n) {
940
+ const s = n;
941
+ return (a, o) => (l(), S(z(
942
+ s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
943
+ ), {
944
+ class: i([
945
+ s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
946
+ [t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
947
+ s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
948
+ s.element === t(x).DIV ? [t(e).CURSOR.POINTER] : "",
949
+ [t(e).FONT.WEIGHT.SEVEN_HUNDRED]
950
+ ]),
951
+ disabled: s.element === t(x).BUTTON && s.disabled,
952
+ href: s.element === t(x).LINK && s.href ? s.href : void 0
953
+ }, {
954
+ default: J(() => [
955
+ c("span", {
956
+ class: i(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
957
+ }, L(s.label), 3)
958
+ ]),
959
+ _: 1
960
+ }, 8, ["class", "disabled", "href"]));
961
+ }
962
+ });
963
+ const We = /* @__PURE__ */ C(Xe, [["__scopeId", "data-v-0710b4ab"]]), Gt = /* @__PURE__ */ v({
964
+ __name: "TideCard",
965
+ setup(n) {
966
+ return (s, a) => (l(), r("div", {
967
+ class: i([
968
+ "tide-card",
969
+ t(e).HEIGHT.FULL,
970
+ t(e).BORDER.RADIUS.HALF,
971
+ t(e).BG.SURFACE.DEFAULT,
972
+ t(e).SHADOW.BOTTOM,
973
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
974
+ t(e).SNAP_ALIGN.START
975
+ ])
976
+ }, [
977
+ X(s.$slots, "default")
978
+ ], 2));
979
+ }
980
+ }), ce = 16, ht = /* @__PURE__ */ v({
981
+ __name: "TideCarousel",
982
+ props: {
983
+ isTouchscreen: { type: Boolean },
984
+ offsetX: { default: 0 }
985
+ },
986
+ emits: ["change"],
987
+ setup(n, { emit: s }) {
988
+ const a = n;
989
+ let o = A(), d = A(), T = A(), I = A();
990
+ const E = A(), u = A(), p = A(), R = A(0), g = () => {
991
+ const O = Array.from(E.value.children).map((P) => P.offsetLeft);
992
+ if (O.length === 0)
993
+ return;
994
+ const U = O.reduce((P, V) => Math.abs(V - u.value.scrollLeft) < Math.abs(P - u.value.scrollLeft) ? V : P);
995
+ R.value = O.indexOf(U);
996
+ }, h = () => {
997
+ o.value = E.value.scrollWidth, d.value = u.value.clientWidth, T.value = o.value > d.value, I.value = u.value.scrollWidth - u.value.clientWidth, p.value = T.value && !a.isTouchscreen, g();
998
+ }, M = () => {
999
+ h();
1000
+ }, Y = (O) => {
1001
+ u.value.scrollTo({
1002
+ behavior: "smooth",
1003
+ left: E.value.children[O].offsetLeft
1004
+ });
1005
+ }, k = () => {
1006
+ const O = E.value.scrollWidth, U = u.value.scrollLeft + u.value.clientWidth;
1007
+ if (U > O)
1008
+ u.value.scrollTo({
1009
+ behavior: "smooth",
1010
+ left: O
1011
+ });
1012
+ else {
1013
+ const P = a.offsetX && R.value === 0, te = U === O ? 0 : P ? 2 : R.value + 1;
1014
+ Y(te);
1015
+ }
1016
+ }, H = () => {
1017
+ const O = a.offsetX ? 1 : 0, U = R.value - 1 === O, V = R.value <= O ? E.value.children.length - 1 : U ? 0 : R.value - 1;
1018
+ Y(V);
1019
+ };
1020
+ return window.addEventListener("resize", h), j(() => {
1021
+ h();
1022
+ }), Ae(() => {
1023
+ window.removeEventListener("resize", h);
1024
+ }), Ne(() => {
1025
+ h();
1026
+ }), Q(R, () => {
1027
+ s("change", R.value);
1028
+ }), (O, U) => (l(), r("section", {
1029
+ class: i(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
1030
+ ref: "carouselRef"
1031
+ }, [
1032
+ c("div", {
1033
+ class: i([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
1034
+ ref_key: "frameRef",
1035
+ ref: u,
1036
+ onScroll: M
1037
+ }, [
1038
+ c("ul", {
1039
+ class: i([a.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
1040
+ ref_key: "contentRef",
1041
+ ref: E
1042
+ }, [
1043
+ a.offsetX ? (l(), r("li", {
1044
+ key: 0,
1045
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1046
+ style: ae({ width: `${a.offsetX - ce}px` })
1047
+ }, null, 6)) : N("", !0),
1048
+ X(O.$slots, "default"),
1049
+ a.offsetX ? (l(), r("li", {
1050
+ key: 1,
1051
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1052
+ style: ae({ width: `${a.offsetX - ce}px` })
1053
+ }, null, 6)) : N("", !0)
1054
+ ], 2)
1055
+ ], 34),
1056
+ p.value ? (l(), r("div", {
1057
+ key: 0,
1058
+ class: i([
1059
+ t(e).POSITION.ABSOLUTE,
1060
+ t(e).DISPLAY.FLEX,
1061
+ t(e).AXIS1.BETWEEN,
1062
+ t(e).AXIS2.CENTER,
1063
+ t(e).WIDTH.FULL,
1064
+ t(e).HEIGHT.FULL,
1065
+ t(e).POINTER_EVENTS.OFF
1066
+ ])
1067
+ }, [
1068
+ G(q, {
1069
+ class: i([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
1070
+ icon: t(_).CHEVRON_LEFT,
1071
+ priority: t(w).QUATERNARY,
1072
+ onClick: H
1073
+ }, null, 8, ["class", "icon", "priority"]),
1074
+ G(q, {
1075
+ class: i([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
1076
+ icon: t(_).CHEVRON_RIGHT,
1077
+ priority: t(w).QUATERNARY,
1078
+ onClick: k
1079
+ }, null, 8, ["class", "icon", "priority"])
1080
+ ], 2)) : N("", !0)
1081
+ ], 2));
1082
+ }
1083
+ }), Me = ["href", "target"], Ye = /* @__PURE__ */ v({
1084
+ __name: "TideChipAction",
1085
+ props: {
1086
+ href: {},
1087
+ isNewTab: { type: Boolean, default: !1 },
1088
+ label: {}
1089
+ },
1090
+ setup(n) {
1091
+ const s = n;
1092
+ return (a, o) => (l(), r("a", {
1093
+ class: i([
1094
+ "tide-chip-action",
1095
+ t(e).AXIS2.CENTER,
1096
+ t(e).GAP.HALF,
1097
+ t(e).BORDER.FULL.ONE,
1098
+ t(e).BORDER.RADIUS.FULL,
1099
+ t(e).PADDING.X.ONE,
1100
+ t(e).PADDING.Y.HALF,
1101
+ t(e).BG.SURFACE.DEFAULT,
1102
+ t(e).FONT.SIZE.FOURTEEN,
1103
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1104
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1105
+ t(e).UNDERLINE.OFF
1106
+ ]),
1107
+ href: s.href,
1108
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1109
+ }, [
1110
+ G(f, {
1111
+ icon: t(_).SEARCH
1112
+ }, null, 8, ["icon"]),
1113
+ c("span", null, L(s.label), 1)
1114
+ ], 10, Me));
1115
+ }
1116
+ });
1117
+ const Ht = /* @__PURE__ */ C(Ye, [["__scopeId", "data-v-99f83e8d"]]), ke = /* @__PURE__ */ v({
1118
+ __name: "TideChipFilter",
1119
+ props: {
1120
+ isActive: { type: Boolean },
1121
+ label: {}
1122
+ },
1123
+ setup(n) {
1124
+ const s = n;
1125
+ return (a, o) => (l(), r("button", {
1126
+ class: i([
1127
+ "tide-chip-filter",
1128
+ s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
1129
+ t(e).DISPLAY.FLEX,
1130
+ t(e).AXIS2.CENTER,
1131
+ t(e).GAP.HALF,
1132
+ t(e).BORDER.FULL.ONE,
1133
+ t(e).BORDER.RADIUS.FULL,
1134
+ t(e).PADDING.X.ONE,
1135
+ t(e).PADDING.Y.HALF,
1136
+ t(e).FONT.SIZE.FOURTEEN,
1137
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1138
+ s.isActive ? "active" : ""
1139
+ ])
1140
+ }, [
1141
+ X(a.$slots, "default", {}, void 0, !0),
1142
+ c("div", {
1143
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
1144
+ }, [
1145
+ c("span", {
1146
+ class: i([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
1147
+ }, L(s.label), 3)
1148
+ ], 2)
1149
+ ], 2));
1150
+ }
1151
+ });
1152
+ const bt = /* @__PURE__ */ C(ke, [["__scopeId", "data-v-c07faf14"]]), Ve = /* @__PURE__ */ v({
1153
+ __name: "TideChipInput",
1154
+ props: {
1155
+ label: {}
1156
+ },
1157
+ setup(n) {
1158
+ const s = n;
1159
+ return (a, o) => (l(), r("button", {
1160
+ class: i([
1161
+ "tide-chip-input",
1162
+ t(e).BG.SURFACE.VARIANT,
1163
+ t(e).FONT.COLOR.SURFACE,
1164
+ t(e).DISPLAY.FLEX,
1165
+ t(e).AXIS2.CENTER,
1166
+ t(e).GAP.HALF,
1167
+ t(e).BORDER.FULL.ONE,
1168
+ t(e).BORDER.RADIUS.FULL,
1169
+ t(e).PADDING.X.ONE,
1170
+ t(e).PADDING.Y.HALF,
1171
+ t(e).FONT.SIZE.FOURTEEN,
1172
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1173
+ ])
1174
+ }, [
1175
+ c("span", null, L(s.label), 1),
1176
+ G(f, {
1177
+ icon: t(_).CLOSE
1178
+ }, null, 8, ["icon"])
1179
+ ], 2));
1180
+ }
1181
+ });
1182
+ const yt = /* @__PURE__ */ C(Ve, [["__scopeId", "data-v-62b9f1c0"]]), xe = { class: "tide-columns" }, we = { class: "tide-columns-column" }, $e = { class: "tide-columns-column" }, Qe = { class: "tide-columns-column" }, Ke = { class: "tide-columns-column" }, qe = /* @__PURE__ */ v({
1183
+ __name: "TideColumns",
1184
+ props: {
1185
+ heading: { default: "" }
1186
+ },
1187
+ setup(n) {
1188
+ const s = n;
1189
+ return (a, o) => (l(), r("section", xe, [
1190
+ c("h2", {
1191
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1192
+ }, L(s.heading), 3),
1193
+ c("ul", {
1194
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1195
+ }, [
1196
+ c("li", we, [
1197
+ X(a.$slots, "section1", {}, void 0, !0)
1198
+ ]),
1199
+ c("li", $e, [
1200
+ X(a.$slots, "section2", {}, void 0, !0)
1201
+ ]),
1202
+ c("li", Qe, [
1203
+ X(a.$slots, "section3", {}, void 0, !0)
1204
+ ]),
1205
+ c("li", Ke, [
1206
+ X(a.$slots, "section4", {}, void 0, !0)
1207
+ ])
1208
+ ], 2)
1209
+ ]));
1210
+ }
1211
+ });
1212
+ const Bt = /* @__PURE__ */ C(qe, [["__scopeId", "data-v-14ad0455"]]), ze = ["alt", "src"], Xt = /* @__PURE__ */ v({
1213
+ __name: "TideImage",
1214
+ props: {
1215
+ alt: { default: "" },
1216
+ cdn: { default: void 0 },
1217
+ isLazy: { type: Boolean, default: !0 },
1218
+ offset: { default: 0 },
1219
+ src: { default: void 0 }
1220
+ },
1221
+ setup(n, { expose: s }) {
1222
+ const a = n, o = A(), d = `${a.cdn}/image-coming-soon-512.png`, T = () => {
1223
+ if (a.src) {
1224
+ const p = new Image();
1225
+ p.onload = E, p.onerror = I, p.src = a.src;
1226
+ }
1227
+ }, I = () => {
1228
+ o.value.src = d;
1229
+ }, E = () => {
1230
+ o.value.src = a.src;
1231
+ };
1232
+ s(o.value);
1233
+ const u = new IntersectionObserver((p, R) => {
1234
+ p.forEach(
1235
+ (g) => {
1236
+ g.isIntersecting && (T(), R.unobserve(g.target));
1237
+ },
1238
+ {
1239
+ rootMargin: `${a.offset}px`
1240
+ }
1241
+ );
1242
+ });
1243
+ return j(() => {
1244
+ a.isLazy ? u.observe(o.value) : T();
1245
+ }), Le(() => {
1246
+ u.unobserve(o.value);
1247
+ }), (p, R) => (l(), r("img", {
1248
+ alt: p.alt,
1249
+ class: i(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
1250
+ ref_key: "tideImage",
1251
+ ref: o,
1252
+ src: p.isLazy && p.src ? p.src : d
1253
+ }, null, 10, ze));
1254
+ }
1255
+ }), Ze = ["checked", "id"], je = ["for"], Je = /* @__PURE__ */ v({
1256
+ __name: "TideInputRadio",
1257
+ props: {
1258
+ checked: { type: Boolean, default: !1 },
1259
+ dataTrack: { default: "" },
1260
+ disabled: { type: Boolean, default: !1 },
1261
+ inputId: { default: void 0 },
1262
+ label: { default: void 0 },
1263
+ name: {}
1264
+ },
1265
+ setup(n) {
1266
+ const s = n, a = A(s.checked), o = F(() => {
1267
+ var d;
1268
+ return s.inputId ? s.inputId : `text-input-${((d = ee()) == null ? void 0 : d.uid) || ""}`;
1269
+ });
1270
+ return Q(s, (d, T) => {
1271
+ (d.checked !== T.checked || d.checked !== a.value) && (a.value = s.checked);
1272
+ }), (d, T) => (l(), r("div", {
1273
+ class: i(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
1274
+ }, [
1275
+ c("input", {
1276
+ checked: a.value,
1277
+ class: i([t(e).DISPLAY.NONE]),
1278
+ id: o.value,
1279
+ name: "",
1280
+ type: "radio",
1281
+ value: ""
1282
+ }, null, 10, Ze),
1283
+ c("div", {
1284
+ class: i([
1285
+ "tide-input-radio-custom",
1286
+ t(e).POSITION.RELATIVE,
1287
+ t(e).DISPLAY.FLEX,
1288
+ t(e).AXIS1.CENTER,
1289
+ t(e).AXIS2.CENTER,
1290
+ t(e).BORDER.FULL.ONE,
1291
+ a.value ? t(e).BORDER.COLOR.HIGH : t(e).BORDER.COLOR.DEFAULT,
1292
+ t(e).BORDER.RADIUS.FULL,
1293
+ a.value && "checked"
1294
+ ])
1295
+ }, [
1296
+ c("div", {
1297
+ class: i(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
1298
+ }, null, 2)
1299
+ ], 2),
1300
+ c("label", {
1301
+ class: i(t(e).FONT.WEIGHT.FOUR_HUNDRED),
1302
+ for: o.value
1303
+ }, L(s.label), 11, je)
1304
+ ], 2));
1305
+ }
1306
+ });
1307
+ const Wt = /* @__PURE__ */ C(Je, [["__scopeId", "data-v-c820007d"]]), Ie = "Please enter a valid value.", oe = (n, s) => typeof n == "string" && n.length > 0 ? n : typeof s == "string" && s.length > 0 ? s : Ie, ne = (n, s) => n !== !1 || s !== !1, et = ({ maxlength: n, minlength: s, value: a }) => {
1308
+ const o = n && a.length > n, d = s && a.length < s;
1309
+ return !o && !d;
1310
+ }, Re = ({
1311
+ error: n,
1312
+ errorFromProps: s,
1313
+ maxlength: a,
1314
+ minlength: o,
1315
+ validators: d,
1316
+ value: T
1317
+ }) => {
1318
+ if (n.value = s || !1, !n.value && d) {
1319
+ const I = st(T.value, d);
1320
+ I.valid || (n.value = I.message);
1321
+ }
1322
+ if (!n.value && (a || o)) {
1323
+ const I = tt({
1324
+ maxlength: a,
1325
+ minlength: o,
1326
+ value: T.value
1327
+ });
1328
+ I.valid || (n.value = I.message);
1329
+ }
1330
+ }, tt = ({ maxlength: n, minlength: s, value: a }) => {
1331
+ const o = {
1332
+ message: "",
1333
+ valid: !0
1334
+ };
1335
+ return o.valid = et({
1336
+ maxlength: n,
1337
+ minlength: s,
1338
+ value: a
1339
+ }), o.valid || (o.message = Ie, n && s ? o.message = `Please enter a value between ${s} and ${n} characters in length.` : n ? o.message = `Please enter a value no more than ${n} characters in length.` : s && (o.message = `Please enter a value no less than ${s} characters in length.`)), o;
1340
+ };
1341
+ function st(n, s) {
1342
+ for (const a of s) {
1343
+ const o = a(n);
1344
+ if (!o.valid)
1345
+ return o;
1346
+ }
1347
+ return {
1348
+ message: "",
1349
+ valid: !0
1350
+ };
1351
+ }
1352
+ const at = ["for"], it = ["disabled", "name", "required", "id"], ot = ["selected", "value"], nt = /* @__PURE__ */ v({
1353
+ __name: "TideInputSelect",
1354
+ props: {
1355
+ inputId: { default: void 0 },
1356
+ supportingText: { default: void 0 },
1357
+ options: {},
1358
+ disabled: { type: Boolean, default: !1 },
1359
+ error: { type: [String, Boolean], default: !1 },
1360
+ label: { default: void 0 },
1361
+ name: {},
1362
+ required: { type: Boolean, default: !1 },
1363
+ value: { default: "" }
1364
+ },
1365
+ setup(n, { expose: s }) {
1366
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.required), E = A(a.value), u = F(() => oe(a.error, o.value)), p = F(() => a.required ? `${a.label} *` : a.label), R = F(() => a.required && !E.value || ne(o.value, a.error)), g = F(() => d.value || !h.value), h = F(() => E.value === ""), M = F(() => {
1367
+ var O;
1368
+ return a.inputId ? a.inputId : `text-input-${((O = ee()) == null ? void 0 : O.uid) || ""}`;
1369
+ }), Y = () => {
1370
+ var U;
1371
+ const O = new MouseEvent("mousedown");
1372
+ (U = T == null ? void 0 : T.value) == null || U.dispatchEvent(O);
1373
+ }, k = () => {
1374
+ d.value = !0;
1375
+ }, H = () => {
1376
+ d.value = !1;
1377
+ };
1378
+ return Q(a, (O, U) => {
1379
+ (O.value !== U.value || O.value !== E.value) && (E.value = a.value);
1380
+ }), s({ error: o, value: E }), (O, U) => (l(), r("div", {
1381
+ class: i([
1382
+ "tide-input-select",
1383
+ t(e).DISPLAY.FLEX,
1384
+ t(e).FLEX.DIRECTION.COLUMN,
1385
+ t(e).GAP.QUARTER,
1386
+ O.disabled && "disabled",
1387
+ R.value && "error"
1388
+ ])
1389
+ }, [
1390
+ c("div", {
1391
+ class: i([
1392
+ "tide-input-border",
1393
+ t(e).POSITION.RELATIVE,
1394
+ t(e).DISPLAY.FLEX,
1395
+ t(e).AXIS2.CENTER,
1396
+ t(e).GAP.HALF,
1397
+ t(e).BORDER.RADIUS.HALF,
1398
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : "",
1399
+ t(e).OVERFLOW.XY.HIDDEN
1400
+ ]),
1401
+ onClick: Y
1402
+ }, [
1403
+ c("div", {
1404
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
1405
+ }, [
1406
+ O.label ? (l(), r("label", {
1407
+ key: 0,
1408
+ class: i([
1409
+ g.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1410
+ t(e).POSITION.ABSOLUTE,
1411
+ t(e).POSITIONING.LEFT_0,
1412
+ t(e).MARGIN.TOP.HALF,
1413
+ t(e).MARGIN.LEFT.ONE,
1414
+ !R.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1415
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1416
+ ]),
1417
+ for: M.value
1418
+ }, L(p.value), 11, at)) : N("", !0),
1419
+ ie(c("select", {
1420
+ class: i([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, O.disabled && t(e).CURSOR.NOT_ALLOWED]),
1421
+ disabled: O.disabled,
1422
+ name: O.name,
1423
+ ref_key: "input",
1424
+ ref: T,
1425
+ required: I.value,
1426
+ onFocus: k,
1427
+ onFocusout: H,
1428
+ id: M.value,
1429
+ "onUpdate:modelValue": U[0] || (U[0] = (P) => E.value = P)
1430
+ }, [
1431
+ (l(!0), r($, null, Z(O.options, (P) => (l(), r("option", {
1432
+ class: i([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
1433
+ key: P.value,
1434
+ selected: E.value === P.value ? !0 : void 0,
1435
+ value: P.value
1436
+ }, L(P.label), 11, ot))), 128))
1437
+ ], 42, it), [
1438
+ [pe, E.value]
1439
+ ])
1440
+ ], 2),
1441
+ G(f, {
1442
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
1443
+ icon: t(_).EXPAND_MORE,
1444
+ size: t(y).SMALL
1445
+ }, null, 8, ["class", "icon", "size"])
1446
+ ], 2),
1447
+ a.supportingText || R.value ? (l(), r("div", {
1448
+ key: 0,
1449
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1450
+ }, [
1451
+ R.value ? (l(), S(f, {
1452
+ key: 0,
1453
+ class: i([]),
1454
+ icon: t(_).ERROR,
1455
+ size: t(y).SMALL
1456
+ }, null, 8, ["icon", "size"])) : N("", !0),
1457
+ c("div", {
1458
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1459
+ }, L(R.value ? u.value : a.supportingText), 3)
1460
+ ], 2)) : N("", !0)
1461
+ ], 2));
1462
+ }
1463
+ });
1464
+ const Mt = /* @__PURE__ */ C(nt, [["__scopeId", "data-v-c500c562"]]), K = {
1465
+ DATE: "date",
1466
+ DATETIME_LOCAL: "datetime-local",
1467
+ EMAIL: "email",
1468
+ MONTH: "month",
1469
+ NUMBER: "number",
1470
+ PASSWORD: "password",
1471
+ SEARCH: "search",
1472
+ TEL: "tel",
1473
+ TEXT: "text",
1474
+ TIME: "time",
1475
+ URL: "url",
1476
+ WEEK: "week"
1477
+ }, lt = ["for"], dt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], rt = /* @__PURE__ */ v({
1478
+ __name: "TideInputText",
1479
+ props: {
1480
+ autocomplete: { type: Boolean, default: !1 },
1481
+ dataTrack: { default: "" },
1482
+ disabled: { type: Boolean, default: !1 },
1483
+ error: { type: [String, Boolean], default: !1 },
1484
+ hasClear: { type: Boolean, default: !1 },
1485
+ iconLeading: { default: void 0 },
1486
+ inputId: { default: void 0 },
1487
+ label: { default: void 0 },
1488
+ maxlength: { default: void 0 },
1489
+ minlength: { default: void 0 },
1490
+ name: {},
1491
+ prefix: { default: void 0 },
1492
+ required: { type: Boolean, default: !1 },
1493
+ suffix: { default: void 0 },
1494
+ supportingText: { default: void 0 },
1495
+ transformValue: { type: Function, default: void 0 },
1496
+ type: { default: K.TEXT },
1497
+ validators: { default: void 0 },
1498
+ value: { default: "" }
1499
+ },
1500
+ setup(n, { expose: s }) {
1501
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(!1), E = A(a.value), u = F(() => oe(a.error, o.value)), p = F(() => a.required && a.label ? `${a.label} *` : a.label), R = F(() => a.hasClear && E.value), g = F(() => a.required && !E.value || ne(o.value, a.error)), h = F(() => d.value || !M.value), M = F(() => E.value === ""), Y = F(
1502
+ () => a.type === K.PASSWORD && I.value === !0 ? K.TEXT : a.type
1503
+ ), k = F(() => {
1504
+ var m;
1505
+ return a.inputId ? a.inputId : `text-input-${((m = ee()) == null ? void 0 : m.uid) || ""}`;
1506
+ }), H = () => {
1507
+ var m;
1508
+ E.value = "", (m = T.value) == null || m.focus();
1509
+ }, O = () => {
1510
+ d.value = !0;
1511
+ }, U = () => {
1512
+ d.value = !1, V();
1513
+ }, P = () => {
1514
+ var m;
1515
+ if (a.transformValue) {
1516
+ const B = ((m = E.value.match(/\d/g)) == null ? void 0 : m.join("")) || void 0;
1517
+ E.value = B ? a.transformValue(B) : "";
1518
+ }
1519
+ }, V = () => {
1520
+ Re({
1521
+ error: o,
1522
+ errorFromProps: a.error,
1523
+ maxlength: a.maxlength,
1524
+ minlength: a.minlength,
1525
+ validators: a.validators,
1526
+ value: E
1527
+ });
1528
+ }, te = (m) => {
1529
+ E.value = m;
1530
+ };
1531
+ return Q(
1532
+ a,
1533
+ (m, B) => {
1534
+ (m.value !== B.value || m.value !== E.value) && (E.value = a.value);
1535
+ },
1536
+ { deep: !0 }
1537
+ ), s({ error: o, updateValue: te, value: E }), (m, B) => (l(), r("div", {
1538
+ class: i([
1539
+ "tide-input-text",
1540
+ t(e).DISPLAY.FLEX,
1541
+ t(e).FLEX.DIRECTION.COLUMN,
1542
+ t(e).GAP.QUARTER,
1543
+ m.disabled && "disabled",
1544
+ g.value && "error"
1545
+ ])
1546
+ }, [
1547
+ c("div", {
1548
+ class: i([
1549
+ "tide-input-border",
1550
+ t(e).DISPLAY.FLEX,
1551
+ t(e).AXIS2.CENTER,
1552
+ t(e).GAP.HALF,
1553
+ t(e).POSITION.RELATIVE,
1554
+ t(e).BORDER.RADIUS.HALF,
1555
+ R.value ? [t(e).PADDING.RIGHT.HALF, t(e).PADDING.LEFT.ONE] : [t(e).PADDING.X.ONE],
1556
+ t(e).PADDING.Y.HALF,
1557
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : t(e).CURSOR.TEXT
1558
+ ])
1559
+ }, [
1560
+ a.iconLeading ? (l(), S(f, {
1561
+ key: 0,
1562
+ icon: a.iconLeading,
1563
+ size: t(y).SMALL
1564
+ }, null, 8, ["icon", "size"])) : N("", !0),
1565
+ c("div", {
1566
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1567
+ }, [
1568
+ a.prefix ? (l(), r("div", {
1569
+ key: 0,
1570
+ class: i(["tide-input-text-prefix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1571
+ }, L(a.prefix), 3)) : N("", !0),
1572
+ c("div", {
1573
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
1574
+ onClick: B[1] || (B[1] = Te((se) => {
1575
+ var le;
1576
+ return (le = T.value) == null ? void 0 : le.focus();
1577
+ }, ["prevent"]))
1578
+ }, [
1579
+ m.label ? (l(), r("label", {
1580
+ key: 0,
1581
+ class: i([
1582
+ h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1583
+ !g.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1584
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1585
+ t(e).CURSOR.TEXT
1586
+ ]),
1587
+ for: k.value
1588
+ }, L(p.value), 11, lt)) : N("", !0),
1589
+ ie(c("input", {
1590
+ autocomplete: m.autocomplete ? "on" : "off",
1591
+ class: i([t(e).WIDTH.FULL, m.disabled && t(e).CURSOR.NOT_ALLOWED]),
1592
+ "data-track": a.dataTrack,
1593
+ disabled: a.disabled,
1594
+ maxlength: a.maxlength,
1595
+ minlength: a.minlength,
1596
+ name: a.name,
1597
+ ref_key: "input",
1598
+ ref: T,
1599
+ required: a.required,
1600
+ type: Y.value,
1601
+ onChange: V,
1602
+ onFocus: O,
1603
+ onFocusout: U,
1604
+ onInput: P,
1605
+ id: k.value,
1606
+ "onUpdate:modelValue": B[0] || (B[0] = (se) => E.value = se)
1607
+ }, null, 42, dt), [
1608
+ [ve, E.value]
1609
+ ])
1610
+ ], 2),
1611
+ a.suffix ? (l(), r("div", {
1612
+ key: 1,
1613
+ class: i(["tide-input-text-suffix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1614
+ }, L(a.suffix), 3)) : N("", !0)
1615
+ ], 2),
1616
+ R.value && a.type !== t(K).PASSWORD ? (l(), S(f, {
1617
+ key: 1,
1618
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1619
+ icon: t(_).CLOSE,
1620
+ size: t(y).SMALL,
1621
+ onClick: H
1622
+ }, null, 8, ["class", "icon", "size"])) : N("", !0),
1623
+ a.type === t(K).PASSWORD ? (l(), S(f, {
1624
+ key: 2,
1625
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1626
+ icon: t(_).VISIBILITY,
1627
+ size: t(y).SMALL,
1628
+ onClick: B[2] || (B[2] = (se) => I.value = !I.value)
1629
+ }, null, 8, ["class", "icon", "size"])) : N("", !0)
1630
+ ], 2),
1631
+ a.supportingText || g.value ? (l(), r("div", {
1632
+ key: 0,
1633
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1634
+ }, [
1635
+ g.value ? (l(), S(f, {
1636
+ key: 0,
1637
+ class: i([]),
1638
+ icon: t(_).ERROR,
1639
+ size: t(y).SMALL
1640
+ }, null, 8, ["icon", "size"])) : N("", !0),
1641
+ c("div", {
1642
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1643
+ }, L(g.value ? u.value : a.supportingText), 3)
1644
+ ], 2)) : N("", !0)
1645
+ ], 2));
1646
+ }
1647
+ });
1648
+ const Yt = /* @__PURE__ */ C(rt, [["__scopeId", "data-v-b8328f68"]]), ct = ["for"], Et = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], Tt = /* @__PURE__ */ v({
1649
+ __name: "TideInputTextarea",
1650
+ props: {
1651
+ dataTrack: { default: "" },
1652
+ error: { type: [String, Boolean], default: !1 },
1653
+ inputId: { default: void 0 },
1654
+ label: { default: void 0 },
1655
+ maxlength: { default: void 0 },
1656
+ minlength: { default: void 0 },
1657
+ name: { default: void 0 },
1658
+ required: { type: Boolean, default: !1 },
1659
+ rows: { default: 8 },
1660
+ supportingText: { default: void 0 },
1661
+ value: { default: "" }
1662
+ },
1663
+ setup(n, { expose: s }) {
1664
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.value), E = F(() => oe(a.error, o.value)), u = F(() => a.required ? `${a.label} *` : a.label), p = F(() => a.required && !I.value || ne(o.value, a.error)), R = F(() => d.value || !g.value), g = F(() => I.value === ""), h = F(() => {
1665
+ var H;
1666
+ return a.inputId ? a.inputId : `text-input-${((H = ee()) == null ? void 0 : H.uid) || ""}`;
1667
+ }), M = () => {
1668
+ d.value = !0;
1669
+ }, Y = () => {
1670
+ d.value = !1;
1671
+ }, k = () => Re({
1672
+ error: o,
1673
+ errorFromProps: a.error,
1674
+ maxlength: a.maxlength,
1675
+ minlength: a.minlength,
1676
+ value: I
1677
+ });
1678
+ return Q(a, (H, O) => {
1679
+ (H.value !== O.value || H.value !== I.value) && (I.value = a.value);
1680
+ }), s({ error: o, value: I }), (H, O) => (l(), r("div", {
1681
+ class: i(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, p.value && "error"])
1682
+ }, [
1683
+ c("div", {
1684
+ class: i([
1685
+ "tide-input-textarea-field",
1686
+ t(e).GAP.HALF,
1687
+ t(e).POSITION.RELATIVE,
1688
+ t(e).BORDER.RADIUS.HALF,
1689
+ t(e).PADDING.LEFT.ONE,
1690
+ t(e).PADDING.TOP.HALF,
1691
+ t(e).OVERFLOW.XY.HIDDEN
1692
+ ])
1693
+ }, [
1694
+ H.label ? (l(), r("label", {
1695
+ key: 0,
1696
+ class: i([
1697
+ R.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1698
+ !p.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1699
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1700
+ t(e).CURSOR.TEXT
1701
+ ]),
1702
+ for: h.value,
1703
+ ref: "label"
1704
+ }, L(u.value), 11, ct)) : N("", !0),
1705
+ ie(c("textarea", {
1706
+ class: i([t(e).WIDTH.FULL]),
1707
+ "data-track": a.dataTrack,
1708
+ maxlength: a.maxlength,
1709
+ minlength: a.minlength,
1710
+ name: a.name,
1711
+ ref_key: "input",
1712
+ ref: T,
1713
+ required: a.required,
1714
+ rows: a.rows,
1715
+ onChange: k,
1716
+ onFocus: M,
1717
+ onFocusout: Y,
1718
+ id: h.value,
1719
+ "onUpdate:modelValue": O[0] || (O[0] = (U) => I.value = U)
1720
+ }, null, 42, Et), [
1721
+ [Fe, I.value]
1722
+ ])
1723
+ ], 2),
1724
+ a.supportingText || p.value ? (l(), r("div", {
1725
+ key: 0,
1726
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1727
+ }, [
1728
+ p.value ? (l(), S(f, {
1729
+ key: 0,
1730
+ icon: t(_).ERROR,
1731
+ size: t(y).SMALL
1732
+ }, null, 8, ["icon", "size"])) : N("", !0),
1733
+ c("div", {
1734
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1735
+ }, L(p.value ? E.value : a.supportingText), 3)
1736
+ ], 2)) : N("", !0)
1737
+ ], 2));
1738
+ }
1739
+ });
1740
+ const kt = /* @__PURE__ */ C(Tt, [["__scopeId", "data-v-022c8af4"]]), Vt = /* @__PURE__ */ v({
1741
+ __name: "TideLink",
1742
+ props: {
1743
+ element: { default: D.LINK },
1744
+ href: { default: void 0 },
1745
+ iconLeading: { default: void 0 },
1746
+ iconTrailing: { default: void 0 },
1747
+ isNewTab: { type: Boolean, default: !1 },
1748
+ label: { default: void 0 }
1749
+ },
1750
+ setup(n) {
1751
+ const s = n, a = F(() => s.iconLeading || s.iconTrailing);
1752
+ return (o, d) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
1753
+ class: i([
1754
+ s.element === t(D).LINK ? "tide-button-as-link" : "tide-link",
1755
+ a.value ? [t(e).DISPLAY.INLINE_FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF] : [t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON]
1756
+ ]),
1757
+ href: s.href,
1758
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1759
+ }, {
1760
+ default: J(() => [
1761
+ s.iconLeading ? (l(), S(f, {
1762
+ key: 0,
1763
+ icon: s.iconLeading
1764
+ }, null, 8, ["icon"])) : N("", !0),
1765
+ a.value ? (l(), r("div", {
1766
+ key: 1,
1767
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
1768
+ }, L(s.label), 3)) : (l(), r($, { key: 2 }, [
1769
+ Ee(L(s.label), 1)
1770
+ ], 64)),
1771
+ s.iconTrailing ? (l(), S(f, {
1772
+ key: 3,
1773
+ icon: s.iconTrailing
1774
+ }, null, 8, ["icon"])) : N("", !0)
1775
+ ]),
1776
+ _: 1
1777
+ }, 8, ["class", "href", "target"]));
1778
+ }
1779
+ }), It = ["onClick"], Rt = /* @__PURE__ */ v({
1780
+ __name: "TideModal",
1781
+ props: {
1782
+ isOpen: { type: Boolean },
1783
+ title: {},
1784
+ width: {}
1785
+ },
1786
+ emits: ["close"],
1787
+ setup(n, { emit: s }) {
1788
+ const a = n, o = A(a.isOpen), d = A(null), T = (R) => {
1789
+ o.value = !1, I(), s("close", R);
1790
+ }, I = () => {
1791
+ o.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), u()) : (document.body.style.overflow = "", p());
1792
+ }, E = (R) => {
1793
+ R.key === "Escape" && (R.stopPropagation(), T(R));
1794
+ }, u = () => {
1795
+ window.addEventListener("keydown", E);
1796
+ }, p = () => {
1797
+ window.removeEventListener("keydown", E);
1798
+ };
1799
+ return j(() => {
1800
+ I();
1801
+ }), Q(a, (R) => {
1802
+ o.value = R.isOpen, I();
1803
+ }), (R, g) => (l(), S(_e, { to: "body" }, [
1804
+ c("div", {
1805
+ class: i([
1806
+ "tide-modal-wrapper",
1807
+ t(e).POSITION.ABSOLUTE,
1808
+ t(e).DISPLAY.FLEX,
1809
+ t(e).AXIS1.CENTER,
1810
+ t(e).AXIS2.CENTER,
1811
+ t(e).POSITIONING.TOP_0,
1812
+ t(e).POSITIONING.LEFT_0,
1813
+ t(e).WIDTH.FULL,
1814
+ t(e).HEIGHT.FULL,
1815
+ a.isOpen ? "active" : t(e).POINTER_EVENTS.OFF,
1816
+ t(e).OVERFLOW.Y.HIDDEN
1817
+ ])
1818
+ }, [
1819
+ c("div", {
1820
+ class: i(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
1821
+ style: ae({ "--tide-modal-width": a.width }),
1822
+ onClick: Te(T, ["self"])
1823
+ }, null, 14, It),
1824
+ c("div", {
1825
+ class: i([
1826
+ "tide-modal",
1827
+ t(e).BG.SURFACE.DEFAULT,
1828
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1829
+ t(e).POSITION.ABSOLUTE,
1830
+ t(e).DISPLAY.FLEX,
1831
+ t(e).FLEX.DIRECTION.COLUMN,
1832
+ t(e).BORDER.RADIUS.ONE,
1833
+ t(e).OVERFLOW.XY.HIDDEN,
1834
+ t(e).SHADOW.BOTTOM
1835
+ ])
1836
+ }, [
1837
+ c("header", {
1838
+ class: i([
1839
+ "tide-modal-header",
1840
+ t(e).POSITION.RELATIVE,
1841
+ t(e).DISPLAY.FLEX,
1842
+ t(e).AXIS2.CENTER,
1843
+ t(e).PADDING.Y.ONE,
1844
+ t(e).PADDING.X.TWO,
1845
+ t(e).BORDER.BOTTOM.ONE,
1846
+ t(e).BORDER.COLOR.LOW
1847
+ ])
1848
+ }, [
1849
+ R.title ? (l(), r("div", {
1850
+ key: 0,
1851
+ class: i([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
1852
+ }, L(R.title), 3)) : N("", !0),
1853
+ c("button", {
1854
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.TWO]),
1855
+ onClick: T,
1856
+ title: "Close"
1857
+ }, [
1858
+ G(f, {
1859
+ icon: t(_).CLOSE
1860
+ }, null, 8, ["icon"])
1861
+ ], 2)
1862
+ ], 2),
1863
+ c("div", {
1864
+ class: i(["tide-modal-content", t(e).PADDING.FULL.TWO, t(e).OVERFLOW.Y.AUTO])
1865
+ }, [
1866
+ X(R.$slots, "default", {}, void 0, !0)
1867
+ ], 2),
1868
+ R.$slots.footer ? (l(), r("footer", {
1869
+ key: 0,
1870
+ class: i([
1871
+ "tide-bg-surface",
1872
+ t(e).POSITION.STICKY,
1873
+ t(e).POSITIONING.LEFT_0,
1874
+ t(e).POSITIONING.BOTTOM_0,
1875
+ t(e).DISPLAY.FLEX,
1876
+ t(e).AXIS1.END,
1877
+ t(e).GAP.ONE,
1878
+ t(e).PADDING.X.TWO,
1879
+ t(e).PADDING.Y.ONE,
1880
+ t(e).SHADOW.TOP
1881
+ ])
1882
+ }, [
1883
+ X(R.$slots, "footer", {}, void 0, !0)
1884
+ ], 2)) : N("", !0)
1885
+ ], 2)
1886
+ ], 2)
1887
+ ]));
1888
+ }
1889
+ });
1890
+ const xt = /* @__PURE__ */ C(Rt, [["__scopeId", "data-v-30035972"]]), wt = /* @__PURE__ */ v({
1891
+ __name: "TidePagination",
1892
+ props: {
1893
+ pageCurrent: { default: 1 },
1894
+ pageTotal: { default: 1 }
1895
+ },
1896
+ emits: ["change"],
1897
+ setup(n, { emit: s }) {
1898
+ const a = n, o = A(a.pageCurrent), d = F(() => new Array(a.pageTotal).fill("").map((I, E) => E + 1)), T = (I, E) => {
1899
+ o.value = E, s("change", I, E);
1900
+ };
1901
+ return (I, E) => (l(), r("section", {
1902
+ class: i(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1903
+ }, [
1904
+ G(q, {
1905
+ disabled: o.value === 1,
1906
+ icon: t(_).CHEVRON_LEFT,
1907
+ priority: t(w).QUATERNARY,
1908
+ onClick: E[0] || (E[0] = (u) => T(u, o.value - 1))
1909
+ }, null, 8, ["disabled", "icon", "priority"]),
1910
+ c("ul", {
1911
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
1912
+ }, [
1913
+ (l(!0), r($, null, Z(d.value, (u) => (l(), r("li", { key: u }, [
1914
+ G(We, {
1915
+ disabled: o.value === u,
1916
+ label: u,
1917
+ priority: t(w).QUATERNARY,
1918
+ onClick: (p) => T(p, u)
1919
+ }, null, 8, ["disabled", "label", "priority", "onClick"])
1920
+ ]))), 128))
1921
+ ], 2),
1922
+ G(q, {
1923
+ disabled: o.value === d.value[d.value.length - 1],
1924
+ icon: t(_).CHEVRON_RIGHT,
1925
+ priority: t(w).QUATERNARY,
1926
+ onClick: E[1] || (E[1] = (u) => T(u, o.value + 1))
1927
+ }, null, 8, ["disabled", "icon", "priority"])
1928
+ ], 2));
1929
+ }
1930
+ }), Ot = { class: "tide-seo-links" }, ut = ["href", "target"], At = /* @__PURE__ */ v({
1931
+ __name: "TideSeoLinks",
1932
+ props: {
1933
+ heading: { default: "" },
1934
+ links: {}
1935
+ },
1936
+ setup(n) {
1937
+ const s = n;
1938
+ return (a, o) => (l(), r("section", Ot, [
1939
+ c("h2", {
1940
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1941
+ }, L(s.heading), 3),
1942
+ c("ul", {
1943
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1944
+ }, [
1945
+ (l(!0), r($, null, Z(s.links, (d) => (l(), r("li", {
1946
+ class: i(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
1947
+ key: d.label
1948
+ }, [
1949
+ c("a", {
1950
+ class: i([t(e).UNDERLINE.OFF]),
1951
+ href: d.url,
1952
+ target: d.isNewTab ? t(W).BLANK : t(W).SELF
1953
+ }, L(d.label), 11, ut)
1954
+ ], 2))), 128))
1955
+ ], 2)
1956
+ ]));
1957
+ }
1958
+ });
1959
+ const $t = /* @__PURE__ */ C(At, [["__scopeId", "data-v-d62373f1"]]), Nt = ["data-track", "onClick"], Lt = /* @__PURE__ */ v({
1960
+ __name: "TideTabs",
1961
+ props: {
1962
+ activeTabInitial: { default: 0 },
1963
+ tabs: {}
1964
+ },
1965
+ emits: ["change"],
1966
+ setup(n, { emit: s }) {
1967
+ const a = n, o = A(a.activeTabInitial), d = (T, I) => {
1968
+ o.value = I, s("change", T, I);
1969
+ };
1970
+ return (T, I) => (l(), r("div", {
1971
+ class: i([
1972
+ "tide-tabs",
1973
+ t(e).BG.SURFACE.VARIANT,
1974
+ t(e).DISPLAY.FLEX,
1975
+ t(e).GAP.QUARTER,
1976
+ t(e).BORDER.RADIUS.HALF,
1977
+ t(e).PADDING.FULL.QUARTER,
1978
+ t(e).OVERFLOW.XY.HIDDEN,
1979
+ t(e).WIDTH.FULL
1980
+ ])
1981
+ }, [
1982
+ (l(!0), r($, null, Z(a.tabs, (E, u) => (l(), r("button", {
1983
+ class: i([
1984
+ "tide-tabs-tab",
1985
+ u === o.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
1986
+ t(e).FLEX.GROW.ON,
1987
+ t(e).BORDER.RADIUS.QUARTER,
1988
+ t(e).PADDING.Y.QUARTER,
1989
+ t(e).WIDTH.FULL,
1990
+ t(e).FONT.WEIGHT.SIX_HUNDRED,
1991
+ t(e).WHITESPACE_WRAP.OFF
1992
+ ]),
1993
+ "data-track": E.dataTrack || void 0,
1994
+ key: E.label,
1995
+ onClick: (p) => d(p, u)
1996
+ }, [
1997
+ c("span", {
1998
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1999
+ }, L(E.label), 3),
2000
+ E.count && E.count > 0 ? (l(), r("span", {
2001
+ key: 0,
2002
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
2003
+ }, " (" + L(E.count) + ") ", 3)) : N("", !0)
2004
+ ], 10, Nt))), 128))
2005
+ ], 2));
2006
+ }
2007
+ });
2008
+ const Qt = /* @__PURE__ */ C(Lt, [["__scopeId", "data-v-894fc638"]]), pt = ["disabled"], vt = /* @__PURE__ */ v({
2009
+ __name: "TideToggle",
2010
+ props: {
2011
+ disabled: {
2012
+ default: !1,
2013
+ required: !1,
2014
+ type: Boolean
2015
+ },
2016
+ isActive: {
2017
+ required: !0,
2018
+ type: Boolean
2019
+ }
2020
+ },
2021
+ emits: ["change"],
2022
+ setup(n, { emit: s }) {
2023
+ const a = n, o = A(a.isActive), d = (T) => {
2024
+ a.disabled || (o.value = !o.value, s("change", T, o.value));
2025
+ };
2026
+ return (T, I) => (l(), r("button", {
2027
+ class: i([
2028
+ "tide-toggle",
2029
+ a.isActive ? "active" : "",
2030
+ t(e).DISPLAY.FLEX,
2031
+ t(e).AXIS2.CENTER,
2032
+ t(e).BORDER.FULL.ONE,
2033
+ t(e).BORDER.RADIUS.FULL,
2034
+ a.isActive ? "" : t(e).BORDER.COLOR.DEFAULT,
2035
+ t(e).OVERFLOW.XY.HIDDEN,
2036
+ a.isActive ? t(e).BG.SECONDARY : t(e).BG.SURFACE.DEFAULT
2037
+ ]),
2038
+ disabled: a.disabled,
2039
+ onClick: d,
2040
+ "aria-label": "Toggle"
2041
+ }, [
2042
+ c("div", {
2043
+ class: i([
2044
+ "tide-toggle-indicator",
2045
+ t(e).POSITION.RELATIVE,
2046
+ t(e).DISPLAY.FLEX,
2047
+ t(e).AXIS1.CENTER,
2048
+ t(e).AXIS2.CENTER,
2049
+ t(e).BORDER.RADIUS.FULL,
2050
+ a.isActive ? t(e).BG.SURFACE.DEFAULT : t(e).BG.SECONDARY
2051
+ ])
2052
+ }, [
2053
+ G(f, {
2054
+ icon: t(_).CHECK,
2055
+ size: t(y).LARGE
2056
+ }, null, 8, ["icon", "size"])
2057
+ ], 2)
2058
+ ], 10, pt));
2059
+ }
2060
+ });
2061
+ const Kt = /* @__PURE__ */ C(vt, [["__scopeId", "data-v-59d06131"]]), qt = {
2062
+ AERO: "aero",
2063
+ ATV: "atv",
2064
+ BOATMART: "boatmart",
2065
+ CYCLE: "cycle",
2066
+ EQUIP: "equip",
2067
+ PWC: "pwc",
2068
+ RV: "rv",
2069
+ SNOW: "snow",
2070
+ TRUCK: "truck"
2071
+ };
2072
+ export {
2073
+ b as A,
2074
+ Ut as B,
2075
+ e as C,
2076
+ Vt as D,
2077
+ D as E,
2078
+ xt as F,
2079
+ wt as G,
2080
+ $t as H,
2081
+ _ as I,
2082
+ Qt as J,
2083
+ Kt as K,
2084
+ w as P,
2085
+ qt as R,
2086
+ y as S,
2087
+ W as T,
2088
+ C as _,
2089
+ mt as a,
2090
+ he as b,
2091
+ x as c,
2092
+ _t as d,
2093
+ Dt as e,
2094
+ St as f,
2095
+ ft as g,
2096
+ gt as h,
2097
+ Ct as i,
2098
+ Pt as j,
2099
+ q as k,
2100
+ We as l,
2101
+ Gt as m,
2102
+ ht as n,
2103
+ Ht as o,
2104
+ bt as p,
2105
+ yt as q,
2106
+ Bt as r,
2107
+ re as s,
2108
+ f as t,
2109
+ Xt as u,
2110
+ ge as v,
2111
+ Wt as w,
2112
+ Mt as x,
2113
+ Yt as y,
2114
+ kt as z
2115
+ };
2116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtY2ZmM2E5NzAuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2dnbGUudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEVSUk9SOiAndGlkZS1iZy1lcnJvcicsXG4gICAgSU5GTzogJ3RpZGUtYmctaW5mbycsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1Y2Nlc3MnLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQUNDRU5UX1ZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50LXZhcmlhbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuICAgIH0sXG4gICAgV0FSTklORzogJ3RpZGUtYmctd2FybmluZycsXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIEJPVFRPTToge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgQ09MT1I6IHtcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ2luaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBGTEVYOiB7XG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIEVORF8xOiAndGlkZS1zdGFydC0xJyxcbiAgICAgIEVORF8xMDogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRU5EXzExOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBFTkRfMTI6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICAgIEVORF8xMzogJ3RpZGUtc3RhcnQtMTMnLFxuICAgICAgRU5EXzI6ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgRU5EXzM6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRU5EXzQ6ICd0aWRlLXN0YXJ0LTQnLFxuICAgICAgRU5EXzU6ICd0aWRlLXN0YXJ0LTUnLFxuICAgICAgRU5EXzY6ICd0aWRlLXN0YXJ0LTYnLFxuICAgICAgRU5EXzc6ICd0aWRlLXN0YXJ0LTcnLFxuICAgICAgRU5EXzg6ICd0aWRlLXN0YXJ0LTgnLFxuICAgICAgRU5EXzk6ICd0aWRlLXN0YXJ0LTknLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBTVEFSVDoge1xuICAgICAgU1RBUlRfMDogJ3RpZGUtc3RhcnQtMCcsXG4gICAgICBTVEFSVF8xOiAndGlkZS1zdGFydC0xJyxcbiAgICAgIFNUQVJUXzEwOiAndGlkZS1zdGFydC0xMCcsXG4gICAgICBTVEFSVF8xMTogJ3RpZGUtc3RhcnQtMTEnLFxuICAgICAgU1RBUlRfMTI6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICAgIFNUQVJUXzI6ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgU1RBUlRfMzogJ3RpZGUtc3RhcnQtMycsXG4gICAgICBTVEFSVF80OiAndGlkZS1zdGFydC00JyxcbiAgICAgIFNUQVJUXzU6ICd0aWRlLXN0YXJ0LTUnLFxuICAgICAgU1RBUlRfNjogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTVEFSVF83OiAndGlkZS1zdGFydC03JyxcbiAgICAgIFNUQVJUXzg6ICd0aWRlLXN0YXJ0LTgnLFxuICAgICAgU1RBUlRfOTogJ3RpZGUtc3RhcnQtOScsXG4gICAgfSxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVElDS1k6ICd0aWRlLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NXzA6ICd0aWRlLWJvdHRvbS0wJyxcbiAgICBMRUZUXzA6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFRfMDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QXzA6ICd0aWRlLXRvcC0wJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIEJPVFRPTTogJ3RpZGUtc2hhZG93LWJvdHRvbScsXG4gICAgVE9QOiAndGlkZS1zaGFkb3ctdG9wJyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zbmFwLXN0YXJ0JyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIENzc1V0aWxpdHkgPSAodHlwZW9mIENTUylba2V5b2YgdHlwZW9mIENTU107XG5cbmV4cG9ydCBjb25zdCBjc3NTb3J0T3JkZXIgPSBbXG4gIENTUy5ESVNQTEFZLkJMT0NLLFxuICBDU1MuRElTUExBWS5DT05URU5UUyxcbiAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgQ1NTLkRJU1BMQVkuTk9ORSxcbiAgQ1NTLkRJU1BMQVkuSU5JVElBTCxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICBDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssXG4gIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICBDU1MuQVhJUzEuQVJPVU5ELFxuICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgQ1NTLkFYSVMxLkVORCxcbiAgQ1NTLkFYSVMxLlNUQVJULFxuICBDU1MuQVhJUzIuQVJPVU5ELFxuICBDU1MuQVhJUzIuQ0VOVEVSLFxuICBDU1MuQVhJUzIuRU5ELFxuICBDU1MuQVhJUzIuU1RBUlQsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU5fUkVWRVJTRSxcbiAgQ1NTLkZMRVguRElSRUNUSU9OLlJPVyxcbiAgQ1NTLkZMRVguRElSRUNUSU9OLlJPV19SRVZFUlNFLFxuICBDU1MuR0FQLk9ORSxcbiAgQ1NTLkdBUC5IQUxGLFxuICBDU1MuR0FQLlFVQVJURVIsXG4gIENTUy5HQVAuVFdPLFxuICBDU1MuR0FQLkZPVVIsXG4gIENTUy5GTEVYLkdST1cuT04sXG4gIENTUy5GTEVYLkdST1cuT0ZGLFxuICBDU1MuRkxFWC5TSFJJTksuT04sXG4gIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gIENTUy5GTEVYLldSQVAsXG4gIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gIENTUy5QT1NJVElPTi5TVElDS1ksXG4gIENTUy5QT1NJVElPTklORy5UT1BfMCxcbiAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hUXzAsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT01fMCxcbiAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgQ1NTLkJPWF9TSVpJTkcuQk9SREVSX0JPWCxcbiAgQ1NTLkJPWF9TSVpJTkcuQ09OVEVOVF9CT1gsXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5PTkUsXG4gIENTUy5NQVJHSU4uWS5IQUxGLFxuICBDU1MuTUFSR0lOLlkuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5ZLlRXTyxcbiAgQ1NTLk1BUkdJTi5ZLkZPVVIsXG4gIENTUy5NQVJHSU4uVE9QLk9ORSxcbiAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgQ1NTLk1BUkdJTi5UT1AuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5UT1AuVFdPLFxuICBDU1MuTUFSR0lOLlRPUC5GT1VSLFxuICBDU1MuTUFSR0lOLlguT05FLFxuICBDU1MuTUFSR0lOLlguSEFMRixcbiAgQ1NTLk1BUkdJTi5YLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWC5UV08sXG4gIENTUy5NQVJHSU4uWC5GT1VSLFxuICBDU1MuTUFSR0lOLlguQVVUTyxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsXG4gIENTUy5NQVJHSU4uUklHSFQuSEFMRixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlJJR0hULlRXTyxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5GT1VSLFxuICBDU1MuTUFSR0lOLlJJR0hULkFVVE8sXG4gIENTUy5NQVJHSU4uQk9UVE9NLk9ORSxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgQ1NTLk1BUkdJTi5CT1RUT00uUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5CT1RUT00uVFdPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5GT1VSLFxuICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICBDU1MuTUFSR0lOLkxFRlQuSEFMRixcbiAgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uTEVGVC5UV08sXG4gIENTUy5NQVJHSU4uTEVGVC5GT1VSLFxuICBDU1MuTUFSR0lOLkxFRlQuQVVUTyxcbiAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgQ1NTLkJPUkRFUi5UT1AuT05FLFxuICBDU1MuQk9SREVSLlRPUC5UV08sXG4gIENTUy5CT1JERVIuUklHSFQuT05FLFxuICBDU1MuQk9SREVSLlJJR0hULlRXTyxcbiAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICBDU1MuQk9SREVSLkJPVFRPTS5UV08sXG4gIENTUy5CT1JERVIuTEVGVC5PTkUsXG4gIENTUy5CT1JERVIuTEVGVC5UV08sXG4gIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5GVUxMLlRXTyxcbiAgQ1NTLlBBRERJTkcuRlVMTC5GT1VSLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5PTkUsXG4gIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICBDU1MuUEFERElORy5UT1AuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuVE9QLlRXTyxcbiAgQ1NTLlBBRERJTkcuVE9QLkZPVVIsXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICBDU1MuUEFERElORy5CT1RUT00uUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlRXTyxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkZPVVIsXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguRlVMTCxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5GT05ULlNJWkUuVFdFTFZFLFxuICBDU1MuRk9OVC5TSVpFLkZPVVJURUVOLFxuICBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZLFxuICBDU1MuRk9OVC5TSVpFLlRXRU5UWV9GT1VSLFxuICBDU1MuRk9OVC5TSVpFLlRISVJUWV9UV08sXG4gIENTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRUQsXG4gIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gIENTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRUQsXG4gIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICBDU1MuT0JKRUNULkNFTlRFUixcbiAgQ1NTLk9CSkVDVC5DT05UQUlOLFxuICBDU1MuT0JKRUNULkNPVkVSLFxuICBDU1MuT0JKRUNULlNDQUxFX0RPV04sXG4gIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gIENTUy5TSEFET1cuQk9UVE9NLFxuICBDU1MuU0hBRE9XLlRPUCxcbiAgQ1NTLlNOQVAuT04sXG4gIENTUy5TTkFQX0FMSUdOLlNUQVJULFxuICBDU1MuQUxJR04uWC5MRUZULFxuICBDU1MuQUxJR04uWC5DRU5URVIsXG4gIENTUy5BTElHTi5YLlJJR0hULFxuICBDU1MuVEVYVF9UUkFOU0ZPUk0uTE9XRVIsXG4gIENTUy5URVhUX1RSQU5TRk9STS5OT05FLFxuICBDU1MuVEVYVF9UUkFOU0ZPUk0uVVBQRVIsXG4gIENTUy5VTkRFUkxJTkUsXG4gIENTUy5VTkRFUkxJTkUuSE9WRVIsXG4gIENTUy5VTkRFUkxJTkUuT0ZGLFxuICBDU1MuVklTSUJJTElUWS5PTixcbiAgQ1NTLlZJU0lCSUxJVFkuT0ZGLFxuICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgQ1NTLk9WRVJGTE9XLlhZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gIENTUy5PVkVSRkxPVy5YLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICBDU1MuT1ZFUkZMT1cuWS5ISURERU4sXG5dO1xuIiwiZXhwb3J0IGNvbnN0IE9SSUVOVEFUSU9OID0ge1xuICBIT1JJWk9OVEFMOiAnaG9yaXpvbnRhbCcsXG4gIFZFUlRJQ0FMOiAndmVydGljYWwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9SSUVOVEFUSU9OKVtrZXlvZiB0eXBlb2YgT1JJRU5UQVRJT05dO1xuIiwiZXhwb3J0IGNvbnN0IFNJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZGVmaW5lQXN5bmNDb21wb25lbnQsIG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGljb246IEljb247XG4gICAgc2l6ZT86IFNpemU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBzaXplOiBTSVpFLlNNQUxMLFxuICB9KTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaWNvbixcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHByb3BzLmljb24gYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBuYW1lID0gZm9ybWF0UGFzY2FsQ2FzZShpZCk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0udnVlYCkpO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxzdmdcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxDb21wb25lbnRcbiAgICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwgc3ZnIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUk6ICdhaScsXG4gIEFMSUdOX1NQQUNFOiAnYWxpZ24tc3BhY2UnLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDWUNMRTogJ2N5Y2xlJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTElOS0VEX0lOOiAnbGlua2VkIGluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJPVU5ERURfQ09STkVSUzogJ3JvdW5kZWQtY29ybmVycycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU01TOiAnc21zJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUluZGljYXRvciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGhhc1RvcERpdmlkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzQWN0aXZlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0V4cGFuZGVkSW5pdGlhbDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNPcHRpb25hbDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaXNFeHBhbmRlZCA9IHJlZihwcm9wcy5pc0V4cGFuZGVkSW5pdGlhbCk7XG5cbiAgbGV0IGFjY29yZGlvbkJvZHkgPSByZWYoKTtcblxuICBjb25zdCB0b2dnbGVJc0V4cGFuZGVkID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2NvcmRpb25Cb2R5LnZhbHVlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaXNFeHBhbmRlZC52YWx1ZSA9ICFpc0V4cGFuZGVkLnZhbHVlO1xuXG4gICAgZWxlbWVudC5zdHlsZS5ncmlkVGVtcGxhdGVSb3dzID0gaXNFeHBhbmRlZC52YWx1ZSA/ICcxZnInIDogJzBmcic7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gYWNjb3JkaW9uQm9keS52YWx1ZSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGVsZW1lbnQuc3R5bGUuZ3JpZFRlbXBsYXRlUm93cyA9IGlzRXhwYW5kZWQudmFsdWUgPyAnMWZyJyA6ICcwZnInO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ0aWRlLWFjY29yZGlvbi1pdGVtXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taGVhZCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5ZLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgQGNsaWNrPVwidG9nZ2xlSXNFeHBhbmRlZFwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPFRpZGVJbmRpY2F0b3Igdi1pZj1cInByb3BzLmlzQWN0aXZlXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb24gOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgQ1NTLkRJU1BMQVkuR1JJRF1cIlxuICAgICAgcmVmPVwiYWNjb3JkaW9uQm9keVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOXVwiPlxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RFWFRfQVNfSUNPTiA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudFRleHRBc0ljb24gPSAodHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT05dO1xuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNUb2FzdDogZmFsc2UsXG4gICAgdHlwZTogQUxFUlQuSU5GTyxcbiAgfSk7XG5cbiAgY29uc3QgaWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgaWNvbjogSWNvbiA9IElDT04uVklFV19JTl9BUjtcblxuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBBTEVSVC5FUlJPUjpcbiAgICAgICAgaWNvbiA9IElDT04uRVJST1I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgQUxFUlQuSU5GTzpcbiAgICAgICAgaWNvbiA9IElDT04uSU5GTztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFMRVJULlNVQ0NFU1M6XG4gICAgICAgIGljb24gPSBJQ09OLkNIRUNLO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuV0FSTklORzpcbiAgICAgICAgaWNvbiA9IElDT04uV0FSTklORztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb247XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLnR5cGUsXG4gICAgICAndGlkZS1hbGVydCcsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLlNVUkZBQ0UuRVJST1IsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5TVVJGQUNFLklORk8sXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5TVVJGQUNFLldBUk5JTkcsXG4gICAgICBwcm9wcy5pc1RvYXN0ID8gQ1NTLlNIQURPVy5CT1RUT00gOiAnJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWljb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBwcm9wcy50eXBlLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuRVJST1IsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuSU5GTyxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5TVUNDRVNTLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLldBUk5JTkcsXG4gICAgICAgIF1cIlxuICAgICAgICA6aWNvbj1cImljb25cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWhlYWRpbmcnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAgPGgyIDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlNJWFRFRU4sIENTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgICA8L2gyPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtY2xvc2UnLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCI+XG4gICAgICA8c2xvdCAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvO1xuICAgIGdyaWQtY29sdW1uLWdhcDogMC41cmVtO1xuICAgIG1heC13aWR0aDogNDByZW07XG4gIH1cblxuICAudGlkZS1hbGVydC1pY29uIHtcbiAgICBncmlkLWFyZWE6IGljb247XG4gIH1cblxuICAudGlkZS1hbGVydC1oZWFkaW5nIHtcbiAgICBncmlkLWFyZWE6IGhlYWRpbmc7XG4gIH1cblxuICAudGlkZS1hbGVydC1jbG9zZSB7XG4gICAgZ3JpZC1hcmVhOiBjbG9zZTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWJvZHkge1xuICAgIGdyaWQtYXJlYTogYm9keTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBCQURHRSA9IHtcbiAgSlVTVF9MSVNURUQ6ICdKdXN0IGxpc3RlZCcsXG4gIE5BVElPTldJREU6ICdOYXRpb253aWRlJyxcbiAgUkVEVUNFRDogJ1JlZHVjZWQnLFxuICBVUERBVEVEOiAnVXBkYXRlZCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfUFJFTUlVTSA9IHtcbiAgUFJFTUlVTTogJ1ByZW1pdW0nLFxuICBQUkVNSVVNX1NFTEVDVDogJ1ByZW1pdW0gU0VMRUNUJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlID0gKHR5cGVvZiBCQURHRSlba2V5b2YgdHlwZW9mIEJBREdFXTtcbmV4cG9ydCB0eXBlIEJhZGdlUHJlbWl1bSA9ICh0eXBlb2YgQkFER0VfUFJFTUlVTSlba2V5b2YgdHlwZW9mIEJBREdFX1BSRU1JVU1dO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgb2Zmc2V0WD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldFg6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBsZXQgY29udGVudFdpZHRoID0gcmVmKCk7XG4gIGxldCBmcmFtZVdpZHRoID0gcmVmKCk7XG4gIGxldCBoYXNPdmVyZmxvdyA9IHJlZigpO1xuICBsZXQgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG5cbiAgY29uc3QgY29udGVudFJlZiA9IHJlZigpO1xuICBjb25zdCBmcmFtZVJlZiA9IHJlZigpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZigpO1xuICBjb25zdCBjdXJyZW50U2xpZGUgPSByZWYoMCk7XG5cbiAgY29uc3QgZ2FwID0gMTY7XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIGN1cnJlbnQgc2xpZGUgYmFzZWQgb24gdGhlIHNjcm9sbFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgZnJhbWUuIFRoZSBjdXJyZW50IHNsaWRlIGlzXG4gICAqIHRoZSBzbGlkZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGxlZnQgZWRnZSBvZlxuICAgKiB0aGUgZnJhbWUuXG4gICAqL1xuICBjb25zdCBtZWFzdXJlQ3VycmVudFNsaWRlID0gKCkgPT4ge1xuICAgIC8vIGdldCBsZWZ0IG9mZnNldHMgb2YgZWFjaCBzbGlkZVxuICAgIGNvbnN0IHNsaWRlT2Zmc2V0cyA9IEFycmF5LmZyb20oY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbikubWFwKChzbGlkZTogYW55KSA9PiBzbGlkZS5vZmZzZXRMZWZ0KTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBnZXQgdmFsdWUgY2xvc2VzdCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxuICAgIGNvbnN0IGNsb3Nlc3RTbGlkZU9mZnNldCA9IHNsaWRlT2Zmc2V0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhjdXJyIC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPCBNYXRoLmFicyhwcmV2IC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPyBjdXJyIDogcHJldjtcbiAgICB9KTtcblxuICAgIC8vIHNldCBjdXJyZW50IHNsaWRlIHRvIGluZGV4IG9mIGNsb3Nlc3Qgc2xpZGVcbiAgICBjdXJyZW50U2xpZGUudmFsdWUgPSBzbGlkZU9mZnNldHMuaW5kZXhPZihjbG9zZXN0U2xpZGVPZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgaGFzT3ZlcmZsb3cudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICAgIGxhc3RQb3NpdGlvbi52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBoYXNPdmVyZmxvdy52YWx1ZSAmJiAhcHJvcHMuaXNUb3VjaHNjcmVlbjtcblxuICAgIG1lYXN1cmVDdXJyZW50U2xpZGUoKTtcbiAgfTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZSB0aGlzXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdG8gdGhlIHNsaWRlIGF0IHRoZSBnaXZlbiBpbmRleCwgb3JcbiAgICogdG8gdGhlIGZpcnN0IG9yIGxhc3Qgc2xpZGUgaWYgdGhlIGdpdmVuIGluZGV4XG4gICAqIGlzIG91dCBvZiBib3VuZHMuXG4gICAqIEBwYXJhbSBzbGlkZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgc2xpZGUgdG8gc2Nyb2xsIHRvXG4gICAqL1xuICBjb25zdCBzY3JvbGxUb1NsaWRlID0gKHNsaWRlSW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW5bc2xpZGVJbmRleF0ub2Zmc2V0TGVmdCxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgY29uc3QgY29udGVudFJpZ2h0RWRnZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQgKyBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcblxuICAgIGlmIChjb250ZW50UmlnaHRFZGdlID4gY29udGVudFdpZHRoKSB7XG4gICAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgbGVmdDogY29udGVudFdpZHRoLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlzRmlyc3RTbGlkZVdpdGhPZmZzZXQgPSBwcm9wcy5vZmZzZXRYICYmIGN1cnJlbnRTbGlkZS52YWx1ZSA9PT0gMDtcbiAgICAgIGNvbnN0IGlzTGFzdFNsaWRlID0gY29udGVudFJpZ2h0RWRnZSA9PT0gY29udGVudFdpZHRoO1xuICAgICAgY29uc3QgbmV4dFNsaWRlID0gaXNMYXN0U2xpZGUgPyAwIDogaXNGaXJzdFNsaWRlV2l0aE9mZnNldCA/IDIgOiBjdXJyZW50U2xpZGUudmFsdWUgKyAxO1xuXG4gICAgICBzY3JvbGxUb1NsaWRlKG5leHRTbGlkZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2xpZGUgPSBwcm9wcy5vZmZzZXRYID8gMSA6IDA7XG4gICAgY29uc3QgaXNGaXJzdFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlIC0gMSA9PT0gZmlyc3RTbGlkZTtcbiAgICBjb25zdCBpc1NlY29uZFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlIDw9IGZpcnN0U2xpZGU7XG4gICAgY29uc3QgcHJldmlvdXNTbGlkZSA9IGlzU2Vjb25kU2xpZGVcbiAgICAgID8gY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICA6IGlzRmlyc3RTbGlkZVxuICAgICAgPyAwXG4gICAgICA6IGN1cnJlbnRTbGlkZS52YWx1ZSAtIDE7XG5cbiAgICBzY3JvbGxUb1NsaWRlKHByZXZpb3VzU2xpZGUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25VcGRhdGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH0pO1xuXG4gIHdhdGNoKGN1cnJlbnRTbGlkZSwgKCkgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtY2Fyb3VzZWwnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5TQ1JPTExCQVIuT0ZGLCBDU1MuU05BUC5PTiwgQ1NTLk9WRVJGTE9XLlguU0NST0xMXVwiXG4gICAgICByZWY9XCJmcmFtZVJlZlwiXG4gICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICA+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW3Byb3BzLmlzVG91Y2hzY3JlZW4gPyBbQ1NTLk9WRVJGTE9XLlguQVVUT10gOiAnJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5PTkUsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiXG4gICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLlNOQVBfQUxJR04uU1RBUlRdXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtwcm9wcy5vZmZzZXRYIC0gZ2FwfXB4YCB9XCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMub2Zmc2V0WFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHNsb3QgLz5cblxuICAgICAgICA8bGlcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLlNOQVBfQUxJR04uU1RBUlRdXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtwcm9wcy5vZmZzZXRYIC0gZ2FwfXB4YCB9XCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMub2Zmc2V0WFwiXG4gICAgICAgIC8+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwic2hvd0J1dHRvbnNcIlxuICAgID5cbiAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cInNob3dOZXh0U2xpZGVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25CZWZvcmVVbm1vdW50LCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBjZG4/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBjZG46IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2Zmc2V0OiAwLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0aWRlSW1hZ2UgPSByZWYoKTtcblxuICBjb25zdCBpbWFnZURlZmF1bHQgPSBgJHtwcm9wcy5jZG59L2ltYWdlLWNvbWluZy1zb29uLTUxMi5wbmdgO1xuXG4gIGNvbnN0IGxvYWRJbWFnZSA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuc3JjKSB7XG4gICAgICBjb25zdCBpbWFnZUxvYWRlciA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICBpbWFnZUxvYWRlci5vbmxvYWQgPSBzZXRJbWFnZUZyb21TcmM7XG4gICAgICBpbWFnZUxvYWRlci5vbmVycm9yID0gc2V0SW1hZ2VGcm9tRGVmYXVsdDtcbiAgICAgIGltYWdlTG9hZGVyLnNyYyA9IHByb3BzLnNyYztcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICB0aWRlSW1hZ2UudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICB9O1xuXG4gIGNvbnN0IHNldEltYWdlRnJvbVNyYyA9ICgpID0+IHtcbiAgICB0aWRlSW1hZ2UudmFsdWUuc3JjID0gcHJvcHMuc3JjO1xuICB9O1xuXG4gIGRlZmluZUV4cG9zZSh0aWRlSW1hZ2UudmFsdWUpO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChcbiAgICAgIChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBsb2FkSW1hZ2UoKTtcbiAgICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZW50cnkudGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdE1hcmdpbjogYCR7cHJvcHMub2Zmc2V0fXB4YCxcbiAgICAgIH1cbiAgICApO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0xhenkpIHtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGlkZUltYWdlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEltYWdlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIG9ic2VydmVyLnVub2JzZXJ2ZSh0aWRlSW1hZ2UudmFsdWUpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxpbWdcbiAgICA6YWx0PVwiYWx0XCJcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuT0JKRUNULkNFTlRFUiwgQ1NTLk9CSkVDVC5DT1ZFUl1cIlxuICAgIHJlZj1cInRpZGVJbWFnZVwiXG4gICAgOnNyYz1cImlzTGF6eSAmJiBzcmMgPyBzcmMgOiBpbWFnZURlZmF1bHRcIlxuICAvPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIHdhdGNoKHByb3BzLCAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgaWYgKG5ld1ZhbHVlLmNoZWNrZWQgIT09IG9sZFZhbHVlLmNoZWNrZWQgfHwgbmV3VmFsdWUuY2hlY2tlZCAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgY2hlY2tlZC52YWx1ZSA9IHByb3BzLmNoZWNrZWQ7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnXVwiPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIkNTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRURcIlxuICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJhbmdlRGF0YSB9IGZyb20gJ0AvdHlwZXMvRmFjZXRSYW5nZSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgdG9vU2hvcnQgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCB0b29Mb25nID0gbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIXRvb1Nob3J0ICYmICF0b29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlOiBSZWY8c3RyaW5nPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSwgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RodmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RodmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGh2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBnZXRDdXJyZW50SW5zdGFuY2UsIGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZCc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZ2V0RmllbGRIYXNFcnJvciwgZ2V0RXJyb3JNZXNzYWdlIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcblxuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKHByb3BzLCAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgaWYgKG5ld1ZhbHVlLnZhbHVlICE9PSBvbGRWYWx1ZS52YWx1ZSB8fCBuZXdWYWx1ZS52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gcHJvcHMudmFsdWU7XG4gICAgfVxuICB9KTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLkJPVFRPTS5IQUxGLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hUXzAsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3QgdHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZS5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgcHJvcHMsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlLnZhbHVlICE9PSBvbGRWYWx1ZS52YWx1ZSB8fCBuZXdWYWx1ZS52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHVwZGF0ZVZhbHVlLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLCAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULCBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5wcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICAgIEBjbGljay5wcmV2ZW50PVwiaW5wdXQ/LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJ0eXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCddXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwicHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKHByb3BzLCAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgaWYgKG5ld1ZhbHVlLnZhbHVlICE9PSBvbGRWYWx1ZS52YWx1ZSB8fCBuZXdWYWx1ZS52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gcHJvcHMudmFsdWU7XG4gICAgfVxuICB9KTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgIHJlZj1cImxhYmVsXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInByb3BzLnJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuPC9zdHlsZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBoYXNJY29uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaWNvbkxlYWRpbmcgfHwgcHJvcHMuaWNvblRyYWlsaW5nKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyAndGlkZS1idXR0b24tYXMtbGluaycgOiAndGlkZS1saW5rJyxcbiAgICAgIGhhc0ljb25cbiAgICAgICAgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cbiAgICAgICAgOiBbQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRUQsIENTUy5VTkRFUkxJTkUuT05dLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDppcz1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEVMRU1FTlQuTElOSyA6IEVMRU1FTlQuQlVUVE9OXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRUQsIENTUy5VTkRFUkxJTkUuT05dXCJcbiAgICAgIHYtaWY9XCJoYXNJY29uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuXG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjbG9zZSddKTtcblxuICBjb25zdCBpc09wZW4gPSByZWYocHJvcHMuaXNPcGVuKTtcbiAgY29uc3Qgc2F2ZWRTY3JvbGxQb3NpdGlvbiA9IHJlZjxudW1iZXIgfCBudWxsPihudWxsKTsgLy8gVE9ETzogcmVwbGFjZSBib2R5IHNjcm9sbCBsb2NrIHdpdGggZ2xvYmFsIHN0cnVjdHVyZT9cblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcblxuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICAgIGVtaXQoJ2Nsb3NlJywgZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZU1vZGFsRGlzcGxheSA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlICYmIHdpbmRvdy5zY3JvbGxUbygwLCBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlKTtcblxuICAgICAgYWRkT3Blbkxpc3RlbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7XG5cbiAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGhhbmRsZUNsb3NlKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVycyA9ICgpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICB9KTtcblxuICB3YXRjaChwcm9wcywgKG5ld1ZhbHVlKSA9PiB7XG4gICAgaXNPcGVuLnZhbHVlID0gbmV3VmFsdWUuaXNPcGVuO1xuXG4gICAgdXBkYXRlTW9kYWxEaXNwbGF5KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IHRvPVwiYm9keVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtd3JhcHBlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUF8wLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBwcm9wcy5pc09wZW4gPyAnYWN0aXZlJyA6IENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWJnJywgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUNsb3NlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5UV08sXG4gICAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5TSVpFLlRXRU5UWSwgQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRURdXCJcbiAgICAgICAgICAgIHYtaWY9XCJ0aXRsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVF8wLCBDU1MuTUFSR0lOLlJJR0hULlRXT11cIlxuICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAgICAgdGl0bGU9XCJDbG9zZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWNvbnRlbnQnLCBDU1MuUEFERElORy5GVUxMLlRXTywgQ1NTLk9WRVJGTE9XLlkuQVVUT11cIj5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiRzbG90cy5mb290ZXJcIj5cbiAgICAgICAgICA8Zm9vdGVyXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NXzAsXG4gICAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5YLlRXTyxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1tb2RhbC13aWR0aCk7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAycmVtKTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAycmVtKTtcbiAgICBib3gtc2hhZG93OiAwcHggMTBweCAyNXB4IDBweCByZ2JhKDE4LCA0MywgNTgsIDAuMik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHZoKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWJnIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2Ryb3AtZmlsdGVyLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLmFjdGl2ZSAudGlkZS1tb2RhbCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgLmFjdGl2ZSAudGlkZS1tb2RhbC1iZyB7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgcGFnZUN1cnJlbnQudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2VDdXJyZW50ICsgMSlcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiSW5pdGlhbD86IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYkluaXRpYWw6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBhY3RpdmVUYWIgPSByZWYocHJvcHMuYWN0aXZlVGFiSW5pdGlhbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgYWN0aXZlVGFiLnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRhYnMnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS10YWJzLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRCxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXRhYnMge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLXRhYnMtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzQWN0aXZlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gcmVmKHByb3BzLmlzQWN0aXZlKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9ICFpc0FjdGl2ZS52YWx1ZTtcblxuICAgICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGlzQWN0aXZlLnZhbHVlKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtdG9nZ2xlJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiVG9nZ2xlXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9nZ2xlLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10b2dnbGUge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS10b2dnbGU6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS10b2dnbGUuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZS5hY3RpdmUgLnRpZGUtdG9nZ2xlLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZS1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQOiAnZXF1aXAnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtID0gKHR5cGVvZiBSRUFMTSlba2V5b2YgdHlwZW9mIFJFQUxNXTtcbiJdLCJuYW1lcyI6WyJDU1MiLCJPUklFTlRBVElPTiIsIlNJWkUiLCJmb3JtYXRQYXNjYWxDYXNlIiwiaW5wdXQiLCJ3b3JkIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsInByb3BzIiwiaWQiLCJuYW1lIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiSUNPTiIsImlzRXhwYW5kZWQiLCJhY2NvcmRpb25Cb2R5IiwidG9nZ2xlSXNFeHBhbmRlZCIsImVsZW1lbnQiLCJvbk1vdW50ZWQiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiaWNvbiIsImNvbXB1dGVkIiwiQkFER0UiLCJCQURHRV9QUkVNSVVNIiwiQkFER0VfVFJVU1RFRCIsImdhcCIsImNvbnRlbnRXaWR0aCIsImZyYW1lV2lkdGgiLCJoYXNPdmVyZmxvdyIsImxhc3RQb3NpdGlvbiIsImNvbnRlbnRSZWYiLCJmcmFtZVJlZiIsInNob3dCdXR0b25zIiwiY3VycmVudFNsaWRlIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwiY2xvc2VzdFNsaWRlT2Zmc2V0IiwicHJldiIsImN1cnIiLCJtZWFzdXJlRG9tIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsVG9TbGlkZSIsInNsaWRlSW5kZXgiLCJzaG93TmV4dFNsaWRlIiwiY29udGVudFJpZ2h0RWRnZSIsImlzRmlyc3RTbGlkZVdpdGhPZmZzZXQiLCJuZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsImZpcnN0U2xpZGUiLCJpc0ZpcnN0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwib25Vbm1vdW50ZWQiLCJvblVwZGF0ZWQiLCJlbWl0IiwidGlkZUltYWdlIiwiaW1hZ2VEZWZhdWx0IiwibG9hZEltYWdlIiwiaW1hZ2VMb2FkZXIiLCJzZXRJbWFnZUZyb21TcmMiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiX19leHBvc2UiLCJvYnNlcnZlciIsImVudHJpZXMiLCJlbnRyeSIsIm9uQmVmb3JlVW5tb3VudCIsImNoZWNrZWQiLCJ1bmlxdWVJZCIsIl9hIiwiZ2V0Q3VycmVudEluc3RhbmNlIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21Qcm9wcyIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJ2YWx1ZSIsInRvb1Nob3J0IiwidG9vTG9uZyIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RodmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJoYXNGb2N1cyIsInJlcXVpcmVkIiwiZXJyb3JNZXNzYWdlIiwiZm9ybWF0dGVkTGFiZWwiLCJoYXNFcnJvciIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0IiwiVEVYVF9JTlBVVF9UWVBFIiwic2hvd1Bhc3N3b3JkIiwiaGFzQ2xlYXIiLCJ0eXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJkaWdpdHMiLCJ1cGRhdGVWYWx1ZSIsImhhc0ljb24iLCJpc09wZW4iLCJzYXZlZFNjcm9sbFBvc2l0aW9uIiwiaGFuZGxlQ2xvc2UiLCJ1cGRhdGVNb2RhbERpc3BsYXkiLCJhZGRPcGVuTGlzdGVuZXJzIiwicmVtb3ZlT3Blbkxpc3RlbmVycyIsImhhbmRsZUtleURvd24iLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJpbmRleCIsImhhbmRsZUNsaWNrIiwiYWN0aXZlVGFiIiwiaXNBY3RpdmUiLCJSRUFMTSJdLCJtYXBwaW5ncyI6IjtBQUFPLE1BQU1BLElBQU07QUFBQSxFQUNqQixPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLElBQUk7QUFBQSxJQUNGLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLE1BQ2hCLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULE9BQU87QUFBQSxNQUNQLFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNW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VCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0EsSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLE1BQU07QUFBQSxFQUNSO0FBQUEsRUFDQSxjQUFjO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxZQUFZO0FBQUEsRUFDZDtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxJQUNWO0FBQUEsSUFDQSxJQUFJO0FBQUEsTUFDRixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQjtBQUFBLElBQ2QsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFVBQVU7QUFBQSxJQUNWLE9BQU87QUFBQSxJQUNQLFVBQVU7QUFBQSxJQUNWLFFBQVE7QUFBQSxFQUNWO0FBQUEsRUFDQSxhQUFhO0FBQUEsSUFDWCxVQUFVO0FBQUEsSUFDVixRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsV0FBVztBQUFBLElBQ1QsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixJQUFJO0FBQUEsRUFDTjtBQUFBLEVBQ0EsWUFBWTtBQUFBLElBQ1YsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGdCQUFnQjtBQUFBLElBQ2QsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLFdBQVc7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLEtBQUs7QUFBQSxJQUNMLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxZQUFZO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFDTjtBQUFBLEVBQ0EsaUJBQWlCO0FBQUEsSUFDZixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sVUFBVTtBQUFBLEVBQ1o7QUFDRjtBQUtFQSxFQUFJLFFBQVEsT0FDWkEsRUFBSSxRQUFRLFVBQ1pBLEVBQUksUUFBUSxNQUNaQSxFQUFJLFFBQVEsTUFDWkEsRUFBSSxRQUFRLE1BQ1pBLEVBQUksUUFBUSxTQUNaQSxFQUFJLFFBQVEsUUFDWkEsRUFBSSxRQUFRLGNBQ1pBLEVBQUksUUFBUSxhQUNaQSxFQUFJLE1BQU0sUUFDVkEsRUFBSSxNQUFNLFNBQ1ZBLEVBQUksTUFBTSxRQUNWQSxFQUFJLE1BQU0sS0FDVkEsRUFBSSxNQUFNLE9BQ1ZBLEVBQUksTUFBTSxRQUNWQSxFQUFJLE1BQU0sUUFDVkEsRUFBSSxNQUFNLEtBQ1ZBLEVBQUksTUFBTSxPQUNWQSxFQUFJLEtBQUssVUFBVSxRQUNuQkEsRUFBSSxLQUFLLFVBQVUsZ0JBQ25CQSxFQUFJLEtBQUssVUFBVSxLQUNuQkEsRUFBSSxLQUFLLFVBQVUsYUFDbkJBLEVBQUksSUFBSSxLQUNSQSxFQUFJLElBQUksTUFDUkEsRUFBSSxJQUFJLFNBQ1JBLEVBQUksSUFBSSxLQUNSQSxFQUFJLElBQUksTUFDUkEsRUFBSSxLQUFLLEtBQUssSUFDZEEsRUFBSSxLQUFLLEtBQUssS0FDZEEsRUFBSSxLQUFLLE9BQU8sSUFDaEJBLEVBQUksS0FBSyxPQUFPLEtBQ2hCQSxFQUFJLEtBQUssTUFDVEEsRUFBSSxTQUFTLFVBQ2JBLEVBQUksU0FBUyxPQUNiQSxFQUFJLFNBQVMsVUFDYkEsRUFBSSxTQUFTLFFBQ2JBLEVBQUksWUFBWSxPQUNoQkEsRUFBSSxZQUFZLFNBQ2hCQSxFQUFJLFlBQVksVUFDaEJBLEVBQUksWUFBWSxRQUNoQkEsRUFBSSxXQUFXLFlBQ2ZBLEVBQUksV0FBVyxhQUNmQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLFNBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLFNBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLE1BQ2ZBLEVBQUksT0FBTyxJQUFJLFNBQ2ZBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLE1BQ2ZBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLFNBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxNQUNqQkEsRUFBSSxPQUFPLE1BQU0sU0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxNQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxPQUFPLE9BQU8sU0FDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLE1BQ2hCQSxFQUFJLE9BQU8sS0FBSyxTQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLE1BQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksTUFDaEJBLEVBQUksUUFBUSxJQUFJLFNBQ2hCQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksTUFDaEJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLE1BQ2RBLEVBQUksUUFBUSxFQUFFLFNBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLE1BQ2RBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxNQUNsQkEsRUFBSSxRQUFRLE1BQU0sU0FDbEJBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxNQUNsQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLE1BQ25CQSxFQUFJLFFBQVEsT0FBTyxTQUNuQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLE1BQ25CQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssTUFDakJBLEVBQUksUUFBUSxLQUFLLFNBQ2pCQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssTUFDakJBLEVBQUksTUFBTSxVQUNWQSxFQUFJLE1BQU0sTUFDVkEsRUFBSSxPQUFPLE1BQ1hB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QkFBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDhDQUFBLE1BQUEsT0FBQSxrQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDRDQUFBLE1BQUEsT0FBQSxnQ0FBQSxHQUFBLGtEQUFBLE1BQUEsT0FBQSxzQ0FBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLDJDQUFBLE1BQUEsT0FBQSwrQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLDhDQUFBLE1BQUEsT0FBQSxrQ0FBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLDRDQUFBLE1BQUEsT0FBQSxnQ0FBQSxHQUFBLG1DQUFBLE1BQUEsT0FBQSx1QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDhDQUFBLE1BQUEsT0FBQSxrQ0FBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxFQUFBLENBQUEsR0FBQSwyQkFBQUgsQ0FBQSxNQUFBLENBQUE7QUFFakYsUUFBQUwsRUFBQSxRQUFRUyxHQUFRSCxDQUFTO0FBQUEsTUFDcEM7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFLO0FBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzRUMvQlRJLElBQU87QUFBQSxFQUNsQixpQkFBaUI7QUFBQSxFQUNqQixLQUFLO0FBQUEsRUFDTCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixhQUFhO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQUEsRUFDVixnQkFBZ0I7QUFBQSxFQUNoQixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxjQUFjO0FBQUEsRUFDZCxlQUFlO0FBQUEsRUFDZixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxnQkFBZ0I7QUFBQSxFQUNoQixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixhQUFhO0FBQUEsRUFDYixlQUFlO0FBQUEsRUFDZixzQkFBc0I7QUFBQSxFQUN0QixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixZQUFZO0FBQUEsRUFDWixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxnQkFBZ0I7QUFBQSxFQUNoQixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixhQUFhO0FBQUEsRUFDYixTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixjQUFjO0FBQUEsRUFDZCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxlQUFlO0FBQUEsRUFDZixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxrQkFBa0I7QUFBQSxFQUNsQixNQUFN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