tide-design-system 2.0.3 → 2.0.5

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 (90) hide show
  1. package/README.md +9 -51
  2. package/dist/IconAccountBalance-8d60a762.js +11 -0
  3. package/dist/IconAdd-41987be0.js +11 -0
  4. package/dist/IconAi-54c9f1f9.js +23 -0
  5. package/dist/IconAlignSpace-0dbce580.js +11 -0
  6. package/dist/IconApplePay-0aac1e20.js +11 -0
  7. package/dist/IconArrowBack-942e8c4c.js +11 -0
  8. package/dist/IconArrowForward-4b5bcc17.js +11 -0
  9. package/dist/IconArrowRight-143abfe9.js +11 -0
  10. package/dist/IconAssignment-28546363.js +11 -0
  11. package/dist/IconAwardStar-e260b61a.js +11 -0
  12. package/dist/IconBookmark-2df361a1.js +11 -0
  13. package/dist/IconCalendarMonth-1331bb2e.js +11 -0
  14. package/dist/IconCall-bfb28d23.js +11 -0
  15. package/dist/IconCheck-4f7c55bb.js +11 -0
  16. package/dist/IconChevronLeft-111444b3.js +11 -0
  17. package/dist/IconChevronRight-f3e73764.js +11 -0
  18. package/dist/IconClear-7f6472ed.js +11 -0
  19. package/dist/IconClose-fe46270f.js +11 -0
  20. package/dist/IconCycle-1c670925.js +11 -0
  21. package/dist/IconDelete-40861e3a.js +11 -0
  22. package/dist/IconDiamond-92bc3c14.js +11 -0
  23. package/dist/IconEdit-2ce79ec9.js +11 -0
  24. package/dist/IconError-9d150afa.js +11 -0
  25. package/dist/IconExpandContent-4611f59a.js +11 -0
  26. package/dist/IconExpandLess-97dbbba2.js +11 -0
  27. package/dist/IconExpandMore-74cf7746.js +11 -0
  28. package/dist/IconFacebook-5177a43e.js +11 -0
  29. package/dist/IconFavorite-b8b2232b.js +11 -0
  30. package/dist/IconFavoriteFilled-a03c18b0.js +11 -0
  31. package/dist/IconFormatBold-fe01c0d0.js +11 -0
  32. package/dist/IconFormatItalic-2b3d0f32.js +11 -0
  33. package/dist/IconFormatListBulleted-9f4f5f29.js +11 -0
  34. package/dist/IconForum-ad13c05f.js +11 -0
  35. package/dist/IconGoogle-1661c713.js +28 -0
  36. package/dist/IconGooglePay-c55f25e8.js +11 -0
  37. package/dist/IconGrid-1a6868d2.js +11 -0
  38. package/dist/IconHelp-1d25fcc1.js +11 -0
  39. package/dist/IconInfo-25020d15.js +11 -0
  40. package/dist/IconInsertText-a93ea55d.js +11 -0
  41. package/dist/IconInstagram-393a91c5.js +11 -0
  42. package/dist/IconIosShare-10a2497c.js +11 -0
  43. package/dist/IconLayout-b486c56c.js +11 -0
  44. package/dist/IconLinkedIn-ed3a304e.js +11 -0
  45. package/dist/IconLocalShipping-21673087.js +11 -0
  46. package/dist/IconLock-c7d18ae6.js +11 -0
  47. package/dist/IconMail-3a6fb81c.js +11 -0
  48. package/dist/IconMenu-27e0ea03.js +11 -0
  49. package/dist/IconMoreHoriz-97b1974a.js +11 -0
  50. package/dist/IconNotifications-11566098.js +11 -0
  51. package/dist/IconOpenInNew-e89309cc.js +11 -0
  52. package/dist/IconPalette-7b39c00b.js +11 -0
  53. package/dist/IconPaypal-581e5de8.js +11 -0
  54. package/dist/IconPerson-7b5fc958.js +11 -0
  55. package/dist/IconPhotoCamera-dd25e6de.js +11 -0
  56. package/dist/IconPinterest-f8569b8c.js +11 -0
  57. package/dist/IconPlayArrow-a7538942.js +11 -0
  58. package/dist/IconRemove-c19ef592.js +11 -0
  59. package/dist/IconRoundedCorners-501a2efe.js +11 -0
  60. package/dist/IconSearch-c2acd4ec.js +11 -0
  61. package/dist/IconSell-8a47939b.js +11 -0
  62. package/dist/IconShare-a8e26193.js +11 -0
  63. package/dist/IconShoppingCart-78a14827.js +11 -0
  64. package/dist/IconSms-3a93e423.js +11 -0
  65. package/dist/IconStar-8c8f1bb4.js +11 -0
  66. package/dist/IconSwapVert-066694ed.js +11 -0
  67. package/dist/IconThreeDRotation-7823ddb5.js +26 -0
  68. package/dist/IconTune-43f405a5.js +11 -0
  69. package/dist/IconTwitter-2bc0ee2b.js +11 -0
  70. package/dist/IconVideocam-7deb4ac7.js +11 -0
  71. package/dist/IconViewInAr-bf12af3e.js +11 -0
  72. package/dist/IconVisibility-f6ca5bb6.js +11 -0
  73. package/dist/IconWarning-7a1f76a9.js +11 -0
  74. package/dist/IconYoutube-6e789d14.js +11 -0
  75. package/dist/css/dynamic-utilities.css +10 -0
  76. package/dist/css/page-layout.css +27 -15
  77. package/dist/index-1042d93b.js +2055 -0
  78. package/dist/style.css +1 -0
  79. package/dist/tide-design-system.js +44 -3
  80. package/dist/types/Styles.ts +8 -0
  81. package/package.json +4 -5
  82. package/dist/assets/style.css +0 -1
  83. package/dist/css/sb-rv.css +0 -1
  84. package/dist/tide-design-system2.js +0 -5
  85. package/dist/tide-design-system3.js +0 -5
  86. package/dist/tide-design-system4.js +0 -5
  87. package/dist/tide-design-system5.js +0 -5
  88. package/dist/tide-design-system6.js +0 -5
  89. package/dist/tide-design-system7.js +0 -5
  90. package/dist/tide-design-system8.js +0 -5
@@ -0,0 +1,2055 @@
1
+ import { openBlock as l, createElementBlock as r, normalizeClass as i, unref as t, defineComponent as v, ref as A, watch as Q, defineAsyncComponent as ue, markRaw as Re, createBlock as S, resolveDynamicComponent as z, createCommentVNode as N, toDisplayString as L, onMounted as ee, createElementVNode as c, createVNode as G, renderSlot as X, withCtx as Z, computed as F, Fragment as $, renderList as j, createTextVNode as ce, onUnmounted as Oe, onUpdated as Ae, normalizeStyle as J, onBeforeUnmount as Ne, getCurrentInstance as te, withDirectives as se, vModelSelect as Le, withModifiers as Ee, vModelDynamic as pe, vModelText as ve, Teleport as Fe, Transition as _e, vShow as De } 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
+ HEIGHT: {
157
+ FULL: "tide-height-full"
158
+ },
159
+ LIST_BULLETS: {
160
+ OFF: "tide-list-none"
161
+ },
162
+ MARGIN: {
163
+ BOTTOM: {
164
+ FOUR: "tide-margin-bottom-4",
165
+ HALF: "tide-margin-bottom-1/2",
166
+ ONE: "tide-margin-bottom-1",
167
+ QUARTER: "tide-margin-bottom-1/4",
168
+ TWO: "tide-margin-bottom-2"
169
+ },
170
+ FULL: {
171
+ FOUR: "tide-margin-4",
172
+ HALF: "tide-margin-1/2",
173
+ ONE: "tide-margin-1",
174
+ QUARTER: "tide-margin-1/4",
175
+ TWO: "tide-margin-2"
176
+ },
177
+ LEFT: {
178
+ AUTO: "tide-margin-left-auto",
179
+ FOUR: "tide-margin-left-4",
180
+ HALF: "tide-margin-left-1/2",
181
+ ONE: "tide-margin-left-1",
182
+ QUARTER: "tide-margin-left-1/4",
183
+ TWO: "tide-margin-left-2"
184
+ },
185
+ RIGHT: {
186
+ AUTO: "tide-margin-right-auto",
187
+ FOUR: "tide-margin-right-4",
188
+ HALF: "tide-margin-right-1/2",
189
+ ONE: "tide-margin-right-1",
190
+ QUARTER: "tide-margin-right-1/4",
191
+ TWO: "tide-margin-right-2"
192
+ },
193
+ TOP: {
194
+ FOUR: "tide-margin-top-4",
195
+ HALF: "tide-margin-top-1/2",
196
+ ONE: "tide-margin-top-1",
197
+ QUARTER: "tide-margin-top-1/4",
198
+ TWO: "tide-margin-top-2"
199
+ },
200
+ X: {
201
+ AUTO: "tide-margin-x-auto",
202
+ FOUR: "tide-margin-x-4",
203
+ HALF: "tide-margin-x-1/2",
204
+ ONE: "tide-margin-x-1",
205
+ QUARTER: "tide-margin-x-1/4",
206
+ TWO: "tide-margin-x-2"
207
+ },
208
+ Y: {
209
+ FOUR: "tide-margin-y-4",
210
+ HALF: "tide-margin-y-1/2",
211
+ ONE: "tide-margin-y-1",
212
+ QUARTER: "tide-margin-y-1/4",
213
+ TWO: "tide-margin-y-2"
214
+ }
215
+ },
216
+ OBJECT: {
217
+ CENTER: "tide-object-center",
218
+ CONTAIN: "tide-object-contain",
219
+ COVER: "tide-object-cover",
220
+ SCALE_DOWN: "tide-object-scale-down"
221
+ },
222
+ OVERFLOW: {
223
+ X: {
224
+ AUTO: "tide-x-auto",
225
+ HIDDEN: "tide-x-hidden",
226
+ SCROLL: "tide-x-scroll"
227
+ },
228
+ XY: {
229
+ AUTO: "tide-xy-auto",
230
+ HIDDEN: "tide-xy-hidden"
231
+ },
232
+ Y: {
233
+ AUTO: "tide-y-auto",
234
+ HIDDEN: "tide-y-hidden"
235
+ }
236
+ },
237
+ PADDING: {
238
+ BOTTOM: {
239
+ FOUR: "tide-padding-bottom-4",
240
+ HALF: "tide-padding-bottom-1/2",
241
+ ONE: "tide-padding-bottom-1",
242
+ QUARTER: "tide-padding-bottom-1/4",
243
+ TWO: "tide-padding-bottom-2"
244
+ },
245
+ FULL: {
246
+ FOUR: "tide-padding-4",
247
+ HALF: "tide-padding-1/2",
248
+ ONE: "tide-padding-1",
249
+ QUARTER: "tide-padding-1/4",
250
+ TWO: "tide-padding-2"
251
+ },
252
+ LEFT: {
253
+ FOUR: "tide-padding-left-4",
254
+ HALF: "tide-padding-left-1/2",
255
+ ONE: "tide-padding-left-1",
256
+ QUARTER: "tide-padding-left-1/4",
257
+ TWO: "tide-padding-left-2"
258
+ },
259
+ RIGHT: {
260
+ FOUR: "tide-padding-right-4",
261
+ HALF: "tide-padding-right-1/2",
262
+ ONE: "tide-padding-right-1",
263
+ QUARTER: "tide-padding-right-1/4",
264
+ TWO: "tide-padding-right-2"
265
+ },
266
+ TOP: {
267
+ FOUR: "tide-padding-top-4",
268
+ HALF: "tide-padding-top-1/2",
269
+ ONE: "tide-padding-top-1",
270
+ QUARTER: "tide-padding-top-1/4",
271
+ TWO: "tide-padding-top-2"
272
+ },
273
+ X: {
274
+ FOUR: "tide-padding-x-4",
275
+ HALF: "tide-padding-x-1/2",
276
+ ONE: "tide-padding-x-1",
277
+ QUARTER: "tide-padding-x-1/4",
278
+ TWO: "tide-padding-x-2"
279
+ },
280
+ Y: {
281
+ FOUR: "tide-padding-y-4",
282
+ HALF: "tide-padding-y-1/2",
283
+ ONE: "tide-padding-y-1",
284
+ QUARTER: "tide-padding-y-1/4",
285
+ TWO: "tide-padding-y-2"
286
+ }
287
+ },
288
+ POINTER_EVENTS: {
289
+ OFF: "tide-pointer-events-none",
290
+ ON: "tide-pointer-events"
291
+ },
292
+ POSITION: {
293
+ ABSOLUTE: "tide-position-absolute",
294
+ FIXED: "tide-position-fixed",
295
+ RELATIVE: "tide-position-relative",
296
+ STICKY: "tide-sticky"
297
+ },
298
+ POSITIONING: {
299
+ BOTTOM_0: "tide-bottom-0",
300
+ LEFT_0: "tide-left-0",
301
+ RIGHT_0: "tide-right-0",
302
+ TOP_0: "tide-top-0"
303
+ },
304
+ SCROLLBAR: {
305
+ OFF: "tide-scrollbar-none"
306
+ },
307
+ SHADOW: {
308
+ BOTTOM: "tide-shadow-bottom",
309
+ TOP: "tide-shadow-top"
310
+ },
311
+ SNAP: {
312
+ ON: "tide-snap"
313
+ },
314
+ SNAP_ALIGN: {
315
+ START: "tide-snap-start"
316
+ },
317
+ TEXT_TRANSFORM: {
318
+ LOWER: "tide-text-transform-lower",
319
+ NONE: "tide-text-transform-none",
320
+ UPPER: "tide-text-transform-upper"
321
+ },
322
+ UNDERLINE: {
323
+ HOVER: "tide-underline-hover",
324
+ OFF: "tide-underline-none",
325
+ ON: "tide-underline"
326
+ },
327
+ VISIBILITY: {
328
+ OFF: "tide-visible-none",
329
+ ON: "tide-visible"
330
+ },
331
+ WHITESPACE_WRAP: {
332
+ OFF: "tide-whitespace-nowrap"
333
+ },
334
+ WIDTH: {
335
+ FULL: "tide-width-full",
336
+ MAX_FULL: "tide-max-width-full"
337
+ }
338
+ };
339
+ 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;
340
+ const de = {
341
+ __name: "TideDivider",
342
+ setup(n) {
343
+ return (s, a) => (l(), r("div", {
344
+ class: i([t(e).BORDER.COLOR.LOW, t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE])
345
+ }, null, 2));
346
+ }
347
+ }, Se = (n, s) => {
348
+ const a = n[s];
349
+ return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((o, d) => {
350
+ (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
351
+ });
352
+ }, y = {
353
+ LARGE: "large",
354
+ SMALL: "small"
355
+ }, fe = (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, Ue = ["data-icon"], me = /* @__PURE__ */ v({
356
+ __name: "TideIcon",
357
+ props: {
358
+ icon: {},
359
+ size: { default: y.SMALL }
360
+ },
361
+ setup(n) {
362
+ const s = n, a = A();
363
+ return Q(
364
+ () => s.icon,
365
+ () => {
366
+ const o = s.icon, d = fe(o), T = ue(() => Se(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.vue": () => import("./IconAccountBalance-8d60a762.js"), "../assets/svg/icons/IconAdd.vue": () => import("./IconAdd-41987be0.js"), "../assets/svg/icons/IconAi.vue": () => import("./IconAi-54c9f1f9.js"), "../assets/svg/icons/IconAlignSpace.vue": () => import("./IconAlignSpace-0dbce580.js"), "../assets/svg/icons/IconApplePay.vue": () => import("./IconApplePay-0aac1e20.js"), "../assets/svg/icons/IconArrowBack.vue": () => import("./IconArrowBack-942e8c4c.js"), "../assets/svg/icons/IconArrowForward.vue": () => import("./IconArrowForward-4b5bcc17.js"), "../assets/svg/icons/IconArrowRight.vue": () => import("./IconArrowRight-143abfe9.js"), "../assets/svg/icons/IconAssignment.vue": () => import("./IconAssignment-28546363.js"), "../assets/svg/icons/IconAwardStar.vue": () => import("./IconAwardStar-e260b61a.js"), "../assets/svg/icons/IconBookmark.vue": () => import("./IconBookmark-2df361a1.js"), "../assets/svg/icons/IconCalendarMonth.vue": () => import("./IconCalendarMonth-1331bb2e.js"), "../assets/svg/icons/IconCall.vue": () => import("./IconCall-bfb28d23.js"), "../assets/svg/icons/IconCheck.vue": () => import("./IconCheck-4f7c55bb.js"), "../assets/svg/icons/IconChevronLeft.vue": () => import("./IconChevronLeft-111444b3.js"), "../assets/svg/icons/IconChevronRight.vue": () => import("./IconChevronRight-f3e73764.js"), "../assets/svg/icons/IconClear.vue": () => import("./IconClear-7f6472ed.js"), "../assets/svg/icons/IconClose.vue": () => import("./IconClose-fe46270f.js"), "../assets/svg/icons/IconCycle.vue": () => import("./IconCycle-1c670925.js"), "../assets/svg/icons/IconDelete.vue": () => import("./IconDelete-40861e3a.js"), "../assets/svg/icons/IconDiamond.vue": () => import("./IconDiamond-92bc3c14.js"), "../assets/svg/icons/IconEdit.vue": () => import("./IconEdit-2ce79ec9.js"), "../assets/svg/icons/IconError.vue": () => import("./IconError-9d150afa.js"), "../assets/svg/icons/IconExpandContent.vue": () => import("./IconExpandContent-4611f59a.js"), "../assets/svg/icons/IconExpandLess.vue": () => import("./IconExpandLess-97dbbba2.js"), "../assets/svg/icons/IconExpandMore.vue": () => import("./IconExpandMore-74cf7746.js"), "../assets/svg/icons/IconFacebook.vue": () => import("./IconFacebook-5177a43e.js"), "../assets/svg/icons/IconFavorite.vue": () => import("./IconFavorite-b8b2232b.js"), "../assets/svg/icons/IconFavoriteFilled.vue": () => import("./IconFavoriteFilled-a03c18b0.js"), "../assets/svg/icons/IconFormatBold.vue": () => import("./IconFormatBold-fe01c0d0.js"), "../assets/svg/icons/IconFormatItalic.vue": () => import("./IconFormatItalic-2b3d0f32.js"), "../assets/svg/icons/IconFormatListBulleted.vue": () => import("./IconFormatListBulleted-9f4f5f29.js"), "../assets/svg/icons/IconForum.vue": () => import("./IconForum-ad13c05f.js"), "../assets/svg/icons/IconGoogle.vue": () => import("./IconGoogle-1661c713.js"), "../assets/svg/icons/IconGooglePay.vue": () => import("./IconGooglePay-c55f25e8.js"), "../assets/svg/icons/IconGrid.vue": () => import("./IconGrid-1a6868d2.js"), "../assets/svg/icons/IconHelp.vue": () => import("./IconHelp-1d25fcc1.js"), "../assets/svg/icons/IconInfo.vue": () => import("./IconInfo-25020d15.js"), "../assets/svg/icons/IconInsertText.vue": () => import("./IconInsertText-a93ea55d.js"), "../assets/svg/icons/IconInstagram.vue": () => import("./IconInstagram-393a91c5.js"), "../assets/svg/icons/IconIosShare.vue": () => import("./IconIosShare-10a2497c.js"), "../assets/svg/icons/IconLayout.vue": () => import("./IconLayout-b486c56c.js"), "../assets/svg/icons/IconLinkedIn.vue": () => import("./IconLinkedIn-ed3a304e.js"), "../assets/svg/icons/IconLocalShipping.vue": () => import("./IconLocalShipping-21673087.js"), "../assets/svg/icons/IconLock.vue": () => import("./IconLock-c7d18ae6.js"), "../assets/svg/icons/IconMail.vue": () => import("./IconMail-3a6fb81c.js"), "../assets/svg/icons/IconMenu.vue": () => import("./IconMenu-27e0ea03.js"), "../assets/svg/icons/IconMoreHoriz.vue": () => import("./IconMoreHoriz-97b1974a.js"), "../assets/svg/icons/IconNotifications.vue": () => import("./IconNotifications-11566098.js"), "../assets/svg/icons/IconOpenInNew.vue": () => import("./IconOpenInNew-e89309cc.js"), "../assets/svg/icons/IconPalette.vue": () => import("./IconPalette-7b39c00b.js"), "../assets/svg/icons/IconPaypal.vue": () => import("./IconPaypal-581e5de8.js"), "../assets/svg/icons/IconPerson.vue": () => import("./IconPerson-7b5fc958.js"), "../assets/svg/icons/IconPhotoCamera.vue": () => import("./IconPhotoCamera-dd25e6de.js"), "../assets/svg/icons/IconPinterest.vue": () => import("./IconPinterest-f8569b8c.js"), "../assets/svg/icons/IconPlayArrow.vue": () => import("./IconPlayArrow-a7538942.js"), "../assets/svg/icons/IconRemove.vue": () => import("./IconRemove-c19ef592.js"), "../assets/svg/icons/IconRoundedCorners.vue": () => import("./IconRoundedCorners-501a2efe.js"), "../assets/svg/icons/IconSearch.vue": () => import("./IconSearch-c2acd4ec.js"), "../assets/svg/icons/IconSell.vue": () => import("./IconSell-8a47939b.js"), "../assets/svg/icons/IconShare.vue": () => import("./IconShare-a8e26193.js"), "../assets/svg/icons/IconShoppingCart.vue": () => import("./IconShoppingCart-78a14827.js"), "../assets/svg/icons/IconSms.vue": () => import("./IconSms-3a93e423.js"), "../assets/svg/icons/IconStar.vue": () => import("./IconStar-8c8f1bb4.js"), "../assets/svg/icons/IconSwapVert.vue": () => import("./IconSwapVert-066694ed.js"), "../assets/svg/icons/IconThreeDRotation.vue": () => import("./IconThreeDRotation-7823ddb5.js"), "../assets/svg/icons/IconTune.vue": () => import("./IconTune-43f405a5.js"), "../assets/svg/icons/IconTwitter.vue": () => import("./IconTwitter-2bc0ee2b.js"), "../assets/svg/icons/IconVideocam.vue": () => import("./IconVideocam-7deb4ac7.js"), "../assets/svg/icons/IconViewInAr.vue": () => import("./IconViewInAr-bf12af3e.js"), "../assets/svg/icons/IconVisibility.vue": () => import("./IconVisibility-f6ca5bb6.js"), "../assets/svg/icons/IconWarning.vue": () => import("./IconWarning-7a1f76a9.js"), "../assets/svg/icons/IconYoutube.vue": () => import("./IconYoutube-6e789d14.js") }), `../assets/svg/icons/Icon${d}.vue`));
367
+ a.value = Re(T);
368
+ },
369
+ { immediate: !0 }
370
+ ), (o, d) => (l(), r("div", {
371
+ class: i(["tide-icon", s.size])
372
+ }, [
373
+ (l(), r("svg", {
374
+ class: i([t(e).DISPLAY.BLOCK]),
375
+ "data-icon": o.icon,
376
+ fill: "currentColor",
377
+ viewBox: "0 0 24 24",
378
+ xmlns: "http://www.w3.org/2000/svg"
379
+ }, [
380
+ a.value ? (l(), S(z(a.value), { key: 0 })) : N("", !0)
381
+ ], 10, Ue))
382
+ ], 2));
383
+ }
384
+ });
385
+ const C = (n, s) => {
386
+ const a = n.__vccOpts || n;
387
+ for (const [o, d] of s)
388
+ a[o] = d;
389
+ return a;
390
+ }, U = /* @__PURE__ */ C(me, [["__scopeId", "data-v-30daad21"]]), ge = /* @__PURE__ */ v({
391
+ __name: "TideIndicator",
392
+ props: {
393
+ label: { default: void 0 }
394
+ },
395
+ setup(n) {
396
+ const s = n;
397
+ return (a, o) => (l(), r("div", {
398
+ class: i([
399
+ s.label ? "tide-indicator-label" : "tide-indicator",
400
+ "border-white",
401
+ t(e).BG.SURFACE.ACCENT,
402
+ t(e).BORDER.FULL.ONE,
403
+ t(e).BORDER.RADIUS.FULL,
404
+ s.label ? [t(e).POSITION.RELATIVE, t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT] : []
405
+ ])
406
+ }, [
407
+ s.label ? (l(), r("div", {
408
+ key: 0,
409
+ class: i([
410
+ t(e).POSITION.ABSOLUTE,
411
+ t(e).POSITIONING.TOP_0,
412
+ t(e).DISPLAY.FLEX,
413
+ t(e).AXIS1.CENTER,
414
+ t(e).AXIS2.CENTER,
415
+ t(e).WIDTH.FULL,
416
+ t(e).HEIGHT.FULL
417
+ ])
418
+ }, L(s.label), 3)) : N("", !0)
419
+ ], 2));
420
+ }
421
+ });
422
+ const Ce = /* @__PURE__ */ C(ge, [["__scopeId", "data-v-b3905972"]]), _ = {
423
+ ACCOUNT_BALANCE: "account-balance",
424
+ ADD: "add",
425
+ AI: "ai",
426
+ ALIGN_SPACE: "align-space",
427
+ APPLE_PAY: "apple-pay",
428
+ ARROW_BACK: "arrow-back",
429
+ ARROW_FORWARD: "arrow-forward",
430
+ ARROW_RIGHT: "arrow-right",
431
+ ASSIGNMENT: "assignment",
432
+ AWARD_STAR: "award-star",
433
+ BOOKMARK: "bookmark",
434
+ CALENDAR_MONTH: "calendar-month",
435
+ CALL: "call",
436
+ CHECK: "check",
437
+ CHEVRON_LEFT: "chevron-left",
438
+ CHEVRON_RIGHT: "chevron-right",
439
+ CLEAR: "clear",
440
+ CLOSE: "close",
441
+ CYCLE: "cycle",
442
+ DELETE: "delete",
443
+ DIAMOND: "diamond",
444
+ EDIT: "edit",
445
+ ERROR: "error",
446
+ EXPAND_CONTENT: "expand-content",
447
+ EXPAND_LESS: "expand-less",
448
+ EXPAND_MORE: "expand-more",
449
+ FACEBOOK: "facebook",
450
+ FAVORITE: "favorite",
451
+ FAVORITE_FILLED: "favorite-filled",
452
+ FORMAT_BOLD: "format-bold",
453
+ FORMAT_ITALIC: "format-italic",
454
+ FORMAT_LIST_BULLETED: "format-list-bulleted",
455
+ FORUM: "forum",
456
+ GOOGLE: "google",
457
+ GOOGLE_PAY: "google-pay",
458
+ GRID: "grid",
459
+ HELP: "help",
460
+ INFO: "info",
461
+ INSERT_TEXT: "insert-text",
462
+ INSTAGRAM: "instagram",
463
+ IOS_SHARE: "ios-share",
464
+ LAYOUT: "layout",
465
+ LINKED_IN: "linked in",
466
+ LOCAL_SHIPPING: "local-shipping",
467
+ LOCK: "lock",
468
+ MAIL: "mail",
469
+ MENU: "menu",
470
+ MORE_HORIZ: "more-horiz",
471
+ NOTIFICATIONS: "notifications",
472
+ OPEN_IN_NEW: "open-in-new",
473
+ PALETTE: "palette",
474
+ PAYPAL: "paypal",
475
+ PERSON: "person",
476
+ PHOTO_CAMERA: "photo-camera",
477
+ PINTEREST: "pinterest",
478
+ PLAY_ARROW: "play-arrow",
479
+ REMOVE: "remove",
480
+ ROUNDED_CORNERS: "rounded-corners",
481
+ SEARCH: "search",
482
+ SELL: "sell",
483
+ SHARE: "share",
484
+ SHOPPING_CART: "shopping-cart",
485
+ SMS: "sms",
486
+ STAR: "star",
487
+ SWAP_VERT: "swap-vert",
488
+ THREE_D_ROTATION: "three-d-rotation",
489
+ TUNE: "tune",
490
+ TWITTER: "twitter",
491
+ VIDEOCAM: "videocam",
492
+ VIEW_IN_AR: "view-in-ar",
493
+ VISIBILITY: "visibility",
494
+ WARNING: "warning",
495
+ YOUTUBE: "youtube"
496
+ }, Pe = { class: "tide-accordion-item" }, Ge = /* @__PURE__ */ v({
497
+ __name: "TideAccordionItem",
498
+ props: {
499
+ hasBottomDivider: {
500
+ default: !1,
501
+ required: !1,
502
+ type: Boolean
503
+ },
504
+ hasTopDivider: {
505
+ default: !1,
506
+ required: !1,
507
+ type: Boolean
508
+ },
509
+ isActive: {
510
+ default: !1,
511
+ required: !1,
512
+ type: Boolean
513
+ },
514
+ isExpandedInitial: {
515
+ default: !1,
516
+ required: !1,
517
+ type: Boolean
518
+ },
519
+ isOptional: {
520
+ default: !1,
521
+ required: !1,
522
+ type: Boolean
523
+ },
524
+ label: {
525
+ default: "",
526
+ required: !0,
527
+ type: String
528
+ }
529
+ },
530
+ setup(n) {
531
+ const s = n, a = A(s.isExpandedInitial);
532
+ let o = A();
533
+ const d = () => {
534
+ const T = o.value;
535
+ a.value = !a.value, T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
536
+ };
537
+ return ee(() => {
538
+ const T = o.value;
539
+ T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
540
+ }), (T, I) => (l(), r("div", Pe, [
541
+ s.hasTopDivider ? (l(), S(de, { key: 0 })) : N("", !0),
542
+ c("div", {
543
+ class: i(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
544
+ onClick: d
545
+ }, [
546
+ c("div", {
547
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
548
+ }, [
549
+ c("span", null, L(s.label), 1),
550
+ s.isOptional ? (l(), r("span", {
551
+ key: 0,
552
+ class: i([t(e).FONT.COLOR.SURFACE.VARIANT])
553
+ }, " (optional) ", 2)) : N("", !0),
554
+ s.isActive ? (l(), S(Ce, { key: 1 })) : N("", !0)
555
+ ], 2),
556
+ G(U, {
557
+ icon: a.value ? t(_).EXPAND_LESS : t(_).EXPAND_MORE
558
+ }, null, 8, ["icon"])
559
+ ], 2),
560
+ c("div", {
561
+ class: i(["tide-accordion-body", t(e).DISPLAY.GRID]),
562
+ ref_key: "accordionBody",
563
+ ref: o
564
+ }, [
565
+ c("div", {
566
+ class: i([t(e).OVERFLOW.Y.HIDDEN])
567
+ }, [
568
+ c("div", {
569
+ class: i([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
570
+ }, [
571
+ X(T.$slots, "default", {}, void 0, !0)
572
+ ], 2)
573
+ ], 2)
574
+ ], 2),
575
+ s.hasBottomDivider ? (l(), S(de, { key: 1 })) : N("", !0)
576
+ ]));
577
+ }
578
+ });
579
+ const Dt = /* @__PURE__ */ C(Ge, [["__scopeId", "data-v-ad283103"]]), D = {
580
+ BUTTON: "button",
581
+ LINK: "a"
582
+ }, x = {
583
+ BUTTON: "button",
584
+ DIV: "div",
585
+ LINK: "a"
586
+ }, w = {
587
+ PRIMARY: "primary",
588
+ SECONDARY: "secondary",
589
+ TERTIARY: "tertiary",
590
+ QUATERNARY: "quaternary",
591
+ FLOATING: "floating"
592
+ }, W = {
593
+ BLANK: "_blank",
594
+ SELF: void 0
595
+ }, q = /* @__PURE__ */ v({
596
+ __name: "TideButtonIcon",
597
+ props: {
598
+ disabled: { type: Boolean, default: !1 },
599
+ element: { default: D.BUTTON },
600
+ href: { default: void 0 },
601
+ icon: { default: void 0 },
602
+ isNewTab: { type: Boolean, default: !1 },
603
+ priority: { default: w.PRIMARY }
604
+ },
605
+ setup(n) {
606
+ const s = n;
607
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? "a" : "button"), {
608
+ "aria-label": s.icon,
609
+ class: i([
610
+ s.element === t(D).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
611
+ s.priority && s.priority,
612
+ [t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
613
+ s.element === t(D).LINK ? [t(e).UNDERLINE.OFF] : ""
614
+ ]),
615
+ disabled: s.element === t(D).BUTTON && s.disabled,
616
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
617
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
618
+ }, {
619
+ default: Z(() => [
620
+ s.icon ? (l(), S(U, {
621
+ key: 0,
622
+ icon: s.icon,
623
+ size: t(y).LARGE
624
+ }, null, 8, ["icon", "size"])) : N("", !0)
625
+ ]),
626
+ _: 1
627
+ }, 8, ["aria-label", "class", "disabled", "href", "target"]));
628
+ }
629
+ }), H = {
630
+ ERROR: "error",
631
+ INFO: "info",
632
+ SUCCESS: "success",
633
+ WARNING: "warning"
634
+ }, he = /* @__PURE__ */ v({
635
+ __name: "TideAlert",
636
+ props: {
637
+ heading: { default: void 0 },
638
+ isToast: { type: Boolean, default: !1 },
639
+ type: { default: H.INFO }
640
+ },
641
+ setup(n) {
642
+ const s = n, a = F(() => {
643
+ let o = _.VIEW_IN_AR;
644
+ switch (s.type) {
645
+ case H.ERROR:
646
+ o = _.ERROR;
647
+ break;
648
+ default:
649
+ case H.INFO:
650
+ o = _.INFO;
651
+ break;
652
+ case H.SUCCESS:
653
+ o = _.CHECK;
654
+ break;
655
+ case H.WARNING:
656
+ o = _.WARNING;
657
+ break;
658
+ }
659
+ return o;
660
+ });
661
+ return (o, d) => (l(), r("div", {
662
+ class: i([
663
+ s.type,
664
+ "tide-alert",
665
+ t(e).DISPLAY.GRID,
666
+ t(e).BORDER.RADIUS.HALF,
667
+ t(e).PADDING.FULL.ONE,
668
+ s.type === t(H).ERROR && t(e).BG.SURFACE.ERROR,
669
+ s.type === t(H).INFO && t(e).BG.SURFACE.INFO,
670
+ s.type === t(H).SUCCESS && t(e).BG.SURFACE.SUCCESS,
671
+ s.type === t(H).WARNING && t(e).BG.SURFACE.WARNING,
672
+ s.isToast ? t(e).SHADOW.BOTTOM : ""
673
+ ])
674
+ }, [
675
+ c("div", {
676
+ class: i(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
677
+ }, [
678
+ G(U, {
679
+ class: i([
680
+ s.type,
681
+ t(e).BORDER.RADIUS.FULL,
682
+ t(e).PADDING.FULL.HALF,
683
+ t(e).FONT.COLOR.SURFACE.INVERSE,
684
+ s.type === t(H).ERROR && t(e).BG.ERROR,
685
+ s.type === t(H).INFO && t(e).BG.INFO,
686
+ s.type === t(H).SUCCESS && t(e).BG.SUCCESS,
687
+ s.type === t(H).WARNING && t(e).BG.WARNING
688
+ ]),
689
+ icon: a.value
690
+ }, null, 8, ["class", "icon"])
691
+ ], 2),
692
+ c("div", {
693
+ class: i(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
694
+ }, [
695
+ c("h2", {
696
+ class: i([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
697
+ }, L(s.heading), 3)
698
+ ], 2),
699
+ G(q, {
700
+ class: i(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
701
+ icon: t(_).CLOSE,
702
+ priority: t(w).QUATERNARY,
703
+ "aria-label": "Close alert"
704
+ }, null, 8, ["class", "icon", "priority"]),
705
+ c("div", {
706
+ class: i(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
707
+ }, [
708
+ X(o.$slots, "default", {}, void 0, !0)
709
+ ], 2)
710
+ ], 2));
711
+ }
712
+ });
713
+ const St = /* @__PURE__ */ C(he, [["__scopeId", "data-v-279a5605"]]), ft = /* @__PURE__ */ v({
714
+ __name: "TideBadge",
715
+ props: {
716
+ label: {}
717
+ },
718
+ setup(n) {
719
+ const s = n;
720
+ return (a, o) => (l(), r("div", {
721
+ class: i([
722
+ "tide-badge",
723
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
724
+ t(e).BG.SURFACE.FLOATING,
725
+ t(e).DISPLAY.INLINE_FLEX,
726
+ t(e).AXIS2.CENTER,
727
+ t(e).GAP.QUARTER,
728
+ t(e).BORDER.RADIUS.QUARTER,
729
+ t(e).PADDING.Y.QUARTER,
730
+ t(e).PADDING.X.HALF,
731
+ t(e).FONT.SIZE.FOURTEEN
732
+ ])
733
+ }, L(s.label), 3));
734
+ }
735
+ }), Ut = /* @__PURE__ */ v({
736
+ __name: "TideBadgePremium",
737
+ props: {
738
+ label: {}
739
+ },
740
+ setup(n) {
741
+ const s = n;
742
+ return (a, o) => (l(), r("div", {
743
+ class: i([
744
+ "tide-badge",
745
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
746
+ t(e).BG.SURFACE.VARIANT,
747
+ t(e).DISPLAY.INLINE_FLEX,
748
+ t(e).GAP.QUARTER,
749
+ t(e).BORDER.RADIUS.QUARTER,
750
+ t(e).PADDING.Y.QUARTER,
751
+ t(e).PADDING.X.HALF,
752
+ t(e).FONT.SIZE.TWELVE
753
+ ])
754
+ }, L(s.label), 3));
755
+ }
756
+ }), mt = {
757
+ JUST_LISTED: "Just listed",
758
+ NATIONWIDE: "Nationwide",
759
+ REDUCED: "Reduced",
760
+ UPDATED: "Updated"
761
+ }, gt = {
762
+ PREMIUM: "Premium",
763
+ PREMIUM_SELECT: "Premium SELECT"
764
+ }, be = {
765
+ YEARS_10: "10",
766
+ YEARS_15: "15",
767
+ YEARS_5: "5"
768
+ }, He = {
769
+ class: /* @__PURE__ */ i([])
770
+ }, Ct = /* @__PURE__ */ v({
771
+ __name: "TideBadgeTrustedPartner",
772
+ props: {
773
+ years: { default: be.YEARS_5 }
774
+ },
775
+ setup(n) {
776
+ const s = n;
777
+ return (a, o) => (l(), r("div", {
778
+ class: i([
779
+ "tide-badge-trusted-partner",
780
+ t(e).FONT.COLOR.SURFACE.BRAND,
781
+ t(e).DISPLAY.INLINE_FLEX,
782
+ t(e).AXIS2.CENTER,
783
+ t(e).GAP.QUARTER,
784
+ t(e).PADDING.Y.QUARTER,
785
+ t(e).PADDING.X.HALF,
786
+ t(e).FONT.SIZE.FOURTEEN
787
+ ])
788
+ }, [
789
+ G(U, {
790
+ icon: t(_).VIEW_IN_AR
791
+ }, null, 8, ["icon"]),
792
+ c("div", He, [
793
+ c("span", null, L(s.years) + " year trusted partner", 1)
794
+ ])
795
+ ], 2));
796
+ }
797
+ }), ye = ["data-track", "href"], Be = ["data-track"], Xe = { key: 0 }, Pt = /* @__PURE__ */ v({
798
+ __name: "TideBreadCrumbs",
799
+ props: {
800
+ breadCrumbs: {
801
+ default: void 0,
802
+ required: !0,
803
+ type: Object
804
+ }
805
+ },
806
+ setup(n) {
807
+ const s = n;
808
+ return (a, o) => (l(), r("ul", {
809
+ class: i(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
810
+ }, [
811
+ (l(!0), r($, null, j(s.breadCrumbs, (d, T) => (l(), r($, {
812
+ key: d.label
813
+ }, [
814
+ c("li", {
815
+ class: i([t(e).FONT.SIZE.FOURTEEN])
816
+ }, [
817
+ d.url ? (l(), r("a", {
818
+ key: 0,
819
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
820
+ "data-track": d.dataTrack || void 0,
821
+ href: d.url
822
+ }, L(d.label), 11, ye)) : (l(), r("span", {
823
+ key: 1,
824
+ class: i([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
825
+ "data-track": d.dataTrack || void 0
826
+ }, L(d.label), 11, Be))
827
+ ], 2),
828
+ s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), r("li", Xe, [
829
+ G(U, {
830
+ icon: t(_).ARROW_RIGHT,
831
+ size: t(y).SMALL
832
+ }, null, 8, ["icon", "size"])
833
+ ])) : N("", !0)
834
+ ], 64))), 128))
835
+ ], 2));
836
+ }
837
+ }), Gt = /* @__PURE__ */ v({
838
+ __name: "TideButton",
839
+ props: {
840
+ disabled: { type: Boolean, default: !1 },
841
+ element: { default: D.BUTTON },
842
+ href: { default: void 0 },
843
+ iconLeading: { default: void 0 },
844
+ iconTrailing: { default: void 0 },
845
+ isNewTab: { type: Boolean, default: !1 },
846
+ label: { default: void 0 },
847
+ priority: { default: w.PRIMARY }
848
+ },
849
+ setup(n) {
850
+ const s = n;
851
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
852
+ class: i([
853
+ s.element === t(D).LINK ? "tide-link-as-button" : "tide-button",
854
+ s.priority && s.priority,
855
+ s.element === t(D).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
856
+ [t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).BORDER.RADIUS.HALF],
857
+ s.element === t(D).LINK ? t(e).UNDERLINE.OFF : "",
858
+ t(e).PADDING.Y.ONE,
859
+ t(e).PADDING.X.TWO,
860
+ t(e).FONT.WEIGHT.SIX_HUNDRED
861
+ ]),
862
+ disabled: s.element === t(D).BUTTON && s.disabled,
863
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
864
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
865
+ }, {
866
+ default: Z(() => [
867
+ s.iconLeading ? (l(), S(U, {
868
+ key: 0,
869
+ icon: s.iconLeading,
870
+ size: t(y).LARGE
871
+ }, null, 8, ["icon", "size"])) : N("", !0),
872
+ ce(" " + L(s.label) + " ", 1),
873
+ s.iconTrailing ? (l(), S(U, {
874
+ key: 1,
875
+ icon: s.iconTrailing,
876
+ size: t(y).LARGE
877
+ }, null, 8, ["icon", "size"])) : N("", !0)
878
+ ]),
879
+ _: 1
880
+ }, 8, ["class", "disabled", "href", "target"]));
881
+ }
882
+ }), We = /* @__PURE__ */ v({
883
+ __name: "TideButtonPagination",
884
+ props: {
885
+ disabled: { type: Boolean, default: !1 },
886
+ element: { default: x.BUTTON },
887
+ href: { default: void 0 },
888
+ label: { default: void 0 }
889
+ },
890
+ setup(n) {
891
+ const s = n;
892
+ return (a, o) => (l(), S(z(
893
+ s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
894
+ ), {
895
+ class: i([
896
+ s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
897
+ [t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
898
+ s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
899
+ s.element === t(x).DIV ? [t(e).CURSOR.POINTER] : "",
900
+ [t(e).FONT.WEIGHT.SEVEN_HUNDRED]
901
+ ]),
902
+ disabled: s.element === t(x).BUTTON && s.disabled,
903
+ href: s.element === t(x).LINK && s.href ? s.href : void 0
904
+ }, {
905
+ default: Z(() => [
906
+ c("span", {
907
+ class: i(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
908
+ }, L(s.label), 3)
909
+ ]),
910
+ _: 1
911
+ }, 8, ["class", "disabled", "href"]));
912
+ }
913
+ });
914
+ const Me = /* @__PURE__ */ C(We, [["__scopeId", "data-v-0710b4ab"]]), ht = /* @__PURE__ */ v({
915
+ __name: "TideCard",
916
+ setup(n) {
917
+ return (s, a) => (l(), r("div", {
918
+ class: i([
919
+ "tide-card",
920
+ t(e).HEIGHT.FULL,
921
+ t(e).BORDER.RADIUS.HALF,
922
+ t(e).BG.SURFACE.DEFAULT,
923
+ t(e).SHADOW.BOTTOM,
924
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
925
+ t(e).SNAP_ALIGN.START
926
+ ])
927
+ }, [
928
+ X(s.$slots, "default")
929
+ ], 2));
930
+ }
931
+ }), re = 16, bt = /* @__PURE__ */ v({
932
+ __name: "TideCarousel",
933
+ props: {
934
+ isTouchscreen: { type: Boolean },
935
+ offsetX: { default: 0 }
936
+ },
937
+ emits: ["change"],
938
+ setup(n, { emit: s }) {
939
+ const a = n;
940
+ let o = A(), d = A(), T = A(), I = A();
941
+ const E = A(), O = A(), p = A(), u = A(0), g = () => {
942
+ const R = Array.from(E.value.children).map((P) => P.offsetLeft);
943
+ if (R.length === 0)
944
+ return;
945
+ const f = R.reduce((P, V) => Math.abs(V - O.value.scrollLeft) < Math.abs(P - O.value.scrollLeft) ? V : P);
946
+ u.value = R.indexOf(f);
947
+ }, h = () => {
948
+ o.value = E.value.scrollWidth, d.value = O.value.clientWidth, T.value = o.value > d.value, I.value = O.value.scrollWidth - O.value.clientWidth, p.value = T.value && !a.isTouchscreen, g();
949
+ }, M = () => {
950
+ h();
951
+ }, Y = (R) => {
952
+ O.value.scrollTo({
953
+ behavior: "smooth",
954
+ left: E.value.children[R].offsetLeft
955
+ });
956
+ }, k = () => {
957
+ const R = E.value.scrollWidth, f = O.value.scrollLeft + O.value.clientWidth;
958
+ if (f > R)
959
+ O.value.scrollTo({
960
+ behavior: "smooth",
961
+ left: R
962
+ });
963
+ else {
964
+ const P = a.offsetX && u.value === 0, ae = f === R ? 0 : P ? 2 : u.value + 1;
965
+ Y(ae);
966
+ }
967
+ }, b = () => {
968
+ const R = a.offsetX ? 1 : 0, f = u.value - 1 === R, V = u.value <= R ? E.value.children.length - 1 : f ? 0 : u.value - 1;
969
+ Y(V);
970
+ };
971
+ return window.addEventListener("resize", h), ee(() => {
972
+ h();
973
+ }), Oe(() => {
974
+ window.removeEventListener("resize", h);
975
+ }), Ae(() => {
976
+ h();
977
+ }), Q(u, () => {
978
+ s("change", u.value);
979
+ }), (R, f) => (l(), r("section", {
980
+ class: i(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
981
+ ref: "carouselRef"
982
+ }, [
983
+ c("div", {
984
+ class: i([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
985
+ ref_key: "frameRef",
986
+ ref: O,
987
+ onScroll: M
988
+ }, [
989
+ c("ul", {
990
+ class: i([a.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
991
+ ref_key: "contentRef",
992
+ ref: E
993
+ }, [
994
+ a.offsetX ? (l(), r("li", {
995
+ key: 0,
996
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
997
+ style: J({ width: `${a.offsetX - re}px` })
998
+ }, null, 6)) : N("", !0),
999
+ X(R.$slots, "default"),
1000
+ a.offsetX ? (l(), r("li", {
1001
+ key: 1,
1002
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1003
+ style: J({ width: `${a.offsetX - re}px` })
1004
+ }, null, 6)) : N("", !0)
1005
+ ], 2)
1006
+ ], 34),
1007
+ p.value ? (l(), r("div", {
1008
+ key: 0,
1009
+ class: i([
1010
+ t(e).POSITION.ABSOLUTE,
1011
+ t(e).DISPLAY.FLEX,
1012
+ t(e).AXIS1.BETWEEN,
1013
+ t(e).AXIS2.CENTER,
1014
+ t(e).WIDTH.FULL,
1015
+ t(e).HEIGHT.FULL,
1016
+ t(e).POINTER_EVENTS.OFF
1017
+ ])
1018
+ }, [
1019
+ G(q, {
1020
+ class: i([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
1021
+ icon: t(_).CHEVRON_LEFT,
1022
+ priority: t(w).QUATERNARY,
1023
+ onClick: b
1024
+ }, null, 8, ["class", "icon", "priority"]),
1025
+ G(q, {
1026
+ class: i([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
1027
+ icon: t(_).CHEVRON_RIGHT,
1028
+ priority: t(w).QUATERNARY,
1029
+ onClick: k
1030
+ }, null, 8, ["class", "icon", "priority"])
1031
+ ], 2)) : N("", !0)
1032
+ ], 2));
1033
+ }
1034
+ }), Ye = ["href", "target"], ke = /* @__PURE__ */ v({
1035
+ __name: "TideChipAction",
1036
+ props: {
1037
+ href: {},
1038
+ isNewTab: { type: Boolean, default: !1 },
1039
+ label: {}
1040
+ },
1041
+ setup(n) {
1042
+ const s = n;
1043
+ return (a, o) => (l(), r("a", {
1044
+ class: i([
1045
+ "tide-chip-action",
1046
+ t(e).AXIS2.CENTER,
1047
+ t(e).GAP.HALF,
1048
+ t(e).BORDER.FULL.ONE,
1049
+ t(e).BORDER.RADIUS.FULL,
1050
+ t(e).PADDING.X.ONE,
1051
+ t(e).PADDING.Y.HALF,
1052
+ t(e).BG.SURFACE.DEFAULT,
1053
+ t(e).FONT.SIZE.FOURTEEN,
1054
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1055
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1056
+ t(e).UNDERLINE.OFF
1057
+ ]),
1058
+ href: s.href,
1059
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1060
+ }, [
1061
+ G(U, {
1062
+ icon: t(_).SEARCH
1063
+ }, null, 8, ["icon"]),
1064
+ c("span", null, L(s.label), 1)
1065
+ ], 10, Ye));
1066
+ }
1067
+ });
1068
+ const Ht = /* @__PURE__ */ C(ke, [["__scopeId", "data-v-99f83e8d"]]), Ve = /* @__PURE__ */ v({
1069
+ __name: "TideChipFilter",
1070
+ props: {
1071
+ isActive: { type: Boolean },
1072
+ label: {}
1073
+ },
1074
+ setup(n) {
1075
+ const s = n;
1076
+ return (a, o) => (l(), r("button", {
1077
+ class: i([
1078
+ "tide-chip-filter",
1079
+ s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
1080
+ t(e).DISPLAY.FLEX,
1081
+ t(e).AXIS2.CENTER,
1082
+ t(e).GAP.HALF,
1083
+ t(e).BORDER.FULL.ONE,
1084
+ t(e).BORDER.RADIUS.FULL,
1085
+ t(e).PADDING.X.ONE,
1086
+ t(e).PADDING.Y.HALF,
1087
+ t(e).FONT.SIZE.FOURTEEN,
1088
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1089
+ s.isActive ? "active" : ""
1090
+ ])
1091
+ }, [
1092
+ X(a.$slots, "default", {}, void 0, !0),
1093
+ c("div", {
1094
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
1095
+ }, [
1096
+ c("span", {
1097
+ class: i([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
1098
+ }, L(s.label), 3)
1099
+ ], 2)
1100
+ ], 2));
1101
+ }
1102
+ });
1103
+ const yt = /* @__PURE__ */ C(Ve, [["__scopeId", "data-v-c07faf14"]]), xe = /* @__PURE__ */ v({
1104
+ __name: "TideChipInput",
1105
+ props: {
1106
+ label: {}
1107
+ },
1108
+ setup(n) {
1109
+ const s = n;
1110
+ return (a, o) => (l(), r("button", {
1111
+ class: i([
1112
+ "tide-chip-input",
1113
+ t(e).BG.SURFACE.VARIANT,
1114
+ t(e).FONT.COLOR.SURFACE,
1115
+ t(e).DISPLAY.FLEX,
1116
+ t(e).AXIS2.CENTER,
1117
+ t(e).GAP.HALF,
1118
+ t(e).BORDER.FULL.ONE,
1119
+ t(e).BORDER.RADIUS.FULL,
1120
+ t(e).PADDING.X.ONE,
1121
+ t(e).PADDING.Y.HALF,
1122
+ t(e).FONT.SIZE.FOURTEEN,
1123
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1124
+ ])
1125
+ }, [
1126
+ c("span", null, L(s.label), 1),
1127
+ G(U, {
1128
+ icon: t(_).CLOSE
1129
+ }, null, 8, ["icon"])
1130
+ ], 2));
1131
+ }
1132
+ });
1133
+ const Bt = /* @__PURE__ */ C(xe, [["__scopeId", "data-v-62b9f1c0"]]), we = { class: "tide-columns" }, $e = { class: "tide-columns-column" }, Qe = { class: "tide-columns-column" }, Ke = { class: "tide-columns-column" }, qe = { class: "tide-columns-column" }, ze = /* @__PURE__ */ v({
1134
+ __name: "TideColumns",
1135
+ props: {
1136
+ heading: { default: "" }
1137
+ },
1138
+ setup(n) {
1139
+ const s = n;
1140
+ return (a, o) => (l(), r("section", we, [
1141
+ c("h2", {
1142
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1143
+ }, L(s.heading), 3),
1144
+ c("ul", {
1145
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1146
+ }, [
1147
+ c("li", $e, [
1148
+ X(a.$slots, "section1", {}, void 0, !0)
1149
+ ]),
1150
+ c("li", Qe, [
1151
+ X(a.$slots, "section2", {}, void 0, !0)
1152
+ ]),
1153
+ c("li", Ke, [
1154
+ X(a.$slots, "section3", {}, void 0, !0)
1155
+ ]),
1156
+ c("li", qe, [
1157
+ X(a.$slots, "section4", {}, void 0, !0)
1158
+ ])
1159
+ ], 2)
1160
+ ]));
1161
+ }
1162
+ });
1163
+ const Xt = /* @__PURE__ */ C(ze, [["__scopeId", "data-v-14ad0455"]]), Ze = ["alt", "src"], Wt = /* @__PURE__ */ v({
1164
+ __name: "TideImage",
1165
+ props: {
1166
+ alt: { default: "" },
1167
+ cdn: { default: void 0 },
1168
+ isLazy: { type: Boolean, default: !0 },
1169
+ offset: { default: 0 },
1170
+ src: { default: void 0 }
1171
+ },
1172
+ setup(n, { expose: s }) {
1173
+ const a = n, o = A(), d = `${a.cdn}/image-coming-soon-512.png`, T = () => {
1174
+ if (a.src) {
1175
+ const p = new Image();
1176
+ p.onload = E, p.onerror = I, p.src = a.src;
1177
+ }
1178
+ }, I = () => {
1179
+ o.value.src = d;
1180
+ }, E = () => {
1181
+ o.value.src = a.src;
1182
+ };
1183
+ s(o.value);
1184
+ const O = new IntersectionObserver((p, u) => {
1185
+ p.forEach(
1186
+ (g) => {
1187
+ g.isIntersecting && (T(), u.unobserve(g.target));
1188
+ },
1189
+ {
1190
+ rootMargin: `${a.offset}px`
1191
+ }
1192
+ );
1193
+ });
1194
+ return ee(() => {
1195
+ a.isLazy ? O.observe(o.value) : T();
1196
+ }), Ne(() => {
1197
+ O.unobserve(o.value);
1198
+ }), (p, u) => (l(), r("img", {
1199
+ alt: p.alt,
1200
+ class: i(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
1201
+ ref_key: "tideImage",
1202
+ ref: o,
1203
+ src: p.isLazy && p.src ? p.src : d
1204
+ }, null, 10, Ze));
1205
+ }
1206
+ }), je = ["checked", "id"], Je = ["for"], et = /* @__PURE__ */ v({
1207
+ __name: "TideInputRadio",
1208
+ props: {
1209
+ checked: { type: Boolean, default: !1 },
1210
+ dataTrack: { default: "" },
1211
+ disabled: { type: Boolean, default: !1 },
1212
+ inputId: { default: void 0 },
1213
+ label: { default: void 0 },
1214
+ name: {}
1215
+ },
1216
+ setup(n) {
1217
+ const s = n, a = A(s.checked), o = F(() => {
1218
+ var d;
1219
+ return s.inputId ? s.inputId : `text-input-${((d = te()) == null ? void 0 : d.uid) || ""}`;
1220
+ });
1221
+ return Q(s, (d, T) => {
1222
+ (d.checked !== T.checked || d.checked !== a.value) && (a.value = s.checked);
1223
+ }), (d, T) => (l(), r("div", {
1224
+ class: i(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
1225
+ }, [
1226
+ c("input", {
1227
+ checked: a.value,
1228
+ class: i([t(e).DISPLAY.NONE]),
1229
+ id: o.value,
1230
+ name: "",
1231
+ type: "radio",
1232
+ value: ""
1233
+ }, null, 10, je),
1234
+ c("div", {
1235
+ class: i([
1236
+ "tide-input-radio-custom",
1237
+ t(e).POSITION.RELATIVE,
1238
+ t(e).DISPLAY.FLEX,
1239
+ t(e).AXIS1.CENTER,
1240
+ t(e).AXIS2.CENTER,
1241
+ t(e).BORDER.FULL.ONE,
1242
+ a.value ? t(e).BORDER.COLOR.HIGH : t(e).BORDER.COLOR.DEFAULT,
1243
+ t(e).BORDER.RADIUS.FULL,
1244
+ a.value && "checked"
1245
+ ])
1246
+ }, [
1247
+ c("div", {
1248
+ class: i(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
1249
+ }, null, 2)
1250
+ ], 2),
1251
+ c("label", {
1252
+ class: i(t(e).FONT.WEIGHT.FOUR_HUNDRED),
1253
+ for: o.value
1254
+ }, L(s.label), 11, Je)
1255
+ ], 2));
1256
+ }
1257
+ });
1258
+ const Mt = /* @__PURE__ */ C(et, [["__scopeId", "data-v-c820007d"]]), Te = "Please enter a valid value.", oe = (n, s) => typeof n == "string" && n.length > 0 ? n : typeof s == "string" && s.length > 0 ? s : Te, ne = (n, s) => n !== !1 || s !== !1, tt = ({ maxlength: n, minlength: s, value: a }) => {
1259
+ const o = n && a.length > n, d = s && a.length < s;
1260
+ return !o && !d;
1261
+ }, Ie = ({
1262
+ error: n,
1263
+ errorFromProps: s,
1264
+ maxlength: a,
1265
+ minlength: o,
1266
+ validators: d,
1267
+ value: T
1268
+ }) => {
1269
+ if (n.value = s || !1, !n.value && d) {
1270
+ const I = at(T.value, d);
1271
+ I.valid || (n.value = I.message);
1272
+ }
1273
+ if (!n.value && (a || o)) {
1274
+ const I = st({
1275
+ maxlength: a,
1276
+ minlength: o,
1277
+ value: T.value
1278
+ });
1279
+ I.valid || (n.value = I.message);
1280
+ }
1281
+ }, st = ({ maxlength: n, minlength: s, value: a }) => {
1282
+ const o = {
1283
+ message: "",
1284
+ valid: !0
1285
+ };
1286
+ return o.valid = tt({
1287
+ maxlength: n,
1288
+ minlength: s,
1289
+ value: a
1290
+ }), o.valid || (o.message = Te, 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;
1291
+ };
1292
+ function at(n, s) {
1293
+ for (const a of s) {
1294
+ const o = a(n);
1295
+ if (!o.valid)
1296
+ return o;
1297
+ }
1298
+ return {
1299
+ message: "",
1300
+ valid: !0
1301
+ };
1302
+ }
1303
+ const it = ["for"], ot = ["disabled", "name", "required", "id"], nt = ["selected", "value"], lt = /* @__PURE__ */ v({
1304
+ __name: "TideInputSelect",
1305
+ props: {
1306
+ inputId: { default: void 0 },
1307
+ supportingText: { default: void 0 },
1308
+ options: {},
1309
+ disabled: { type: Boolean, default: !1 },
1310
+ error: { type: [String, Boolean], default: !1 },
1311
+ label: { default: void 0 },
1312
+ name: {},
1313
+ required: { type: Boolean, default: !1 },
1314
+ value: { default: "" }
1315
+ },
1316
+ setup(n, { expose: s }) {
1317
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.required), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required ? `${a.label} *` : a.label), u = F(() => a.required && !E.value || ne(o.value, a.error)), g = F(() => d.value || !h.value), h = F(() => E.value === ""), M = F(() => {
1318
+ var R;
1319
+ return a.inputId ? a.inputId : `text-input-${((R = te()) == null ? void 0 : R.uid) || ""}`;
1320
+ }), Y = () => {
1321
+ var f;
1322
+ const R = new MouseEvent("mousedown");
1323
+ (f = T == null ? void 0 : T.value) == null || f.dispatchEvent(R);
1324
+ }, k = () => {
1325
+ d.value = !0;
1326
+ }, b = () => {
1327
+ d.value = !1;
1328
+ };
1329
+ return Q(a, (R, f) => {
1330
+ (R.value !== f.value || R.value !== E.value) && (E.value = a.value);
1331
+ }), s({ error: o, value: E }), (R, f) => (l(), r("div", {
1332
+ class: i([
1333
+ "tide-input-select",
1334
+ t(e).DISPLAY.FLEX,
1335
+ t(e).FLEX.DIRECTION.COLUMN,
1336
+ t(e).GAP.QUARTER,
1337
+ R.disabled && "disabled",
1338
+ u.value && "error"
1339
+ ])
1340
+ }, [
1341
+ c("div", {
1342
+ class: i([
1343
+ "tide-input-border",
1344
+ t(e).POSITION.RELATIVE,
1345
+ t(e).DISPLAY.FLEX,
1346
+ t(e).AXIS2.CENTER,
1347
+ t(e).GAP.HALF,
1348
+ t(e).BORDER.RADIUS.HALF,
1349
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : "",
1350
+ t(e).OVERFLOW.XY.HIDDEN
1351
+ ]),
1352
+ onClick: Y
1353
+ }, [
1354
+ c("div", {
1355
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
1356
+ }, [
1357
+ R.label ? (l(), r("label", {
1358
+ key: 0,
1359
+ class: i([
1360
+ g.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1361
+ t(e).POSITION.ABSOLUTE,
1362
+ t(e).POSITIONING.LEFT_0,
1363
+ t(e).MARGIN.TOP.HALF,
1364
+ t(e).MARGIN.LEFT.ONE,
1365
+ !u.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1366
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1367
+ ]),
1368
+ for: M.value
1369
+ }, L(p.value), 11, it)) : N("", !0),
1370
+ se(c("select", {
1371
+ class: i([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, R.disabled && t(e).CURSOR.NOT_ALLOWED]),
1372
+ disabled: R.disabled,
1373
+ name: R.name,
1374
+ ref_key: "input",
1375
+ ref: T,
1376
+ required: I.value,
1377
+ onFocus: k,
1378
+ onFocusout: b,
1379
+ id: M.value,
1380
+ "onUpdate:modelValue": f[0] || (f[0] = (P) => E.value = P)
1381
+ }, [
1382
+ (l(!0), r($, null, j(R.options, (P) => (l(), r("option", {
1383
+ class: i([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
1384
+ key: P.value,
1385
+ selected: E.value === P.value ? !0 : void 0,
1386
+ value: P.value
1387
+ }, L(P.label), 11, nt))), 128))
1388
+ ], 42, ot), [
1389
+ [Le, E.value]
1390
+ ])
1391
+ ], 2),
1392
+ G(U, {
1393
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
1394
+ icon: t(_).EXPAND_MORE,
1395
+ size: t(y).SMALL
1396
+ }, null, 8, ["class", "icon", "size"])
1397
+ ], 2),
1398
+ a.supportingText || u.value ? (l(), r("div", {
1399
+ key: 0,
1400
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1401
+ }, [
1402
+ u.value ? (l(), S(U, {
1403
+ key: 0,
1404
+ class: i([]),
1405
+ icon: t(_).ERROR,
1406
+ size: t(y).SMALL
1407
+ }, null, 8, ["icon", "size"])) : N("", !0),
1408
+ c("div", {
1409
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1410
+ }, L(u.value ? O.value : a.supportingText), 3)
1411
+ ], 2)) : N("", !0)
1412
+ ], 2));
1413
+ }
1414
+ });
1415
+ const Yt = /* @__PURE__ */ C(lt, [["__scopeId", "data-v-c500c562"]]), K = {
1416
+ DATE: "date",
1417
+ DATETIME_LOCAL: "datetime-local",
1418
+ EMAIL: "email",
1419
+ MONTH: "month",
1420
+ NUMBER: "number",
1421
+ PASSWORD: "password",
1422
+ SEARCH: "search",
1423
+ TEL: "tel",
1424
+ TEXT: "text",
1425
+ TIME: "time",
1426
+ URL: "url",
1427
+ WEEK: "week"
1428
+ }, dt = ["for"], rt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], ct = /* @__PURE__ */ v({
1429
+ __name: "TideInputText",
1430
+ props: {
1431
+ autocomplete: { type: Boolean, default: !1 },
1432
+ dataTrack: { default: "" },
1433
+ disabled: { type: Boolean, default: !1 },
1434
+ error: { type: [String, Boolean], default: !1 },
1435
+ hasClear: { type: Boolean, default: !1 },
1436
+ iconLeading: { default: void 0 },
1437
+ inputId: { default: void 0 },
1438
+ label: { default: void 0 },
1439
+ maxlength: { default: void 0 },
1440
+ minlength: { default: void 0 },
1441
+ name: {},
1442
+ prefix: { default: void 0 },
1443
+ required: { type: Boolean, default: !1 },
1444
+ suffix: { default: void 0 },
1445
+ supportingText: { default: void 0 },
1446
+ transformValue: { type: Function, default: void 0 },
1447
+ type: { default: K.TEXT },
1448
+ validators: { default: void 0 },
1449
+ value: { default: "" }
1450
+ },
1451
+ setup(n, { expose: s }) {
1452
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(!1), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required && a.label ? `${a.label} *` : a.label), u = 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(
1453
+ () => a.type === K.PASSWORD && I.value === !0 ? K.TEXT : a.type
1454
+ ), k = F(() => {
1455
+ var m;
1456
+ return a.inputId ? a.inputId : `text-input-${((m = te()) == null ? void 0 : m.uid) || ""}`;
1457
+ }), b = () => {
1458
+ var m;
1459
+ E.value = "", (m = T.value) == null || m.focus();
1460
+ }, R = () => {
1461
+ d.value = !0;
1462
+ }, f = () => {
1463
+ d.value = !1, V();
1464
+ }, P = () => {
1465
+ var m;
1466
+ if (a.transformValue) {
1467
+ const B = ((m = E.value.match(/\d/g)) == null ? void 0 : m.join("")) || void 0;
1468
+ E.value = B ? a.transformValue(B) : "";
1469
+ }
1470
+ }, V = () => {
1471
+ Ie({
1472
+ error: o,
1473
+ errorFromProps: a.error,
1474
+ maxlength: a.maxlength,
1475
+ minlength: a.minlength,
1476
+ validators: a.validators,
1477
+ value: E
1478
+ });
1479
+ }, ae = (m) => {
1480
+ E.value = m;
1481
+ };
1482
+ return Q(
1483
+ a,
1484
+ (m, B) => {
1485
+ (m.value !== B.value || m.value !== E.value) && (E.value = a.value);
1486
+ },
1487
+ { deep: !0 }
1488
+ ), s({ error: o, updateValue: ae, value: E }), (m, B) => (l(), r("div", {
1489
+ class: i([
1490
+ "tide-input-text",
1491
+ t(e).DISPLAY.FLEX,
1492
+ t(e).FLEX.DIRECTION.COLUMN,
1493
+ t(e).GAP.QUARTER,
1494
+ m.disabled && "disabled",
1495
+ g.value && "error"
1496
+ ])
1497
+ }, [
1498
+ c("div", {
1499
+ class: i([
1500
+ "tide-input-border",
1501
+ t(e).DISPLAY.FLEX,
1502
+ t(e).AXIS2.CENTER,
1503
+ t(e).GAP.HALF,
1504
+ t(e).POSITION.RELATIVE,
1505
+ t(e).BORDER.RADIUS.HALF,
1506
+ u.value ? [t(e).PADDING.RIGHT.HALF, t(e).PADDING.LEFT.ONE] : [t(e).PADDING.X.ONE],
1507
+ t(e).PADDING.Y.HALF,
1508
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : t(e).CURSOR.TEXT
1509
+ ])
1510
+ }, [
1511
+ a.iconLeading ? (l(), S(U, {
1512
+ key: 0,
1513
+ icon: a.iconLeading,
1514
+ size: t(y).SMALL
1515
+ }, null, 8, ["icon", "size"])) : N("", !0),
1516
+ c("div", {
1517
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1518
+ }, [
1519
+ a.prefix ? (l(), r("div", {
1520
+ key: 0,
1521
+ class: i(["tide-input-text-prefix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1522
+ }, L(a.prefix), 3)) : N("", !0),
1523
+ c("div", {
1524
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
1525
+ onClick: B[1] || (B[1] = Ee((ie) => {
1526
+ var le;
1527
+ return (le = T.value) == null ? void 0 : le.focus();
1528
+ }, ["prevent"]))
1529
+ }, [
1530
+ m.label ? (l(), r("label", {
1531
+ key: 0,
1532
+ class: i([
1533
+ h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1534
+ !g.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1535
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1536
+ t(e).CURSOR.TEXT
1537
+ ]),
1538
+ for: k.value
1539
+ }, L(p.value), 11, dt)) : N("", !0),
1540
+ se(c("input", {
1541
+ autocomplete: m.autocomplete ? "on" : "off",
1542
+ class: i([t(e).WIDTH.FULL, m.disabled && t(e).CURSOR.NOT_ALLOWED]),
1543
+ "data-track": a.dataTrack,
1544
+ disabled: a.disabled,
1545
+ maxlength: a.maxlength,
1546
+ minlength: a.minlength,
1547
+ name: a.name,
1548
+ ref_key: "input",
1549
+ ref: T,
1550
+ required: a.required,
1551
+ type: Y.value,
1552
+ onChange: V,
1553
+ onFocus: R,
1554
+ onFocusout: f,
1555
+ onInput: P,
1556
+ id: k.value,
1557
+ "onUpdate:modelValue": B[0] || (B[0] = (ie) => E.value = ie)
1558
+ }, null, 42, rt), [
1559
+ [pe, E.value]
1560
+ ])
1561
+ ], 2),
1562
+ a.suffix ? (l(), r("div", {
1563
+ key: 1,
1564
+ class: i(["tide-input-text-suffix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1565
+ }, L(a.suffix), 3)) : N("", !0)
1566
+ ], 2),
1567
+ u.value && a.type !== t(K).PASSWORD ? (l(), S(U, {
1568
+ key: 1,
1569
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1570
+ icon: t(_).CLOSE,
1571
+ size: t(y).SMALL,
1572
+ onClick: b
1573
+ }, null, 8, ["class", "icon", "size"])) : N("", !0),
1574
+ a.type === t(K).PASSWORD ? (l(), S(U, {
1575
+ key: 2,
1576
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1577
+ icon: t(_).VISIBILITY,
1578
+ size: t(y).SMALL,
1579
+ onClick: B[2] || (B[2] = (ie) => I.value = !I.value)
1580
+ }, null, 8, ["class", "icon", "size"])) : N("", !0)
1581
+ ], 2),
1582
+ a.supportingText || g.value ? (l(), r("div", {
1583
+ key: 0,
1584
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1585
+ }, [
1586
+ g.value ? (l(), S(U, {
1587
+ key: 0,
1588
+ class: i([]),
1589
+ icon: t(_).ERROR,
1590
+ size: t(y).SMALL
1591
+ }, null, 8, ["icon", "size"])) : N("", !0),
1592
+ c("div", {
1593
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1594
+ }, L(g.value ? O.value : a.supportingText), 3)
1595
+ ], 2)) : N("", !0)
1596
+ ], 2));
1597
+ }
1598
+ });
1599
+ const kt = /* @__PURE__ */ C(ct, [["__scopeId", "data-v-b8328f68"]]), Et = ["for"], Tt = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], It = /* @__PURE__ */ v({
1600
+ __name: "TideInputTextarea",
1601
+ props: {
1602
+ dataTrack: { default: "" },
1603
+ error: { type: [String, Boolean], default: !1 },
1604
+ inputId: { default: void 0 },
1605
+ label: { default: void 0 },
1606
+ maxlength: { default: void 0 },
1607
+ minlength: { default: void 0 },
1608
+ name: { default: void 0 },
1609
+ required: { type: Boolean, default: !1 },
1610
+ rows: { default: 8 },
1611
+ supportingText: { default: void 0 },
1612
+ value: { default: "" }
1613
+ },
1614
+ setup(n, { expose: s }) {
1615
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.value), E = F(() => oe(a.error, o.value)), O = F(() => a.required ? `${a.label} *` : a.label), p = F(() => a.required && !I.value || ne(o.value, a.error)), u = F(() => d.value || !g.value), g = F(() => I.value === ""), h = F(() => {
1616
+ var b;
1617
+ return a.inputId ? a.inputId : `text-input-${((b = te()) == null ? void 0 : b.uid) || ""}`;
1618
+ }), M = () => {
1619
+ d.value = !0;
1620
+ }, Y = () => {
1621
+ d.value = !1;
1622
+ }, k = () => Ie({
1623
+ error: o,
1624
+ errorFromProps: a.error,
1625
+ maxlength: a.maxlength,
1626
+ minlength: a.minlength,
1627
+ value: I
1628
+ });
1629
+ return Q(a, (b, R) => {
1630
+ (b.value !== R.value || b.value !== I.value) && (I.value = a.value);
1631
+ }), s({ error: o, value: I }), (b, R) => (l(), r("div", {
1632
+ class: i(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, p.value && "error"])
1633
+ }, [
1634
+ c("div", {
1635
+ class: i([
1636
+ "tide-input-textarea-field",
1637
+ t(e).GAP.HALF,
1638
+ t(e).POSITION.RELATIVE,
1639
+ t(e).BORDER.RADIUS.HALF,
1640
+ t(e).PADDING.LEFT.ONE,
1641
+ t(e).PADDING.TOP.HALF,
1642
+ t(e).OVERFLOW.XY.HIDDEN
1643
+ ])
1644
+ }, [
1645
+ b.label ? (l(), r("label", {
1646
+ key: 0,
1647
+ class: i([
1648
+ u.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1649
+ !p.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1650
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1651
+ t(e).CURSOR.TEXT
1652
+ ]),
1653
+ for: h.value,
1654
+ ref: "label"
1655
+ }, L(O.value), 11, Et)) : N("", !0),
1656
+ se(c("textarea", {
1657
+ class: i([t(e).WIDTH.FULL]),
1658
+ "data-track": a.dataTrack,
1659
+ maxlength: a.maxlength,
1660
+ minlength: a.minlength,
1661
+ name: a.name,
1662
+ ref_key: "input",
1663
+ ref: T,
1664
+ required: a.required,
1665
+ rows: a.rows,
1666
+ onChange: k,
1667
+ onFocus: M,
1668
+ onFocusout: Y,
1669
+ id: h.value,
1670
+ "onUpdate:modelValue": R[0] || (R[0] = (f) => I.value = f)
1671
+ }, null, 42, Tt), [
1672
+ [ve, I.value]
1673
+ ])
1674
+ ], 2),
1675
+ a.supportingText || p.value ? (l(), r("div", {
1676
+ key: 0,
1677
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1678
+ }, [
1679
+ p.value ? (l(), S(U, {
1680
+ key: 0,
1681
+ icon: t(_).ERROR,
1682
+ size: t(y).SMALL
1683
+ }, null, 8, ["icon", "size"])) : N("", !0),
1684
+ c("div", {
1685
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1686
+ }, L(p.value ? E.value : a.supportingText), 3)
1687
+ ], 2)) : N("", !0)
1688
+ ], 2));
1689
+ }
1690
+ });
1691
+ const Vt = /* @__PURE__ */ C(It, [["__scopeId", "data-v-022c8af4"]]), xt = /* @__PURE__ */ v({
1692
+ __name: "TideLink",
1693
+ props: {
1694
+ element: { default: D.LINK },
1695
+ href: { default: void 0 },
1696
+ iconLeading: { default: void 0 },
1697
+ iconTrailing: { default: void 0 },
1698
+ isNewTab: { type: Boolean, default: !1 },
1699
+ label: { default: void 0 }
1700
+ },
1701
+ setup(n) {
1702
+ const s = n, a = F(() => s.iconLeading || s.iconTrailing);
1703
+ return (o, d) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
1704
+ class: i([
1705
+ s.element === t(D).LINK ? "tide-button-as-link" : "tide-link",
1706
+ 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]
1707
+ ]),
1708
+ href: s.href,
1709
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1710
+ }, {
1711
+ default: Z(() => [
1712
+ s.iconLeading ? (l(), S(U, {
1713
+ key: 0,
1714
+ icon: s.iconLeading
1715
+ }, null, 8, ["icon"])) : N("", !0),
1716
+ a.value ? (l(), r("div", {
1717
+ key: 1,
1718
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
1719
+ }, L(s.label), 3)) : (l(), r($, { key: 2 }, [
1720
+ ce(L(s.label), 1)
1721
+ ], 64)),
1722
+ s.iconTrailing ? (l(), S(U, {
1723
+ key: 3,
1724
+ icon: s.iconTrailing
1725
+ }, null, 8, ["icon"])) : N("", !0)
1726
+ ]),
1727
+ _: 1
1728
+ }, 8, ["class", "href", "target"]));
1729
+ }
1730
+ }), ut = ["onClick"], Rt = /* @__PURE__ */ v({
1731
+ __name: "TideModal",
1732
+ props: {
1733
+ isOpen: { type: Boolean },
1734
+ modalStyle: {},
1735
+ style: {},
1736
+ title: {},
1737
+ width: {}
1738
+ },
1739
+ emits: ["close"],
1740
+ setup(n, { emit: s }) {
1741
+ const a = n, o = A(a.isOpen), d = A(null), T = (u) => {
1742
+ o.value = !1, I(), s("close", u);
1743
+ }, I = () => {
1744
+ o.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), O()) : (document.body.style.overflow = "", p());
1745
+ }, E = (u) => {
1746
+ u.key === "Escape" && (u.stopPropagation(), T(u));
1747
+ }, O = () => {
1748
+ window.addEventListener("keydown", E);
1749
+ }, p = () => {
1750
+ window.removeEventListener("keydown", E);
1751
+ };
1752
+ return ee(() => {
1753
+ I();
1754
+ }), Q(a, (u) => {
1755
+ o.value = u.isOpen, I();
1756
+ }), (u, g) => (l(), S(Fe, { to: "body" }, [
1757
+ G(_e, null, {
1758
+ default: Z(() => [
1759
+ se(c("div", {
1760
+ class: i([
1761
+ "tide-modal-wrapper",
1762
+ t(e).POSITION.ABSOLUTE,
1763
+ t(e).DISPLAY.FLEX,
1764
+ t(e).AXIS1.CENTER,
1765
+ t(e).AXIS2.CENTER,
1766
+ t(e).POSITIONING.TOP_0,
1767
+ t(e).POSITIONING.LEFT_0,
1768
+ t(e).WIDTH.FULL,
1769
+ t(e).HEIGHT.FULL
1770
+ ])
1771
+ }, [
1772
+ c("div", {
1773
+ class: i(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
1774
+ style: J({ "--tide-modal-width": a.width, ...u.style }),
1775
+ onClick: Ee(T, ["self"])
1776
+ }, null, 14, ut),
1777
+ c("div", {
1778
+ class: i([
1779
+ "tide-modal",
1780
+ t(e).BG.SURFACE.FLOATING,
1781
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1782
+ t(e).POSITION.ABSOLUTE,
1783
+ t(e).DISPLAY.FLEX,
1784
+ t(e).FLEX.DIRECTION.COLUMN,
1785
+ t(e).BORDER.RADIUS.HALF,
1786
+ t(e).OVERFLOW.XY.HIDDEN
1787
+ ]),
1788
+ style: J({ ...u.modalStyle })
1789
+ }, [
1790
+ c("header", {
1791
+ class: i(["modal-header", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).PADDING.X.TWO])
1792
+ }, [
1793
+ u.title ? (l(), r("div", {
1794
+ key: 0,
1795
+ class: i([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).ALIGN.X.CENTER, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
1796
+ }, L(u.title), 3)) : N("", !0),
1797
+ c("button", {
1798
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.TWO]),
1799
+ onClick: T,
1800
+ title: "Close"
1801
+ }, [
1802
+ G(U, {
1803
+ icon: t(_).CLOSE
1804
+ }, null, 8, ["icon"])
1805
+ ], 2)
1806
+ ], 2),
1807
+ c("div", {
1808
+ class: i(["model-content", t(e).OVERFLOW.Y.AUTO])
1809
+ }, [
1810
+ X(u.$slots, "default", {}, void 0, !0)
1811
+ ], 2),
1812
+ u.$slots.footer ? (l(), r("footer", {
1813
+ key: 0,
1814
+ class: i([
1815
+ "tide-bg-surface",
1816
+ t(e).POSITION.STICKY,
1817
+ t(e).POSITIONING.LEFT_0,
1818
+ t(e).POSITIONING.BOTTOM_0,
1819
+ t(e).DISPLAY.FLEX,
1820
+ t(e).AXIS1.END,
1821
+ t(e).GAP.ONE,
1822
+ t(e).PADDING.X.TWO,
1823
+ t(e).PADDING.Y.HALF
1824
+ ])
1825
+ }, [
1826
+ X(u.$slots, "footer", {}, void 0, !0)
1827
+ ], 2)) : N("", !0)
1828
+ ], 6)
1829
+ ], 2), [
1830
+ [De, o.value]
1831
+ ])
1832
+ ]),
1833
+ _: 3
1834
+ })
1835
+ ]));
1836
+ }
1837
+ });
1838
+ const wt = /* @__PURE__ */ C(Rt, [["__scopeId", "data-v-44481316"]]), $t = /* @__PURE__ */ v({
1839
+ __name: "TidePagination",
1840
+ props: {
1841
+ pageCurrent: { default: 1 },
1842
+ pageTotal: { default: 1 }
1843
+ },
1844
+ emits: ["change"],
1845
+ setup(n, { emit: s }) {
1846
+ const a = n, o = A(a.pageCurrent), d = F(() => new Array(a.pageTotal).fill("").map((I, E) => E + 1)), T = (I, E) => {
1847
+ o.value = E, s("change", I, E);
1848
+ };
1849
+ return (I, E) => (l(), r("section", {
1850
+ class: i(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1851
+ }, [
1852
+ G(q, {
1853
+ disabled: o.value === 1,
1854
+ icon: t(_).CHEVRON_LEFT,
1855
+ priority: t(w).QUATERNARY,
1856
+ onClick: E[0] || (E[0] = (O) => T(O, o.value - 1))
1857
+ }, null, 8, ["disabled", "icon", "priority"]),
1858
+ c("ul", {
1859
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
1860
+ }, [
1861
+ (l(!0), r($, null, j(d.value, (O) => (l(), r("li", { key: O }, [
1862
+ G(Me, {
1863
+ disabled: o.value === O,
1864
+ label: O,
1865
+ priority: t(w).QUATERNARY,
1866
+ onClick: (p) => T(p, O)
1867
+ }, null, 8, ["disabled", "label", "priority", "onClick"])
1868
+ ]))), 128))
1869
+ ], 2),
1870
+ G(q, {
1871
+ disabled: o.value === d.value[d.value.length - 1],
1872
+ icon: t(_).CHEVRON_RIGHT,
1873
+ priority: t(w).QUATERNARY,
1874
+ onClick: E[1] || (E[1] = (O) => T(O, o.value + 1))
1875
+ }, null, 8, ["disabled", "icon", "priority"])
1876
+ ], 2));
1877
+ }
1878
+ }), Ot = { class: "tide-seo-links" }, At = ["href", "target"], Nt = /* @__PURE__ */ v({
1879
+ __name: "TideSeoLinks",
1880
+ props: {
1881
+ heading: { default: "" },
1882
+ links: {}
1883
+ },
1884
+ setup(n) {
1885
+ const s = n;
1886
+ return (a, o) => (l(), r("section", Ot, [
1887
+ c("h2", {
1888
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1889
+ }, L(s.heading), 3),
1890
+ c("ul", {
1891
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1892
+ }, [
1893
+ (l(!0), r($, null, j(s.links, (d) => (l(), r("li", {
1894
+ class: i(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
1895
+ key: d.label
1896
+ }, [
1897
+ c("a", {
1898
+ class: i([t(e).UNDERLINE.OFF]),
1899
+ href: d.url,
1900
+ target: d.isNewTab ? t(W).BLANK : t(W).SELF
1901
+ }, L(d.label), 11, At)
1902
+ ], 2))), 128))
1903
+ ], 2)
1904
+ ]));
1905
+ }
1906
+ });
1907
+ const Qt = /* @__PURE__ */ C(Nt, [["__scopeId", "data-v-d62373f1"]]), Lt = ["data-track", "onClick"], pt = /* @__PURE__ */ v({
1908
+ __name: "TideTabs",
1909
+ props: {
1910
+ activeTabInitial: { default: 0 },
1911
+ tabs: {}
1912
+ },
1913
+ emits: ["change"],
1914
+ setup(n, { emit: s }) {
1915
+ const a = n, o = A(a.activeTabInitial), d = (T, I) => {
1916
+ o.value = I, s("change", T, I);
1917
+ };
1918
+ return (T, I) => (l(), r("div", {
1919
+ class: i([
1920
+ "tide-tabs",
1921
+ t(e).BG.SURFACE.VARIANT,
1922
+ t(e).DISPLAY.FLEX,
1923
+ t(e).GAP.QUARTER,
1924
+ t(e).BORDER.RADIUS.HALF,
1925
+ t(e).PADDING.FULL.QUARTER,
1926
+ t(e).OVERFLOW.XY.HIDDEN,
1927
+ t(e).WIDTH.FULL
1928
+ ])
1929
+ }, [
1930
+ (l(!0), r($, null, j(a.tabs, (E, O) => (l(), r("button", {
1931
+ class: i([
1932
+ "tide-tabs-tab",
1933
+ O === o.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
1934
+ t(e).FLEX.GROW.ON,
1935
+ t(e).BORDER.RADIUS.QUARTER,
1936
+ t(e).PADDING.Y.QUARTER,
1937
+ t(e).WIDTH.FULL,
1938
+ t(e).FONT.WEIGHT.SIX_HUNDRED,
1939
+ t(e).WHITESPACE_WRAP.OFF
1940
+ ]),
1941
+ "data-track": E.dataTrack || void 0,
1942
+ key: E.label,
1943
+ onClick: (p) => d(p, O)
1944
+ }, [
1945
+ c("span", {
1946
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1947
+ }, L(E.label), 3),
1948
+ E.count && E.count > 0 ? (l(), r("span", {
1949
+ key: 0,
1950
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1951
+ }, " (" + L(E.count) + ") ", 3)) : N("", !0)
1952
+ ], 10, Lt))), 128))
1953
+ ], 2));
1954
+ }
1955
+ });
1956
+ const Kt = /* @__PURE__ */ C(pt, [["__scopeId", "data-v-894fc638"]]), vt = ["disabled"], Ft = /* @__PURE__ */ v({
1957
+ __name: "TideToggle",
1958
+ props: {
1959
+ disabled: {
1960
+ default: !1,
1961
+ required: !1,
1962
+ type: Boolean
1963
+ },
1964
+ isActive: {
1965
+ required: !0,
1966
+ type: Boolean
1967
+ }
1968
+ },
1969
+ emits: ["change"],
1970
+ setup(n, { emit: s }) {
1971
+ const a = n, o = A(a.isActive), d = (T) => {
1972
+ a.disabled || (o.value = !o.value, s("change", T, o.value));
1973
+ };
1974
+ return (T, I) => (l(), r("button", {
1975
+ class: i([
1976
+ "tide-toggle",
1977
+ t(e).DISPLAY.FLEX,
1978
+ t(e).AXIS2.CENTER,
1979
+ t(e).BORDER.RADIUS.FULL,
1980
+ t(e).OVERFLOW.XY.HIDDEN,
1981
+ a.isActive ? t(e).BG.SECONDARY : t(e).BG.SURFACE.VARIANT
1982
+ ]),
1983
+ disabled: a.disabled,
1984
+ onClick: d,
1985
+ "aria-label": "Toggle"
1986
+ }, [
1987
+ c("div", {
1988
+ class: i([
1989
+ "tide-toggle-indicator",
1990
+ t(e).BG.SURFACE.DEFAULT,
1991
+ a.isActive ? "active" : "",
1992
+ t(e).POSITION.RELATIVE,
1993
+ t(e).BORDER.RADIUS.FULL,
1994
+ t(e).SHADOW.BOTTOM
1995
+ ])
1996
+ }, null, 2)
1997
+ ], 10, vt));
1998
+ }
1999
+ });
2000
+ const qt = /* @__PURE__ */ C(Ft, [["__scopeId", "data-v-2c5da028"]]), zt = {
2001
+ AERO: "aero",
2002
+ ATV: "atv",
2003
+ BOATMART: "boatmart",
2004
+ CYCLE: "cycle",
2005
+ EQUIP: "equip",
2006
+ PWC: "pwc",
2007
+ RV: "rv",
2008
+ SNOW: "snow",
2009
+ TRUCK: "truck"
2010
+ };
2011
+ export {
2012
+ H as A,
2013
+ mt as B,
2014
+ e as C,
2015
+ xt as D,
2016
+ D as E,
2017
+ wt as F,
2018
+ $t as G,
2019
+ Qt as H,
2020
+ _ as I,
2021
+ Kt as J,
2022
+ qt as K,
2023
+ w as P,
2024
+ zt as R,
2025
+ y as S,
2026
+ W as T,
2027
+ C as _,
2028
+ gt as a,
2029
+ be as b,
2030
+ x as c,
2031
+ Dt as d,
2032
+ St as e,
2033
+ ft as f,
2034
+ Ut as g,
2035
+ Ct as h,
2036
+ Pt as i,
2037
+ Gt as j,
2038
+ q as k,
2039
+ Me as l,
2040
+ ht as m,
2041
+ bt as n,
2042
+ Ht as o,
2043
+ yt as p,
2044
+ Bt as q,
2045
+ Xt as r,
2046
+ de as s,
2047
+ U as t,
2048
+ Wt as u,
2049
+ Ce as v,
2050
+ Mt as w,
2051
+ Yt as x,
2052
+ kt as y,
2053
+ Vt as z
2054
+ };
2055
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMTA0MmQ5M2IuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2dnbGUudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEVSUk9SOiAndGlkZS1iZy1lcnJvcicsXG4gICAgSU5GTzogJ3RpZGUtYmctaW5mbycsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1Y2Nlc3MnLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQUNDRU5UX1ZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50LXZhcmlhbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuICAgIH0sXG4gICAgV0FSTklORzogJ3RpZGUtYmctd2FybmluZycsXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIEJPVFRPTToge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgQ09MT1I6IHtcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ2luaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBGTEVYOiB7XG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUSUNLWTogJ3RpZGUtc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT01fMDogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlRfMDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVF8wOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1BfMDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgQ3NzVXRpbGl0eSA9ICh0eXBlb2YgQ1NTKVtrZXlvZiB0eXBlb2YgQ1NTXTtcblxuZXhwb3J0IGNvbnN0IGNzc1NvcnRPcmRlciA9IFtcbiAgQ1NTLkRJU1BMQVkuQkxPQ0ssXG4gIENTUy5ESVNQTEFZLkNPTlRFTlRTLFxuICBDU1MuRElTUExBWS5GTEVYLFxuICBDU1MuRElTUExBWS5HUklELFxuICBDU1MuRElTUExBWS5OT05FLFxuICBDU1MuRElTUExBWS5JTklUSUFMLFxuICBDU1MuRElTUExBWS5JTkxJTkUsXG4gIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gIENTUy5BWElTMS5BUk9VTkQsXG4gIENTUy5BWElTMS5CRVRXRUVOLFxuICBDU1MuQVhJUzEuQ0VOVEVSLFxuICBDU1MuQVhJUzEuRU5ELFxuICBDU1MuQVhJUzEuU1RBUlQsXG4gIENTUy5BWElTMi5BUk9VTkQsXG4gIENTUy5BWElTMi5DRU5URVIsXG4gIENTUy5BWElTMi5FTkQsXG4gIENTUy5BWElTMi5TVEFSVCxcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTl9SRVZFUlNFLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XX1JFVkVSU0UsXG4gIENTUy5HQVAuT05FLFxuICBDU1MuR0FQLkhBTEYsXG4gIENTUy5HQVAuUVVBUlRFUixcbiAgQ1NTLkdBUC5UV08sXG4gIENTUy5HQVAuRk9VUixcbiAgQ1NTLkZMRVguR1JPVy5PTixcbiAgQ1NTLkZMRVguR1JPVy5PRkYsXG4gIENTUy5GTEVYLlNIUklOSy5PTixcbiAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgQ1NTLkZMRVguV1JBUCxcbiAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICBDU1MuUE9TSVRJT04uRklYRUQsXG4gIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgQ1NTLlBPU0lUSU9OLlNUSUNLWSxcbiAgQ1NTLlBPU0lUSU9OSU5HLlRPUF8wLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCxcbiAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTV8wLFxuICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLk9ORSxcbiAgQ1NTLk1BUkdJTi5GVUxMLkhBTEYsXG4gIENTUy5NQVJHSU4uRlVMTC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkZVTEwuVFdPLFxuICBDU1MuTUFSR0lOLkZVTEwuRk9VUixcbiAgQ1NTLk1BUkdJTi5ZLk9ORSxcbiAgQ1NTLk1BUkdJTi5ZLkhBTEYsXG4gIENTUy5NQVJHSU4uWS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlkuVFdPLFxuICBDU1MuTUFSR0lOLlkuRk9VUixcbiAgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICBDU1MuTUFSR0lOLlRPUC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlRPUC5UV08sXG4gIENTUy5NQVJHSU4uVE9QLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULk9ORSxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGLFxuICBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICBDU1MuTUFSR0lOLlJJR0hULkZPVVIsXG4gIENTUy5NQVJHSU4uUklHSFQuQVVUTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uT05FLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5IQUxGLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5UV08sXG4gIENTUy5NQVJHSU4uQk9UVE9NLkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkZVTEwuVFdPLFxuICBDU1MuUEFERElORy5GVUxMLkZPVVIsXG4gIENTUy5QQURESU5HLlkuT05FLFxuICBDU1MuUEFERElORy5ZLkhBTEYsXG4gIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWS5UV08sXG4gIENTUy5QQURESU5HLlkuRk9VUixcbiAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gIENTUy5QQURESU5HLlRPUC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5UT1AuVFdPLFxuICBDU1MuUEFERElORy5UT1AuRk9VUixcbiAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gIENTUy5QQURESU5HLlguSEFMRixcbiAgQ1NTLlBBRERJTkcuWC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5YLlRXTyxcbiAgQ1NTLlBBRERJTkcuWC5GT1VSLFxuICBDU1MuUEFERElORy5SSUdIVC5PTkUsXG4gIENTUy5QQURESU5HLlJJR0hULkhBTEYsXG4gIENTUy5QQURESU5HLlJJR0hULlFVQVJURVIsXG4gIENTUy5QQURESU5HLlJJR0hULlRXTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuRk9VUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gIENTUy5QQURESU5HLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuUEFERElORy5CT1RUT00uVFdPLFxuICBDU1MuUEFERElORy5CT1RUT00uRk9VUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gIENTUy5QQURESU5HLkxFRlQuSEFMRixcbiAgQ1NTLlBBRERJTkcuTEVGVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5MRUZULlRXTyxcbiAgQ1NTLlBBRERJTkcuTEVGVC5GT1VSLFxuICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gIENTUy5XSURUSC5GVUxMLFxuICBDU1MuSEVJR0hULkZVTEwsXG4gIENTUy5BTElHTi5ZLk1JRERMRSxcbiAgQ1NTLkJSRUFLX1dPUkQsXG4gIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORSxcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbl07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gcHJvcHMuaWNvbiBhcyB1bmtub3duIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS52dWVgKSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemVdXCI+XG4gICAgPHN2Z1xuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPENvbXBvbmVudFxuICAgICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCBzdmcge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBREQ6ICdhZGQnLFxuICBBSTogJ2FpJyxcbiAgQUxJR05fU1BBQ0U6ICdhbGlnbi1zcGFjZScsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUk9VTkRFRF9DT1JORVJTOiAncm91bmRlZC1jb3JuZXJzJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTVM6ICdzbXMnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5kaWNhdG9yIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgaGFzQm90dG9tRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaGFzVG9wRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzRXhwYW5kZWRJbml0aWFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc09wdGlvbmFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgZGVmYXVsdDogJycsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gcmVmKHByb3BzLmlzRXhwYW5kZWRJbml0aWFsKTtcblxuICBsZXQgYWNjb3JkaW9uQm9keSA9IHJlZigpO1xuXG4gIGNvbnN0IHRvZ2dsZUlzRXhwYW5kZWQgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY29yZGlvbkJvZHkudmFsdWUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG5cbiAgICBlbGVtZW50LnN0eWxlLmdyaWRUZW1wbGF0ZVJvd3MgPSBpc0V4cGFuZGVkLnZhbHVlID8gJzFmcicgOiAnMGZyJztcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2NvcmRpb25Cb2R5LnZhbHVlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgZWxlbWVudC5zdHlsZS5ncmlkVGVtcGxhdGVSb3dzID0gaXNFeHBhbmRlZC52YWx1ZSA/ICcxZnInIDogJzBmcic7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJ0b2dnbGVJc0V4cGFuZGVkXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8VGlkZUluZGljYXRvciB2LWlmPVwicHJvcHMuaXNBY3RpdmVcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvbiA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBDU1MuRElTUExBWS5HUklEXVwiXG4gICAgICByZWY9XCJhY2NvcmRpb25Cb2R5XCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU5dXCI+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5WSUVXX0lOX0FSO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuU1VSRkFDRS5FUlJPUixcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVUkZBQ0UuU1VDQ0VTUyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLlNVUkZBQ0UuV0FSTklORyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBDU1MuU0hBRE9XLkJPVFRPTSA6ICcnLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaWNvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIHByb3BzLnR5cGUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5FUlJPUixcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5JTkZPLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVQ0NFU1MsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuV0FSTklORyxcbiAgICAgICAgXVwiXG4gICAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8aDIgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuU0lYVEVFTiwgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIj5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWxlcnQge1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAnaWNvbiBoZWFkaW5nIGNsb3NlJ1xuICAgICAgJy4gYm9keSAuJztcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XG4gICAgbWF4LXdpZHRoOiA0MHJlbTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEJBREdFID0ge1xuICBKVVNUX0xJU1RFRDogJ0p1c3QgbGlzdGVkJyxcbiAgTkFUSU9OV0lERTogJ05hdGlvbndpZGUnLFxuICBSRURVQ0VEOiAnUmVkdWNlZCcsXG4gIFVQREFURUQ6ICdVcGRhdGVkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9QUkVNSVVNID0ge1xuICBQUkVNSVVNOiAnUHJlbWl1bScsXG4gIFBSRU1JVU1fU0VMRUNUOiAnUHJlbWl1bSBTRUxFQ1QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2UgPSAodHlwZW9mIEJBREdFKVtrZXlvZiB0eXBlb2YgQkFER0VdO1xuZXhwb3J0IHR5cGUgQmFkZ2VQcmVtaXVtID0gKHR5cGVvZiBCQURHRV9QUkVNSVVNKVtrZXlvZiB0eXBlb2YgQkFER0VfUFJFTUlVTV07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBvZmZzZXRYPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0WDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGxldCBjb250ZW50V2lkdGggPSByZWYoKTtcbiAgbGV0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgbGV0IGhhc092ZXJmbG93ID0gcmVmKCk7XG4gIGxldCBsYXN0UG9zaXRpb24gPSByZWYoKTtcblxuICBjb25zdCBjb250ZW50UmVmID0gcmVmKCk7XG4gIGNvbnN0IGZyYW1lUmVmID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG4gIGNvbnN0IGN1cnJlbnRTbGlkZSA9IHJlZigwKTtcblxuICBjb25zdCBnYXAgPSAxNjtcblxuICAvKipcbiAgICogTWVhc3VyZSB0aGUgY3VycmVudCBzbGlkZSBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gICAqIHBvc2l0aW9uIG9mIHRoZSBmcmFtZS4gVGhlIGN1cnJlbnQgc2xpZGUgaXNcbiAgICogdGhlIHNsaWRlIHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgbGVmdCBlZGdlIG9mXG4gICAqIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IG1lYXN1cmVDdXJyZW50U2xpZGUgPSAoKSA9PiB7XG4gICAgLy8gZ2V0IGxlZnQgb2Zmc2V0cyBvZiBlYWNoIHNsaWRlXG4gICAgY29uc3Qgc2xpZGVPZmZzZXRzID0gQXJyYXkuZnJvbShjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuKS5tYXAoKHNsaWRlOiBhbnkpID0+IHNsaWRlLm9mZnNldExlZnQpO1xuXG4gICAgaWYgKHNsaWRlT2Zmc2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIGdldCB2YWx1ZSBjbG9zZXN0IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGN1cnIgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pO1xuXG4gICAgLy8gc2V0IGN1cnJlbnQgc2xpZGUgdG8gaW5kZXggb2YgY2xvc2VzdCBzbGlkZVxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250ZW50UmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBoYXNPdmVyZmxvdy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG4gICAgbGFzdFBvc2l0aW9uLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsV2lkdGggLSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGhhc092ZXJmbG93LnZhbHVlICYmICFwcm9wcy5pc1RvdWNoc2NyZWVuO1xuXG4gICAgbWVhc3VyZUN1cnJlbnRTbGlkZSgpO1xuICB9O1xuXG4gIC8vIFRPRE86IGRlYm91bmNlIHRoaXNcbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfTtcblxuICAvKipcbiAgICogU2Nyb2xscyB0byB0aGUgc2xpZGUgYXQgdGhlIGdpdmVuIGluZGV4LCBvclxuICAgKiB0byB0aGUgZmlyc3Qgb3IgbGFzdCBzbGlkZSBpZiB0aGUgZ2l2ZW4gaW5kZXhcbiAgICogaXMgb3V0IG9mIGJvdW5kcy5cbiAgICogQHBhcmFtIHNsaWRlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBzbGlkZSB0byBzY3JvbGwgdG9cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdpZHRoID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCArIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuXG4gICAgaWYgKGNvbnRlbnRSaWdodEVkZ2UgPiBjb250ZW50V2lkdGgpIHtcbiAgICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNGaXJzdFNsaWRlV2l0aE9mZnNldCA9IHByb3BzLm9mZnNldFggJiYgY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuICAgICAgY29uc3QgaXNMYXN0U2xpZGUgPSBjb250ZW50UmlnaHRFZGdlID09PSBjb250ZW50V2lkdGg7XG4gICAgICBjb25zdCBuZXh0U2xpZGUgPSBpc0xhc3RTbGlkZSA/IDAgOiBpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0ID8gMiA6IGN1cnJlbnRTbGlkZS52YWx1ZSArIDE7XG5cbiAgICAgIHNjcm9sbFRvU2xpZGUobmV4dFNsaWRlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZmlyc3RTbGlkZSA9IHByb3BzLm9mZnNldFggPyAxIDogMDtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgLSAxID09PSBmaXJzdFNsaWRlO1xuICAgIGNvbnN0IGlzU2Vjb25kU2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgPD0gZmlyc3RTbGlkZTtcbiAgICBjb25zdCBwcmV2aW91c1NsaWRlID0gaXNTZWNvbmRTbGlkZVxuICAgICAgPyBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgIDogaXNGaXJzdFNsaWRlXG4gICAgICA/IDBcbiAgICAgIDogY3VycmVudFNsaWRlLnZhbHVlIC0gMTtcblxuICAgIHNjcm9sbFRvU2xpZGUocHJldmlvdXNTbGlkZSk7XG4gIH07XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgY3VycmVudFNsaWRlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLlNDUk9MTEJBUi5PRkYsIENTUy5TTkFQLk9OLCBDU1MuT1ZFUkZMT1cuWC5TQ1JPTExdXCJcbiAgICAgIHJlZj1cImZyYW1lUmVmXCJcbiAgICAgIEBzY3JvbGw9XCJoYW5kbGVTY3JvbGxcIlxuICAgID5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbcHJvcHMuaXNUb3VjaHNjcmVlbiA/IFtDU1MuT1ZFUkZMT1cuWC5BVVRPXSA6ICcnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLk9ORSwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCJcbiAgICAgICAgcmVmPVwiY29udGVudFJlZlwiXG4gICAgICA+XG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c2xvdCAvPlxuXG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBdXCJcbiAgICAgIHYtaWY9XCJzaG93QnV0dG9uc1wiXG4gICAgPlxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvbkJlZm9yZVVubW91bnQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGNkbj86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGNkbjogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHRpZGVJbWFnZSA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9IGAke3Byb3BzLmNkbn0vaW1hZ2UtY29taW5nLXNvb24tNTEyLnBuZ2A7XG5cbiAgY29uc3QgbG9hZEltYWdlID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5zcmMpIHtcbiAgICAgIGNvbnN0IGltYWdlTG9hZGVyID0gbmV3IEltYWdlKCk7XG5cbiAgICAgIGltYWdlTG9hZGVyLm9ubG9hZCA9IHNldEltYWdlRnJvbVNyYztcbiAgICAgIGltYWdlTG9hZGVyLm9uZXJyb3IgPSBzZXRJbWFnZUZyb21EZWZhdWx0O1xuICAgICAgaW1hZ2VMb2FkZXIuc3JjID0gcHJvcHMuc3JjO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIHRpZGVJbWFnZS52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gIH07XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tU3JjID0gKCkgPT4ge1xuICAgIHRpZGVJbWFnZS52YWx1ZS5zcmMgPSBwcm9wcy5zcmM7XG4gIH07XG5cbiAgZGVmaW5lRXhwb3NlKHRpZGVJbWFnZS52YWx1ZSk7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgZW50cmllcy5mb3JFYWNoKFxuICAgICAgKGVudHJ5KSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIGxvYWRJbWFnZSgpO1xuICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByb290TWFyZ2luOiBgJHtwcm9wcy5vZmZzZXR9cHhgLFxuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzTGF6eSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aWRlSW1hZ2UudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkSW1hZ2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgb2JzZXJ2ZXIudW5vYnNlcnZlKHRpZGVJbWFnZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGltZ1xuICAgIDphbHQ9XCJhbHRcIlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5PQkpFQ1QuQ0VOVEVSLCBDU1MuT0JKRUNULkNPVkVSXVwiXG4gICAgcmVmPVwidGlkZUltYWdlXCJcbiAgICA6c3JjPVwiaXNMYXp5ICYmIHNyYyA/IHNyYyA6IGltYWdlRGVmYXVsdFwiXG4gIC8+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUuY2hlY2tlZCAhPT0gb2xkVmFsdWUuY2hlY2tlZCB8fCBuZXdWYWx1ZS5jaGVja2VkICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICBjaGVja2VkLnZhbHVlID0gcHJvcHMuY2hlY2tlZDtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCddXCI+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRFwiXG4gICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmFuZ2VEYXRhIH0gZnJvbSAnQC90eXBlcy9GYWNldFJhbmdlJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCB0b29TaG9ydCA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IHRvb0xvbmcgPSBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhdG9vU2hvcnQgJiYgIXRvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGh2YWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGh2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGdldEN1cnJlbnRJbnN0YW5jZSwgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBnZXRGaWVsZEhhc0Vycm9yLCBnZXRFcnJvck1lc3NhZ2UgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVF8wLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCB0eXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlLm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICBwcm9wcyxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdXBkYXRlVmFsdWUsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCddXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMucHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgICAgQGNsaWNrLnByZXZlbnQ9XCJpbnB1dD8uZm9jdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHQtc3VmZml4JywgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCwgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0J11cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRhdGFUcmFjazogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUudmFsdWUgIT09IG9sZFZhbHVlLnZhbHVlIHx8IG5ld1ZhbHVlLnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICBdXCJcbiAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicHJvcHMucm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG48L3N0eWxlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGljb25UcmFpbGluZz86IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGhhc0ljb24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5pY29uTGVhZGluZyB8fCBwcm9wcy5pY29uVHJhaWxpbmcpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/ICd0aWRlLWJ1dHRvbi1hcy1saW5rJyA6ICd0aWRlLWxpbmsnLFxuICAgICAgaGFzSWNvblxuICAgICAgICA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVxuICAgICAgICA6IFtDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl1cIlxuICAgICAgdi1pZj1cImhhc0ljb25cIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG5cbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiwgd2F0Y2gsIHR5cGUgQ1NTUHJvcGVydGllcyB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIC8vIFRPRE86IHJlcGxhY2UgYm9keSBzY3JvbGwgbG9jayB3aXRoIGEgZ2xvYmFsIG1peGluXG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgbW9kYWxTdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gICAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2xvc2UnXSk7XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKHByb3BzLmlzT3Blbik7XG4gIGNvbnN0IHNhdmVkU2Nyb2xsUG9zaXRpb24gPSByZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG5cbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgICBlbWl0KCdjbG9zZScsIGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVNb2RhbERpc3BsYXkgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSAmJiB3aW5kb3cuc2Nyb2xsVG8oMCwgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSk7XG5cbiAgICAgIGFkZE9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuXG4gICAgICByZW1vdmVPcGVuTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgfSk7XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IG5ld1ZhbHVlLmlzT3BlbjtcblxuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLXdyYXBwZXInLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QXzAsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICB2LXNob3c9XCJpc09wZW5cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWJnJywgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyAnLS10aWRlLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGgsIC4uLnN0eWxlIH1cIlxuICAgICAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwnLFxuICAgICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsXG4gICAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgLi4ubW9kYWxTdHlsZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgIDpjbGFzcz1cIlsnbW9kYWwtaGVhZGVyJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuUEFERElORy5YLlRXT11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlNJWkUuVFdFTlRZLCBDU1MuQUxJR04uWC5DRU5URVIsIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiXG4gICAgICAgICAgICAgIHYtaWY9XCJ0aXRsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCwgQ1NTLk1BUkdJTi5SSUdIVC5UV09dXCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAgICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgIDxkaXYgOmNsYXNzPVwiWydtb2RlbC1jb250ZW50JywgQ1NTLk9WRVJGTE9XLlkuQVVUT11cIj5cbiAgICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiRzbG90cy5mb290ZXJcIj5cbiAgICAgICAgICAgIDxmb290ZXJcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgICAgICAgICAgIENTUy5QT1NJVElPTi5TVElDS1ksXG4gICAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NXzAsXG4gICAgICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgICAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgICAgICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4gIC50aWRlLW1vZGFsLWJnIHtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZHJvcC1maWx0ZXIgMC4zcyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIH1cblxuICAudGlkZS1tb2RhbCB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtbW9kYWwtd2lkdGgpO1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDEwcHggMjVweCAwcHggcmdiYSgxOCwgNDMsIDU4LCAwLjIpO1xuICAgIGFuaW1hdGlvbjogbW9kYWxPcGVuIDMwMG1zIGVhc2U7XG4gIH1cblxuICAubW9kYWwtaGVhZGVyIHtcbiAgICBtaW4taGVpZ2h0OiA1cmVtO1xuICB9XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAycmVtIDFmciAycmVtO1xuXG4gICAgJjpkZWVwKD4gKikge1xuICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgfVxuICB9XG5cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDB2aCk7XG4gICAgfVxuICB9XG5cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IGJhY2tkcm9wLWZpbHRlciB2YXIoLS10aWRlLWFuaW1hdGUpLCBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIH1cbiAgfVxuXG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG5cbiAgICAmIC50aWRlLW1vZGFsIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VDdXJyZW50PzogbnVtYmVyO1xuICAgIHBhZ2VUb3RhbD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHBhZ2VDdXJyZW50OiAxLFxuICAgIHBhZ2VUb3RhbDogMSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IHBhZ2VDdXJyZW50ID0gcmVmKHByb3BzLnBhZ2VDdXJyZW50KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgLSAxKVwiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWJJbml0aWFsPzogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiSW5pdGlhbDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGFjdGl2ZVRhYiA9IHJlZihwcm9wcy5hY3RpdmVUYWJJbml0aWFsKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBhY3RpdmVUYWIudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtdGFicycsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRhYnMtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtdGFicyB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtdGFicy10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IHJlZihwcm9wcy5pc0FjdGl2ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG5cbiAgICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpc0FjdGl2ZS52YWx1ZSk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRvZ2dsZScsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJUb2dnbGVcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS10b2dnbGUtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgXVwiXG4gICAgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10b2dnbGUge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS10b2dnbGU6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS10b2dnbGUtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5hY3RpdmUge1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUDogJ2VxdWlwJyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW2tleW9mIHR5cGVvZiBSRUFMTV07XG4iXSwibmFtZXMiOlsiQ1NTIiwiU0laRSIsImZvcm1hdFBhc2NhbENhc2UiLCJpbnB1dCIsIndvcmQiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiaXNFeHBhbmRlZCIsImFjY29yZGlvbkJvZHkiLCJ0b2dnbGVJc0V4cGFuZGVkIiwiZWxlbWVudCIsIm9uTW91bnRlZCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJpY29uIiwiY29tcHV0ZWQiLCJCQURHRSIsIkJBREdFX1BSRU1JVU0iLCJCQURHRV9UUlVTVEVEIiwiZ2FwIiwiY29udGVudFdpZHRoIiwiZnJhbWVXaWR0aCIsImhhc092ZXJmbG93IiwibGFzdFBvc2l0aW9uIiwiY29udGVudFJlZiIsImZyYW1lUmVmIiwic2hvd0J1dHRvbnMiLCJjdXJyZW50U2xpZGUiLCJtZWFzdXJlQ3VycmVudFNsaWRlIiwic2xpZGVPZmZzZXRzIiwic2xpZGUiLCJjbG9zZXN0U2xpZGVPZmZzZXQiLCJwcmV2IiwiY3VyciIsIm1lYXN1cmVEb20iLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxUb1NsaWRlIiwic2xpZGVJbmRleCIsInNob3dOZXh0U2xpZGUiLCJjb250ZW50UmlnaHRFZGdlIiwiaXNGaXJzdFNsaWRlV2l0aE9mZnNldCIsIm5leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwiZmlyc3RTbGlkZSIsImlzRmlyc3RTbGlkZSIsInByZXZpb3VzU2xpZGUiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImVtaXQiLCJ0aWRlSW1hZ2UiLCJpbWFnZURlZmF1bHQiLCJsb2FkSW1hZ2UiLCJpbWFnZUxvYWRlciIsInNldEltYWdlRnJvbVNyYyIsInNldEltYWdlRnJvbURlZmF1bHQiLCJfX2V4cG9zZSIsIm9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5Iiwib25CZWZvcmVVbm1vdW50IiwiY2hlY2tlZCIsInVuaXF1ZUlkIiwiX2EiLCJnZXRDdXJyZW50SW5zdGFuY2UiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInZhbHVlIiwidG9vU2hvcnQiLCJ0b29Mb25nIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGh2YWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsImhhc0ZvY3VzIiwicmVxdWlyZWQiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJURVhUX0lOUFVUX1RZUEUiLCJzaG93UGFzc3dvcmQiLCJoYXNDbGVhciIsInR5cGUiLCJoYW5kbGVDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsImRpZ2l0cyIsInVwZGF0ZVZhbHVlIiwiaGFzSWNvbiIsImlzT3BlbiIsInNhdmVkU2Nyb2xsUG9zaXRpb24iLCJoYW5kbGVDbG9zZSIsInVwZGF0ZU1vZGFsRGlzcGxheSIsImFkZE9wZW5MaXN0ZW5lcnMiLCJyZW1vdmVPcGVuTGlzdGVuZXJzIiwiaGFuZGxlS2V5RG93biIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsImluZGV4IiwiaGFuZGxlQ2xpY2siLCJhY3RpdmVUYWIiLCJpc0FjdGl2ZSIsIlJFQUxNIl0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsSUFBTTtBQUFBLEVBQ2pCLE9BQU87QUFBQSxJQUNMLEdBQUc7QUFBQSxNQUNELFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxRQUFRO0FB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QSxLQUFLO0FBQUEsSUFDSCxNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixLQUFLO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sTUFBTTtBQUFBLEVBQ1I7QUFBQSxFQUNBLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsSUFBSTtBQUFBLE1BQ0YsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFD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QSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sSUFBSSxTQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLFNBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLE1BQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssU0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLE1BQ2xCQSxFQUFJLE9BQU8sT0FBTyxTQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEtBQUssU0FDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLEVBQUUsU0FDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsSUFBSSxTQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxNQUFNLFNBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLE9BQU8sU0FDbkJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLE1BQU0sVUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUksT0FBTyxNQUNYQSxFQUFJLE1BQU0sRUFBRSxRQUNaQSxFQUFJLFlBQ0pBLEVBQUksT0FBTyxhQUNYQSxFQUFJLE9BQU8sU0FDWEEsRUFBSSxLQUFLLEtBQUss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QSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDhDQUFBLE1BQUEsT0FBQSxrQ0FBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLDRDQUFBLE1BQUEsT0FBQSxnQ0FBQSxHQUFBLGtEQUFBLE1BQUEsT0FBQSxzQ0FBQSxHQUFBLHFDQUFBLE1BQUEsT0FBQSx5QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLDBDQUFBLE1BQUEsT0FBQSw4QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHdDQUFBLE1BQUEsT0FBQSw0QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLG9DQUFBLE1BQUEsT0FBQSx3QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLDZDQUFBLE1BQUEsT0FBQSxpQ0FBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHVDQUFBLE1BQUEsT0FBQSwyQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLHNDQUFBLE1BQUEsT0FBQSwwQkFBQSxHQUFBLDJDQUFBLE1BQUEsT0FBQSwrQkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHlDQUFBLE1BQUEsT0FBQSw2QkFBQSxHQUFBLHND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