forked from iloveponies/p-p-p-pokerface
-
Notifications
You must be signed in to change notification settings - Fork 0
/
p-p-p-pokerface.html
400 lines (382 loc) · 344 KB
/
p-p-p-pokerface.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<!DOCTYPE html><html><head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>P-P-P-Pokerface</title>
<style type="text/css">code{white-space: pre;}</style>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style type="text/css">
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; }
code > span.dt { color: #902000; }
code > span.dv { color: #40a070; }
code > span.bn { color: #40a070; }
code > span.fl { color: #40a070; }
code > span.ch { color: #4070a0; }
code > span.st { color: #4070a0; }
code > span.co { color: #60a0b0; font-style: italic; }
code > span.ot { color: #007020; }
code > span.al { color: #ff0000; font-weight: bold; }
code > span.fu { color: #06287e; }
code > span.er { color: #ff0000; font-weight: bold; }
</style>
<link rel="stylesheet" href="data:text/css;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdub25lJzsgc3R5bGUtc3JjICd1bnNhZmUtaW5saW5lJzsgaW1nLXNyYyBkYXRhOjsgY29ubmVjdC1zcmMgJ3NlbGYnIj4KICAgIDx0aXRsZT5QYWdlIG5vdCBmb3VuZCAmbWlkZG90OyBHaXRIdWIgUGFnZXM8L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KICAgICAgYm9keSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIgeyBtYXJnaW46IDUwcHggYXV0byA0MHB4IGF1dG87IHdpZHRoOiA2MDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgogICAgICBhIHsgY29sb3I6ICM0MTgzYzQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQogICAgICBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCiAgICAgIGgxIHsgd2lkdGg6IDgwMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDogLTEwMHB4OyBsZXR0ZXItc3BhY2luZzogLTFweDsgbGluZS1oZWlnaHQ6IDYwcHg7IGZvbnQtc2l6ZTogNjBweDsgZm9udC13ZWlnaHQ6IDEwMDsgbWFyZ2luOiAwcHggMCA1MHB4IDA7IHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7IH0KICAgICAgcCB7IGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7IG1hcmdpbjogMjBweCAwOyBsaW5lLWhlaWdodDogMS42OyB9CgogICAgICB1bCB7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMjVweCAwOyBwYWRkaW5nOiAwOyB9CiAgICAgIGxpIHsgZGlzcGxheTogdGFibGUtY2VsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdpZHRoOiAxJTsgfQoKICAgICAgLmxvZ28geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi10b3A6IDM1cHg7IH0KICAgICAgLmxvZ28taW1nLTJ4IHsgZGlzcGxheTogbm9uZTsgfQogICAgICBAbWVkaWEKICAgICAgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgIG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgICAgIG9ubHkgc2NyZWVuIGFuZCAoICAgICAtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLzEpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgICAgbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgICAgIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgICAgICAgICAgICBtaW4tcmVzb2x1dGlvbjogMmRwcHgpIHsKICAgICAgICAubG9nby1pbWctMXggeyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgLmxvZ28taW1nLTJ4IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CiAgICAgIH0KCiAgICAgICNzdWdnZXN0aW9ucyB7CiAgICAgICAgbWFyZ2luLXRvcDogMzVweDsKICAgICAgICBjb2xvcjogI2NjYzsKICAgICAgfQogICAgICAjc3VnZ2VzdGlvbnMgYSB7CiAgICAgICAgY29sb3I6ICM2NjY2NjY7CiAgICAgICAgZm9udC13ZWlnaHQ6IDIwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luOiAwIDEwcHg7CiAgICAgIH0KCiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoKICAgICAgPGgxPjQwNDwvaDE+CiAgICAgIDxwPjxzdHJvbmc+RmlsZSBub3QgZm91bmQ8L3N0cm9uZz48L3A+CgogICAgICA8cD4KICAgICAgICBUaGUgc2l0ZSBjb25maWd1cmVkIGF0IHRoaXMgYWRkcmVzcyBkb2VzIG5vdAogICAgICAgIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCBmaWxlLgogICAgICA8L3A+CgogICAgICA8cD4KICAgICAgICBJZiB0aGlzIGlzIHlvdXIgc2l0ZSwgbWFrZSBzdXJlIHRoYXQgdGhlIGZpbGVuYW1lIGNhc2UgbWF0Y2hlcyB0aGUgVVJMLjxicj4KICAgICAgICBGb3Igcm9vdCBVUkxzIChsaWtlIDxjb2RlPmh0dHA6Ly9leGFtcGxlLmNvbS88L2NvZGU+KSB5b3UgbXVzdCBwcm92aWRlIGFuCiAgICAgICAgPGNvZGU+aW5kZXguaHRtbDwvY29kZT4gZmlsZS4KICAgICAgPC9wPgoKICAgICAgPHA+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vcGFnZXMvIj5SZWFkIHRoZSBmdWxsIGRvY3VtZW50YXRpb248L2E+CiAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgPHN0cm9uZz5HaXRIdWIgUGFnZXM8L3N0cm9uZz4uCiAgICAgIDwvcD4KCiAgICAgIDxkaXYgaWQ9InN1Z2dlc3Rpb25zIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1YnN0YXR1cy5jb20iPkdpdEh1YiBTdGF0dXM8L2E+ICZtZGFzaDsKICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2dpdGh1YnN0YXR1cyI+QGdpdGh1YnN0YXR1czwvYT4KICAgICAgPC9kaXY+CgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibG9nbyBsb2dvLWltZy0xeCI+CiAgICAgICAgPGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHRpdGxlPSIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEZNVFpDUkRZM1JFSXpSakF4TVVVeVFVUXpSRUl4UXpSRU5VRkZOVU01TmlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRk1UWkNSRFkzUlVJelJqQXhNVVV5UVVRelJFSXhRelJFTlVGRk5VTTVOaUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tVeE5rSkVOamRDUWpOR01ERXhSVEpCUkRORVFqRkRORVExUVVVMVF6azJJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1V4TmtKRU5qZERRak5HTURFeFJUSkJSRE5FUWpGRE5FUTFRVVUxUXprMklpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtTTTlNQ0FBQUErNUpSRUZVZU5yRVYxMUlrMUVZM3M0K2RkT3AyOVE1YjBvcENnS0Zzb0tvaTVLZzZDSWh1d2k2ekxKTG9ZTG9wcTRxc0tLZ2k0aTZDWUlvVS9xNWlEQUtzNnN5b1M3NklSV3R5SitwN2NkdDdzZjFQR09EK2UwYzNkeWdBeC82N1p6elBNOTUvODc3R1lkSFJnM1pqTVhGeGVwUUtOUzZzTEN3SnhxTk51RnBpTWZqVnM0WmpVYS9wbW1qZUQ2VmxKUzhOcHZOVDRRUTdteHdqU3NKaUVRaW0vMSsvOWxnTUhnSXI1b2h1eEcxV0N3OVZxdjFjbEZSMGRDcUJPREVsVjZ2OTBvZ0VEakdkWWJWalhocGFlbmRpb3FLMDdDSVI3WkFxRTQ5UFQwOUJQTDJQTWdUQnlRR3NZaVpsUUQ0dU1YdGRyK0p4V0lOaGdJTlloR1QyTXNLZ01ybTJkblpYZ1JYaGFIQWc1akVKb2RVQUh4dXg0THVkSEpFOVJkRWRBK2kzSnV6N2JHSGU0bWhFOUZOcmd3QkNMaXJNRlY5T2toNWVmbEZoOFBSNW5LNW5EYWJyUjJCTkpsS08wVDM1K0xpNG40Ky9KKy9KUUN4aG11NWgzdUpvWE5IUGJtV1pBSE1zaFdCOGw1L2lwcWFtbWFBZjB6UEREeDFPTlYzdnVyZGlkcXdBUUwrcEVjOHNMY0FlMUNDdlEzWUh4SVc4UGw4NXhTV05DMWhBRERJdjBySUUvbzRKMGsza3d3NHhTbHdJaGNxM0VGRk9tN0tOL2hVR09Ra3QwQ0ZhNVdwTkpsTXZ4QkV6L0lWUUF4Zy9aUlpsOXdpSEE2M3lEWWllTTdEbkxQNUNpQUdzQzdJNXNndFlLSkdXZTJBOHNlRnFnRkpySmpFUFkxQ24zcEo4LzlXMWU1VldzRkRURW1GckJjb0RoWkpFUWtYdWhJQ015S3BqaGFocU4yMWhSWUFUS2ZVT2xEbWt5Z3JSNG80QzBWT0xHSktyT0lUS0I0amlqemRYeWdCS2l4eUM1VERRZG5rL1B6OHFSdzZvT1dHbHNUS0dPUVc2T0g2RkJXc3llUHhkT1hMVGd4aXllYklMWkNqeitHTGdNSUtuWE56YzQ5WU1sY1JkSFhjU3d4RlZnVEluUWhDOUczM1VoTm9KTHVxcTZ0MzQ1cDl5M2VVeThPVGs1UGpBSHVJOXVvNGIwN0ZCYU9oc3UwQTRVbmMrVDFUVTFOajNLc1NTRTV5SjY1anFGMkREZDhRcVdZbUFacklNMlZsWlRkblptYjZBYnBkVjlWNmVjOXpuZjVRN0hqWXVtZFJFMEpPcDNNaml0TzRTRmErY1p6OFVtcWUzVENiU0x2ZGZrUi9rV0RkTlFsNUludVRjeXNPY3BGVDM1WnJiQnh4NHAzSkFIbFpWVlcxRC82MzRWUnQrRnZMQmdLL3Y1TFY5V1MrMTB4TVRFd3RSdzdYdnFPTCtlMlE4VjNBWUlPSUFYUTI2L2hlV1ZuWkNWZmN5S0hnMkNCZ1RwbVBtallNOGwyNEd5YVVIeWFJaDdYd2ZSOUVyRThxSG9EZm4yTFROQVZDMEhYNk1GY0JJUDhCaSs2RjZjZFcvRElDa0FOUmZ4OTlmRVlGUTdOcGg1aS91UWlBMjE0Z25vN0srZ3VoYWlLZzlnQzYyK004ZVI3WHNCc1lKNGlsYW02MEZiN3I3dUFqOHdGeXV3TTFvSU9XZ2ZtRHk2UlhFRVF6Sk1QZTIzRFhyVlM3cnR5RDNEZjh6L0ZQZ0FFQXpXVTVLdTU5WkFVQUFBQUFTVVZPUks1Q1lJST0iPgogICAgICA8L2E+CgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibG9nbyBsb2dvLWltZy0yeCI+CiAgICAgICAgPGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHRpdGxlPSIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBWUFBQUNxYVhIZUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEVRVU0xUWtVeFJVSTBNVU14TVVVeVFVUXpSRUl4UXpSRU5VRkZOVU01TmlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRVFVTTFRa1V4UmtJME1VTXhNVVV5UVVRelJFSXhRelJFTlVGRk5VTTVOaUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tVeE5rSkVOamRHUWpOR01ERXhSVEpCUkRORVFqRkRORVExUVVVMVF6azJJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1V4TmtKRU5qZ3dRak5HTURFeFJUSkJSRE5FUWpGRE5FUTFRVVUxUXprMklpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtoZlBSYVFBQUI2bEpSRUZVZU5yc1cybU1FMlVZYm9kdHQrMjIyMnUzNVFoZW9DQ1lHQlFsaWdJSmdrWkpOUHpnaWdvYVRFajhBZEZFTWZBRGZ5QUJrZ1dpaVdjaWVLNFMrUU9pSEFZVWoyaE1OS2dZbEV1anBOdHR1OXZ0dGJ2ZHcrY2hVMUs2TTUzNXB0M3ViSENTeWV6UitiNzNlYjczK3Q3dnJmWHN1Zk9XNGJ6Nit2b205L2IyM292bk5OdzM0YjV4WUdBZ09EZzQ2TWJ0NG1lc1Ztc1dkMXFTcEhoZFhkMmZ1UC9BZmNwdXQ1L0E4OHh3eW1jZEJnTHFlbnA2RnVSeXVXVjR6dS92NzU5UXlXQmp4b3o1dDc2Ky9ndW4wOW1LNXhGeWFrb0NBUFNhVENhek5wdk5Qb1lWYmg2TzFZS0dSRjB1MTNzTkRRMjdRTXpmcGlBQUtqMGxuVTYvZ0JWZkFaVzJXV3B3d1Z6eTBJZ1AzRzczRnBqSTZSRWhBR0E5cVZScUExYjltVm9CVnlJQzJ0RGk4WGcyNCtkVXpRaUFiUy9zN094OEcyby8zbUtDQytadzBlZnpQUUVmY1ZqWXJBUlgzZGJWMWJVdEhvOGZNZ3Q0MmYrTXAweVVUVlFiZFdzQUhWc2lrZGlIa0hhUHhjUVhRdWZYZ1VCZ01SeG1lOVUwQUF4Zkg0dkZ2ak03ZUY2VWtiSlM1cW9Rd0VRR0E1N0FjNUpsbEZ5VVZaWjVja1VFZ01WeHNLMmpsU1l6SStRWEpzaXlqek5FQUp5SkF6Yi9LUWE0MWpKS0w4cE9ETVFpVEVBeW1YdzVuOC9QMElqRDNiaDdSZ29nNTlhYW54aUlSVFZ2Vi9vajB0bkhjYS9XTXJWd09Ed0IzcmFUR3h6a0JnL2duWlZhcEZWNjJXeTJuNUFPNzBITS81d2JKMFFuWHlRU2FWUERJdU5aelkwVjNudEhNd3hpd0hBMEdqMk5wN2VjSUJEZ2FEQVlYS0NRSk0xRGhyZ0ozbmh1bGNQYmw4ajRObUhlNDZYL2c2MGZ3YnozYWV3amtxRlFhQXFlYldVMUFPcXlRd3Q4SWQ2cUVITWM5N3p1N3U3RkdHc243SEFpVnVvc1Z3N1AzNUMxbmNjZGdTQ3hvcDFkSGVac3dtZkhNbnhCbzZaVGsrak44ZGwvdkY3dldvZkRzYStNTE45b0VVQk14T2IzKzFlb0VzQlZ3NlptdWE0OXI4WW1oQUtEaUVQY013QnN4TWlxUStpeHpQRnhaeXFScFhBUkcvWU9yMU9iRkowZ1Vza1hCYmFtY1IxT0ttTVV2RHhIUkF1OC9MbVkzakZMTVVwRnF6OUh4RzY1c21ZSmR5S3lFQ094RGlFQWUvcDFnakYyb29uaXZaQXN4VmdsMmRhYTRFUVdDVzZKNTVxRkFGRlppSldZTHhOUXkycU9TVXpHUnN5WENVREllbGl3QUhFTzRXU2xXUUJSRm9aYWtYY0ttQ1hteVhBS3MwVmU5dmw4cTQyV29JWXBKVTRoVjNoS2NOczhtOWdsN3AveFE3M2VGNWtCNGo1bU5yV21USlJOd0F6cWlWMUN4alZUWkNJa0VxK1oxYlpGWlNOMkNlbm1WQUZWeTRQbHo4eEtBR1dqakFLRms2bENCTURSL01KakxMTVNRTm00M3hBaVFLVGFBKzkvd2V3aERqTCtKVkkxa2tUU1NPVGNLYk1Ud1BxRVNBb3Q2ZG42RnIxZ0h3VkpqdTZJUnV5aUJ5UHVVVUJBZzVER2tBZ0JteGx2ZGdJRUs5Z0Rrb2hkWS9CSm80Q0FHMFI4bWlSU3NHQUJrZ1ZRczRLWHUwOThJZ1VYU1NSc0ZBb0taaVZBVkRZMldVaWlQVGpZUmk0MUt3R2lzckdzTHRsc3RoOEZpd256MmZCa1F2V2ZSdGxFM2lGMnlXNjMveUNhY1haMWRXMDJHd0d5VEZhUmQ0aWRKbkNLSFJhQ3hZUkhvRzVMVEtUNlN5aVRvUDFmSkhibUFZUFlSUjBVblpRdE1uQTZzMHpnK0daQmx0MEdkbzdFUEhncEUzUTZuWjhZeUxoYzhYajhNSmgvYUtUQVkrNUZQQUtITEU3UmR3dVlKWm1Od3p5Q01rQkNZeUtST0pCTUpsOUIvUFhYQ2pqbUNtRE9WekgzZmlQcE9iRVdHcW9LZTRFQmw4djFobHFzZEx2ZDIzbWt4SE05cGM5a01wbW5vOUhvZVRpaTdld2JIRVpQUHgxenRMUzF0VjNBbkd1TWppTmp2YlFGdUh3NnpEbzVCeTdkVFBBUU5CZ01MclJhclRrU2xzMW1ud1Q3dXdwOXZpcng5UXpiVy9IdVYvajVkL2IrNmpuaUtsbGxQOGxrZU9OSkRrK2RxOUdzUVRuQzRmQjFoZU8wSzQ3SHdlN1dkRHI5bkFLZ1h3T0J3SEkrQzQ1SHRqMWQ2c2Q0MjlUVU5FY21VZGMrUFJhTEhjdm44N2RYVzR1Z3pkc2FHeHVmTDk0TkZ2OXppMUo3R1ZiaGx2YjJkbmFKM1NWcnhmYytuMitOVHNaNy9INy9NcjNnNVhkU0lIeUpTSDFQWis3ZlRveWwyK0VycWlsZ1o0TmFMWUI5Z29WR2FIalI5M0h2MVpyVTRYRHNGVDIwa0gzUE9iemJXazBDZ0cxamFjVklVbkFRYjlGK1ZleHlMTXprcGNMdjBJSlY3QUhRSU9DQVVZSHg3djVxZ1NjbVlIdFRxU0F5WkxFSlRLMjJCaWU0aXEzeHNxcG00U0FmOUhxOWEyRG5KNHVMSzNTRVVMY2RSdnAzaTN6SHlTcXBmaWN4RWRzUWMxTnJsWVhYdlIrTzdxQVNTZXpYQitoMVN1VW9tZ2c5TEw4QlVvVjQ3NDlFSW9sS2grRWlxV21xVkVabERnSGtzMnB4SHc3eFRxVVF3OUo1TmNBWE9LMTBBR0lvWjZabGk2Slk2WjFRNDYxS29aNE5pS0xIYXJXK0tEc3hsRFVQSFo1elBRWnFVVkRQSnNUcWI1bjltYWxicEFoOEMyWFhETGw2MitXWklERlJVbE5WT2l3ZW5jbk5VM2FRRWtMK2NETVNvTHZabzJmUUI3QUpzc05BdUZ1dm9ybERWVmtrZzJJODcram8ySzJRQVZwaERyZnlWaUs1VnF0TzM0T2theFhDcCs3ZHJkREJDQWR1Ym02ZWlkWCsyV3dxVDVrb213aDRZUUxrK0g0YUU5M2g4WGcyZ3ZIZWtRWk9HU2dMWlRMeURUTEo0THg5L0taV0tCU2FpblQ0SXkzRnFRQmZuVVpSNDJQS1FGa3NCcjlRS1ZYQ1B1c0QzT2lBL1JrUTVrUDhxVi9KbDFXeXdBcC82K2RjbVBNMnpMMVVyVWFoZTRKcWZuV1dLWEl1bDN1VWJmUDhuakFGTFcxT0ZyM2dkRnRaNzJjTkgrUHRRVDcvYnJXK05YcUpBSGgweTlWOC9VL0ExVTdBZndJTUFEN21TM3BDYnVXSkFBQUFBRWxGVGtTdVFtQ0MiPgogICAgICA8L2E+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K">
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2MS43LjIganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwooZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjeShhKXtyZXR1cm4gZi5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGN1KGEpe2lmKCFjalthXSl7dmFyIGI9Yy5ib2R5LGQ9ZigiPCIrYSsiPiIpLmFwcGVuZFRvKGIpLGU9ZC5jc3MoImRpc3BsYXkiKTtkLnJlbW92ZSgpO2lmKGU9PT0ibm9uZSJ8fGU9PT0iIil7Y2t8fChjaz1jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGNrLmZyYW1lQm9yZGVyPWNrLndpZHRoPWNrLmhlaWdodD0wKSxiLmFwcGVuZENoaWxkKGNrKTtpZighY2x8fCFjay5jcmVhdGVFbGVtZW50KWNsPShjay5jb250ZW50V2luZG93fHxjay5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNsLndyaXRlKChmLnN1cHBvcnQuYm94TW9kZWw/IjwhZG9jdHlwZSBodG1sPiI6IiIpKyI8aHRtbD48Ym9keT4iKSxjbC5jbG9zZSgpO2Q9Y2wuY3JlYXRlRWxlbWVudChhKSxjbC5ib2R5LmFwcGVuZENoaWxkKGQpLGU9Zi5jc3MoZCwiZGlzcGxheSIpLGIucmVtb3ZlQ2hpbGQoY2spfWNqW2FdPWV9cmV0dXJuIGNqW2FdfWZ1bmN0aW9uIGN0KGEsYil7dmFyIGM9e307Zi5lYWNoKGNwLmNvbmNhdC5hcHBseShbXSxjcC5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGNzKCl7Y3E9Yn1mdW5jdGlvbiBjcigpe3NldFRpbWVvdXQoY3MsMCk7cmV0dXJuIGNxPWYubm93KCl9ZnVuY3Rpb24gY2koKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjaCgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYihhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2EoYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBiXyhhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRC50ZXN0KGEpP2QoYSxlKTpiXyhhKyJbIisodHlwZW9mIGU9PSJvYmplY3QiP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZmLnR5cGUoYik9PT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiliXyhhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYiQoYSxjKXt2YXIgZCxlLGc9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZ1tkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmZi5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBiWihhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YlMsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09InN0cmluZyImJigha3x8Z1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iWihhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iWihhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYlkoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPSJzdHJpbmciJiYoYz1iLGI9IioiKTtpZihmLmlzRnVuY3Rpb24oYykpe3ZhciBkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChiTyksZT0wLGc9ZC5sZW5ndGgsaCxpLGo7Zm9yKDtlPGc7ZSsrKWg9ZFtlXSxqPS9eXCsvLnRlc3QoaCksaiYmKGg9aC5zdWJzdHIoMSl8fCIqIiksaT1hW2hdPWFbaF18fFtdLGlbaj8idW5zaGlmdCI6InB1c2giXShjKX19fWZ1bmN0aW9uIGJCKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9Yj09PSJ3aWR0aCI/MTowLGc9NDtpZihkPjApe2lmKGMhPT0iYm9yZGVyIilmb3IoO2U8ZztlKz0yKWN8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2J4W2VdKSl8fDApLGM9PT0ibWFyZ2luIj9kKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytieFtlXSkpfHwwOmQtPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIitieFtlXSsiV2lkdGgiKSl8fDA7cmV0dXJuIGQrInB4In1kPWJ5KGEsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHlsZVtiXTtpZihidC50ZXN0KGQpKXJldHVybiBkO2Q9cGFyc2VGbG9hdChkKXx8MDtpZihjKWZvcig7ZTxnO2UrPTIpZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIitieFtlXSkpfHwwLGMhPT0icGFkZGluZyImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrYnhbZV0rIldpZHRoIikpfHwwKSxjPT09Im1hcmdpbiImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytieFtlXSkpfHwwKTtyZXR1cm4gZCsicHgifWZ1bmN0aW9uIGJvKGEpe3ZhciBiPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YmguYXBwZW5kQ2hpbGQoYiksYi5pbm5lckhUTUw9YS5vdXRlckhUTUw7cmV0dXJuIGIuZmlyc3RDaGlsZH1mdW5jdGlvbiBibihhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/Ym0oYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJtKX1mdW5jdGlvbiBibShhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJsKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJrKGEsYil7dmFyIGM7Yi5ub2RlVHlwZT09PTEmJihiLmNsZWFyQXR0cmlidXRlcyYmYi5jbGVhckF0dHJpYnV0ZXMoKSxiLm1lcmdlQXR0cmlidXRlcyYmYi5tZXJnZUF0dHJpYnV0ZXMoYSksYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksYz09PSJvYmplY3QiP2Iub3V0ZXJIVE1MPWEub3V0ZXJIVE1MOmMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iP2M9PT0ib3B0aW9uIj9iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOmM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIj9iLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZTpjPT09InNjcmlwdCImJmIudGV4dCE9PWEudGV4dCYmKGIudGV4dD1hLnRleHQpOihhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKSksYi5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKSxiLnJlbW92ZUF0dHJpYnV0ZSgiX3N1Ym1pdF9hdHRhY2hlZCIpLGIucmVtb3ZlQXR0cmlidXRlKCJfY2hhbmdlX2F0dGFjaGVkIikpfWZ1bmN0aW9uIGJqKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZz1mLl9kYXRhKGEpLGg9Zi5fZGF0YShiLGcpLGk9Zy5ldmVudHM7aWYoaSl7ZGVsZXRlIGguaGFuZGxlLGguZXZlbnRzPXt9O2ZvcihjIGluIGkpZm9yKGQ9MCxlPWlbY10ubGVuZ3RoO2Q8ZTtkKyspZi5ldmVudC5hZGQoYixjLGlbY11bZF0pfWguZGF0YSYmKGguZGF0YT1mLmV4dGVuZCh7fSxoLmRhdGEpKX19ZnVuY3Rpb24gYmkoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gVShhKXt2YXIgYj1WLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfWZ1bmN0aW9uIFQoYSxiLGMpe2I9Ynx8MDtpZihmLmlzRnVuY3Rpb24oYikpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7dmFyIGU9ISFiLmNhbGwoYSxkLGEpO3JldHVybiBlPT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGE9PT1iPT09Y30pO2lmKHR5cGVvZiBiPT0ic3RyaW5nIil7dmFyIGQ9Zi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PT0xfSk7aWYoTy50ZXN0KGIpKXJldHVybiBmLmZpbHRlcihiLGQsIWMpO2I9Zi5maWx0ZXIoYixkKX1yZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gZi5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gUyhhKXtyZXR1cm4hYXx8IWEucGFyZW50Tm9kZXx8YS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTF9ZnVuY3Rpb24gSygpe3JldHVybiEwfWZ1bmN0aW9uIEooKXtyZXR1cm4hMX1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iKyJkZWZlciIsZT1iKyJxdWV1ZSIsZz1iKyJtYXJrIixoPWYuX2RhdGEoYSxkKTtoJiYoYz09PSJxdWV1ZSJ8fCFmLl9kYXRhKGEsZSkpJiYoYz09PSJtYXJrInx8IWYuX2RhdGEoYSxnKSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXshZi5fZGF0YShhLGUpJiYhZi5fZGF0YShhLGcpJiYoZi5yZW1vdmVEYXRhKGEsZCwhMCksaC5maXJlKCkpfSwwKX1mdW5jdGlvbiBtKGEpe2Zvcih2YXIgYiBpbiBhKXtpZihiPT09ImRhdGEiJiZmLmlzRW1wdHlPYmplY3QoYVtiXSkpY29udGludWU7aWYoYiE9PSJ0b0pTT04iKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGwoYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVUeXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoaywiLSQxIikudG9Mb3dlckNhc2UoKTtkPWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVlIj8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6Zi5pc051bWVyaWMoZCk/K2Q6ai50ZXN0KGQpP2YucGFyc2VKU09OKGQpOmR9Y2F0Y2goZyl7fWYuZGF0YShhLGMsZCl9ZWxzZSBkPWJ9cmV0dXJuIGR9ZnVuY3Rpb24gaChhKXt2YXIgYj1nW2FdPXt9LGMsZDthPWEuc3BsaXQoL1xzKy8pO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWJbYVtjXV09ITA7cmV0dXJuIGJ9dmFyIGM9YS5kb2N1bWVudCxkPWEubmF2aWdhdG9yLGU9YS5sb2NhdGlvbixmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSigpe2lmKCFlLmlzUmVhZHkpe3RyeXtjLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3NldFRpbWVvdXQoSiwxKTtyZXR1cm59ZS5yZWFkeSgpfX12YXIgZT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZS5mbi5pbml0KGEsYixoKX0sZj1hLmpRdWVyeSxnPWEuJCxoLGk9L14oPzpbXiM8XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLGo9L1xTLyxrPS9eXHMrLyxsPS9ccyskLyxtPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPik/JC8sbj0vXltcXSw6e31cc10qJC8sbz0vXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLHA9LyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLHE9Lyg/Ol58OnwsKSg/OlxzKlxbKSsvZyxyPS8od2Via2l0KVsgXC9dKFtcdy5dKykvLHM9LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLHQ9Lyhtc2llKSAoW1x3Ll0rKS8sdT0vKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLHY9Ly0oW2Etel18WzAtOV0pL2lnLHc9L14tbXMtLyx4PWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LHk9ZC51c2VyQWdlbnQseixBLEIsQz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxFPUFycmF5LnByb3RvdHlwZS5wdXNoLEY9QXJyYXkucHJvdG90eXBlLnNsaWNlLEc9U3RyaW5nLnByb3RvdHlwZS50cmltLEg9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsST17fTtlLmZuPWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGluaXQ6ZnVuY3Rpb24oYSxkLGYpe3ZhciBnLGgsaixrO2lmKCFhKXJldHVybiB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhZCYmYy5ib2R5KXt0aGlzLmNvbnRleHQ9Yyx0aGlzWzBdPWMuYm9keSx0aGlzLnNlbGVjdG9yPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09InN0cmluZyIpe2EuY2hhckF0KDApIT09IjwifHxhLmNoYXJBdChhLmxlbmd0aC0xKSE9PSI+Inx8YS5sZW5ndGg8Mz9nPWkuZXhlYyhhKTpnPVtudWxsLGEsbnVsbF07aWYoZyYmKGdbMV18fCFkKSl7aWYoZ1sxXSl7ZD1kIGluc3RhbmNlb2YgZT9kWzBdOmQsaz1kP2Qub3duZXJEb2N1bWVudHx8ZDpjLGo9bS5leGVjKGEpLGo/ZS5pc1BsYWluT2JqZWN0KGQpPyhhPVtjLmNyZWF0ZUVsZW1lbnQoalsxXSldLGUuZm4uYXR0ci5jYWxsKGEsZCwhMCkpOmE9W2suY3JlYXRlRWxlbWVudChqWzFdKV06KGo9ZS5idWlsZEZyYWdtZW50KFtnWzFdXSxba10pLGE9KGouY2FjaGVhYmxlP2UuY2xvbmUoai5mcmFnbWVudCk6ai5mcmFnbWVudCkuY2hpbGROb2Rlcyk7cmV0dXJuIGUubWVyZ2UodGhpcyxhKX1oPWMuZ2V0RWxlbWVudEJ5SWQoZ1syXSk7aWYoaCYmaC5wYXJlbnROb2RlKXtpZihoLmlkIT09Z1syXSlyZXR1cm4gZi5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1ofXRoaXMuY29udGV4dD1jLHRoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31yZXR1cm4hZHx8ZC5qcXVlcnk/KGR8fGYpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihkKS5maW5kKGEpfWlmKGUuaXNGdW5jdGlvbihhKSlyZXR1cm4gZi5yZWFkeShhKTthLnNlbGVjdG9yIT09YiYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KTtyZXR1cm4gZS5tYWtlQXJyYXkoYSx0aGlzKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjcuMiIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBGLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9FLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEEuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXthPSthO3JldHVybiBhPT09LTE/dGhpcy5zbGljZShhKTp0aGlzLnNsaWNlKGEsYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRi5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixGLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpFLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxlLmZuLmluaXQucHJvdG90eXBlPWUuZm4sZS5leHRlbmQ9ZS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxjLGQsZixnLGgsaT1hcmd1bWVudHNbMF18fHt9LGo9MSxrPWFyZ3VtZW50cy5sZW5ndGgsbD0hMTt0eXBlb2YgaT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT0ib2JqZWN0IiYmIWUuaXNGdW5jdGlvbihpKSYmKGk9e30pLGs9PT1qJiYoaT10aGlzLC0taik7Zm9yKDtqPGs7aisrKWlmKChhPWFyZ3VtZW50c1tqXSkhPW51bGwpZm9yKGMgaW4gYSl7ZD1pW2NdLGY9YVtjXTtpZihpPT09Ziljb250aW51ZTtsJiZmJiYoZS5pc1BsYWluT2JqZWN0KGYpfHwoZz1lLmlzQXJyYXkoZikpKT8oZz8oZz0hMSxoPWQmJmUuaXNBcnJheShkKT9kOltdKTpoPWQmJmUuaXNQbGFpbk9iamVjdChkKT9kOnt9LGlbY109ZS5leHRlbmQobCxoLGYpKTpmIT09YiYmKGlbY109Zil9cmV0dXJuIGl9LGUuZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGIpe2EuJD09PWUmJihhLiQ9ZyksYiYmYS5qUXVlcnk9PT1lJiYoYS5qUXVlcnk9Zik7cmV0dXJuIGV9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/ZS5yZWFkeVdhaXQrKzplLnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24oYSl7aWYoYT09PSEwJiYhLS1lLnJlYWR5V2FpdHx8YSE9PSEwJiYhZS5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7ZS5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1lLnJlYWR5V2FpdD4wKXJldHVybjtBLmZpcmVXaXRoKGMsW2VdKSxlLmZuLnRyaWdnZXImJmUoYykudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZighQSl7QT1lLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKTtpZihjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlLnJlYWR5LCExKTtlbHNlIGlmKGMuYXR0YWNoRXZlbnQpe2MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQiksYS5hdHRhY2hFdmVudCgib25sb2FkIixlLnJlYWR5KTt2YXIgYj0hMTt0cnl7Yj1hLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChkKXt9Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmImJkooKX19fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbCYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChhKSkmJmlzRmluaXRlKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpJW0MuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUQuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRC5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxELmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxwYXJzZUpTT046ZnVuY3Rpb24oYil7aWYodHlwZW9mIGIhPSJzdHJpbmcifHwhYilyZXR1cm4gbnVsbDtiPWUudHJpbShiKTtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBhcnNlKGIpO2lmKG4udGVzdChiLnJlcGxhY2UobywiQCIpLnJlcGxhY2UocCwiXSIpLnJlcGxhY2UocSwiIikpKXJldHVybihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO2UuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYyl7aWYodHlwZW9mIGMhPSJzdHJpbmcifHwhYylyZXR1cm4gbnVsbDt2YXIgZCxmO3RyeXthLkRPTVBhcnNlcj8oZj1uZXcgRE9NUGFyc2VyLGQ9Zi5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSk6KGQ9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxkLmFzeW5jPSJmYWxzZSIsZC5sb2FkWE1MKGMpKX1jYXRjaChnKXtkPWJ9KCFkfHwhZC5kb2N1bWVudEVsZW1lbnR8fGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmZS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYyk7cmV0dXJuIGR9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmai50ZXN0KGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHcsIm1zLSIpLnJlcGxhY2Uodix4KX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnPTAsaD1hLmxlbmd0aCxpPWg9PT1ifHxlLmlzRnVuY3Rpb24oYSk7aWYoZCl7aWYoaSl7Zm9yKGYgaW4gYSlpZihjLmFwcGx5KGFbZl0sZCk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmFwcGx5KGFbZysrXSxkKT09PSExKWJyZWFrfWVsc2UgaWYoaSl7Zm9yKGYgaW4gYSlpZihjLmNhbGwoYVtmXSxmLGFbZl0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5jYWxsKGFbZ10sZyxhW2crK10pPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06Rz9mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjpHLmNhbGwoYSl9OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOihhKyIiKS5yZXBsYWNlKGssIiIpLnJlcGxhY2UobCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO2lmKGEhPW51bGwpe3ZhciBkPWUudHlwZShhKTthLmxlbmd0aD09bnVsbHx8ZD09PSJzdHJpbmcifHxkPT09ImZ1bmN0aW9uInx8ZD09PSJyZWdleHAifHxlLmlzV2luZG93KGEpP0UuY2FsbChjLGEpOmUubWVyZ2UoYyxhKX1yZXR1cm4gY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYoSClyZXR1cm4gSC5jYWxsKGIsYSxjKTtkPWIubGVuZ3RoLGM9Yz9jPDA/TWF0aC5tYXgoMCxkK2MpOmM6MDtmb3IoO2M8ZDtjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmxlbmd0aCxlPTA7aWYodHlwZW9mIGMubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGY9Yy5sZW5ndGg7ZTxmO2UrKylhW2QrK109Y1tlXTtlbHNlIHdoaWxlKGNbZV0hPT1iKWFbZCsrXT1jW2UrK107YS5sZW5ndGg9ZDtyZXR1cm4gYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZTtjPSEhYztmb3IodmFyIGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspZT0hIWIoYVtmXSxmKSxjIT09ZSYmZC5wdXNoKGFbZl0pO3JldHVybiBkfSxtYXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGcsaD1bXSxpPTAsaj1hLmxlbmd0aCxrPWEgaW5zdGFuY2VvZiBlfHxqIT09YiYmdHlwZW9mIGo9PSJudW1iZXIiJiYoaj4wJiZhWzBdJiZhW2otMV18fGo9PT0wfHxlLmlzQXJyYXkoYSkpO2lmKGspZm9yKDtpPGo7aSsrKWY9YyhhW2ldLGksZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO2Vsc2UgZm9yKGcgaW4gYSlmPWMoYVtnXSxnLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtyZXR1cm4gaC5jb25jYXQuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGMpe2lmKHR5cGVvZiBjPT0ic3RyaW5nIil7dmFyIGQ9YVtjXTtjPWEsYT1kfWlmKCFlLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGI7dmFyIGY9Ri5jYWxsKGFyZ3VtZW50cywyKSxnPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYyxmLmNvbmNhdChGLmNhbGwoYXJndW1lbnRzKSkpfTtnLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8Zy5ndWlkfHxlLmd1aWQrKztyZXR1cm4gZ30sYWNjZXNzOmZ1bmN0aW9uKGEsYyxkLGYsZyxoLGkpe3ZhciBqLGs9ZD09bnVsbCxsPTAsbT1hLmxlbmd0aDtpZihkJiZ0eXBlb2YgZD09Im9iamVjdCIpe2ZvcihsIGluIGQpZS5hY2Nlc3MoYSxjLGwsZFtsXSwxLGgsZik7Zz0xfWVsc2UgaWYoZiE9PWIpe2o9aT09PWImJmUuaXNGdW5jdGlvbihmKSxrJiYoaj8oaj1jLGM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwoZShhKSxjKX0pOihjLmNhbGwoYSxmKSxjPW51bGwpKTtpZihjKWZvcig7bDxtO2wrKyljKGFbbF0sZCxqP2YuY2FsbChhW2xdLGwsYyhhW2xdLGQpKTpmLGkpO2c9MX1yZXR1cm4gZz9hOms/Yy5jYWxsKGEpOm0/YyhhWzBdLGQpOmh9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXIuZXhlYyhhKXx8cy5leGVjKGEpfHx0LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJnUuZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxzdWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1lLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24oZCxmKXtmJiZmIGluc3RhbmNlb2YgZSYmIShmIGluc3RhbmNlb2YgYSkmJihmPWEoZikpO3JldHVybiBlLmZuLmluaXQuY2FsbCh0aGlzLGQsZixiKX0sYS5mbi5pbml0LnByb3RvdHlwZT1hLmZuO3ZhciBiPWEoYyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSxlLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtJWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHo9ZS51YU1hdGNoKHkpLHouYnJvd3NlciYmKGUuYnJvd3Nlclt6LmJyb3dzZXJdPSEwLGUuYnJvd3Nlci52ZXJzaW9uPXoudmVyc2lvbiksZS5icm93c2VyLndlYmtpdCYmKGUuYnJvd3Nlci5zYWZhcmk9ITApLGoudGVzdCgiwqAiKSYmKGs9L15bXHNceEEwXSsvLGw9L1tcc1x4QTBdKyQvKSxoPWUoYyksYy5hZGRFdmVudExpc3RlbmVyP0I9ZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIsITEpLGUucmVhZHkoKX06Yy5hdHRhY2hFdmVudCYmKEI9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixCKSxlLnJlYWR5KCkpfSk7cmV0dXJuIGV9KCksZz17fTtmLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPWE/Z1thXXx8aChhKTp7fTt2YXIgYz1bXSxkPVtdLGUsaSxqLGssbCxtLG49ZnVuY3Rpb24oYil7dmFyIGQsZSxnLGgsaTtmb3IoZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKylnPWJbZF0saD1mLnR5cGUoZyksaD09PSJhcnJheSI/bihnKTpoPT09ImZ1bmN0aW9uIiYmKCFhLnVuaXF1ZXx8IXAuaGFzKGcpKSYmYy5wdXNoKGcpfSxvPWZ1bmN0aW9uKGIsZil7Zj1mfHxbXSxlPSFhLm1lbW9yeXx8W2IsZl0saT0hMCxqPSEwLG09a3x8MCxrPTAsbD1jLmxlbmd0aDtmb3IoO2MmJm08bDttKyspaWYoY1ttXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aj0hMSxjJiYoYS5vbmNlP2U9PT0hMD9wLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCkscC5maXJlV2l0aChlWzBdLGVbMV0pKSl9LHA9e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO24oYXJndW1lbnRzKSxqP2w9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaz1hLG8oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2omJmY8PWwmJihsLS0sZjw9bSYmbS0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJnAuZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaj9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbyhiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe3AuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhaX19O3JldHVybiBwfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtpLmRvbmUuYXBwbHkoaSxhcmd1bWVudHMpLmZhaWwuYXBwbHkoaSxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxwaXBlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltiLCJyZWplY3QiXSxwcm9ncmVzczpbYywibm90aWZ5Il19LGZ1bmN0aW9uKGEsYil7dmFyIGM9YlswXSxlPWJbMV0sZztmLmlzRnVuY3Rpb24oYyk/aVthXShmdW5jdGlvbigpe2c9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyYmZi5pc0Z1bmN0aW9uKGcucHJvbWlzZSk/Zy5wcm9taXNlKCkudGhlbihkLnJlc29sdmUsZC5yZWplY3QsZC5ub3RpZnkpOmRbZSsiV2l0aCJdKHRoaXM9PT1pP2Q6dGhpcyxbZ10pfSk6aVthXShkW2VdKX0pfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpYT1oO2Vsc2UgZm9yKHZhciBiIGluIGgpYVtiXT1oW2JdO3JldHVybiBhfX0saT1oLnByb21pc2Uoe30pLGo7Zm9yKGogaW4gZylpW2pdPWdbal0uZmlyZSxpW2orIldpdGgiXT1nW2pdLmZpcmVXaXRoO2kuZG9uZShmdW5jdGlvbigpe2U9InJlc29sdmVkIn0sYy5kaXNhYmxlLGQubG9jaykuZmFpbChmdW5jdGlvbigpe2U9InJlamVjdGVkIn0sYi5kaXNhYmxlLGQubG9jayksYSYmYS5jYWxsKGksaSk7cmV0dXJuIGl9LHdoZW46ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gbShhKXtyZXR1cm4gZnVuY3Rpb24oYil7ZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpiLGoubm90aWZ5V2l0aChrLGUpfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihjKXtiW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmMsLS1nfHxqLnJlc29sdmVXaXRoKGosYil9fXZhciBiPWkuY2FsbChhcmd1bWVudHMsMCksYz0wLGQ9Yi5sZW5ndGgsZT1BcnJheShkKSxnPWQsaD1kLGo9ZDw9MSYmYSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpmLkRlZmVycmVkKCksaz1qLnByb21pc2UoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZiW2NdLnByb21pc2UmJmYuaXNGdW5jdGlvbihiW2NdLnByb21pc2UpP2JbY10ucHJvbWlzZSgpLnRoZW4obChjKSxqLnJlamVjdCxtKGMpKTotLWc7Z3x8ai5yZXNvbHZlV2l0aChqLGIpfWVsc2UgaiE9PWEmJmoucmVzb2x2ZVdpdGgoaixkP1thXTpbXSk7cmV0dXJuIGt9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGcsaCxpLGosayxsLG0sbixvLHA9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxxPWMuZG9jdW1lbnRFbGVtZW50O3Auc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0IikscC5pbm5lckhUTUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3RvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxlPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighZHx8IWQubGVuZ3RofHwhZSlyZXR1cm57fTtnPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksaD1nLmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGk9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxiPXtsZWFkaW5nV2hpdGVzcGFjZTpwLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhcC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDplLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NS8udGVzdChlLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhZS5zdHlsZS5jc3NGbG9hdCxjaGVja09uOmkudmFsdWU9PT0ib24iLG9wdFNlbGVjdGVkOmguc2VsZWN0ZWQsZ2V0U2V0QXR0cmlidXRlOnAuY2xhc3NOYW1lIT09InQiLGVuY3R5cGU6ISFjLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGh0bWw1Q2xvbmU6Yy5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCE9PSI8Om5hdj48LzpuYXY+IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAscGl4ZWxNYXJnaW46ITB9LGYuYm94TW9kZWw9Yi5ib3hNb2RlbD1jLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCIsaS5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFoLmRpc2FibGVkO3RyeXtkZWxldGUgcC50ZXN0fWNhdGNoKHIpe2IuZGVsZXRlRXhwYW5kbz0hMX0hcC5hZGRFdmVudExpc3RlbmVyJiZwLmF0dGFjaEV2ZW50JiZwLmZpcmVFdmVudCYmKHAuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7Yi5ub0Nsb25lRXZlbnQ9ITF9KSxwLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGk9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGkudmFsdWU9InQiLGkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiLnJhZGlvVmFsdWU9aS52YWx1ZT09PSJ0IixpLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxpLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxwLmFwcGVuZENoaWxkKGkpLGo9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksai5hcHBlbmRDaGlsZChwLmxhc3RDaGlsZCksYi5jaGVja0Nsb25lPWouY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuYXBwZW5kQ2hlY2tlZD1pLmNoZWNrZWQsai5yZW1vdmVDaGlsZChpKSxqLmFwcGVuZENoaWxkKHApO2lmKHAuYXR0YWNoRXZlbnQpZm9yKG4gaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSltPSJvbiIrbixvPW0gaW4gcCxvfHwocC5zZXRBdHRyaWJ1dGUobSwicmV0dXJuOyIpLG89dHlwZW9mIHBbbV09PSJmdW5jdGlvbiIpLGJbbisiQnViYmxlcyJdPW87ai5yZW1vdmVDaGlsZChwKSxqPWc9aD1wPWk9bnVsbCxmKGZ1bmN0aW9uKCl7dmFyIGQsZSxnLGgsaSxqLGwsbSxuLHEscixzLHQsdT1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07IXV8fChtPTEsdD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjoiLHI9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsiLHM9dCsiMDt2aXNpYmlsaXR5OmhpZGRlbjsiLG49InN0eWxlPSciK3IrdCsiNXB4IHNvbGlkICMwMDA7IixxPSI8ZGl2ICIrbisiZGlzcGxheTpibG9jazsnPjxkaXYgc3R5bGU9JyIrdCsiMDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsnPjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIicgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz4iKyI8dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiIsZD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD1zKyJ3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOiIrbSsicHgiLHUuaW5zZXJ0QmVmb3JlKGQsdS5maXJzdENoaWxkKSxwPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5hcHBlbmRDaGlsZChwKSxwLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9JyIrdCsiMDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGs9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxvPWtbMF0ub2Zmc2V0SGVpZ2h0PT09MCxrWzBdLnN0eWxlLmRpc3BsYXk9IiIsa1sxXS5zdHlsZS5kaXNwbGF5PSJub25lIixiLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1vJiZrWzBdLm9mZnNldEhlaWdodD09PTAsYS5nZXRDb21wdXRlZFN0eWxlJiYocC5pbm5lckhUTUw9IiIsbD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGwuc3R5bGUud2lkdGg9IjAiLGwuc3R5bGUubWFyZ2luUmlnaHQ9IjAiLHAuc3R5bGUud2lkdGg9IjJweCIscC5hcHBlbmRDaGlsZChsKSxiLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChhLmdldENvbXB1dGVkU3R5bGUobCxudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCksdHlwZW9mIHAuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihwLmlubmVySFRNTD0iIixwLnN0eWxlLndpZHRoPXAuc3R5bGUucGFkZGluZz0iMXB4IixwLnN0eWxlLmJvcmRlcj0wLHAuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIscC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiLHAuc3R5bGUuem9vbT0xLGIuaW5saW5lQmxvY2tOZWVkc0xheW91dD1wLm9mZnNldFdpZHRoPT09MyxwLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixwLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIixwLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NXB4Oyc+PC9kaXY+IixiLnNocmlua1dyYXBCbG9ja3M9cC5vZmZzZXRXaWR0aCE9PTMpLHAuc3R5bGUuY3NzVGV4dD1yK3MscC5pbm5lckhUTUw9cSxlPXAuZmlyc3RDaGlsZCxnPWUuZmlyc3RDaGlsZCxpPWUubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLGo9e2RvZXNOb3RBZGRCb3JkZXI6Zy5vZmZzZXRUb3AhPT01LGRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzOmkub2Zmc2V0VG9wPT09NX0sZy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGcuc3R5bGUudG9wPSIyMHB4IixqLmZpeGVkUG9zaXRpb249Zy5vZmZzZXRUb3A9PT0yMHx8Zy5vZmZzZXRUb3A9PT0xNSxnLnN0eWxlLnBvc2l0aW9uPWcuc3R5bGUudG9wPSIiLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGouc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWcub2Zmc2V0VG9wPT09LTUsai5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD11Lm9mZnNldFRvcCE9PW0sYS5nZXRDb21wdXRlZFN0eWxlJiYocC5zdHlsZS5tYXJnaW5Ub3A9IjElIixiLnBpeGVsTWFyZ2luPShhLmdldENvbXB1dGVkU3R5bGUocCxudWxsKXx8e21hcmdpblRvcDowfSkubWFyZ2luVG9wIT09IjElIiksdHlwZW9mIGQuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihkLnN0eWxlLnpvb209MSksdS5yZW1vdmVDaGlsZChkKSxsPXA9ZD1udWxsLGYuZXh0ZW5kKGIsaikpfSk7cmV0dXJuIGJ9KCk7dmFyIGo9L14oPzpcey4qXH18XFsuKlxdKSQvLGs9LyhbQS1aXSkvZztmLmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKGYuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXthPWEubm9kZVR5cGU/Zi5jYWNoZVthW2YuZXhwYW5kb11dOmFbZi5leHBhbmRvXTtyZXR1cm4hIWEmJiFtKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZyxoLGksaj1mLmV4cGFuZG8saz10eXBlb2YgYz09InN0cmluZyIsbD1hLm5vZGVUeXBlLG09bD9mLmNhY2hlOmEsbj1sP2Fbal06YVtqXSYmaixvPWM9PT0iZXZlbnRzIjtpZigoIW58fCFtW25dfHwhbyYmIWUmJiFtW25dLmRhdGEpJiZrJiZkPT09YilyZXR1cm47bnx8KGw/YVtqXT1uPSsrZi51dWlkOm49aiksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtoXTpoO2lmKCFqW2tdKXJldHVybjtpZihiKXtkPWM/altrXTpqW2tdLmRhdGE7aWYoZCl7Zi5pc0FycmF5KGIpfHwoYiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSkpO2ZvcihlPTAsZz1iLmxlbmd0aDtlPGc7ZSsrKWRlbGV0ZSBkW2JbZV1dO2lmKCEoYz9tOmYuaXNFbXB0eU9iamVjdCkoZCkpcmV0dXJufX1pZighYyl7ZGVsZXRlIGpba10uZGF0YTtpZighbShqW2tdKSlyZXR1cm59Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fCFqLnNldEludGVydmFsP2RlbGV0ZSBqW2tdOmpba109bnVsbCxpJiYoZi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGFbaF06YS5yZW1vdmVBdHRyaWJ1dGU/YS5yZW1vdmVBdHRyaWJ1dGUoaCk6YVtoXT1udWxsKX19LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kYXRhKGEsYixjLCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1mLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJuITB9fSksZi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGcsaCxpLGo9dGhpc1swXSxrPTAsbT1udWxsO2lmKGE9PT1iKXtpZih0aGlzLmxlbmd0aCl7bT1mLmRhdGEoaik7aWYoai5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKGosInBhcnNlZEF0dHJzIikpe2c9ai5hdHRyaWJ1dGVzO2ZvcihpPWcubGVuZ3RoO2s8aTtrKyspaD1nW2tdLm5hbWUsaC5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGg9Zi5jYW1lbENhc2UoaC5zdWJzdHJpbmcoNSkpLGwoaixoLG1baF0pKTtmLl9kYXRhKGosInBhcnNlZEF0dHJzIiwhMCl9fXJldHVybiBtfWlmKHR5cGVvZiBhPT0ib2JqZWN0IilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kYXRhKHRoaXMsYSl9KTtkPWEuc3BsaXQoIi4iLDIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIixlPWRbMV0rIiEiO3JldHVybiBmLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGMpe2lmKGM9PT1iKXttPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2UsW2RbMF1dKSxtPT09YiYmaiYmKG09Zi5kYXRhKGosYSksbT1sKGosYSxtKSk7cmV0dXJuIG09PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTptfWRbMV09Yyx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2UsZCksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitlLGQpfSl9LG51bGwsYyxhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZi5leHRlbmQoe19tYXJrOmZ1bmN0aW9uKGEsYil7YSYmKGI9KGJ8fCJmeCIpKyJtYXJrIixmLl9kYXRhKGEsYiwoZi5fZGF0YShhLGIpfHwwKSsxKSl9LF91bm1hcms6ZnVuY3Rpb24oYSxiLGMpe2EhPT0hMCYmKGM9YixiPWEsYT0hMSk7aWYoYil7Yz1jfHwiZngiO3ZhciBkPWMrIm1hcmsiLGU9YT8wOihmLl9kYXRhKGIsZCl8fDEpLTE7ZT9mLl9kYXRhKGIsZCxlKTooZi5yZW1vdmVEYXRhKGIsZCwhMCksbihiLGMsIm1hcmsiKSl9fSxxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIixkPWYuX2RhdGEoYSxiKSxjJiYoIWR8fGYuaXNBcnJheShjKT9kPWYuX2RhdGEoYSxiLGYubWFrZUFycmF5KGMpKTpkLnB1c2goYykpO3JldHVybiBkfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU9e307ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGYuX2RhdGEoYSxiKyIucnVuIixlKSxkLmNhbGwoYSxmdW5jdGlvbigpe2YuZGVxdWV1ZShhLGIpfSxlKSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSAiK2IrIi5ydW4iLCEwKSxuKGEsYiwicXVldWUiKSl9fSksZi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9Mjt0eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT0iZngiLGQtLSk7aWYoYXJndW1lbnRzLmxlbmd0aDxkKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIGM9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zi5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwhMCkpaCsrLGwuYWRkKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKGMpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlQXR0cih0aGlzLGEpfSl9LHByb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7YT1mLnByb3BGaXhbYV18fGE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPWIsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYyl7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nIil7Yj1hLnNwbGl0KHApO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtlPXRoaXNbY107aWYoZS5ub2RlVHlwZT09PTEpaWYoIWUuY2xhc3NOYW1lJiZiLmxlbmd0aD09PTEpZS5jbGFzc05hbWU9YTtlbHNle2c9IiAiK2UuY2xhc3NOYW1lKyIgIjtmb3IoaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl+Zy5pbmRleE9mKCIgIitiW2hdKyIgIil8fChnKz1iW2hdKyIgIik7ZS5jbGFzc05hbWU9Zi50cmltKGcpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGgsaSxqO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHApO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe2g9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpO2ZvcihpPTAsaj1jLmxlbmd0aDtpPGo7aSsrKWg9aC5yZXBsYWNlKCIgIitjW2ldKyIgIiwiICIpO2cuY2xhc3NOYW1lPWYudHJpbShoKX1lbHNlIGcuY2xhc3NOYW1lPSIifX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYSxkPXR5cGVvZiBiPT0iYm9vbGVhbiI7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGUsZz0wLGg9Zih0aGlzKSxpPWIsaj1hLnNwbGl0KHApO3doaWxlKGU9altnKytdKWk9ZD9pOiFoLmhhc0NsYXNzKGUpLGhbaT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7Zm9yKDtjPGQ7YysrKWlmKHRoaXNbY10ubm9kZVR5cGU9PT0xJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnPXRoaXNbMF07e2lmKCEhYXJndW1lbnRzLmxlbmd0aCl7ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLnR5cGVdfHxmLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9aWYoZyl7Yz1mLnZhbEhvb2tzW2cudHlwZV18fGYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZihjJiYiZ2V0ImluIGMmJihkPWMuZ2V0KGcsInZhbHVlIikpIT09YilyZXR1cm4gZDtkPWcudmFsdWU7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kLnJlcGxhY2UocSwiIik6ZD09bnVsbD8iIjpkfX19fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCEhYSYmaiE9PTMmJmohPT04JiZqIT09Mil7aWYoZSYmYyBpbiBmLmF0dHJGbilyZXR1cm4gZihhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufWlmKGgmJiJzZXQiaW4gaCYmaSYmKGc9aC5zZXQoYSxkLGMpKSE9PWIpcmV0dXJuIGc7YS5zZXRBdHRyaWJ1dGUoYywiIitkKTtyZXR1cm4gZH1pZihoJiYiZ2V0ImluIGgmJmkmJihnPWguZ2V0KGEsYykpIT09bnVsbClyZXR1cm4gZztnPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBnPT09bnVsbD9iOmd9fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaCxpPTA7aWYoYiYmYS5ub2RlVHlwZT09PTEpe2Q9Yi50b0xvd2VyQ2FzZSgpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtpPGc7aSsrKWU9ZFtpXSxlJiYoYz1mLnByb3BGaXhbZV18fGUsaD11LnRlc3QoZSksaHx8Zi5hdHRyKGEsZSwiIiksYS5yZW1vdmVBdHRyaWJ1dGUodj9lOmMpLGgmJmMgaW4gYSYmKGFbY109ITEpKX19LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoci50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUpZi5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighZi5zdXBwb3J0LnJhZGlvVmFsdWUmJmI9PT0icmFkaW8iJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpO3JldHVybiBifX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oYSxiKXtpZih3JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB3LmdldChhLGIpO3JldHVybiBiIGluIGE/YS52YWx1ZTpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuc2V0KGEsYixjKTthLnZhbHVlPWJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaT1hLm5vZGVUeXBlO2lmKCEhYSYmaSE9PTMmJmkhPT04JiZpIT09Mil7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnMudGVzdChhLm5vZGVOYW1lKXx8dC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiaW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgseD17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT1mLnByb3AoYSxjKTtyZXR1cm4gZT09PSEwfHx0eXBlb2YgZSE9ImJvb2xlYW4iJiYoZD1hLmdldEF0dHJpYnV0ZU5vZGUoYykpJiZkLm5vZGVWYWx1ZSE9PSExP2MudG9Mb3dlckNhc2UoKTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2I9PT0hMT9mLnJlbW92ZUF0dHIoYSxjKTooZD1mLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gY319LHZ8fCh5PXtuYW1lOiEwLGlkOiEwLGNvb3JkczohMH0sdz1mLnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQ7ZD1hLmdldEF0dHJpYnV0ZU5vZGUoYyk7cmV0dXJuIGQmJih5W2NdP2Qubm9kZVZhbHVlIT09IiI6ZC5zcGVjaWZpZWQpP2Qubm9kZVZhbHVlOmJ9LHNldDpmdW5jdGlvbihhLGIsZCl7dmFyIGU9YS5nZXRBdHRyaWJ1dGVOb2RlKGQpO2V8fChlPWMuY3JlYXRlQXR0cmlidXRlKGQpLGEuc2V0QXR0cmlidXRlTm9kZShlKSk7cmV0dXJuIGUubm9kZVZhbHVlPWIrIiJ9fSxmLmF0dHJIb29rcy50YWJpbmRleC5zZXQ9dy5zZXQsZi5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGIpe2YuYXR0ckhvb2tzW2JdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2JdLHtzZXQ6ZnVuY3Rpb24oYSxjKXtpZihjPT09IiIpe2Euc2V0QXR0cmlidXRlKGIsImF1dG8iKTtyZXR1cm4gY319fSl9KSxmLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e2dldDp3LmdldCxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2I9PT0iIiYmKGI9ImZhbHNlIiksdy5zZXQoYSxiLGMpfX0pLGYuc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8Zi5lYWNoKFsiaHJlZiIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxjKXtmLmF0dHJIb29rc1tjXT1mLmV4dGVuZChmLmF0dHJIb29rc1tjXSx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBkPWEuZ2V0QXR0cmlidXRlKGMsMik7cmV0dXJuIGQ9PT1udWxsP2I6ZH19KX0pLGYuc3VwcG9ydC5zdHlsZXx8KGYuYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpfHxifSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0PSIiK2J9fSksZi5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoZi5wcm9wSG9va3Muc2VsZWN0ZWQ9Zi5leHRlbmQoZi5wcm9wSG9va3Muc2VsZWN0ZWQse2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KTtyZXR1cm4gbnVsbH19KSksZi5zdXBwb3J0LmVuY3R5cGV8fChmLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKSxmLnN1cHBvcnQuY2hlY2tPbnx8Zi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidmFsdWUiKT09PW51bGw/Im9uIjphLnZhbHVlfX19KSxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPWYuZXh0ZW5kKGYudmFsSG9va3NbdGhpc10se3NldDpmdW5jdGlvbihhLGIpe2lmKGYuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPWYuaW5BcnJheShmKGEpLnZhbCgpLGIpPj0wfX0pfSk7dmFyIHo9L14oPzp0ZXh0YXJlYXxpbnB1dHxzZWxlY3QpJC9pLEE9L14oW15cLl0qKT8oPzpcLiguKykpPyQvLEI9Lyg/Ol58XHMpaG92ZXIoXC5cUyspP1xiLyxDPS9ea2V5LyxEPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxFPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxGPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sRz1mdW5jdGlvbigKYSl7dmFyIGI9Ri5leGVjKGEpO2ImJihiWzFdPShiWzFdfHwiIikudG9Mb3dlckNhc2UoKSxiWzNdPWJbM10mJm5ldyBSZWdFeHAoIig/Ol58XFxzKSIrYlszXSsiKD86XFxzfCQpIikpO3JldHVybiBifSxIPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5hdHRyaWJ1dGVzfHx7fTtyZXR1cm4oIWJbMV18fGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJbMV0pJiYoIWJbMl18fChjLmlkfHx7fSkudmFsdWU9PT1iWzJdKSYmKCFiWzNdfHxiWzNdLnRlc3QoKGNbImNsYXNzIl18fHt9KS52YWx1ZSkpfSxJPWZ1bmN0aW9uKGEpe3JldHVybiBmLmV2ZW50LnNwZWNpYWwuaG92ZXI/YTphLnJlcGxhY2UoQiwibW91c2VlbnRlciQxIG1vdXNlbGVhdmUkMSIpfTtmLmV2ZW50PXthZGQ6ZnVuY3Rpb24oYSxjLGQsZSxnKXt2YXIgaCxpLGosayxsLG0sbixvLHAscSxyLHM7aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTh8fCFjfHwhZHx8IShoPWYuX2RhdGEoYSkpKSl7ZC5oYW5kbGVyJiYocD1kLGQ9cC5oYW5kbGVyLGc9cC5zZWxlY3RvciksZC5ndWlkfHwoZC5ndWlkPWYuZ3VpZCsrKSxqPWguZXZlbnRzLGp8fChoLmV2ZW50cz1qPXt9KSxpPWguaGFuZGxlLGl8fChoLmhhbmRsZT1pPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgZiE9InVuZGVmaW5lZCImJighYXx8Zi5ldmVudC50cmlnZ2VyZWQhPT1hLnR5cGUpP2YuZXZlbnQuZGlzcGF0Y2guYXBwbHkoaS5lbGVtLGFyZ3VtZW50cyk6Yn0saS5lbGVtPWEpLGM9Zi50cmltKEkoYykpLnNwbGl0KCIgIik7Zm9yKGs9MDtrPGMubGVuZ3RoO2srKyl7bD1BLmV4ZWMoY1trXSl8fFtdLG09bFsxXSxuPShsWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscz1mLmV2ZW50LnNwZWNpYWxbbV18fHt9LG09KGc/cy5kZWxlZ2F0ZVR5cGU6cy5iaW5kVHlwZSl8fG0scz1mLmV2ZW50LnNwZWNpYWxbbV18fHt9LG89Zi5leHRlbmQoe3R5cGU6bSxvcmlnVHlwZTpsWzFdLGRhdGE6ZSxoYW5kbGVyOmQsZ3VpZDpkLmd1aWQsc2VsZWN0b3I6ZyxxdWljazpnJiZHKGcpLG5hbWVzcGFjZTpuLmpvaW4oIi4iKX0scCkscj1qW21dO2lmKCFyKXtyPWpbbV09W10sci5kZWxlZ2F0ZUNvdW50PTA7aWYoIXMuc2V0dXB8fHMuc2V0dXAuY2FsbChhLGUsbixpKT09PSExKWEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobSxpLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbSxpKX1zLmFkZCYmKHMuYWRkLmNhbGwoYSxvKSxvLmhhbmRsZXIuZ3VpZHx8KG8uaGFuZGxlci5ndWlkPWQuZ3VpZCkpLGc/ci5zcGxpY2Uoci5kZWxlZ2F0ZUNvdW50KyssMCxvKTpyLnB1c2gobyksZi5ldmVudC5nbG9iYWxbbV09ITB9YT1udWxsfX0sZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBnPWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKSxoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighIWcmJiEhKG89Zy5ldmVudHMpKXtiPWYudHJpbShJKGJ8fCIiKSkuc3BsaXQoIiAiKTtmb3IoaD0wO2g8Yi5sZW5ndGg7aCsrKXtpPUEuZXhlYyhiW2hdKXx8W10saj1rPWlbMV0sbD1pWzJdO2lmKCFqKXtmb3IoaiBpbiBvKWYuZXZlbnQucmVtb3ZlKGEsaitiW2hdLGMsZCwhMCk7Y29udGludWV9cD1mLmV2ZW50LnNwZWNpYWxbal18fHt9LGo9KGQ/cC5kZWxlZ2F0ZVR5cGU6cC5iaW5kVHlwZSl8fGoscj1vW2pdfHxbXSxtPXIubGVuZ3RoLGw9bD9uZXcgUmVnRXhwKCIoXnxcXC4pIitsLnNwbGl0KCIuIikuc29ydCgpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpOm51bGw7Zm9yKG49MDtuPHIubGVuZ3RoO24rKylzPXJbbl0sKGV8fGs9PT1zLm9yaWdUeXBlKSYmKCFjfHxjLmd1aWQ9PT1zLmd1aWQpJiYoIWx8fGwudGVzdChzLm5hbWVzcGFjZSkpJiYoIWR8fGQ9PT1zLnNlbGVjdG9yfHxkPT09IioqIiYmcy5zZWxlY3RvcikmJihyLnNwbGljZShuLS0sMSkscy5zZWxlY3RvciYmci5kZWxlZ2F0ZUNvdW50LS0scC5yZW1vdmUmJnAucmVtb3ZlLmNhbGwoYSxzKSk7ci5sZW5ndGg9PT0wJiZtIT09ci5sZW5ndGgmJigoIXAudGVhcmRvd258fHAudGVhcmRvd24uY2FsbChhLGwpPT09ITEpJiZmLnJlbW92ZUV2ZW50KGEsaixnLmhhbmRsZSksZGVsZXRlIG9bal0pfWYuaXNFbXB0eU9iamVjdChvKSYmKHE9Zy5oYW5kbGUscSYmKHEuZWxlbT1udWxsKSxmLnJlbW92ZURhdGEoYSxbImV2ZW50cyIsImhhbmRsZSJdLCEwKSl9fSxjdXN0b21FdmVudDp7Z2V0RGF0YTohMCxzZXREYXRhOiEwLGNoYW5nZURhdGE6ITB9LHRyaWdnZXI6ZnVuY3Rpb24oYyxkLGUsZyl7aWYoIWV8fGUubm9kZVR5cGUhPT0zJiZlLm5vZGVUeXBlIT09OCl7dmFyIGg9Yy50eXBlfHxjLGk9W10saixrLGwsbSxuLG8scCxxLHIscztpZihFLnRlc3QoaCtmLmV2ZW50LnRyaWdnZXJlZCkpcmV0dXJuO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGs9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCghZXx8Zi5ldmVudC5jdXN0b21FdmVudFtoXSkmJiFmLmV2ZW50Lmdsb2JhbFtoXSlyZXR1cm47Yz10eXBlb2YgYz09Im9iamVjdCI/Y1tmLmV4cGFuZG9dP2M6bmV3IGYuRXZlbnQoaCxjKTpuZXcgZi5FdmVudChoKSxjLnR5cGU9aCxjLmlzVHJpZ2dlcj0hMCxjLmV4Y2x1c2l2ZT1rLGMubmFtZXNwYWNlPWkuam9pbigiLiIpLGMubmFtZXNwYWNlX3JlPWMubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2kuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbCxvPWguaW5kZXhPZigiOiIpPDA/Im9uIitoOiIiO2lmKCFlKXtqPWYuY2FjaGU7Zm9yKGwgaW4gailqW2xdLmV2ZW50cyYmaltsXS5ldmVudHNbaF0mJmYuZXZlbnQudHJpZ2dlcihjLGQsaltsXS5oYW5kbGUuZWxlbSwhMCk7cmV0dXJufWMucmVzdWx0PWIsYy50YXJnZXR8fChjLnRhcmdldD1lKSxkPWQhPW51bGw/Zi5tYWtlQXJyYXkoZCk6W10sZC51bnNoaWZ0KGMpLHA9Zi5ldmVudC5zcGVjaWFsW2hdfHx7fTtpZihwLnRyaWdnZXImJnAudHJpZ2dlci5hcHBseShlLGQpPT09ITEpcmV0dXJuO3I9W1tlLHAuYmluZFR5cGV8fGhdXTtpZighZyYmIXAubm9CdWJibGUmJiFmLmlzV2luZG93KGUpKXtzPXAuZGVsZWdhdGVUeXBlfHxoLG09RS50ZXN0KHMraCk/ZTplLnBhcmVudE5vZGUsbj1udWxsO2Zvcig7bTttPW0ucGFyZW50Tm9kZSlyLnB1c2goW20sc10pLG49bTtuJiZuPT09ZS5vd25lckRvY3VtZW50JiZyLnB1c2goW24uZGVmYXVsdFZpZXd8fG4ucGFyZW50V2luZG93fHxhLHNdKX1mb3IobD0wO2w8ci5sZW5ndGgmJiFjLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKW09cltsXVswXSxjLnR5cGU9cltsXVsxXSxxPShmLl9kYXRhKG0sImV2ZW50cyIpfHx7fSlbYy50eXBlXSYmZi5fZGF0YShtLCJoYW5kbGUiKSxxJiZxLmFwcGx5KG0sZCkscT1vJiZtW29dLHEmJmYuYWNjZXB0RGF0YShtKSYmcS5hcHBseShtLGQpPT09ITEmJmMucHJldmVudERlZmF1bHQoKTtjLnR5cGU9aCwhZyYmIWMuaXNEZWZhdWx0UHJldmVudGVkKCkmJighcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShlLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihoIT09ImNsaWNrInx8IWYubm9kZU5hbWUoZSwiYSIpKSYmZi5hY2NlcHREYXRhKGUpJiZvJiZlW2hdJiYoaCE9PSJmb2N1cyImJmghPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFmLmlzV2luZG93KGUpJiYobj1lW29dLG4mJihlW29dPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpLGYuZXZlbnQudHJpZ2dlcmVkPWIsbiYmKGVbb109bikpO3JldHVybiBjLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtjLnR5cGVdfHxbXSxlPWQuZGVsZWdhdGVDb3VudCxnPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGg9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsaT1mLmV2ZW50LnNwZWNpYWxbYy50eXBlXXx8e30saj1bXSxrLGwsbSxuLG8scCxxLHIscyx0LHU7Z1swXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZighaS5wcmVEaXNwYXRjaHx8aS5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYykhPT0hMSl7aWYoZSYmKCFjLmJ1dHRvbnx8Yy50eXBlIT09ImNsaWNrIikpe249Zih0aGlzKSxuLmNvbnRleHQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzO2ZvcihtPWMudGFyZ2V0O20hPXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpaWYobS5kaXNhYmxlZCE9PSEwKXtwPXt9LHI9W10sblswXT1tO2ZvcihrPTA7azxlO2srKylzPWRba10sdD1zLnNlbGVjdG9yLHBbdF09PT1iJiYocFt0XT1zLnF1aWNrP0gobSxzLnF1aWNrKTpuLmlzKHQpKSxwW3RdJiZyLnB1c2gocyk7ci5sZW5ndGgmJmoucHVzaCh7ZWxlbTptLG1hdGNoZXM6cn0pfX1kLmxlbmd0aD5lJiZqLnB1c2goe2VsZW06dGhpcyxtYXRjaGVzOmQuc2xpY2UoZSl9KTtmb3Ioaz0wO2s8ai5sZW5ndGgmJiFjLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7aysrKXtxPWpba10sYy5jdXJyZW50VGFyZ2V0PXEuZWxlbTtmb3IobD0wO2w8cS5tYXRjaGVzLmxlbmd0aCYmIWMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTtsKyspe3M9cS5tYXRjaGVzW2xdO2lmKGh8fCFjLm5hbWVzcGFjZSYmIXMubmFtZXNwYWNlfHxjLm5hbWVzcGFjZV9yZSYmYy5uYW1lc3BhY2VfcmUudGVzdChzLm5hbWVzcGFjZSkpYy5kYXRhPXMuZGF0YSxjLmhhbmRsZU9iaj1zLG89KChmLmV2ZW50LnNwZWNpYWxbcy5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fHMuaGFuZGxlcikuYXBwbHkocS5lbGVtLGcpLG8hPT1iJiYoYy5yZXN1bHQ9byxvPT09ITEmJihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSkpfX1pLnBvc3REaXNwYXRjaCYmaS5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGMpO3JldHVybiBjLnJlc3VsdH19LHByb3BzOiJhdHRyQ2hhbmdlIGF0dHJOYW1lIHJlbGF0ZWROb2RlIHNyY0VsZW1lbnQgYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXthLndoaWNoPT1udWxsJiYoYS53aGljaD1iLmNoYXJDb2RlIT1udWxsP2IuY2hhckNvZGU6Yi5rZXlDb2RlKTtyZXR1cm4gYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnLGg9ZC5idXR0b24saT1kLmZyb21FbGVtZW50O2EucGFnZVg9PW51bGwmJmQuY2xpZW50WCE9bnVsbCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8YyxmPWUuZG9jdW1lbnRFbGVtZW50LGc9ZS5ib2R5LGEucGFnZVg9ZC5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGcmJmcuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8ZyYmZy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWQuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGcmJmcuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGcmJmcuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaSYmKGEucmVsYXRlZFRhcmdldD1pPT09YS50YXJnZXQ/ZC50b0VsZW1lbnQ6aSksIWEud2hpY2gmJmghPT1iJiYoYS53aGljaD1oJjE/MTpoJjI/MzpoJjQ/MjowKTtyZXR1cm4gYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGQsZSxnPWEsaD1mLmV2ZW50LmZpeEhvb2tzW2EudHlwZV18fHt9LGk9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzO2E9Zi5FdmVudChnKTtmb3IoZD1pLmxlbmd0aDtkOyllPWlbLS1kXSxhW2VdPWdbZV07YS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGMpLGEudGFyZ2V0Lm5vZGVUeXBlPT09MyYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT09PWImJihhLm1ldGFLZXk9YS5jdHJsS2V5KTtyZXR1cm4gaC5maWx0ZXI/aC5maWx0ZXIoYSxnKTphfSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHl9LGxvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7ZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7ZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGJlZm9yZXVubG9hZDp7c2V0dXA6ZnVuY3Rpb24oYSxiLGMpe2YuaXNXaW5kb3codGhpcykmJih0aGlzLm9uYmVmb3JldW5sb2FkPWMpfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIpe3RoaXMub25iZWZvcmV1bmxvYWQ9PT1iJiYodGhpcy5vbmJlZm9yZXVubG9hZD1udWxsKX19fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1mLmV4dGVuZChuZXcgZi5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2Q/Zi5ldmVudC50cmlnZ2VyKGUsbnVsbCxiKTpmLmV2ZW50LmRpc3BhdGNoLmNhbGwoYixlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZjLnByZXZlbnREZWZhdWx0KCl9fSxmLmV2ZW50LmhhbmRsZT1mLmV2ZW50LmRpc3BhdGNoLGYucmVtb3ZlRXZlbnQ9Yy5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfTpmdW5jdGlvbihhLGIsYyl7YS5kZXRhY2hFdmVudCYmYS5kZXRhY2hFdmVudCgib24iK2IsYyl9LGYuRXZlbnQ9ZnVuY3Rpb24oYSxiKXtpZighKHRoaXMgaW5zdGFuY2VvZiBmLkV2ZW50KSlyZXR1cm4gbmV3IGYuRXZlbnQoYSxiKTthJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHxhLnJldHVyblZhbHVlPT09ITF8fGEuZ2V0UHJldmVudERlZmF1bHQmJmEuZ2V0UHJldmVudERlZmF1bHQoKT9LOkopOnRoaXMudHlwZT1hLGImJmYuZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fGYubm93KCksdGhpc1tmLmV4cGFuZG9dPSEwfSxmLkV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1LO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPUs7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5zdG9wUHJvcGFnYXRpb24mJmEuc3RvcFByb3BhZ2F0aW9uKCksYS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPUssdGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOkosaXNQcm9wYWdhdGlvblN0b3BwZWQ6Sixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpKfSxmLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5jdGlvbihhLGIpe2YuZXZlbnQuc3BlY2lhbFthXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcyxkPWEucmVsYXRlZFRhcmdldCxlPWEuaGFuZGxlT2JqLGc9ZS5zZWxlY3RvcixoO2lmKCFkfHxkIT09YyYmIWYuY29udGFpbnMoYyxkKSlhLnR5cGU9ZS5vcmlnVHlwZSxoPWUuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWI7cmV0dXJuIGh9fX0pLGYuc3VwcG9ydC5zdWJtaXRCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtpZihmLm5vZGVOYW1lKHRoaXMsImZvcm0iKSlyZXR1cm4hMTtmLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBjPWEudGFyZ2V0LGQ9Zi5ub2RlTmFtZShjLCJpbnB1dCIpfHxmLm5vZGVOYW1lKGMsImJ1dHRvbiIpP2MuZm9ybTpiO2QmJiFkLl9zdWJtaXRfYXR0YWNoZWQmJihmLmV2ZW50LmFkZChkLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLGQuX3N1Ym1pdF9hdHRhY2hlZD0hMCl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmZi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksZi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKHoudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilmLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExLGYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKSl9KTtyZXR1cm4hMX1mLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDt6LnRlc3QoYi5ub2RlTmFtZSkmJiFiLl9jaGFuZ2VfYXR0YWNoZWQmJihmLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiYhYS5pc1NpbXVsYXRlZCYmIWEuaXNUcmlnZ2VyJiZmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMucGFyZW50Tm9kZSxhLCEwKX0pLGIuX2NoYW5nZV9hdHRhY2hlZD0hMCl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O2lmKHRoaXMhPT1ifHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8Yi50eXBlIT09InJhZGlvIiYmYi50eXBlIT09ImNoZWNrYm94IilyZXR1cm4gYS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKTtyZXR1cm4gei50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGYuc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8Zi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBkPTAsZT1mdW5jdGlvbihhKXtmLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsZi5ldmVudC5maXgoYSksITApfTtmLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7ZCsrPT09MCYmYy5hZGRFdmVudExpc3RlbmVyKGEsZSwhMCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7LS1kPT09MCYmYy5yZW1vdmVFdmVudExpc3RlbmVyKGEsZSwhMCl9fX0pLGYuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGk7aWYodHlwZW9mIGE9PSJvYmplY3QiKXt0eXBlb2YgYyE9InN0cmluZyImJihkPWR8fGMsYz1iKTtmb3IoaSBpbiBhKXRoaXMub24oaSxjLGQsYVtpXSxnKTtyZXR1cm4gdGhpc31kPT1udWxsJiZlPT1udWxsPyhlPWMsZD1jPWIpOmU9PW51bGwmJih0eXBlb2YgYz09InN0cmluZyI/KGU9ZCxkPWIpOihlPWQsZD1jLGM9YikpO2lmKGU9PT0hMSllPUo7ZWxzZSBpZighZSlyZXR1cm4gdGhpcztnPT09MSYmKGg9ZSxlPWZ1bmN0aW9uKGEpe2YoKS5vZmYoYSk7cmV0dXJuIGguYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmd1aWQ9aC5ndWlkfHwoaC5ndWlkPWYuZ3VpZCsrKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQuYWRkKHRoaXMsYSxlLGQsYyl9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2Uub3JpZ1R5cGUrIi4iK2UubmFtZXNwYWNlOmUub3JpZ1R5cGUsZS5zZWxlY3RvcixlLmhhbmRsZXIpO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ib2JqZWN0Iil7Zm9yKHZhciBnIGluIGEpdGhpcy5vZmYoZyxjLGFbZ10pO3JldHVybiB0aGlzfWlmKGM9PT0hMXx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZD1jLGM9YjtkPT09ITEmJihkPUopO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLGEsZCxjKX0pfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sbGl2ZTpmdW5jdGlvbihhLGIsYyl7Zih0aGlzLmNvbnRleHQpLm9uKGEsdGhpcy5zZWxlY3RvcixiLGMpO3JldHVybiB0aGlzfSxkaWU6ZnVuY3Rpb24oYSxiKXtmKHRoaXMuY29udGV4dCkub2ZmKGEsdGhpcy5zZWxlY3Rvcnx8IioqIixiKTtyZXR1cm4gdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT0xP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhLGMpfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0aGlzWzBdKXJldHVybiBmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXNbMF0sITApfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLGM9YS5ndWlkfHxmLmd1aWQrKyxkPTAsZT1mdW5jdGlvbihjKXt2YXIgZT0oZi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVkO2YuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkLGUrMSksYy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBiW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9O2UuZ3VpZD1jO3doaWxlKGQ8Yi5sZW5ndGgpYltkKytdLmd1aWQ9YztyZXR1cm4gdGhpcy5jbGljayhlKX0saG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSksZi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7Zi5mbltiXT1mdW5jdGlvbihhLGMpe2M9PW51bGwmJihjPWEsYT1udWxsKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfSxmLmF0dHJGbiYmKGYuYXR0ckZuW2JdPSEwKSxDLnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQua2V5SG9va3MpLEQudGVzdChiKSYmKGYuZXZlbnQuZml4SG9va3NbYl09Zi5ldmVudC5tb3VzZUhvb2tzKX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24geChhLGIsYyxlLGYsZyl7Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj1lW2hdO2lmKGope3ZhciBrPSExO2o9althXTt3aGlsZShqKXtpZihqW2RdPT09Yyl7az1lW2ouc2l6c2V0XTticmVha31pZihqLm5vZGVUeXBlPT09MSl7Z3x8KGpbZF09YyxqLnNpenNldD1oKTtpZih0eXBlb2YgYiE9InN0cmluZyIpe2lmKGo9PT1iKXtrPSEwO2JyZWFrfX1lbHNlIGlmKG0uZmlsdGVyKGIsW2pdKS5sZW5ndGg+MCl7az1qO2JyZWFrfX1qPWpbYV19ZVtoXT1rfX19ZnVuY3Rpb24gdyhhLGIsYyxlLGYsZyl7Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj1lW2hdO2lmKGope3ZhciBrPSExO2o9althXTt3aGlsZShqKXtpZihqW2RdPT09Yyl7az1lW2ouc2l6c2V0XTticmVha31qLm5vZGVUeXBlPT09MSYmIWcmJihqW2RdPWMsai5zaXpzZXQ9aCk7aWYoai5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yil7az1qO2JyZWFrfWo9althXX1lW2hdPWt9fX12YXIgYT0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXlxbXF1dKlxdfFsnIl1bXiciXSpbJyJdfFteXFtcXSciXSspK1xdfFxcLnxbXiA+K34sKFxbXFxdKykrfFs+K35dKShccyosXHMqKT8oKD86LnxccnxcbikqKS9nLGQ9InNpemNhY2hlIisoTWF0aC5yYW5kb20oKSsiIikucmVwbGFjZSgiLiIsIiIpLGU9MCxnPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaD0hMSxpPSEwLGo9L1xcL2csaz0vXHJcbi9nLGw9L1xXLztbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7aT0hMTtyZXR1cm4gMH0pO3ZhciBtPWZ1bmN0aW9uKGIsZCxlLGYpe2U9ZXx8W10sZD1kfHxjO3ZhciBoPWQ7aWYoZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05KXJldHVybltdO2lmKCFifHx0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuIGU7dmFyIGksaixrLGwsbixxLHIsdCx1PSEwLHY9bS5pc1hNTChkKSx3PVtdLHg9Yjtkb3thLmV4ZWMoIiIpLGk9YS5leGVjKHgpO2lmKGkpe3g9aVszXSx3LnB1c2goaVsxXSk7aWYoaVsyXSl7bD1pWzNdO2JyZWFrfX19d2hpbGUoaSk7aWYody5sZW5ndGg+MSYmcC5leGVjKGIpKWlmKHcubGVuZ3RoPT09MiYmby5yZWxhdGl2ZVt3WzBdXSlqPXkod1swXSt3WzFdLGQsZik7ZWxzZXtqPW8ucmVsYXRpdmVbd1swXV0/W2RdOm0ody5zaGlmdCgpLGQpO3doaWxlKHcubGVuZ3RoKWI9dy5zaGlmdCgpLG8ucmVsYXRpdmVbYl0mJihiKz13LnNoaWZ0KCkpLGo9eShiLGosZil9ZWxzZXshZiYmdy5sZW5ndGg+MSYmZC5ub2RlVHlwZT09PTkmJiF2JiZvLm1hdGNoLklELnRlc3Qod1swXSkmJiFvLm1hdGNoLklELnRlc3Qod1t3Lmxlbmd0aC0xXSkmJihuPW0uZmluZCh3LnNoaWZ0KCksZCx2KSxkPW4uZXhwcj9tLmZpbHRlcihuLmV4cHIsbi5zZXQpWzBdOm4uc2V0WzBdKTtpZihkKXtuPWY/e2V4cHI6dy5wb3AoKSxzZXQ6cyhmKX06bS5maW5kKHcucG9wKCksdy5sZW5ndGg9PT0xJiYod1swXT09PSJ+Inx8d1swXT09PSIrIikmJmQucGFyZW50Tm9kZT9kLnBhcmVudE5vZGU6ZCx2KSxqPW4uZXhwcj9tLmZpbHRlcihuLmV4cHIsbi5zZXQpOm4uc2V0LHcubGVuZ3RoPjA/az1zKGopOnU9ITE7d2hpbGUody5sZW5ndGgpcT13LnBvcCgpLHI9cSxvLnJlbGF0aXZlW3FdP3I9dy5wb3AoKTpxPSIiLHI9PW51bGwmJihyPWQpLG8ucmVsYXRpdmVbcV0oayxyLHYpfWVsc2Ugaz13PVtdfWt8fChrPWopLGt8fG0uZXJyb3IocXx8Yik7aWYoZy5jYWxsKGspPT09IltvYmplY3QgQXJyYXldIilpZighdSllLnB1c2guYXBwbHkoZSxrKTtlbHNlIGlmKGQmJmQubm9kZVR5cGU9PT0xKWZvcih0PTA7a1t0XSE9bnVsbDt0Kyspa1t0XSYmKGtbdF09PT0hMHx8a1t0XS5ub2RlVHlwZT09PTEmJm0uY29udGFpbnMoZCxrW3RdKSkmJmUucHVzaChqW3RdKTtlbHNlIGZvcih0PTA7a1t0XSE9bnVsbDt0Kyspa1t0XSYma1t0XS5ub2RlVHlwZT09PTEmJmUucHVzaChqW3RdKTtlbHNlIHMoayxlKTtsJiYobShsLGgsZSxmKSxtLnVuaXF1ZVNvcnQoZSkpO3JldHVybiBlfTttLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7aWYodSl7aD1pLGEuc29ydCh1KTtpZihoKWZvcih2YXIgYj0xO2I8YS5sZW5ndGg7YisrKWFbYl09PT1hW2ItMV0mJmEuc3BsaWNlKGItLSwxKX1yZXR1cm4gYX0sbS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG0oYSxudWxsLG51bGwsYil9LG0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG0oYixudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0sbS5maW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoIWEpcmV0dXJuW107Zm9yKGU9MCxmPW8ub3JkZXIubGVuZ3RoO2U8ZjtlKyspe2g9by5vcmRlcltlXTtpZihnPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpe2k9Z1sxXSxnLnNwbGljZSgxLDEpO2lmKGkuc3Vic3RyKGkubGVuZ3RoLTEpIT09IlxcIil7Z1sxXT0oZ1sxXXx8IiIpLnJlcGxhY2UoaiwiIiksZD1vLmZpbmRbaF0oZyxiLGMpO2lmKGQhPW51bGwpe2E9YS5yZXBsYWNlKG8ubWF0Y2hbaF0sIiIpO2JyZWFrfX19fWR8fChkPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIj9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6W10pO3JldHVybntzZXQ6ZCxleHByOmF9fSxtLmZpbHRlcj1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLHAscT1hLHI9W10scz1jLHQ9YyYmY1swXSYmbS5pc1hNTChjWzBdKTt3aGlsZShhJiZjLmxlbmd0aCl7Zm9yKGggaW4gby5maWx0ZXIpaWYoKGY9by5sZWZ0TWF0Y2hbaF0uZXhlYyhhKSkhPW51bGwmJmZbMl0pe2s9by5maWx0ZXJbaF0sbD1mWzFdLGc9ITEsZi5zcGxpY2UoMSwxKTtpZihsLnN1YnN0cihsLmxlbmd0aC0xKT09PSJcXCIpY29udGludWU7cz09PXImJihyPVtdKTtpZihvLnByZUZpbHRlcltoXSl7Zj1vLnByZUZpbHRlcltoXShmLHMsZCxyLGUsdCk7aWYoIWYpZz1pPSEwO2Vsc2UgaWYoZj09PSEwKWNvbnRpbnVlfWlmKGYpZm9yKG49MDsoaj1zW25dKSE9bnVsbDtuKyspaiYmKGk9ayhqLGYsbixzKSxwPWVeaSxkJiZpIT1udWxsP3A/Zz0hMDpzW25dPSExOnAmJihyLnB1c2goaiksZz0hMCkpO2lmKGkhPT1iKXtkfHwocz1yKSxhPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTtpZighZylyZXR1cm5bXTticmVha319aWYoYT09PXEpaWYoZz09bnVsbCltLmVycm9yKGEpO2Vsc2UgYnJlYWs7cT1hfXJldHVybiBzfSxtLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX07dmFyIG49bS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hLm5vZGVUeXBlLGU9IiI7aWYoZCl7aWYoZD09PTF8fGQ9PT05fHxkPT09MTEpe2lmKHR5cGVvZiBhLnRleHRDb250ZW50PT0ic3RyaW5nIilyZXR1cm4gYS50ZXh0Q29udGVudDtpZih0eXBlb2YgYS5pbm5lclRleHQ9PSJzdHJpbmciKXJldHVybiBhLmlubmVyVGV4dC5yZXBsYWNlKGssIiIpO2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyllKz1uKGEpfWVsc2UgaWYoZD09PTN8fGQ9PT00KXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIGZvcihiPTA7Yz1hW2JdO2IrKyljLm5vZGVUeXBlIT09OCYmKGUrPW4oYykpO3JldHVybiBlfSxvPW0uc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVxzKig/OihcUz89KVxzKig/OihbJyJdKSguKj8pXDN8KCM/KD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKil8KXwpXHMqXF0vLFRBRzovXigoPzpbXHdcdTAwYzAtXHVGRkZGXCpcLV18XFwuKSspLyxDSElMRDovOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlwoXHMqKGV2ZW58b2RkfCg/OlsrXC1dP1xkK3woPzpbK1wtXT9cZCopP25ccyooPzpbK1wtXVxzKlxkKyk/KSlccypcKSk/LyxQT1M6LzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgoXGQqKVwpKT8oPz1bXlwtXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspKD86XCgoWyciXT8pKCg/OlwoW15cKV0rXCl8W15cKFwpXSopKylcMlwpKT8vfSxsZWZ0TWF0Y2g6e30sYXR0ck1hcDp7ImNsYXNzIjoiY2xhc3NOYW1lIiwiZm9yIjoiaHRtbEZvciJ9LGF0dHJIYW5kbGU6e2hyZWY6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ0eXBlIil9fSxyZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGI9PSJzdHJpbmciLGQ9YyYmIWwudGVzdChiKSxlPWMmJiFkO2QmJihiPWIudG9Mb3dlckNhc2UoKSk7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aCxoO2Y8ZztmKyspaWYoaD1hW2ZdKXt3aGlsZSgoaD1oLnByZXZpb3VzU2libGluZykmJmgubm9kZVR5cGUhPT0xKTthW2ZdPWV8fGgmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/aHx8ITE6aD09PWJ9ZSYmbS5maWx0ZXIoYixhLCEwKX0sIj4iOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10eXBlb2YgYj09InN0cmluZyIsZT0wLGY9YS5sZW5ndGg7aWYoZCYmIWwudGVzdChiKSl7Yj1iLnRvTG93ZXJDYXNlKCk7Zm9yKDtlPGY7ZSsrKXtjPWFbZV07aWYoYyl7dmFyIGc9Yy5wYXJlbnROb2RlO2FbZV09Zy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9nOiExfX19ZWxzZXtmb3IoO2U8ZjtlKyspYz1hW2VdLGMmJihhW2VdPWQ/Yy5wYXJlbnROb2RlOmMucGFyZW50Tm9kZT09PWIpO2QmJm0uZmlsdGVyKGIsYSwhMCl9fSwiIjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj1lKyssZz14O3R5cGVvZiBiPT0ic3RyaW5nIiYmIWwudGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGQ9YixnPXcpLGcoInBhcmVudE5vZGUiLGIsZixhLGQsYyl9LCJ+IjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj1lKyssZz14O3R5cGVvZiBiPT0ic3RyaW5nIiYmIWwudGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGQ9YixnPXcpLGcoInByZXZpb3VzU2libGluZyIsYixmLGEsZCxjKX19LGZpbmQ6e0lEOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFjKXt2YXIgZD1iLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBkJiZkLnBhcmVudE5vZGU/W2RdOltdfX0sTkFNRTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlOYW1lIT0idW5kZWZpbmVkIil7dmFyIGM9W10sZD1iLmdldEVsZW1lbnRzQnlOYW1lKGFbMV0pO2Zvcih2YXIgZT0wLGY9ZC5sZW5ndGg7ZTxmO2UrKylkW2VdLmdldEF0dHJpYnV0ZSgibmFtZSIpPT09YVsxXSYmYy5wdXNoKGRbZV0pO3JldHVybiBjLmxlbmd0aD09PTA/bnVsbDpjfX0sVEFHOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiKXJldHVybiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihhLGIsYyxkLGUsZil7YT0iICIrYVsxXS5yZXBsYWNlKGosIiIpKyIgIjtpZihmKXJldHVybiBhO2Zvcih2YXIgZz0wLGg7KGg9YltnXSkhPW51bGw7ZysrKWgmJihlXihoLmNsYXNzTmFtZSYmKCIgIitoLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoL1tcdFxuXHJdL2csIiAiKS5pbmRleE9mKGEpPj0wKT9jfHxkLnB1c2goaCk6YyYmKGJbZ109ITEpKTtyZXR1cm4hMX0sSUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV0ucmVwbGFjZShqLCIiKX0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMV0ucmVwbGFjZShqLCIiKS50b0xvd2VyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihhKXtpZihhWzFdPT09Im50aCIpe2FbMl18fG0uZXJyb3IoYVswXSksYVsyXT1hWzJdLnJlcGxhY2UoL15cK3xccyovZywiIik7dmFyIGI9LygtPykoXGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKGFbMl09PT0iZXZlbiImJiIybiJ8fGFbMl09PT0ib2RkIiYmIjJuKzEifHwhL1xELy50ZXN0KGFbMl0pJiYiMG4rIithWzJdfHxhWzJdKTthWzJdPWJbMV0rKGJbMl18fDEpLTAsYVszXT1iWzNdLTB9ZWxzZSBhWzJdJiZtLmVycm9yKGFbMF0pO2FbMF09ZSsrO3JldHVybiBhfSxBVFRSOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hWzFdPWFbMV0ucmVwbGFjZShqLCIiKTshZiYmby5hdHRyTWFwW2ddJiYoYVsxXT1vLmF0dHJNYXBbZ10pLGFbNF09KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGosIiIpLGFbMl09PT0ifj0iJiYoYVs0XT0iICIrYVs0XSsiICIpO3JldHVybiBhfSxQU0VVRE86ZnVuY3Rpb24oYixjLGQsZSxmKXtpZihiWzFdPT09Im5vdCIpaWYoKGEuZXhlYyhiWzNdKXx8IiIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KGJbM10pKWJbM109bShiWzNdLG51bGwsbnVsbCxjKTtlbHNle3ZhciBnPW0uZmlsdGVyKGJbM10sYyxkLCEwXmYpO2R8fGUucHVzaC5hcHBseShlLGcpO3JldHVybiExfWVsc2UgaWYoby5tYXRjaC5QT1MudGVzdChiWzBdKXx8by5tYXRjaC5DSElMRC50ZXN0KGJbMF0pKXJldHVybiEwO3JldHVybiBifSxQT1M6ZnVuY3Rpb24oYSl7YS51bnNoaWZ0KCEwKTtyZXR1cm4gYX19LGZpbHRlcnM6e2VuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMSYmYS50eXBlIT09ImhpZGRlbiJ9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2hlY2tlZD09PSEwfSxzZWxlY3RlZDpmdW5jdGlvbihhKXthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBhLnNlbGVjdGVkPT09ITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hIWEuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZmlyc3RDaGlsZH0saGFzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hIW0oY1szXSxhKS5sZW5ndGh9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4vaFxkL2kudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpLGM9YS50eXBlO3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYidGV4dCI9PT1jJiYoYj09PWN8fGI9PT1udWxsKX0scmFkaW86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJyYWRpbyI9PT1hLnR5cGV9LGNoZWNrYm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiY2hlY2tib3giPT09YS50eXBlfSxmaWxlOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiZmlsZSI9PT1hLnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicGFzc3dvcmQiPT09YS50eXBlfSxzdWJtaXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInN1Ym1pdCI9PT1hLnR5cGV9LGltYWdlOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiaW1hZ2UiPT09YS50eXBlfSxyZXNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYicmVzZXQiPT09YS50eXBlfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiPT09ImlucHV0IiYmImJ1dHRvbiI9PT1hLnR5cGV8fGI9PT0iYnV0dG9uIn0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KGEubm9kZU5hbWUpfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PWEub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50fX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PTB9LGxhc3Q6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGI9PT1kLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTB9LG9kZDpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0xfSxsdDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI8Y1szXS0wfSxndDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI+Y1szXS0wfSxudGg6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifSxlcTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9fSxmaWx0ZXI6e1BTRVVETzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iWzFdLGY9by5maWx0ZXJzW2VdO2lmKGYpcmV0dXJuIGYoYSxjLGIsZCk7aWYoZT09PSJjb250YWlucyIpcmV0dXJuKGEudGV4dENvbnRlbnR8fGEuaW5uZXJUZXh0fHxuKFthXSl8fCIiKS5pbmRleE9mKGJbM10pPj0wO2lmKGU9PT0ibm90Iil7dmFyIGc9YlszXTtmb3IodmFyIGg9MCxpPWcubGVuZ3RoO2g8aTtoKyspaWYoZ1toXT09PWEpcmV0dXJuITE7cmV0dXJuITB9bS5lcnJvcihlKX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPWJbMV0sbD1hO3N3aXRjaChrKXtjYXNlIm9ubHkiOmNhc2UiZmlyc3QiOndoaWxlKGw9bC5wcmV2aW91c1NpYmxpbmcpaWYobC5ub2RlVHlwZT09PTEpcmV0dXJuITE7aWYoaz09PSJmaXJzdCIpcmV0dXJuITA7bD1hO2Nhc2UibGFzdCI6d2hpbGUobD1sLm5leHRTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO3JldHVybiEwO2Nhc2UibnRoIjpjPWJbMl0sZT1iWzNdO2lmKGM9PT0xJiZlPT09MClyZXR1cm4hMDtmPWJbMF0sZz1hLnBhcmVudE5vZGU7aWYoZyYmKGdbZF0hPT1mfHwhYS5ub2RlSW5kZXgpKXtpPTA7Zm9yKGw9Zy5maXJzdENoaWxkO2w7bD1sLm5leHRTaWJsaW5nKWwubm9kZVR5cGU9PT0xJiYobC5ub2RlSW5kZXg9KytpKTtnW2RdPWZ9aj1hLm5vZGVJbmRleC1lO3JldHVybiBjPT09MD9qPT09MDpqJWM9PT0wJiZqL2M+PTB9fSxJRDpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVUeXBlPT09MSYmYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PSIqIiYmYS5ub2RlVHlwZT09PTF8fCEhYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn0sQ0xBU1M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4oIiAiKyhhLmNsYXNzTmFtZXx8YS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihiKT4tMX0sQVRUUjpmdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1tLmF0dHI/bS5hdHRyKGEsYyk6by5hdHRySGFuZGxlW2NdP28uYXR0ckhhbmRsZVtjXShhKTphW2NdIT1udWxsP2FbY106YS5nZXRBdHRyaWJ1dGUoYyksZT1kKyIiLGY9YlsyXSxnPWJbNF07cmV0dXJuIGQ9PW51bGw/Zj09PSIhPSI6IWYmJm0uYXR0cj9kIT1udWxsOmY9PT0iPSI/ZT09PWc6Zj09PSIqPSI/ZS5pbmRleE9mKGcpPj0wOmY9PT0ifj0iPygiICIrZSsiICIpLmluZGV4T2YoZyk+PTA6Zz9mPT09IiE9Ij9lIT09ZzpmPT09Il49Ij9lLmluZGV4T2YoZyk9PT0wOmY9PT0iJD0iP2Uuc3Vic3RyKGUubGVuZ3RoLWcubGVuZ3RoKT09PWc6Zj09PSJ8PSI/ZT09PWd8fGUuc3Vic3RyKDAsZy5sZW5ndGgrMSk9PT1nKyItIjohMTplJiZkIT09ITF9LFBPUzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iWzJdLGY9by5zZXRGaWx0ZXJzW2VdO2lmKGYpcmV0dXJuIGYoYSxjLGIsZCl9fX0scD1vLm1hdGNoLlBPUyxxPWZ1bmN0aW9uKGEsYil7cmV0dXJuIlxcIisoYi0wKzEpfTtmb3IodmFyIHIgaW4gby5tYXRjaClvLm1hdGNoW3JdPW5ldyBSZWdFeHAoby5tYXRjaFtyXS5zb3VyY2UrLyg/IVteXFtdKlxdKSg/IVteXChdKlwpKS8uc291cmNlKSxvLmxlZnRNYXRjaFtyXT1uZXcgUmVnRXhwKC8oXig/Oi58XHJ8XG4pKj8pLy5zb3VyY2Urby5tYXRjaFtyXS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9nLHEpKTtvLm1hdGNoLmdsb2JhbFBPUz1wO3ZhciBzPWZ1bmN0aW9uKGEsYil7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLDApO2lmKGIpe2IucHVzaC5hcHBseShiLGEpO3JldHVybiBifXJldHVybiBhfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaCh0KXtzPWZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkPWJ8fFtdO2lmKGcuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCxhKTtlbHNlIGlmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBlPWEubGVuZ3RoO2M8ZTtjKyspZC5wdXNoKGFbY10pO2Vsc2UgZm9yKDthW2NdO2MrKylkLnB1c2goYVtjXSk7cmV0dXJuIGR9fXZhciB1LHY7Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/dT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxO3JldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6MX06KHU9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7aD0hMDtyZXR1cm4gMH1pZihhLnNvdXJjZUluZGV4JiZiLnNvdXJjZUluZGV4KXJldHVybiBhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7dmFyIGMsZCxlPVtdLGY9W10sZz1hLnBhcmVudE5vZGUsaT1iLnBhcmVudE5vZGUsaj1nO2lmKGc9PT1pKXJldHVybiB2KGEsYik7aWYoIWcpcmV0dXJuLTE7aWYoIWkpcmV0dXJuIDE7d2hpbGUoaillLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7aj1pO3doaWxlKGopZi51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2M9ZS5sZW5ndGgsZD1mLmxlbmd0aDtmb3IodmFyIGs9MDtrPGMmJms8ZDtrKyspaWYoZVtrXSE9PWZba10pcmV0dXJuIHYoZVtrXSxmW2tdKTtyZXR1cm4gaz09PWM/dihhLGZba10sLTEpOnYoZVtrXSxiLDEpfSx2PWZ1bmN0aW9uKGEsYixjKXtpZihhPT09YilyZXR1cm4gYzt2YXIgZD1hLm5leHRTaWJsaW5nO3doaWxlKGQpe2lmKGQ9PT1iKXJldHVybi0xO2Q9ZC5uZXh0U2libGluZ31yZXR1cm4gMX0pLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGU9Yy5kb2N1bWVudEVsZW1lbnQ7YS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrZCsiJy8+IixlLmluc2VydEJlZm9yZShhLGUuZmlyc3RDaGlsZCksYy5nZXRFbGVtZW50QnlJZChkKSYmKG8uZmluZC5JRD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZT9lLmlkPT09YVsxXXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9InVuZGVmaW5lZCImJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1hWzFdP1tlXTpiOltdfX0sby5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBhLm5vZGVUeXBlPT09MSYmYyYmYy5ub2RlVmFsdWU9PT1ifSksZS5yZW1vdmVDaGlsZChhKSxlPWE9bnVsbH0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChjLmNyZWF0ZUNvbW1lbnQoIiIpKSxhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoPjAmJihvLmZpbmQuVEFHPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKTtpZihhWzFdPT09IioiKXt2YXIgZD1bXTtmb3IodmFyIGU9MDtjW2VdO2UrKyljW2VdLm5vZGVUeXBlPT09MSYmZC5wdXNoKGNbZV0pO2M9ZH1yZXR1cm4gY30pLGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT0idW5kZWZpbmVkIiYmYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiJiYoby5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0pLGE9bnVsbH0oKSxjLnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGE9bSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iX19zaXp6bGVfXyI7Yi5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighYi5xdWVyeVNlbGVjdG9yQWxsfHxiLnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoIT09MCl7bT1mdW5jdGlvbihiLGUsZixnKXtlPWV8fGM7aWYoIWcmJiFtLmlzWE1MKGUpKXt2YXIgaD0vXihcdyskKXxeXC4oW1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyhiKTtpZihoJiYoZS5ub2RlVHlwZT09PTF8fGUubm9kZVR5cGU9PT05KSl7aWYoaFsxXSlyZXR1cm4gcyhlLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpLGYpO2lmKGhbMl0mJm8uZmluZC5DTEFTUyYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzJdKSxmKX1pZihlLm5vZGVUeXBlPT09OSl7aWYoYj09PSJib2R5IiYmZS5ib2R5KXJldHVybiBzKFtlLmJvZHldLGYpO2lmKGgmJmhbM10pe3ZhciBpPWUuZ2V0RWxlbWVudEJ5SWQoaFszXSk7aWYoIWl8fCFpLnBhcmVudE5vZGUpcmV0dXJuIHMoW10sZik7aWYoaS5pZD09PWhbM10pcmV0dXJuIHMoW2ldLGYpfXRyeXtyZXR1cm4gcyhlLnF1ZXJ5U2VsZWN0b3JBbGwoYiksZil9Y2F0Y2goail7fX1lbHNlIGlmKGUubm9kZVR5cGU9PT0xJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7dmFyIGs9ZSxsPWUuZ2V0QXR0cmlidXRlKCJpZCIpLG49bHx8ZCxwPWUucGFyZW50Tm9kZSxxPS9eXHMqWyt+XS8udGVzdChiKTtsP249bi5yZXBsYWNlKC8nL2csIlxcJCYiKTplLnNldEF0dHJpYnV0ZSgiaWQiLG4pLHEmJnAmJihlPWUucGFyZW50Tm9kZSk7dHJ5e2lmKCFxfHxwKXJldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbCgiW2lkPSciK24rIiddICIrYiksZil9Y2F0Y2gocil7fWZpbmFsbHl7bHx8ay5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gYShiLGUsZixnKX07Zm9yKHZhciBlIGluIGEpbVtlXT1hW2VdO2I9bnVsbH19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmRvY3VtZW50RWxlbWVudCxiPWEubWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxlY3Rvcnx8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3I7aWYoYil7dmFyIGQ9IWIuY2FsbChjLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCJkaXYiKSxlPSExO3RyeXtiLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQsIlt0ZXN0IT0nJ106c2l6emxlIil9Y2F0Y2goZil7ZT0hMH1tLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGMpe2M9Yy5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCI9JyQxJ10iKTtpZighbS5pc1hNTChhKSl0cnl7aWYoZXx8IW8ubWF0Y2guUFNFVURPLnRlc3QoYykmJiEvIT0vLnRlc3QoYykpe3ZhciBmPWIuY2FsbChhLGMpO2lmKGZ8fCFkfHxhLmRvY3VtZW50JiZhLmRvY3VtZW50Lm5vZGVUeXBlIT09MTEpcmV0dXJuIGZ9fWNhdGNoKGcpe31yZXR1cm4gbShjLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfX19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoISFhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCE9PTApe2EubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7aWYoYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MSlyZXR1cm47by5vcmRlci5zcGxpY2UoMSwwLCJDTEFTUyIpLG8uZmluZC5DTEFTUz1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9InVuZGVmaW5lZCImJiFjKXJldHVybiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYVsxXSl9LGE9bnVsbH19KCksYy5kb2N1bWVudEVsZW1lbnQuY29udGFpbnM/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBhIT09YiYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTohMCl9OmMuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP20uY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KX06bS5jb250YWlucz1mdW5jdGlvbigpe3JldHVybiExfSxtLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPShhP2Eub3duZXJEb2N1bWVudHx8YTowKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/Yi5ub2RlTmFtZSE9PSJIVE1MIjohMX07dmFyIHk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9W10sZj0iIixnPWIubm9kZVR5cGU/W2JdOmI7d2hpbGUoZD1vLm1hdGNoLlBTRVVETy5leGVjKGEpKWYrPWRbMF0sYT1hLnJlcGxhY2Uoby5tYXRjaC5QU0VVRE8sIiIpO2E9by5yZWxhdGl2ZVthXT9hKyIqIjphO2Zvcih2YXIgaD0wLGk9Zy5sZW5ndGg7aDxpO2grKyltKGEsZ1toXSxlLGMpO3JldHVybiBtLmZpbHRlcihmLGUpfTttLmF0dHI9Zi5hdHRyLG0uc2VsZWN0b3JzLmF0dHJNYXA9e30sZi5maW5kPW0sZi5leHByPW0uc2VsZWN0b3JzLGYuZXhwclsiOiJdPWYuZXhwci5maWx0ZXJzLGYudW5pcXVlPW0udW5pcXVlU29ydCxmLnRleHQ9bS5nZXRUZXh0LGYuaXNYTUxEb2M9bS5pc1hNTCxmLmNvbnRhaW5zPW0uY29udGFpbnN9KCk7dmFyIEw9L1VudGlsJC8sTT0vXig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLyxOPS8sLyxPPS9eLlteOiNcW1wuLF0qJC8sUD1BcnJheS5wcm90b3R5cGUuc2xpY2UsUT1mLmV4cHIubWF0Y2guZ2xvYmFsUE9TLFI9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07Zi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjLGQ7aWYodHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBmKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKWlmKGYuY29udGFpbnMoYltjXSx0aGlzKSlyZXR1cm4hMH0pO3ZhciBlPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixhKSxnLGgsaTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7Zz1lLmxlbmd0aCxmLmZpbmQoYSx0aGlzW2NdLGUpO2lmKGM+MClmb3IoaD1nO2g8ZS5sZW5ndGg7aCsrKWZvcihpPTA7aTxnO2krKylpZihlW2ldPT09ZVtoXSl7ZS5zcGxpY2UoaC0tLDEpO2JyZWFrfX1yZXR1cm4gZX0saGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWYoYSk7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYz1iLmxlbmd0aDthPGM7YSsrKWlmKGYuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCExKSwibm90IixhKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsYSwhMCksImZpbHRlciIsYSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmKHR5cGVvZiBhPT0ic3RyaW5nIj9RLnRlc3QoYSk/ZihhLHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSk+PTA6Zi5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihhKS5sZW5ndGg+MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGUsZz10aGlzWzBdO2lmKGYuaXNBcnJheShhKSl7dmFyIGg9MTt3aGlsZShnJiZnLm93bmVyRG9jdW1lbnQmJmchPT1iKXtmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKWYoZykuaXMoYVtkXSkmJmMucHVzaCh7c2VsZWN0b3I6YVtkXSxlbGVtOmcsbGV2ZWw6aH0pO2c9Zy5wYXJlbnROb2RlLGgrK31yZXR1cm4gY312YXIgaT1RLnRlc3QoYSl8fHR5cGVvZiBhIT0ic3RyaW5nIj9mKGEsYnx8dGhpcy5jb250ZXh0KTowO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07d2hpbGUoZyl7aWYoaT9pLmluZGV4KGcpPi0xOmYuZmluZC5tYXRjaGVzU2VsZWN0b3IoZyxhKSl7Yy5wdXNoKGcpO2JyZWFrfWc9Zy5wYXJlbnROb2RlO2lmKCFnfHwhZy5vd25lckRvY3VtZW50fHxnPT09Ynx8Zy5ub2RlVHlwZT09PTExKWJyZWFrfX1jPWMubGVuZ3RoPjE/Zi51bmlxdWUoYyk6YztyZXR1cm4gdGhpcy5wdXNoU3RhY2soYywiY2xvc2VzdCIsYSl9LGluZGV4OmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiB0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5wcmV2QWxsKCkubGVuZ3RoOi0xO2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gZi5pbkFycmF5KHRoaXNbMF0sZihhKSk7cmV0dXJuIGYuaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyl9LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhPT0ic3RyaW5nIj9mKGEsYik6Zi5tYWtlQXJyYXkoYSYmYS5ub2RlVHlwZT9bYV06YSksZD1mLm1lcmdlKHRoaXMuZ2V0KCksYyk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMoY1swXSl8fFMoZFswXSk/ZDpmLnVuaXF1ZShkKSl9LGFuZFNlbGY6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2T2JqZWN0KX19KSxmLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIubm9kZVR5cGUhPT0xMT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGYuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50OmYubWFrZUFycmF5KGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1mLm1hcCh0aGlzLGIsYyk7TC50ZXN0KGEpfHwoZD1jKSxkJiZ0eXBlb2YgZD09InN0cmluZyImJihlPWYuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5ndGg+MSYmIVJbYV0/Zi51bmlxdWUoZSk6ZSwodGhpcy5sZW5ndGg+MXx8Ti50ZXN0KGQpKSYmTS50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUsYSxQLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFY9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLFc9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZyxYPS9eXHMrLyxZPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsWj0vPChbXHc6XSspLywkPS88dGJvZHkvaSxfPS88fCYjP1x3KzsvLGJhPS88KD86c2NyaXB0fHN0eWxlKS9pLGJiPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmM9bmV3IFJlZ0V4cCgiPCg/OiIrVisiKVtcXHMvPl0iLCJpIiksYmQ9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksYmU9L1wvKGphdmF8ZWNtYSlzY3JpcHQvaSxiZj0vXlxzKjwhKD86XFtDREFUQVxbfFwtXC0pLyxiZz17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfSxiaD1VKGMpO2JnLm9wdGdyb3VwPWJnLm9wdGlvbixiZy50Ym9keT1iZy50Zm9vdD1iZy5jb2xncm91cD1iZy5jYXB0aW9uPWJnLnRoZWFkLGJnLnRoPWJnLnRkLGYuc3VwcG9ydC5odG1sU2VyaWFsaXplfHwoYmcuX2RlZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il0pLGYuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yj9mLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxjKS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9ZihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPWYuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtmLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8Zih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmluc2VydEJlZm9yZShhLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT1mCi5jbGVhbihhcmd1bWVudHMpO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIixhcmd1bWVudHMpO2EucHVzaC5hcHBseShhLGYuY2xlYW4oYXJndW1lbnRzKSk7cmV0dXJuIGF9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkOyhkPXRoaXNbY10pIT1udWxsO2MrKylpZighYXx8Zi5maWx0ZXIoYSxbZF0pLmxlbmd0aCkhYiYmZC5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YShkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGYuY2xlYW5EYXRhKFtkXSkpLGQucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI7KGI9dGhpc1thXSkhPW51bGw7YSsrKXtiLm5vZGVUeXBlPT09MSYmZi5jbGVhbkRhdGEoYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTt3aGlsZShiLmZpcnN0Q2hpbGQpYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe2E9YT09bnVsbD8hMTphLGI9Yj09bnVsbD9hOmI7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGYuY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGM9dGhpc1swXXx8e30sZD0wLGU9dGhpcy5sZW5ndGg7aWYoYT09PWIpcmV0dXJuIGMubm9kZVR5cGU9PT0xP2MuaW5uZXJIVE1MLnJlcGxhY2UoVywiIik6bnVsbDtpZih0eXBlb2YgYT09InN0cmluZyImJiFiYS50ZXN0KGEpJiYoZi5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlfHwhWC50ZXN0KGEpKSYmIWJnWyhaLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShZLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPGU7ZCsrKWM9dGhpc1tkXXx8e30sYy5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YShjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGMuaW5uZXJIVE1MPWEpO2M9MH1jYXRjaChnKXt9fWMmJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJkLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JpKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssZnVuY3Rpb24oYSxiKXtiLnNyYz9mLmFqYXgoe3R5cGU6IkdFVCIsZ2xvYmFsOiExLHVybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmYsIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX0pfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGksaj1hWzBdO2ImJmJbMF0mJihpPWJbMF0ub3duZXJEb2N1bWVudHx8YlswXSksaS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwoaT1jKSxhLmxlbmd0aD09PTEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmai5sZW5ndGg8NTEyJiZpPT09YyYmai5jaGFyQXQoMCk9PT0iPCImJiFiYi50ZXN0KGopJiYoZi5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFiZC50ZXN0KGopKSYmKGYuc3VwcG9ydC5odG1sNUNsb25lfHwhYmMudGVzdChqKSkmJihnPSEwLGg9Zi5mcmFnbWVudHNbal0saCYmaCE9PTEmJihlPWgpKSxlfHwoZT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmLmNsZWFuKGEsaSxlLGQpKSxnJiYoZi5mcmFnbWVudHNbal09aD9lOjEpO3JldHVybntmcmFnbWVudDplLGNhY2hlYWJsZTpnfX0sZi5mcmFnbWVudHM9e30sZi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBkPVtdLGU9ZihjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmUubGVuZ3RoPT09MSl7ZVtiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZihlW2hdKVtiXShqKSxkPWQuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhkLGEsZS5zZWxlY3Rvcil9fSksZi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGcsaD1mLnN1cHBvcnQuaHRtbDVDbG9uZXx8Zi5pc1hNTERvYyhhKXx8IWJjLnRlc3QoIjwiK2Eubm9kZU5hbWUrIj4iKT9hLmNsb25lTm9kZSghMCk6Ym8oYSk7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7YmsoYSxoKSxkPWJsKGEpLGU9YmwoaCk7Zm9yKGc9MDtkW2ddOysrZyllW2ddJiZiayhkW2ddLGVbZ10pfWlmKGIpe2JqKGEsaCk7aWYoYyl7ZD1ibChhKSxlPWJsKGgpO2ZvcihnPTA7ZFtnXTsrK2cpYmooZFtnXSxlW2ddKX19ZD1lPW51bGw7cmV0dXJuIGh9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnLGgsaSxqPVtdO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO2Zvcih2YXIgaz0wLGw7KGw9YVtrXSkhPW51bGw7aysrKXt0eXBlb2YgbD09Im51bWJlciImJihsKz0iIik7aWYoIWwpY29udGludWU7aWYodHlwZW9mIGw9PSJzdHJpbmciKWlmKCFfLnRlc3QobCkpbD1iLmNyZWF0ZVRleHROb2RlKGwpO2Vsc2V7bD1sLnJlcGxhY2UoWSwiPCQxPjwvJDI+Iik7dmFyIG09KFouZXhlYyhsKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxuPWJnW21dfHxiZy5fZGVmYXVsdCxvPW5bMF0scD1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHE9YmguY2hpbGROb2RlcyxyO2I9PT1jP2JoLmFwcGVuZENoaWxkKHApOlUoYikuYXBwZW5kQ2hpbGQocCkscC5pbm5lckhUTUw9blsxXStsK25bMl07d2hpbGUoby0tKXA9cC5sYXN0Q2hpbGQ7aWYoIWYuc3VwcG9ydC50Ym9keSl7dmFyIHM9JC50ZXN0KGwpLHQ9bT09PSJ0YWJsZSImJiFzP3AuZmlyc3RDaGlsZCYmcC5maXJzdENoaWxkLmNoaWxkTm9kZXM6blsxXT09PSI8dGFibGU+IiYmIXM/cC5jaGlsZE5vZGVzOltdO2ZvcihpPXQubGVuZ3RoLTE7aT49MDstLWkpZi5ub2RlTmFtZSh0W2ldLCJ0Ym9keSIpJiYhdFtpXS5jaGlsZE5vZGVzLmxlbmd0aCYmdFtpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRbaV0pfSFmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlgudGVzdChsKSYmcC5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShYLmV4ZWMobClbMF0pLHAuZmlyc3RDaGlsZCksbD1wLmNoaWxkTm9kZXMscCYmKHAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKSxxLmxlbmd0aD4wJiYocj1xW3EubGVuZ3RoLTFdLHImJnIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKSl9dmFyIHU7aWYoIWYuc3VwcG9ydC5hcHBlbmRDaGVja2VkKWlmKGxbMF0mJnR5cGVvZiAodT1sLmxlbmd0aCk9PSJudW1iZXIiKWZvcihpPTA7aTx1O2krKylibihsW2ldKTtlbHNlIGJuKGwpO2wubm9kZVR5cGU/ai5wdXNoKGwpOmo9Zi5tZXJnZShqLGwpfWlmKGQpe2c9ZnVuY3Rpb24oYSl7cmV0dXJuIWEudHlwZXx8YmUudGVzdChhLnR5cGUpfTtmb3Ioaz0wO2pba107aysrKXtoPWpba107aWYoZSYmZi5ub2RlTmFtZShoLCJzY3JpcHQiKSYmKCFoLnR5cGV8fGJlLnRlc3QoaC50eXBlKSkpZS5wdXNoKGgucGFyZW50Tm9kZT9oLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCk6aCk7ZWxzZXtpZihoLm5vZGVUeXBlPT09MSl7dmFyIHY9Zi5ncmVwKGguZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGcpO2ouc3BsaWNlLmFwcGx5KGosW2srMSwwXS5jb25jYXQodikpfWQuYXBwZW5kQ2hpbGQoaCl9fX1yZXR1cm4gan0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJwPS9hbHBoYVwoW14pXSpcKS9pLGJxPS9vcGFjaXR5PShbXildKikvLGJyPS8oW0EtWl18Xm1zKS9nLGJzPS9eW1wtK10/KD86XGQqXC4pP1xkKyQvaSxidD0vXi0/KD86XGQqXC4pP1xkKyg/IXB4KVteXGRcc10rJC9pLGJ1PS9eKFtcLStdKT0oW1wtKy5cZGVdKykvLGJ2PS9ebWFyZ2luLyxidz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sYng9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxieSxieixiQTtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZCE9PWI/Zi5zdHlsZShhLGMsZCk6Zi5jc3MoYSxjKX0sYSxjLGFyZ3VtZW50cy5sZW5ndGg+MSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YnkoYSwib3BhY2l0eSIpO3JldHVybiBjPT09IiI/IjEiOmN9cmV0dXJuIGEuc3R5bGUub3BhY2l0eX19fSxjc3NOdW1iZXI6e2ZpbGxPcGFjaXR5OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjpmLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCEhYSYmYS5ub2RlVHlwZSE9PTMmJmEubm9kZVR5cGUhPT04JiYhIWEuc3R5bGUpe3ZhciBnLGgsaT1mLmNhbWVsQ2FzZShjKSxqPWEuc3R5bGUsaz1mLmNzc0hvb2tzW2ldO2M9Zi5jc3NQcm9wc1tpXXx8aTtpZihkPT09Yil7aWYoayYmImdldCJpbiBrJiYoZz1rLmdldChhLCExLGUpKSE9PWIpcmV0dXJuIGc7cmV0dXJuIGpbY119aD10eXBlb2YgZCxoPT09InN0cmluZyImJihnPWJ1LmV4ZWMoZCkpJiYoZD0rKGdbMV0rMSkqK2dbMl0rcGFyc2VGbG9hdChmLmNzcyhhLGMpKSxoPSJudW1iZXIiKTtpZihkPT1udWxsfHxoPT09Im51bWJlciImJmlzTmFOKGQpKXJldHVybjtoPT09Im51bWJlciImJiFmLmNzc051bWJlcltpXSYmKGQrPSJweCIpO2lmKCFrfHwhKCJzZXQiaW4gayl8fChkPWsuc2V0KGEsZCkpIT09Yil0cnl7altjXT1kfWNhdGNoKGwpe319fSxjc3M6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGc7Yz1mLmNhbWVsQ2FzZShjKSxnPWYuY3NzSG9va3NbY10sYz1mLmNzc1Byb3BzW2NdfHxjLGM9PT0iY3NzRmxvYXQiJiYoYz0iZmxvYXQiKTtpZihnJiYiZ2V0ImluIGcmJihlPWcuZ2V0KGEsITAsZCkpIT09YilyZXR1cm4gZTtpZihieSlyZXR1cm4gYnkoYSxjKX0sc3dhcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e30sZSxmO2ZvcihmIGluIGIpZFtmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuY2FsbChhKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09ZFtmXTtyZXR1cm4gZX19KSxmLmN1ckNTUz1mLmNzcyxjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihiej1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxnLGg9YS5zdHlsZTtiPWIucmVwbGFjZShiciwiLSQxIikudG9Mb3dlckNhc2UoKSwoZD1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpJiYoZT1kLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSkmJihjPWUuZ2V0UHJvcGVydHlWYWx1ZShiKSxjPT09IiImJiFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYSkmJihjPWYuc3R5bGUoYSxiKSkpLCFmLnN1cHBvcnQucGl4ZWxNYXJnaW4mJmUmJmJ2LnRlc3QoYikmJmJ0LnRlc3QoYykmJihnPWgud2lkdGgsaC53aWR0aD1jLGM9ZS53aWR0aCxoLndpZHRoPWcpO3JldHVybiBjfSksYy5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYkE9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1hLmN1cnJlbnRTdHlsZSYmYS5jdXJyZW50U3R5bGVbYl0sZz1hLnN0eWxlO2Y9PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSxidC50ZXN0KGYpJiYoYz1nLmxlZnQsZD1hLnJ1bnRpbWVTdHlsZSYmYS5ydW50aW1lU3R5bGUubGVmdCxkJiYoYS5ydW50aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxnLmxlZnQ9Yj09PSJmb250U2l6ZSI/IjFlbSI6ZixmPWcucGl4ZWxMZWZ0KyJweCIsZy5sZWZ0PWMsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9ZCkpO3JldHVybiBmPT09IiI/ImF1dG8iOmZ9KSxieT1ienx8YkEsZi5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe2YuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYylyZXR1cm4gYS5vZmZzZXRXaWR0aCE9PTA/YkIoYSxiLGQpOmYuc3dhcChhLGJ3LGZ1bmN0aW9uKCl7cmV0dXJuIGJCKGEsYixkKX0pfSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYnMudGVzdChiKT9iKyJweCI6Yn19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBicS50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnAsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icC50ZXN0KGcpP2cucmVwbGFjZShicCxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBmLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sZnVuY3Rpb24oKXtyZXR1cm4gYj9ieShhLCJtYXJnaW4tcmlnaHQiKTphLnN0eWxlLm1hcmdpblJpZ2h0fSl9fSl9KSxmLmV4cHImJmYuZXhwci5maWx0ZXJzJiYoZi5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0V2lkdGgsYz1hLm9mZnNldEhlaWdodDtyZXR1cm4gYj09PTAmJmM9PT0wfHwhZi5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmKGEuc3R5bGUmJmEuc3R5bGUuZGlzcGxheXx8Zi5jc3MoYSwiZGlzcGxheSIpKT09PSJub25lIn0sZi5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hZi5leHByLmZpbHRlcnMuaGlkZGVuKGEpfSksZi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXt2YXIgZCxlPXR5cGVvZiBjPT0ic3RyaW5nIj9jLnNwbGl0KCIgIik6W2NdLGY9e307Zm9yKGQ9MDtkPDQ7ZCsrKWZbYStieFtkXStiXT1lW2RdfHxlW2QtMl18fGVbMF07cmV0dXJuIGZ9fX0pO3ZhciBiQz0vJTIwL2csYkQ9L1xbXF0kLyxiRT0vXHI/XG4vZyxiRj0vIy4qJC8sYkc9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9tZyxiSD0vXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8ZGF0ZXRpbWUtbG9jYWx8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksYkk9L14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxiSj0vXig/OkdFVHxIRUFEKSQvLGJLPS9eXC9cLy8sYkw9L1w/LyxiTT0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSxiTj0vXig/OnNlbGVjdHx0ZXh0YXJlYSkvaSxiTz0vXHMrLyxiUD0vKFs/Jl0pXz1bXiZdKi8sYlE9L14oW1x3XCtcLlwtXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKSk/KT8vLGJSPWYuZm4ubG9hZCxiUz17fSxiVD17fSxiVSxiVixiVz1bIiovIl0rWyIqIl07dHJ5e2JVPWUuaHJlZn1jYXRjaChiWCl7YlU9Yy5jcmVhdGVFbGVtZW50KCJhIiksYlUuaHJlZj0iIixiVT1iVS5ocmVmfWJWPWJRLmV4ZWMoYlUudG9Mb3dlckNhc2UoKSl8fFtdLGYuZm4uZXh0ZW5kKHtsb2FkOmZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYSE9InN0cmluZyImJmJSKXJldHVybiBiUi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoIXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciBlPWEuaW5kZXhPZigiICIpO2lmKGU+PTApe3ZhciBnPWEuc2xpY2UoZSxhLmxlbmd0aCk7YT1hLnNsaWNlKDAsZSl9dmFyIGg9IkdFVCI7YyYmKGYuaXNGdW5jdGlvbihjKT8oZD1jLGM9Yik6dHlwZW9mIGM9PSJvYmplY3QiJiYoYz1mLnBhcmFtKGMsZi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLGg9IlBPU1QiKSk7dmFyIGk9dGhpcztmLmFqYXgoe3VybDphLHR5cGU6aCxkYXRhVHlwZToiaHRtbCIsZGF0YTpjLGNvbXBsZXRlOmZ1bmN0aW9uKGEsYixjKXtjPWEucmVzcG9uc2VUZXh0LGEuaXNSZXNvbHZlZCgpJiYoYS5kb25lKGZ1bmN0aW9uKGEpe2M9YX0pLGkuaHRtbChnP2YoIjxkaXY+IikuYXBwZW5kKGMucmVwbGFjZShiTSwiIikpLmZpbmQoZyk6YykpLGQmJmkuZWFjaChkLFtjLGIsYV0pfX0pO3JldHVybiB0aGlzfSxzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzP2YubWFrZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8Yk4udGVzdCh0aGlzLm5vZGVOYW1lKXx8YkgudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPWYodGhpcykudmFsKCk7cmV0dXJuIGM9PW51bGw/bnVsbDpmLmlzQXJyYXkoYyk/Zi5tYXAoYyxmdW5jdGlvbihhLGMpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoYkUsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGJFLCJcclxuIil9fSkuZ2V0KCl9fSksZi5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2IkKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksYiQoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlUsaXNMb2NhbDpiSS50ZXN0KGJWWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04Iixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Yld9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6YlkoYlMpLGFqYXhUcmFuc3BvcnQ6YlkoYlQpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NhKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNiKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJHLmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJGLCIiKS5yZXBsYWNlKGJLLGJWWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYk8pLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJRLmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iVlsxXSYmclsyXT09YlZbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiVlszXXx8KGJWWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGJaKGJTLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJKLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJMLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlAsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYkwudGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiVysiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1iWihiVCxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7aWYoczwyKXcoLTEseik7ZWxzZSB0aHJvdyB6fX1yZXR1cm4gdn0scGFyYW06ZnVuY3Rpb24oYSxjKXt2YXIgZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1mLmlzRnVuY3Rpb24oYik/YigpOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1mLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCk7aWYoZi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWYuaXNQbGFpbk9iamVjdChhKSlmLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IodmFyIGcgaW4gYSliXyhnLGFbZ10sYyxlKTtyZXR1cm4gZC5qb2luKCImIikucmVwbGFjZShiQywiKyIpfX0pLGYuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fX0pO3ZhciBjYz1mLm5vdygpLGNkPS8oXD0pXD8oJnwkKXxcP1w/L2k7Zi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBmLmV4cGFuZG8rIl8iK2NjKyt9fSksZi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGU9dHlwZW9mIGIuZGF0YT09InN0cmluZyImJi9eYXBwbGljYXRpb25cL3hcLXd3d1wtZm9ybVwtdXJsZW5jb2RlZC8udGVzdChiLmNvbnRlbnRUeXBlKTtpZihiLmRhdGFUeXBlc1swXT09PSJqc29ucCJ8fGIuanNvbnAhPT0hMSYmKGNkLnRlc3QoYi51cmwpfHxlJiZjZC50ZXN0KGIuZGF0YSkpKXt2YXIgZyxoPWIuanNvbnBDYWxsYmFjaz1mLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaT1hW2hdLGo9Yi51cmwsaz1iLmRhdGEsbD0iJDEiK2grIiQyIjtiLmpzb25wIT09ITEmJihqPWoucmVwbGFjZShjZCxsKSxiLnVybD09PWomJihlJiYoaz1rLnJlcGxhY2UoY2QsbCkpLGIuZGF0YT09PWsmJihqKz0oL1w/Ly50ZXN0KGopPyImIjoiPyIpK2IuanNvbnArIj0iK2gpKSksYi51cmw9aixiLmRhdGE9ayxhW2hdPWZ1bmN0aW9uKGEpe2c9W2FdfSxkLmFsd2F5cyhmdW5jdGlvbigpe2FbaF09aSxnJiZmLmlzRnVuY3Rpb24oaSkmJmFbaF0oZ1swXSl9KSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtnfHxmLmVycm9yKGgrIiB3YXMgbm90IGNhbGxlZCIpO3JldHVybiBnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiI7cmV0dXJuInNjcmlwdCJ9fSksZi5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe2YuZ2xvYmFsRXZhbChhKTtyZXR1cm4gYX19fSksZi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxmLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGQsZT1jLmhlYWR8fGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtkPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZC5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGQuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGQuc3JjPWEudXJsLGQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7aWYoY3x8IWQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZSYmZC5wYXJlbnROb2RlJiZlLnJlbW92ZUNoaWxkKGQpLGQ9YixjfHxnKDIwMCwic3VjY2VzcyIpfSxlLmluc2VydEJlZm9yZShkLGUuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZC5vbmxvYWQoMCwxKX19fX0pO3ZhciBjZT1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gY2cpY2dbYV0oMCwxKX06ITEsY2Y9MCxjZztmLmFqYXhTZXR0aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmY2goKXx8Y2koKX06Y2gsZnVuY3Rpb24oYSl7Zi5leHRlbmQoZi5zdXBwb3J0LHthamF4OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBhfSl9KGYuYWpheFNldHRpbmdzLnhocigpKSxmLnN1cHBvcnQuYWpheCYmZi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNyb3NzRG9tYWlufHxmLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxnKXt2YXIgaD1jLnhocigpLGksajtjLnVzZXJuYW1lP2gub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmgub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGogaW4gYy54aHJGaWVsZHMpaFtqXT1jLnhockZpZWxkc1tqXTtjLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGogaW4gZSloLnNldFJlcXVlc3RIZWFkZXIoaixlW2pdKX1jYXRjaChrKXt9aC5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGosayxsLG0sbjt0cnl7aWYoZCYmKGV8fGgucmVhZHlTdGF0ZT09PTQpKXtkPWIsaSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPWYubm9vcCxjZSYmZGVsZXRlIGNnW2ldKTtpZihlKWgucmVhZHlTdGF0ZSE9PTQmJmguYWJvcnQoKTtlbHNle2o9aC5zdGF0dXMsbD1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLG09e30sbj1oLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50JiYobS54bWw9bik7dHJ5e20udGV4dD1oLnJlc3BvbnNlVGV4dH1jYXRjaChhKXt9dHJ5e2s9aC5zdGF0dXNUZXh0fWNhdGNoKG8pe2s9IiJ9IWomJmMuaXNMb2NhbCYmIWMuY3Jvc3NEb21haW4/aj1tLnRleHQ/MjAwOjQwNDpqPT09MTIyMyYmKGo9MjA0KX19fWNhdGNoKHApe2V8fGcoLTEscCl9bSYmZyhqLGssbSxsKX0sIWMuYXN5bmN8fGgucmVhZHlTdGF0ZT09PTQ/ZCgpOihpPSsrY2YsY2UmJihjZ3x8KGNnPXt9LGYoYSkudW5sb2FkKGNlKSksY2dbaV09ZCksaC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZCgwLDEpfX19fSk7dmFyIGNqPXt9LGNrLGNsLGNtPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxjbj0vXihbK1wtXT0pPyhbXGQrLlwtXSspKFthLXolXSopJC9pLGNvLGNwPVtbImhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIl0sWyJ3aWR0aCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Il0sWyJvcGFjaXR5Il1dLGNxO2YuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlO2lmKGF8fGE9PT0wKXJldHVybiB0aGlzLmFuaW1hdGUoY3QoInNob3ciLDMpLGEsYixjKTtmb3IodmFyIGc9MCxoPXRoaXMubGVuZ3RoO2c8aDtnKyspZD10aGlzW2ddLGQuc3R5bGUmJihlPWQuc3R5bGUuZGlzcGxheSwhZi5fZGF0YShkLCJvbGRkaXNwbGF5IikmJmU9PT0ibm9uZSImJihlPWQuc3R5bGUuZGlzcGxheT0iIiksKGU9PT0iIiYmZi5jc3MoZCwiZGlzcGxheSIpPT09Im5vbmUifHwhZi5jb250YWlucyhkLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGQpKSYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjdShkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdCgiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdCgidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG8scCxxO2IuYW5pbWF0ZWRQcm9wZXJ0aWVzPXt9O2ZvcihpIGluIGEpe2c9Zi5jYW1lbENhc2UoaSksaSE9PWcmJihhW2ddPWFbaV0sZGVsZXRlIGFbaV0pO2lmKChrPWYuY3NzSG9va3NbZ10pJiYiZXhwYW5kImluIGspe2w9ay5leHBhbmQoYVtnXSksZGVsZXRlIGFbZ107Zm9yKGkgaW4gbClpIGluIGF8fChhW2ldPWxbaV0pfX1mb3IoZyBpbiBhKXtoPWFbZ10sZi5pc0FycmF5KGgpPyhiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1oWzFdLGg9YVtnXT1oWzBdKTpiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1iLnNwZWNpYWxFYXNpbmcmJmIuc3BlY2lhbEVhc2luZ1tnXXx8Yi5lYXNpbmd8fCJzd2luZyI7aWYoaD09PSJoaWRlIiYmZHx8aD09PSJzaG93IiYmIWQpcmV0dXJuIGIuY29tcGxldGUuY2FsbCh0aGlzKTtjJiYoZz09PSJoZWlnaHQifHxnPT09IndpZHRoIikmJihiLm92ZXJmbG93PVt0aGlzLnN0eWxlLm92ZXJmbG93LHRoaXMuc3R5bGUub3ZlcmZsb3dYLHRoaXMuc3R5bGUub3ZlcmZsb3dZXSxmLmNzcyh0aGlzLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmZi5jc3ModGhpcywiZmxvYXQiKT09PSJub25lIiYmKCFmLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dHx8Y3UodGhpcy5ub2RlTmFtZSk9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6dGhpcy5zdHlsZS56b29tPTEpKX1iLm92ZXJmbG93IT1udWxsJiYodGhpcy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik7Zm9yKGkgaW4gYSlqPW5ldyBmLmZ4KHRoaXMsYixpKSxoPWFbaV0sY20udGVzdChoKT8ocT1mLl9kYXRhKHRoaXMsInRvZ2dsZSIraSl8fChoPT09InRvZ2dsZSI/ZD8ic2hvdyI6ImhpZGUiOjApLHE/KGYuX2RhdGEodGhpcywidG9nZ2xlIitpLHE9PT0ic2hvdyI/ImhpZGUiOiJzaG93IiksaltxXSgpKTpqW2hdKCkpOihtPWNuLmV4ZWMoaCksbj1qLmN1cigpLG0/KG89cGFyc2VGbG9hdChtWzJdKSxwPW1bM118fChmLmNzc051bWJlcltpXT8iIjoicHgiKSxwIT09InB4IiYmKGYuc3R5bGUodGhpcyxpLChvfHwxKStwKSxuPShvfHwxKS9qLmN1cigpKm4sZi5zdHlsZSh0aGlzLGksbitwKSksbVsxXSYmKG89KG1bMV09PT0iLT0iPy0xOjEpKm8rbiksai5jdXN0b20obixvLHApKTpqLmN1c3RvbShuLGgsIiIpKTtyZXR1cm4hMH12YXIgZT1mLnNwZWVkKGIsYyxkKTtpZihmLmlzRW1wdHlPYmplY3QoYSkpcmV0dXJuIHRoaXMuZWFjaChlLmNvbXBsZXRlLFshMV0pO2E9Zi5leHRlbmQoe30sYSk7cmV0dXJuIGUucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShlLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYyxkKXt0eXBlb2YgYSE9InN0cmluZyImJihkPWMsYz1hLGE9YiksYyYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBoKGEsYixjKXt2YXIgZT1iW2NdO2YucmVtb3ZlRGF0YShhLGMsITApLGUuc3RvcChkKX12YXIgYixjPSExLGU9Zi50aW1lcnMsZz1mLl9kYXRhKHRoaXMpO2R8fGYuX3VubWFyayghMCx0aGlzKTtpZihhPT1udWxsKWZvcihiIGluIGcpZ1tiXSYmZ1tiXS5zdG9wJiZiLmluZGV4T2YoIi5ydW4iKT09PWIubGVuZ3RoLTQmJmgodGhpcyxnLGIpO2Vsc2UgZ1tiPWErIi5ydW4iXSYmZ1tiXS5zdG9wJiZoKHRoaXMsZyxiKTtmb3IoYj1lLmxlbmd0aDtiLS07KWVbYl0uZWxlbT09PXRoaXMmJihhPT1udWxsfHxlW2JdLnF1ZXVlPT09YSkmJihkP2VbYl0oITApOmVbYl0uc2F2ZVN0YXRlKCksYz0hMCxlLnNwbGljZShiLDEpKTsoIWR8fCFjKSYmZi5kZXF1ZXVlKHRoaXMsYSl9KX19KSxmLmVhY2goe3NsaWRlRG93bjpjdCgic2hvdyIsMSksc2xpZGVVcDpjdCgiaGlkZSIsMSksc2xpZGVUb2dnbGU6Y3QoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksZi5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/Zi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxmLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIWYuaXNGdW5jdGlvbihiKSYmYn07ZC5kdXJhdGlvbj1mLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gZi5meC5zcGVlZHM/Zi5meC5zcGVlZHNbZC5kdXJhdGlvbl06Zi5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoZC5xdWV1ZT09bnVsbHx8ZC5xdWV1ZT09PSEwKWQucXVldWU9ImZ4IjtkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oYSl7Zi5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlP2YuZGVxdWV1ZSh0aGlzLGQucXVldWUpOmEhPT0hMSYmZi5fdW5tYXJrKHRoaXMpfTtyZXR1cm4gZH0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjV9fSx0aW1lcnM6W10sZng6ZnVuY3Rpb24oYSxiLGMpe3RoaXMub3B0aW9ucz1iLHRoaXMuZWxlbT1hLHRoaXMucHJvcD1jLGIub3JpZz1iLm9yaWd8fHt9fX0pLGYuZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksKGYuZnguc3RlcFt0aGlzLnByb3BdfHxmLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpfSxjdXI6ZnVuY3Rpb24oKXtpZih0aGlzLmVsZW1bdGhpcy5wcm9wXSE9bnVsbCYmKCF0aGlzLmVsZW0uc3R5bGV8fHRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdPT1udWxsKSlyZXR1cm4gdGhpcy5lbGVtW3RoaXMucHJvcF07dmFyIGEsYj1mLmNzcyh0aGlzLmVsZW0sdGhpcy5wcm9wKTtyZXR1cm4gaXNOYU4oYT1wYXJzZUZsb2F0KGIpKT8hYnx8Yj09PSJhdXRvIj8wOmI6YX0sY3VzdG9tOmZ1bmN0aW9uKGEsYyxkKXtmdW5jdGlvbiBoKGEpe3JldHVybiBlLnN0ZXAoYSl9dmFyIGU9dGhpcyxnPWYuZng7dGhpcy5zdGFydFRpbWU9Y3F8fGNyKCksdGhpcy5lbmQ9Yyx0aGlzLm5vdz10aGlzLnN0YXJ0PWEsdGhpcy5wb3M9dGhpcy5zdGF0ZT0wLHRoaXMudW5pdD1kfHx0aGlzLnVuaXR8fChmLmNzc051bWJlclt0aGlzLnByb3BdPyIiOiJweCIpLGgucXVldWU9dGhpcy5vcHRpb25zLnF1ZXVlLGguZWxlbT10aGlzLmVsZW0saC5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmKGUub3B0aW9ucy5oaWRlP2YuX2RhdGEoZS5lbGVtLCJmeHNob3ciK2UucHJvcCxlLnN0YXJ0KTplLm9wdGlvbnMuc2hvdyYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuZW5kKSl9LGgoKSYmZi50aW1lcnMucHVzaChoKSYmIWNvJiYoY289c2V0SW50ZXJ2YWwoZy50aWNrLGcuaW50ZXJ2YWwpKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBhPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCk7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1hfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5zaG93PSEwLGEhPT1iP3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksYSk6dGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGYodGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCl8fGYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAsdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1jcXx8Y3IoKSxnPSEwLGg9dGhpcy5lbGVtLGk9dGhpcy5vcHRpb25zO2lmKGF8fGU+PWkuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kLHRoaXMucG9zPXRoaXMuc3RhdGU9MSx0aGlzLnVwZGF0ZSgpLGkuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF09ITA7Zm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpaS5hbmltYXRlZFByb3BlcnRpZXNbYl0hPT0hMCYmKGc9ITEpO2lmKGcpe2kub3ZlcmZsb3chPW51bGwmJiFmLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyYmZi5lYWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2guc3R5bGVbIm92ZXJmbG93IitiXT1pLm92ZXJmbG93W2FdfSksaS5oaWRlJiZmKGgpLmhpZGUoKTtpZihpLmhpZGV8fGkuc2hvdylmb3IoYiBpbiBpLmFuaW1hdGVkUHJvcGVydGllcylmLnN0eWxlKGgsYixpLm9yaWdbYl0pLGYucmVtb3ZlRGF0YShoLCJmeHNob3ciK2IsITApLGYucmVtb3ZlRGF0YShoLCJ0b2dnbGUiK2IsITApO2Q9aS5jb21wbGV0ZSxkJiYoaS5jb21wbGV0ZT0hMSxkLmNhbGwoaCkpfXJldHVybiExfWkuZHVyYXRpb249PUluZmluaXR5P3RoaXMubm93PWU6KGM9ZS10aGlzLnN0YXJ0VGltZSx0aGlzLnN0YXRlPWMvaS5kdXJhdGlvbix0aGlzLnBvcz1mLmVhc2luZ1tpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdXSh0aGlzLnN0YXRlLGMsMCwxLGkuZHVyYXRpb24pLHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKSx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0sZi5leHRlbmQoZi5meCx7dGljazpmdW5jdGlvbigpe3ZhciBhLGI9Zi50aW1lcnMsYz0wO2Zvcig7YzxiLmxlbmd0aDtjKyspYT1iW2NdLCFhKCkmJmJbY109PT1hJiZiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fGYuZnguc3RvcCgpfSxpbnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjbyksY289bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVsZW0uc3R5bGVbYS5wcm9wXT1hLm5vdythLnVuaXQ6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0pLGYuZWFjaChjcC5jb25jYXQuYXBwbHkoW10sY3ApLGZ1bmN0aW9uKGEsYil7Yi5pbmRleE9mKCJtYXJnaW4iKSYmKGYuZnguc3RlcFtiXT1mdW5jdGlvbihhKXtmLnN0eWxlKGEuZWxlbSxiLE1hdGgubWF4KDAsYS5ub3cpK2EudW5pdCl9KX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN2LGN3PS9edCg/OmFibGV8ZHxoKSQvaSxjeD0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9jdj1mdW5jdGlvbihhLGIsYyxkKXt0cnl7ZD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGUpe31pZighZHx8IWYuY29udGFpbnMoYyxhKSlyZXR1cm4gZD97dG9wOmQudG9wLGxlZnQ6ZC5sZWZ0fTp7dG9wOjAsbGVmdDowfTt2YXIgZz1iLmJvZHksaD1jeShiKSxpPWMuY2xpZW50VG9wfHxnLmNsaWVudFRvcHx8MCxqPWMuY2xpZW50TGVmdHx8Zy5jbGllbnRMZWZ0fHwwLGs9aC5wYWdlWU9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZjLnNjcm9sbFRvcHx8Zy5zY3JvbGxUb3AsbD1oLnBhZ2VYT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwmJmMuc2Nyb2xsTGVmdHx8Zy5zY3JvbGxMZWZ0LG09ZC50b3Aray1pLG49ZC5sZWZ0K2wtajtyZXR1cm57dG9wOm0sbGVmdDpufX06Y3Y9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9YS5vZmZzZXRQYXJlbnQsZz1hLGg9Yi5ib2R5LGk9Yi5kZWZhdWx0VmlldyxqPWk/aS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGUsaz1hLm9mZnNldFRvcCxsPWEub2Zmc2V0TGVmdDt3aGlsZSgoYT1hLnBhcmVudE5vZGUpJiZhIT09aCYmYSE9PWMpe2lmKGYuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZqLnBvc2l0aW9uPT09ImZpeGVkIilicmVhaztkPWk/aS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGUsay09YS5zY3JvbGxUb3AsbC09YS5zY3JvbGxMZWZ0LGE9PT1lJiYoays9YS5vZmZzZXRUb3AsbCs9YS5vZmZzZXRMZWZ0LGYuc3VwcG9ydC5kb2VzTm90QWRkQm9yZGVyJiYoIWYuc3VwcG9ydC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxsc3x8IWN3LnRlc3QoYS5ub2RlTmFtZSkpJiYoays9cGFyc2VGbG9hdChkLmJvcmRlclRvcFdpZHRoKXx8MCxsKz1wYXJzZUZsb2F0KGQuYm9yZGVyTGVmdFdpZHRoKXx8MCksZz1lLGU9YS5vZmZzZXRQYXJlbnQpLGYuc3VwcG9ydC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJmQub3ZlcmZsb3chPT0idmlzaWJsZSImJihrKz1wYXJzZUZsb2F0KGQuYm9yZGVyVG9wV2lkdGgpfHwwLGwrPXBhcnNlRmxvYXQoZC5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxqPWR9aWYoai5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fGoucG9zaXRpb249PT0ic3RhdGljIilrKz1oLm9mZnNldFRvcCxsKz1oLm9mZnNldExlZnQ7Zi5zdXBwb3J0LmZpeGVkUG9zaXRpb24mJmoucG9zaXRpb249PT0iZml4ZWQiJiYoays9TWF0aC5tYXgoYy5zY3JvbGxUb3AsaC5zY3JvbGxUb3ApLGwrPU1hdGgubWF4KGMuc2Nyb2xsTGVmdCxoLnNjcm9sbExlZnQpKTtyZXR1cm57dG9wOmssbGVmdDpsfX0sZi5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYT09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7Zi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBjPXRoaXNbMF0sZD1jJiZjLm93bmVyRG9jdW1lbnQ7aWYoIWQpcmV0dXJuIG51bGw7aWYoYz09PWQuYm9keSlyZXR1cm4gZi5vZmZzZXQuYm9keU9mZnNldChjKTtyZXR1cm4gY3YoYyxkLGQuZG9jdW1lbnRFbGVtZW50KX0sZi5vZmZzZXQ9e2JvZHlPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRUb3AsYz1hLm9mZnNldExlZnQ7Zi5zdXBwb3J0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0JiYoYis9cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYys9cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwKTtyZXR1cm57dG9wOmIsbGVmdDpjfX0sc2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mLmNzcyhhLCJwb3NpdGlvbiIpO2Q9PT0ic3RhdGljIiYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIGU9ZihhKSxnPWUub2Zmc2V0KCksaD1mLmNzcyhhLCJ0b3AiKSxpPWYuY3NzKGEsImxlZnQiKSxqPShkPT09ImFic29sdXRlInx8ZD09PSJmaXhlZCIpJiZmLmluQXJyYXkoImF1dG8iLFtoLGldKT4tMSxrPXt9LGw9e30sbSxuO2o/KGw9ZS5wb3NpdGlvbigpLG09bC50b3Asbj1sLmxlZnQpOihtPXBhcnNlRmxvYXQoaCl8fDAsbj1wYXJzZUZsb2F0KGkpfHwwKSxmLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsZykpLGIudG9wIT1udWxsJiYoay50b3A9Yi50b3AtZy50b3ArbSksYi5sZWZ0IT1udWxsJiYoay5sZWZ0PWIubGVmdC1nLmxlZnQrbiksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsayk6ZS5jc3Moayl9fSxmLmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpc1swXSlyZXR1cm4gbnVsbDt2YXIgYT10aGlzWzBdLGI9dGhpcy5vZmZzZXRQYXJlbnQoKSxjPXRoaXMub2Zmc2V0KCksZD1jeC50ZXN0KGJbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCk7Yy50b3AtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMubGVmdC09cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwLGQudG9wKz1wYXJzZUZsb2F0KGYuY3NzKGJbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLGQubGVmdCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJMZWZ0V2lkdGgiKSl8fDA7cmV0dXJue3RvcDpjLnRvcC1kLnRvcCxsZWZ0OmMubGVmdC1kLmxlZnR9fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8Yy5ib2R5O3doaWxlKGEmJiFjeC50ZXN0KGEubm9kZU5hbWUpJiZmLmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyIpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYX0pfX0pLGYuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGMpe3ZhciBkPS9ZLy50ZXN0KGMpO2YuZm5bYV09ZnVuY3Rpb24oZSl7cmV0dXJuIGYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSxlLGcpe3ZhciBoPWN5KGEpO2lmKGc9PT1iKXJldHVybiBoP2MgaW4gaD9oW2NdOmYuc3VwcG9ydC5ib3hNb2RlbCYmaC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZV18fGguZG9jdW1lbnQuYm9keVtlXTphW2VdO2g/aC5zY3JvbGxUbyhkP2YoaCkuc2Nyb2xsTGVmdCgpOmcsZD9nOmYoaCkuc2Nyb2xsVG9wKCkpOmFbZV09Z30sYSxlLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksZi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxjKXt2YXIgZD0iY2xpZW50IithLGU9InNjcm9sbCIrYSxnPSJvZmZzZXQiK2E7Zi5mblsiaW5uZXIiK2FdPWZ1bmN0aW9uKCl7dmFyIGE9dGhpc1swXTtyZXR1cm4gYT9hLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYSxjLCJwYWRkaW5nIikpOnRoaXNbY10oKTpudWxsfSxmLmZuWyJvdXRlciIrYV09ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXTtyZXR1cm4gYj9iLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYixjLGE/Im1hcmdpbiI6ImJvcmRlciIpKTp0aGlzW2NdKCk6bnVsbH0sZi5mbltjXT1mdW5jdGlvbihhKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmdW5jdGlvbihhLGMsaCl7dmFyIGksaixrLGw7aWYoZi5pc1dpbmRvdyhhKSl7aT1hLmRvY3VtZW50LGo9aS5kb2N1bWVudEVsZW1lbnRbZF07cmV0dXJuIGYuc3VwcG9ydC5ib3hNb2RlbCYmanx8aS5ib2R5JiZpLmJvZHlbZF18fGp9aWYoYS5ub2RlVHlwZT09PTkpe2k9YS5kb2N1bWVudEVsZW1lbnQ7aWYoaVtkXT49aVtlXSlyZXR1cm4gaVtkXTtyZXR1cm4gTWF0aC5tYXgoYS5ib2R5W2VdLGlbZV0sYS5ib2R5W2ddLGlbZ10pfWlmKGg9PT1iKXtrPWYuY3NzKGEsYyksbD1wYXJzZUZsb2F0KGspO3JldHVybiBmLmlzTnVtZXJpYyhsKT9sOmt9ZihhKS5jc3MoYyxoKX0sYyxhLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksYS5qUXVlcnk9YS4kPWYsdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCYmZGVmaW5lLmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBmfSl9KSh3aW5kb3cpOw=="></script>
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4xLjEgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovCmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgalF1ZXJ5KXRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkiKTsrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib290c3RyYXAiKSxiPXtXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixNb3pUcmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIixPVHJhbnNpdGlvbjoib1RyYW5zaXRpb25FbmQgb3RyYW5zaXRpb25lbmQiLHRyYW5zaXRpb246InRyYW5zaXRpb25lbmQifTtmb3IodmFyIGMgaW4gYilpZih2b2lkIDAhPT1hLnN0eWxlW2NdKXJldHVybntlbmQ6YltjXX07cmV0dXJuITF9YS5mbi5lbXVsYXRlVHJhbnNpdGlvbkVuZD1mdW5jdGlvbihiKXt2YXIgYz0hMSxkPXRoaXM7YSh0aGlzKS5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGM9ZnVuY3Rpb24oYyl7YShjKS5vbigiY2xpY2siLGIsdGhpcy5jbG9zZSl9O2MucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoKXtmLnRyaWdnZXIoImNsb3NlZC5icy5hbGVydCIpLnJlbW92ZSgpfXZhciBkPWEodGhpcyksZT1kLmF0dHIoImRhdGEtdGFyZ2V0Iik7ZXx8KGU9ZC5hdHRyKCJocmVmIiksZT1lJiZlLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpO3ZhciBmPWEoZSk7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGYubGVuZ3RofHwoZj1kLmhhc0NsYXNzKCJhbGVydCIpP2Q6ZC5wYXJlbnQoKSksZi50cmlnZ2VyKGI9YS5FdmVudCgiY2xvc2UuYnMuYWxlcnQiKSksYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGYucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJmYuaGFzQ2xhc3MoImZhZGUiKT9mLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoMTUwKTpjKCkpfTt2YXIgZD1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFsZXJ0Iik7ZXx8ZC5kYXRhKCJicy5hbGVydCIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdLmNhbGwoZCl9KX0sYS5mbi5hbGVydC5Db25zdHJ1Y3Rvcj1jLGEuZm4uYWxlcnQubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmFsZXJ0PWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmFsZXJ0LmRhdGEtYXBpIixiLGMucHJvdG90eXBlLmNsb3NlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGMsZCl7dGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxiLkRFRkFVTFRTLGQpLHRoaXMuaXNMb2FkaW5nPSExfTtiLkRFRkFVTFRTPXtsb2FkaW5nVGV4dDoibG9hZGluZy4uLiJ9LGIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGIpe3ZhciBjPSJkaXNhYmxlZCIsZD10aGlzLiRlbGVtZW50LGU9ZC5pcygiaW5wdXQiKT8idmFsIjoiaHRtbCIsZj1kLmRhdGEoKTtiKz0iVGV4dCIsZi5yZXNldFRleHR8fGQuZGF0YSgicmVzZXRUZXh0IixkW2VdKCkpLGRbZV0oZltiXXx8dGhpcy5vcHRpb25zW2JdKSxzZXRUaW1lb3V0KGEucHJveHkoZnVuY3Rpb24oKXsibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYi5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKSYmKGMucHJvcCgiY2hlY2tlZCIpJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKT9hPSExOmIuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSksYSYmYy5wcm9wKCJjaGVja2VkIiwhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikpLnRyaWdnZXIoImNoYW5nZSIpfWEmJnRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgYz1hLmZuLmJ1dHRvbjthLmZuLmJ1dHRvbj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGMmJmM7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGIodGhpcyxmKSksInRvZ2dsZSI9PWM/ZS50b2dnbGUoKTpjJiZlLnNldFN0YXRlKGMpfSl9LGEuZm4uYnV0dG9uLkNvbnN0cnVjdG9yPWIsYS5mbi5idXR0b24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmJ1dHRvbj1jLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5idXR0b24uZGF0YS1hcGkiLCJbZGF0YS10b2dnbGVePWJ1dHRvbl0iLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYi50YXJnZXQpO2MuaGFzQ2xhc3MoImJ0biIpfHwoYz1jLmNsb3Nlc3QoIi5idG4iKSksYy5idXR0b24oInRvZ2dsZSIpLGIucHJldmVudERlZmF1bHQoKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy4kaW5kaWNhdG9ycz10aGlzLiRlbGVtZW50LmZpbmQoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIiksdGhpcy5vcHRpb25zPWMsdGhpcy5wYXVzZWQ9dGhpcy5zbGlkaW5nPXRoaXMuaW50ZXJ2YWw9dGhpcy4kYWN0aXZlPXRoaXMuJGl0ZW1zPW51bGwsImhvdmVyIj09dGhpcy5vcHRpb25zLnBhdXNlJiZ0aGlzLiRlbGVtZW50Lm9uKCJtb3VzZWVudGVyIixhLnByb3h5KHRoaXMucGF1c2UsdGhpcykpLm9uKCJtb3VzZWxlYXZlIixhLnByb3h5KHRoaXMuY3ljbGUsdGhpcykpfTtiLkRFRkFVTFRTPXtpbnRlcnZhbDo1ZTMscGF1c2U6ImhvdmVyIix3cmFwOiEwfSxiLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxiLnByb3RvdHlwZS5nZXRBY3RpdmVJbmRleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhY3RpdmU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSx0aGlzLiRpdGVtcz10aGlzLiRhY3RpdmUucGFyZW50KCkuY2hpbGRyZW4oKSx0aGlzLiRpdGVtcy5pbmRleCh0aGlzLiRhY3RpdmUpfSxiLnByb3RvdHlwZS50bz1mdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9dGhpcy5nZXRBY3RpdmVJbmRleCgpO3JldHVybiBiPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmI/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtjLnRvKGIpfSk6ZD09Yj90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGI+ZD8ibmV4dCI6InByZXYiLGEodGhpcy4kaXRlbXNbYl0pKX0sYi5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxiLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxiLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxiLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZT1jfHxkW2JdKCksZj10aGlzLmludGVydmFsLGc9Im5leHQiPT1iPyJsZWZ0IjoicmlnaHQiLGg9Im5leHQiPT1iPyJmaXJzdCI6Imxhc3QiLGk9dGhpcztpZighZS5sZW5ndGgpe2lmKCF0aGlzLm9wdGlvbnMud3JhcClyZXR1cm47ZT10aGlzLiRlbGVtZW50LmZpbmQoIi5pdGVtIilbaF0oKX1pZihlLmhhc0NsYXNzKCJhY3RpdmUiKSlyZXR1cm4gdGhpcy5zbGlkaW5nPSExO3ZhciBqPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDplWzBdLGRpcmVjdGlvbjpnfSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihqKSxqLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDoodGhpcy5zbGlkaW5nPSEwLGYmJnRoaXMucGF1c2UoKSx0aGlzLiRpbmRpY2F0b3JzLmxlbmd0aCYmKHRoaXMuJGluZGljYXRvcnMuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXt2YXIgYj1hKGkuJGluZGljYXRvcnMuY2hpbGRyZW4oKVtpLmdldEFjdGl2ZUluZGV4KCldKTtiJiZiLmFkZENsYXNzKCJhY3RpdmUiKX0pKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygic2xpZGUiKT8oZS5hZGRDbGFzcyhiKSxlWzBdLm9mZnNldFdpZHRoLGQuYWRkQ2xhc3MoZyksZS5hZGRDbGFzcyhnKSxkLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oKXtlLnJlbW92ZUNsYXNzKFtiLGddLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGQucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGddLmpvaW4oIiAiKSksaS5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLiRlbGVtZW50LnRyaWdnZXIoInNsaWQuYnMuY2Fyb3VzZWwiKX0sMCl9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxZTMqZC5jc3MoInRyYW5zaXRpb24tZHVyYXRpb24iKS5zbGljZSgwLC0xKSkpOihkLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxlLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJzbGlkLmJzLmNhcm91c2VsIikpLGYmJnRoaXMuY3ljbGUoKSx0aGlzKX07dmFyIGM9YS5mbi5jYXJvdXNlbDthLmZuLmNhcm91c2VsPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5jYXJvdXNlbCIpLGY9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGMmJmMpLGc9InN0cmluZyI9PXR5cGVvZiBjP2M6Zi5zbGlkZTtlfHxkLmRhdGEoImJzLmNhcm91c2VsIixlPW5ldyBiKHRoaXMsZikpLCJudW1iZXIiPT10eXBlb2YgYz9lLnRvKGMpOmc/ZVtnXSgpOmYuaW50ZXJ2YWwmJmUucGF1c2UoKS5jeWNsZSgpfSl9LGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YixhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1jLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSwgW2RhdGEtc2xpZGUtdG9dIixmdW5jdGlvbihiKXt2YXIgYyxkPWEodGhpcyksZT1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9ZC5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGY9YS5leHRlbmQoe30sZS5kYXRhKCksZC5kYXRhKCkpLGc9ZC5hdHRyKCJkYXRhLXNsaWRlLXRvIik7ZyYmKGYuaW50ZXJ2YWw9ITEpLGUuY2Fyb3VzZWwoZiksKGc9ZC5hdHRyKCJkYXRhLXNsaWRlLXRvIikpJiZlLmRhdGEoImJzLmNhcm91c2VsIikudG8oZyksYi5wcmV2ZW50RGVmYXVsdCgpfSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKTtiLmNhcm91c2VsKGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihjLGQpe3RoaXMuJGVsZW1lbnQ9YShjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50JiYodGhpcy4kcGFyZW50PWEodGhpcy5vcHRpb25zLnBhcmVudCkpLHRoaXMub3B0aW9ucy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9O2IuREVGQVVMVFM9e3RvZ2dsZTohMH0sYi5wcm90b3R5cGUuZGltZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudC5oYXNDbGFzcygid2lkdGgiKTtyZXR1cm4gYT8id2lkdGgiOiJoZWlnaHQifSxiLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoInNob3cuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmZpbmQoIj4gLnBhbmVsID4gLmluIik7aWYoYyYmYy5sZW5ndGgpe3ZhciBkPWMuZGF0YSgiYnMuY29sbGFwc2UiKTtpZihkJiZkLnRyYW5zaXRpb25pbmcpcmV0dXJuO2MuY29sbGFwc2UoImhpZGUiKSxkfHxjLmRhdGEoImJzLmNvbGxhcHNlIixudWxsKX12YXIgZT10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtlXSgwKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZj1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UgaW4iKVtlXSgiYXV0byIpLHRoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuY29sbGFwc2UiKX07aWYoIWEuc3VwcG9ydC50cmFuc2l0aW9uKXJldHVybiBmLmNhbGwodGhpcyk7dmFyIGc9YS5jYW1lbENhc2UoWyJzY3JvbGwiLGVdLmpvaW4oIi0iKSk7dGhpcy4kZWxlbWVudC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGEucHJveHkoZix0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzUwKVtlXSh0aGlzLiRlbGVtZW50WzBdW2ddKX19fSxiLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSl7dmFyIGI9YS5FdmVudCgiaGlkZS5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSwhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGM9dGhpcy5kaW1lbnNpb24oKTt0aGlzLiRlbGVtZW50W2NdKHRoaXMuJGVsZW1lbnRbY10oKSlbMF0ub2Zmc2V0SGVpZ2h0LHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoImNvbGxhcHNpbmciKS5yZW1vdmVDbGFzcygiY29sbGFwc2UiKS5yZW1vdmVDbGFzcygiaW4iKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZD1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLmNvbGxhcHNlIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGEucHJveHkoZCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzUwKTpkLmNhbGwodGhpcyl9fX0sYi5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dGhpc1t0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpPyJoaWRlIjoic2hvdyJdKCl9O3ZhciBjPWEuZm4uY29sbGFwc2U7YS5mbi5jb2xsYXBzZT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGIuREVGQVVMVFMsZC5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBjJiZjKTshZSYmZi50b2dnbGUmJiJzaG93Ij09YyYmKGM9IWMpLGV8fGQuZGF0YSgiYnMuY29sbGFwc2UiLGU9bmV3IGIodGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBjJiZlW2NdKCl9KX0sYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1iLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWMsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwiW2RhdGEtdG9nZ2xlPWNvbGxhcHNlXSIsZnVuY3Rpb24oYil7dmFyIGMsZD1hKHRoaXMpLGU9ZC5hdHRyKCJkYXRhLXRhcmdldCIpfHxiLnByZXZlbnREZWZhdWx0KCl8fChjPWQuYXR0cigiaHJlZiIpKSYmYy5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpLGY9YShlKSxnPWYuZGF0YSgiYnMuY29sbGFwc2UiKSxoPWc/InRvZ2dsZSI6ZC5kYXRhKCksaT1kLmF0dHIoImRhdGEtcGFyZW50Iiksaj1pJiZhKGkpO2cmJmcudHJhbnNpdGlvbmluZ3x8KGomJmouZmluZCgnW2RhdGEtdG9nZ2xlPWNvbGxhcHNlXVtkYXRhLXBhcmVudD0iJytpKyciXScpLm5vdChkKS5hZGRDbGFzcygiY29sbGFwc2VkIiksZFtmLmhhc0NsYXNzKCJpbiIpPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oImNvbGxhcHNlZCIpKSxmLmNvbGxhcHNlKGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe2EoZCkucmVtb3ZlKCksYShlKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YyhhKHRoaXMpKSxlPXtyZWxhdGVkVGFyZ2V0OnRoaXN9O2QuaGFzQ2xhc3MoIm9wZW4iKSYmKGQudHJpZ2dlcihiPWEuRXZlbnQoImhpZGUuYnMuZHJvcGRvd24iLGUpKSxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxkLnJlbW92ZUNsYXNzKCJvcGVuIikudHJpZ2dlcigiaGlkZGVuLmJzLmRyb3Bkb3duIixlKSl9KX1mdW5jdGlvbiBjKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfXZhciBkPSIuZHJvcGRvd24tYmFja2Ryb3AiLGU9IltkYXRhLXRvZ2dsZT1kcm9wZG93bl0iLGY9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zi5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWMoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYigpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoJzxkaXYgY2xhc3M9ImRyb3Bkb3duLWJhY2tkcm9wIi8+JykuaW5zZXJ0QWZ0ZXIoYSh0aGlzKSkub24oImNsaWNrIixiKTt2YXIgaD17cmVsYXRlZFRhcmdldDp0aGlzfTtpZihmLnRyaWdnZXIoZD1hLkV2ZW50KCJzaG93LmJzLmRyb3Bkb3duIixoKSksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47Zi50b2dnbGVDbGFzcygib3BlbiIpLnRyaWdnZXIoInNob3duLmJzLmRyb3Bkb3duIixoKSxlLmZvY3VzKCl9cmV0dXJuITF9fSxmLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGIpe2lmKC8oMzh8NDB8MjcpLy50ZXN0KGIua2V5Q29kZSkpe3ZhciBkPWEodGhpcyk7aWYoYi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0aW9uKCksIWQuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWMoZCksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoIWd8fGcmJjI3PT1iLmtleUNvZGUpcmV0dXJuIDI3PT1iLndoaWNoJiZmLmZpbmQoZSkuZm9jdXMoKSxkLmNsaWNrKCk7dmFyIGg9IiBsaTpub3QoLmRpdmlkZXIpOnZpc2libGUgYSIsaT1mLmZpbmQoIltyb2xlPW1lbnVdIitoKyIsIFtyb2xlPWxpc3Rib3hdIitoKTtpZihpLmxlbmd0aCl7dmFyIGo9aS5pbmRleChpLmZpbHRlcigiOmZvY3VzIikpOzM4PT1iLmtleUNvZGUmJmo+MCYmai0tLDQwPT1iLmtleUNvZGUmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLmZvY3VzKCl9fX19O3ZhciBnPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxkPWMuZGF0YSgiYnMuZHJvcGRvd24iKTtkfHxjLmRhdGEoImJzLmRyb3Bkb3duIixkPW5ldyBmKHRoaXMpKSwic3RyaW5nIj09dHlwZW9mIGImJmRbYl0uY2FsbChjKX0pfSxhLmZuLmRyb3Bkb3duLkNvbnN0cnVjdG9yPWYsYS5mbi5kcm9wZG93bi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uZHJvcGRvd249Zyx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGIpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93biBmb3JtIixmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpfSkub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIixlLGYucHJvdG90eXBlLnRvZ2dsZSkub24oImtleWRvd24uYnMuZHJvcGRvd24uZGF0YS1hcGkiLGUrIiwgW3JvbGU9bWVudV0sIFtyb2xlPWxpc3Rib3hdIixmLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGIsYyl7dGhpcy5vcHRpb25zPWMsdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGJhY2tkcm9wPXRoaXMuaXNTaG93bj1udWxsLHRoaXMub3B0aW9ucy5yZW1vdGUmJnRoaXMuJGVsZW1lbnQuZmluZCgiLm1vZGFsLWNvbnRlbnQiKS5sb2FkKHRoaXMub3B0aW9ucy5yZW1vdGUsYS5wcm94eShmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQudHJpZ2dlcigibG9hZGVkLmJzLm1vZGFsIil9LHRoaXMpKX07Yi5ERUZBVUxUUz17YmFja2Ryb3A6ITAsa2V5Ym9hcmQ6ITAsc2hvdzohMH0sYi5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzW3RoaXMuaXNTaG93bj8iaGlkZSI6InNob3ciXShhKX0sYi5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9YS5FdmVudCgic2hvdy5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihkKSx0aGlzLmlzU2hvd258fGQuaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLmlzU2hvd249ITAsdGhpcy5lc2NhcGUoKSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIiwnW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsYS5wcm94eSh0aGlzLmhpZGUsdGhpcykpLHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKXt2YXIgZD1hLnN1cHBvcnQudHJhbnNpdGlvbiYmYy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpO2MuJGVsZW1lbnQucGFyZW50KCkubGVuZ3RofHxjLiRlbGVtZW50LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLGMuJGVsZW1lbnQuc2hvdygpLnNjcm9sbFRvcCgwKSxkJiZjLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoLGMuJGVsZW1lbnQuYWRkQ2xhc3MoImluIikuYXR0cigiYXJpYS1oaWRkZW4iLCExKSxjLmVuZm9yY2VGb2N1cygpO3ZhciBlPWEuRXZlbnQoInNob3duLmJzLm1vZGFsIix7cmVsYXRlZFRhcmdldDpifSk7ZD9jLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKS5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7Yy4kZWxlbWVudC5mb2N1cygpLnRyaWdnZXIoZSl9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgzMDApOmMuJGVsZW1lbnQuZm9jdXMoKS50cmlnZ2VyKGUpfSkpfSxiLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGIpe2ImJmIucHJldmVudERlZmF1bHQoKSxiPWEuRXZlbnQoImhpZGUuYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksdGhpcy5pc1Nob3duJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKHRoaXMuaXNTaG93bj0hMSx0aGlzLmVzY2FwZSgpLGEoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImluIikuYXR0cigiYXJpYS1oaWRkZW4iLCEwKS5vZmYoImNsaWNrLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxhLnByb3h5KHRoaXMuaGlkZU1vZGFsLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgzMDApOnRoaXMuaGlkZU1vZGFsKCkpfSxiLnByb3RvdHlwZS5lbmZvcmNlRm9jdXM9ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKS5vbigiZm9jdXNpbi5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXt0aGlzLiRlbGVtZW50WzBdPT09YS50YXJnZXR8fHRoaXMuJGVsZW1lbnQuaGFzKGEudGFyZ2V0KS5sZW5ndGh8fHRoaXMuJGVsZW1lbnQuZm9jdXMoKX0sdGhpcykpfSxiLnByb3RvdHlwZS5lc2NhcGU9ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24mJnRoaXMub3B0aW9ucy5rZXlib2FyZD90aGlzLiRlbGVtZW50Lm9uKCJrZXl1cC5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpezI3PT1hLndoaWNoJiZ0aGlzLmhpZGUoKX0sdGhpcykpOnRoaXMuaXNTaG93bnx8dGhpcy4kZWxlbWVudC5vZmYoImtleXVwLmRpc21pc3MuYnMubW9kYWwiKX0sYi5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS5yZW1vdmVCYWNrZHJvcCgpLGEuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLm1vZGFsIil9KX0sYi5wcm90b3R5cGUucmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLiRiYWNrZHJvcCYmdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH0sYi5wcm90b3R5cGUuYmFja2Ryb3A9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpPyJmYWRlIjoiIjtpZih0aGlzLmlzU2hvd24mJnRoaXMub3B0aW9ucy5iYWNrZHJvcCl7dmFyIGQ9YS5zdXBwb3J0LnRyYW5zaXRpb24mJmM7aWYodGhpcy4kYmFja2Ryb3A9YSgnPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgJytjKyciIC8+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXthLnRhcmdldD09PWEuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/dGhpcy4kZWxlbWVudFswXS5mb2N1cy5jYWxsKHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMuaGlkZS5jYWxsKHRoaXMpKX0sdGhpcykpLGQmJnRoaXMuJGJhY2tkcm9wWzBdLm9mZnNldFdpZHRoLHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLCFiKXJldHVybjtkP3RoaXMuJGJhY2tkcm9wLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsYikuZW11bGF0ZVRyYW5zaXRpb25FbmQoMTUwKTpiKCl9ZWxzZSF0aGlzLmlzU2hvd24mJnRoaXMuJGJhY2tkcm9wPyh0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGJhY2tkcm9wLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsYikuZW11bGF0ZVRyYW5zaXRpb25FbmQoMTUwKTpiKCkpOmImJmIoKX07dmFyIGM9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWEodGhpcyksZj1lLmRhdGEoImJzLm1vZGFsIiksZz1hLmV4dGVuZCh7fSxiLkRFRkFVTFRTLGUuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYyYmYyk7Znx8ZS5kYXRhKCJicy5tb2RhbCIsZj1uZXcgYih0aGlzLGcpKSwic3RyaW5nIj09dHlwZW9mIGM/ZltjXShkKTpnLnNob3cmJmYuc2hvdyhkKX0pfSxhLmZuLm1vZGFsLkNvbnN0cnVjdG9yPWIsYS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ubW9kYWw9Yyx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyksZD1jLmF0dHIoImhyZWYiKSxlPWEoYy5hdHRyKCJkYXRhLXRhcmdldCIpfHxkJiZkLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGY9ZS5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KGQpJiZkfSxlLmRhdGEoKSxjLmRhdGEoKSk7Yy5pcygiYSIpJiZiLnByZXZlbnREZWZhdWx0KCksZS5tb2RhbChmLHRoaXMpLm9uZSgiaGlkZSIsZnVuY3Rpb24oKXtjLmlzKCI6dmlzaWJsZSIpJiZjLmZvY3VzKCl9KX0pLGEoZG9jdW1lbnQpLm9uKCJzaG93LmJzLm1vZGFsIiwiLm1vZGFsIixmdW5jdGlvbigpe2EoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKX0pLm9uKCJoaWRkZW4uYnMubW9kYWwiLCIubW9kYWwiLGZ1bmN0aW9uKCl7YShkb2N1bWVudC5ib2R5KS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT10aGlzLm9wdGlvbnM9dGhpcy5lbmFibGVkPXRoaXMudGltZW91dD10aGlzLmhvdmVyU3RhdGU9dGhpcy4kZWxlbWVudD1udWxsLHRoaXMuaW5pdCgidG9vbHRpcCIsYSxiKX07Yi5ERUZBVUxUUz17YW5pbWF0aW9uOiEwLHBsYWNlbWVudDoidG9wIixzZWxlY3RvcjohMSx0ZW1wbGF0ZTonPGRpdiBjbGFzcz0idG9vbHRpcCI+PGRpdiBjbGFzcz0idG9vbHRpcC1hcnJvdyI+PC9kaXY+PGRpdiBjbGFzcz0idG9vbHRpcC1pbm5lciI+PC9kaXY+PC9kaXY+Jyx0cmlnZ2VyOiJob3ZlciBmb2N1cyIsdGl0bGU6IiIsZGVsYXk6MCxodG1sOiExLGNvbnRhaW5lcjohMX0sYi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiLGMsZCl7dGhpcy5lbmFibGVkPSEwLHRoaXMudHlwZT1iLHRoaXMuJGVsZW1lbnQ9YShjKSx0aGlzLm9wdGlvbnM9dGhpcy5nZXRPcHRpb25zKGQpO2Zvcih2YXIgZT10aGlzLm9wdGlvbnMudHJpZ2dlci5zcGxpdCgiICIpLGY9ZS5sZW5ndGg7Zi0tOyl7dmFyIGc9ZVtmXTtpZigiY2xpY2siPT1nKXRoaXMuJGVsZW1lbnQub24oImNsaWNrLiIrdGhpcy50eXBlLHRoaXMub3B0aW9ucy5zZWxlY3RvcixhLnByb3h5KHRoaXMudG9nZ2xlLHRoaXMpKTtlbHNlIGlmKCJtYW51YWwiIT1nKXt2YXIgaD0iaG92ZXIiPT1nPyJtb3VzZWVudGVyIjoiZm9jdXNpbiIsaT0iaG92ZXIiPT1nPyJtb3VzZWxlYXZlIjoiZm9jdXNvdXQiO3RoaXMuJGVsZW1lbnQub24oaCsiLiIrdGhpcy50eXBlLHRoaXMub3B0aW9ucy5zZWxlY3RvcixhLnByb3h5KHRoaXMuZW50ZXIsdGhpcykpLHRoaXMuJGVsZW1lbnQub24oaSsiLiIrdGhpcy50eXBlLHRoaXMub3B0aW9ucy5zZWxlY3RvcixhLnByb3h5KHRoaXMubGVhdmUsdGhpcykpfX10aGlzLm9wdGlvbnMuc2VsZWN0b3I/dGhpcy5fb3B0aW9ucz1hLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMse3RyaWdnZXI6Im1hbnVhbCIsc2VsZWN0b3I6IiJ9KTp0aGlzLmZpeFRpdGxlKCl9LGIucHJvdG90eXBlLmdldERlZmF1bHRzPWZ1bmN0aW9uKCl7cmV0dXJuIGIuREVGQVVMVFN9LGIucHJvdG90eXBlLmdldE9wdGlvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGI9YS5leHRlbmQoe30sdGhpcy5nZXREZWZhdWx0cygpLHRoaXMuJGVsZW1lbnQuZGF0YSgpLGIpLGIuZGVsYXkmJiJudW1iZXIiPT10eXBlb2YgYi5kZWxheSYmKGIuZGVsYXk9e3Nob3c6Yi5kZWxheSxoaWRlOmIuZGVsYXl9KSxifSxiLnByb3RvdHlwZS5nZXREZWxlZ2F0ZU9wdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYj17fSxjPXRoaXMuZ2V0RGVmYXVsdHMoKTtyZXR1cm4gdGhpcy5fb3B0aW9ucyYmYS5lYWNoKHRoaXMuX29wdGlvbnMsZnVuY3Rpb24oYSxkKXtjW2FdIT1kJiYoYlthXT1kKX0pLGJ9LGIucHJvdG90eXBlLmVudGVyPWZ1bmN0aW9uKGIpe3ZhciBjPWIgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP2I6YShiLmN1cnJlbnRUYXJnZXQpW3RoaXMudHlwZV0odGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9ImluIixjLm9wdGlvbnMuZGVsYXkmJmMub3B0aW9ucy5kZWxheS5zaG93P3ZvaWQoYy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsiaW4iPT1jLmhvdmVyU3RhdGUmJmMuc2hvdygpfSxjLm9wdGlvbnMuZGVsYXkuc2hvdykpOmMuc2hvdygpfSxiLnByb3RvdHlwZS5sZWF2ZT1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KVt0aGlzLnR5cGVdKHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLmRhdGEoImJzLiIrdGhpcy50eXBlKTtyZXR1cm4gY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJvdXQiLGMub3B0aW9ucy5kZWxheSYmYy5vcHRpb25zLmRlbGF5LmhpZGU/dm9pZChjLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpeyJvdXQiPT1jLmhvdmVyU3RhdGUmJmMuaGlkZSgpfSxjLm9wdGlvbnMuZGVsYXkuaGlkZSkpOmMuaGlkZSgpfSxiLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLGIuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO3ZhciBjPXRoaXMsZD10aGlzLnRpcCgpO3RoaXMuc2V0Q29udGVudCgpLHRoaXMub3B0aW9ucy5hbmltYXRpb24mJmQuYWRkQ2xhc3MoImZhZGUiKTt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudD90aGlzLm9wdGlvbnMucGxhY2VtZW50LmNhbGwodGhpcyxkWzBdLHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMub3B0aW9ucy5wbGFjZW1lbnQsZj0vXHM/YXV0bz9ccz8vaSxnPWYudGVzdChlKTtnJiYoZT1lLnJlcGxhY2UoZiwiIil8fCJ0b3AiKSxkLmRldGFjaCgpLmNzcyh7dG9wOjAsbGVmdDowLGRpc3BsYXk6ImJsb2NrIn0pLmFkZENsYXNzKGUpLHRoaXMub3B0aW9ucy5jb250YWluZXI/ZC5hcHBlbmRUbyh0aGlzLm9wdGlvbnMuY29udGFpbmVyKTpkLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpO3ZhciBoPXRoaXMuZ2V0UG9zaXRpb24oKSxpPWRbMF0ub2Zmc2V0V2lkdGgsaj1kWzBdLm9mZnNldEhlaWdodDtpZihnKXt2YXIgaz10aGlzLiRlbGVtZW50LnBhcmVudCgpLGw9ZSxtPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLG49ImJvZHkiPT10aGlzLm9wdGlvbnMuY29udGFpbmVyP3dpbmRvdy5pbm5lcldpZHRoOmsub3V0ZXJXaWR0aCgpLG89ImJvZHkiPT10aGlzLm9wdGlvbnMuY29udGFpbmVyP3dpbmRvdy5pbm5lckhlaWdodDprLm91dGVySGVpZ2h0KCkscD0iYm9keSI9PXRoaXMub3B0aW9ucy5jb250YWluZXI/MDprLm9mZnNldCgpLmxlZnQ7ZT0iYm90dG9tIj09ZSYmaC50b3AraC5oZWlnaHQrai1tPm8/InRvcCI6InRvcCI9PWUmJmgudG9wLW0tajwwPyJib3R0b20iOiJyaWdodCI9PWUmJmgucmlnaHQraT5uPyJsZWZ0IjoibGVmdCI9PWUmJmgubGVmdC1pPHA/InJpZ2h0IjplLGQucmVtb3ZlQ2xhc3MobCkuYWRkQ2xhc3MoZSl9dmFyIHE9dGhpcy5nZXRDYWxjdWxhdGVkT2Zmc2V0KGUsaCxpLGopO3RoaXMuYXBwbHlQbGFjZW1lbnQocSxlKSx0aGlzLmhvdmVyU3RhdGU9bnVsbDt2YXIgcj1mdW5jdGlvbigpe2MuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitjLnR5cGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/ZC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLHIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDE1MCk6cigpfX0sYi5wcm90b3R5cGUuYXBwbHlQbGFjZW1lbnQ9ZnVuY3Rpb24oYixjKXt2YXIgZCxlPXRoaXMudGlwKCksZj1lWzBdLm9mZnNldFdpZHRoLGc9ZVswXS5vZmZzZXRIZWlnaHQsaD1wYXJzZUludChlLmNzcygibWFyZ2luLXRvcCIpLDEwKSxpPXBhcnNlSW50KGUuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihoKSYmKGg9MCksaXNOYU4oaSkmJihpPTApLGIudG9wPWIudG9wK2gsYi5sZWZ0PWIubGVmdCtpLGEub2Zmc2V0LnNldE9mZnNldChlWzBdLGEuZXh0ZW5kKHt1c2luZzpmdW5jdGlvbihhKXtlLmNzcyh7dG9wOk1hdGgucm91bmQoYS50b3ApLGxlZnQ6TWF0aC5yb3VuZChhLmxlZnQpfSl9fSxiKSwwKSxlLmFkZENsYXNzKCJpbiIpO3ZhciBqPWVbMF0ub2Zmc2V0V2lkdGgsaz1lWzBdLm9mZnNldEhlaWdodDtpZigidG9wIj09YyYmayE9ZyYmKGQ9ITAsYi50b3A9Yi50b3ArZy1rKSwvYm90dG9tfHRvcC8udGVzdChjKSl7dmFyIGw9MDtiLmxlZnQ8MCYmKGw9LTIqYi5sZWZ0LGIubGVmdD0wLGUub2Zmc2V0KGIpLGo9ZVswXS5vZmZzZXRXaWR0aCxrPWVbMF0ub2Zmc2V0SGVpZ2h0KSx0aGlzLnJlcGxhY2VBcnJvdyhsLWYraixqLCJsZWZ0Iil9ZWxzZSB0aGlzLnJlcGxhY2VBcnJvdyhrLWcsaywidG9wIik7ZCYmZS5vZmZzZXQoYil9LGIucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjLGE/NTAqKDEtYS9iKSsiJSI6IiIpfSxiLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKTthLmZpbmQoIi50b29sdGlwLWlubmVyIilbdGhpcy5vcHRpb25zLmh0bWw/Imh0bWwiOiJ0ZXh0Il0oYiksYS5yZW1vdmVDbGFzcygiZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQiKX0sYi5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXsiaW4iIT1jLmhvdmVyU3RhdGUmJmQuZGV0YWNoKCksYy4kZWxlbWVudC50cmlnZ2VyKCJoaWRkZW4uYnMuIitjLnR5cGUpfXZhciBjPXRoaXMsZD10aGlzLnRpcCgpLGU9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZC5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/ZC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDE1MCk6YigpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxiLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYi5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGIucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kZWxlbWVudFswXTtyZXR1cm4gYS5leHRlbmQoe30sImZ1bmN0aW9uIj09dHlwZW9mIGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0P2IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6e3dpZHRoOmIub2Zmc2V0V2lkdGgsaGVpZ2h0OmIub2Zmc2V0SGVpZ2h0fSx0aGlzLiRlbGVtZW50Lm9mZnNldCgpKX0sYi5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxiLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kZWxlbWVudCxjPXRoaXMub3B0aW9ucztyZXR1cm4gYT1iLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRpdGxlP2MudGl0bGUuY2FsbChiWzBdKTpjLnRpdGxlKX0sYi5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRpcD10aGlzLiR0aXB8fGEodGhpcy5vcHRpb25zLnRlbXBsYXRlKX0sYi5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50WzBdLnBhcmVudE5vZGV8fCh0aGlzLmhpZGUoKSx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5vcHRpb25zPW51bGwpfSxiLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITB9LGIucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITF9LGIucHJvdG90eXBlLnRvZ2dsZUVuYWJsZWQ9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9IXRoaXMuZW5hYmxlZH0sYi5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGIpe3ZhciBjPWI/YShiLmN1cnJlbnRUYXJnZXQpW3RoaXMudHlwZV0odGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSkuZGF0YSgiYnMuIit0aGlzLnR5cGUpOnRoaXM7Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLmhpZGUoKS4kZWxlbWVudC5vZmYoIi4iK3RoaXMudHlwZSkucmVtb3ZlRGF0YSgiYnMuIit0aGlzLnR5cGUpfTt2YXIgYz1hLmZuLnRvb2x0aXA7YS5mbi50b29sdGlwPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50b29sdGlwIiksZj0ib2JqZWN0Ij09dHlwZW9mIGMmJmM7KGV8fCJkZXN0cm95IiE9YykmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGIodGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBjJiZlW2NdKCkpfSl9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1iLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1jLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtiLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYi5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYi5wcm90b3R5cGUuY29uc3RydWN0b3I9YixiLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBiLkRFRkFVTFRTfSxiLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKVt0aGlzLm9wdGlvbnMuaHRtbD8ic3RyaW5nIj09dHlwZW9mIGM/Imh0bWwiOiJhcHBlbmQiOiJ0ZXh0Il0oYyksYS5yZW1vdmVDbGFzcygiZmFkZSB0b3AgYm90dG9tIGxlZnQgcmlnaHQgaW4iKSxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaHRtbCgpfHxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaGlkZSgpfSxiLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5nZXRDb250ZW50KCl9LGIucHJvdG90eXBlLmdldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50LGI9dGhpcy5vcHRpb25zO3JldHVybiBhLmF0dHIoImRhdGEtY29udGVudCIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGIuY29udGVudD9iLmNvbnRlbnQuY2FsbChhWzBdKTpiLmNvbnRlbnQpfSxiLnByb3RvdHlwZS5hcnJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIuYXJyb3ciKX0sYi5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRpcHx8KHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSkpLHRoaXMuJHRpcH07dmFyIGM9YS5mbi5wb3BvdmVyO2EuZm4ucG9wb3Zlcj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjOyhlfHwiZGVzdHJveSIhPWMpJiYoZXx8ZC5kYXRhKCJicy5wb3BvdmVyIixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpKX0pfSxhLmZuLnBvcG92ZXIuQ29uc3RydWN0b3I9YixhLmZuLnBvcG92ZXIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnBvcG92ZXI9Yyx0aGlzfX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYyxkKXt2YXIgZSxmPWEucHJveHkodGhpcy5wcm9jZXNzLHRoaXMpO3RoaXMuJGVsZW1lbnQ9YShhKGMpLmlzKCJib2R5Iik/d2luZG93OmMpLHRoaXMuJGJvZHk9YSgiYm9keSIpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9dGhpcy4kZWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbC1zcHkuZGF0YS1hcGkiLGYpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxiLkRFRkFVTFRTLGQpLHRoaXMuc2VsZWN0b3I9KHRoaXMub3B0aW9ucy50YXJnZXR8fChlPWEoYykuYXR0cigiaHJlZiIpKSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpfHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPWEoW10pLHRoaXMudGFyZ2V0cz1hKFtdKSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWIuREVGQVVMVFM9e29mZnNldDoxMH0sYi5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuJGVsZW1lbnRbMF09PXdpbmRvdz8ib2Zmc2V0IjoicG9zaXRpb24iO3RoaXMub2Zmc2V0cz1hKFtdKSx0aGlzLnRhcmdldHM9YShbXSk7e3ZhciBjPXRoaXM7dGhpcy4kYm9keS5maW5kKHRoaXMuc2VsZWN0b3IpLm1hcChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoInRhcmdldCIpfHxkLmF0dHIoImhyZWYiKSxmPS9eIy4vLnRlc3QoZSkmJmEoZSk7cmV0dXJuIGYmJmYubGVuZ3RoJiZmLmlzKCI6dmlzaWJsZSIpJiZbW2ZbYl0oKS50b3ArKCFhLmlzV2luZG93KGMuJHNjcm9sbEVsZW1lbnQuZ2V0KDApKSYmYy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSksZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yy5vZmZzZXRzLnB1c2godGhpc1swXSksYy50YXJnZXRzLnB1c2godGhpc1sxXSl9KX19LGIucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkrdGhpcy5vcHRpb25zLm9mZnNldCxjPXRoaXMuJHNjcm9sbEVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0fHx0aGlzLiRib2R5WzBdLnNjcm9sbEhlaWdodCxkPWMtdGhpcy4kc2Nyb2xsRWxlbWVudC5oZWlnaHQoKSxlPXRoaXMub2Zmc2V0cyxmPXRoaXMudGFyZ2V0cyxnPXRoaXMuYWN0aXZlVGFyZ2V0O2lmKGI+PWQpcmV0dXJuIGchPShhPWYubGFzdCgpWzBdKSYmdGhpcy5hY3RpdmF0ZShhKTtpZihnJiZiPD1lWzBdKXJldHVybiBnIT0oYT1mWzBdKSYmdGhpcy5hY3RpdmF0ZShhKTtmb3IoYT1lLmxlbmd0aDthLS07KWchPWZbYV0mJmI+PWVbYV0mJighZVthKzFdfHxiPD1lW2ErMV0pJiZ0aGlzLmFjdGl2YXRlKGZbYV0pfSxiLnByb3RvdHlwZS5hY3RpdmF0ZT1mdW5jdGlvbihiKXt0aGlzLmFjdGl2ZVRhcmdldD1iLGEodGhpcy5zZWxlY3RvcikucGFyZW50c1VudGlsKHRoaXMub3B0aW9ucy50YXJnZXQsIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGM9dGhpcy5zZWxlY3RvcisnW2RhdGEtdGFyZ2V0PSInK2IrJyJdLCcrdGhpcy5zZWxlY3RvcisnW2hyZWY9IicrYisnIl0nLGQ9YShjKS5wYXJlbnRzKCJsaSIpLmFkZENsYXNzKCJhY3RpdmUiKTtkLnBhcmVudCgiLmRyb3Bkb3duLW1lbnUiKS5sZW5ndGgmJihkPWQuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIikpLGQudHJpZ2dlcigiYWN0aXZhdGUuYnMuc2Nyb2xsc3B5Iil9O3ZhciBjPWEuZm4uc2Nyb2xsc3B5O2EuZm4uc2Nyb2xsc3B5PWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5zY3JvbGxzcHkiKSxmPSJvYmplY3QiPT10eXBlb2YgYyYmYztlfHxkLmRhdGEoImJzLnNjcm9sbHNweSIsZT1uZXcgYih0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGMmJmVbY10oKX0pfSxhLmZuLnNjcm9sbHNweS5Db25zdHJ1Y3Rvcj1iLGEuZm4uc2Nyb2xsc3B5Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5zY3JvbGxzcHk9Yyx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2Iuc2Nyb2xsc3B5KGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yi5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuZWxlbWVudCxjPWIuY2xvc2VzdCgidWw6bm90KC5kcm9wZG93bi1tZW51KSIpLGQ9Yi5kYXRhKCJ0YXJnZXQiKTtpZihkfHwoZD1iLmF0dHIoImhyZWYiKSxkPWQmJmQucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSksIWIucGFyZW50KCJsaSIpLmhhc0NsYXNzKCJhY3RpdmUiKSl7dmFyIGU9Yy5maW5kKCIuYWN0aXZlOmxhc3QgYSIpWzBdLGY9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmV9KTtpZihiLnRyaWdnZXIoZiksIWYuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBnPWEoZCk7dGhpcy5hY3RpdmF0ZShiLnBhcmVudCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGcsZy5wYXJlbnQoKSxmdW5jdGlvbigpe2IudHJpZ2dlcih7dHlwZToic2hvd24uYnMudGFiIixyZWxhdGVkVGFyZ2V0OmV9KX0pfX19LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIsYyxkKXtmdW5jdGlvbiBlKCl7Zi5yZW1vdmVDbGFzcygiYWN0aXZlIikuZmluZCgiPiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksYi5hZGRDbGFzcygiYWN0aXZlIiksZz8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikmJmIuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIiksZCYmZCgpfXZhciBmPWMuZmluZCgiPiAuYWN0aXZlIiksZz1kJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpO2c/Zi5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGUpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDE1MCk6ZSgpLGYucmVtb3ZlQ2xhc3MoImluIil9O3ZhciBjPWEuZm4udGFiO2EuZm4udGFiPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYih0aGlzKSksInN0cmluZyI9PXR5cGVvZiBjJiZlW2NdKCl9KX0sYS5mbi50YWIuQ29uc3RydWN0b3I9YixhLmZuLnRhYi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udGFiPWMsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0idGFiIl0sIFtkYXRhLXRvZ2dsZT0icGlsbCJdJyxmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCksYSh0aGlzKS50YWIoInNob3ciKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYyxkKXt0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLiR3aW5kb3c9YSh3aW5kb3cpLm9uKCJzY3JvbGwuYnMuYWZmaXguZGF0YS1hcGkiLGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpKS5vbigiY2xpY2suYnMuYWZmaXguZGF0YS1hcGkiLGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcCx0aGlzKSksdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMuYWZmaXhlZD10aGlzLnVucGluPXRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2IuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGIuREVGQVVMVFM9e29mZnNldDowfSxiLnByb3RvdHlwZS5nZXRQaW5uZWRPZmZzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLnBpbm5lZE9mZnNldClyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhiLlJFU0VUKS5hZGRDbGFzcygiYWZmaXgiKTt2YXIgYT10aGlzLiR3aW5kb3cuc2Nyb2xsVG9wKCksYz10aGlzLiRlbGVtZW50Lm9mZnNldCgpO3JldHVybiB0aGlzLnBpbm5lZE9mZnNldD1jLnRvcC1hfSxiLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcD1mdW5jdGlvbigpe3NldFRpbWVvdXQoYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcyksMSl9LGIucHJvdG90eXBlLmNoZWNrUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLiRlbGVtZW50LmlzKCI6dmlzaWJsZSIpKXt2YXIgYz1hKGRvY3VtZW50KS5oZWlnaHQoKSxkPXRoaXMuJHdpbmRvdy5zY3JvbGxUb3AoKSxlPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZj10aGlzLm9wdGlvbnMub2Zmc2V0LGc9Zi50b3AsaD1mLmJvdHRvbTsidG9wIj09dGhpcy5hZmZpeGVkJiYoZS50b3ArPWQpLCJvYmplY3QiIT10eXBlb2YgZiYmKGg9Zz1mKSwiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGc9Zi50b3AodGhpcy4kZWxlbWVudCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBoJiYoaD1mLmJvdHRvbSh0aGlzLiRlbGVtZW50KSk7dmFyIGk9bnVsbCE9dGhpcy51bnBpbiYmZCt0aGlzLnVucGluPD1lLnRvcD8hMTpudWxsIT1oJiZlLnRvcCt0aGlzLiRlbGVtZW50LmhlaWdodCgpPj1jLWg/ImJvdHRvbSI6bnVsbCE9ZyYmZz49ZD8idG9wIjohMTtpZih0aGlzLmFmZml4ZWQhPT1pKXt0aGlzLnVucGluJiZ0aGlzLiRlbGVtZW50LmNzcygidG9wIiwiIik7dmFyIGo9ImFmZml4IisoaT8iLSIraToiIiksaz1hLkV2ZW50KGorIi5icy5hZmZpeCIpO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihrKSxrLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5hZmZpeGVkPWksdGhpcy51bnBpbj0iYm90dG9tIj09aT90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhiLlJFU0VUKS5hZGRDbGFzcyhqKS50cmlnZ2VyKGEuRXZlbnQoai5yZXBsYWNlKCJhZmZpeCIsImFmZml4ZWQiKSkpLCJib3R0b20iPT1pJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmMtaC10aGlzLiRlbGVtZW50LmhlaWdodCgpfSkpfX19O3ZhciBjPWEuZm4uYWZmaXg7YS5mbi5hZmZpeD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYWZmaXgiKSxmPSJvYmplY3QiPT10eXBlb2YgYyYmYztlfHxkLmRhdGEoImJzLmFmZml4IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9LGEuZm4uYWZmaXguQ29uc3RydWN0b3I9YixhLmZuLmFmZml4Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5hZmZpeD1jLHRoaXN9LGEod2luZG93KS5vbigibG9hZCIsZnVuY3Rpb24oKXthKCdbZGF0YS1zcHk9ImFmZml4Il0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxjPWIuZGF0YSgpO2Mub2Zmc2V0PWMub2Zmc2V0fHx7fSxjLm9mZnNldEJvdHRvbSYmKGMub2Zmc2V0LmJvdHRvbT1jLm9mZnNldEJvdHRvbSksYy5vZmZzZXRUb3AmJihjLm9mZnNldC50b3A9Yy5vZmZzZXRUb3ApLGIuYWZmaXgoYyl9KX0pfShqUXVlcnkpOw=="></script>
<script src="data:application/javascript;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdub25lJzsgc3R5bGUtc3JjICd1bnNhZmUtaW5saW5lJzsgaW1nLXNyYyBkYXRhOjsgY29ubmVjdC1zcmMgJ3NlbGYnIj4KICAgIDx0aXRsZT5QYWdlIG5vdCBmb3VuZCAmbWlkZG90OyBHaXRIdWIgUGFnZXM8L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KICAgICAgYm9keSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIgeyBtYXJnaW46IDUwcHggYXV0byA0MHB4IGF1dG87IHdpZHRoOiA2MDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgogICAgICBhIHsgY29sb3I6ICM0MTgzYzQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQogICAgICBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCiAgICAgIGgxIHsgd2lkdGg6IDgwMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDogLTEwMHB4OyBsZXR0ZXItc3BhY2luZzogLTFweDsgbGluZS1oZWlnaHQ6IDYwcHg7IGZvbnQtc2l6ZTogNjBweDsgZm9udC13ZWlnaHQ6IDEwMDsgbWFyZ2luOiAwcHggMCA1MHB4IDA7IHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7IH0KICAgICAgcCB7IGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7IG1hcmdpbjogMjBweCAwOyBsaW5lLWhlaWdodDogMS42OyB9CgogICAgICB1bCB7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMjVweCAwOyBwYWRkaW5nOiAwOyB9CiAgICAgIGxpIHsgZGlzcGxheTogdGFibGUtY2VsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdpZHRoOiAxJTsgfQoKICAgICAgLmxvZ28geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi10b3A6IDM1cHg7IH0KICAgICAgLmxvZ28taW1nLTJ4IHsgZGlzcGxheTogbm9uZTsgfQogICAgICBAbWVkaWEKICAgICAgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgIG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgICAgIG9ubHkgc2NyZWVuIGFuZCAoICAgICAtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLzEpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgICAgbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgICAgIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLAogICAgICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgICAgICAgICAgICBtaW4tcmVzb2x1dGlvbjogMmRwcHgpIHsKICAgICAgICAubG9nby1pbWctMXggeyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgLmxvZ28taW1nLTJ4IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CiAgICAgIH0KCiAgICAgICNzdWdnZXN0aW9ucyB7CiAgICAgICAgbWFyZ2luLXRvcDogMzVweDsKICAgICAgICBjb2xvcjogI2NjYzsKICAgICAgfQogICAgICAjc3VnZ2VzdGlvbnMgYSB7CiAgICAgICAgY29sb3I6ICM2NjY2NjY7CiAgICAgICAgZm9udC13ZWlnaHQ6IDIwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luOiAwIDEwcHg7CiAgICAgIH0KCiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoKICAgICAgPGgxPjQwNDwvaDE+CiAgICAgIDxwPjxzdHJvbmc+RmlsZSBub3QgZm91bmQ8L3N0cm9uZz48L3A+CgogICAgICA8cD4KICAgICAgICBUaGUgc2l0ZSBjb25maWd1cmVkIGF0IHRoaXMgYWRkcmVzcyBkb2VzIG5vdAogICAgICAgIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCBmaWxlLgogICAgICA8L3A+CgogICAgICA8cD4KICAgICAgICBJZiB0aGlzIGlzIHlvdXIgc2l0ZSwgbWFrZSBzdXJlIHRoYXQgdGhlIGZpbGVuYW1lIGNhc2UgbWF0Y2hlcyB0aGUgVVJMLjxicj4KICAgICAgICBGb3Igcm9vdCBVUkxzIChsaWtlIDxjb2RlPmh0dHA6Ly9leGFtcGxlLmNvbS88L2NvZGU+KSB5b3UgbXVzdCBwcm92aWRlIGFuCiAgICAgICAgPGNvZGU+aW5kZXguaHRtbDwvY29kZT4gZmlsZS4KICAgICAgPC9wPgoKICAgICAgPHA+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vcGFnZXMvIj5SZWFkIHRoZSBmdWxsIGRvY3VtZW50YXRpb248L2E+CiAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgPHN0cm9uZz5HaXRIdWIgUGFnZXM8L3N0cm9uZz4uCiAgICAgIDwvcD4KCiAgICAgIDxkaXYgaWQ9InN1Z2dlc3Rpb25zIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1YnN0YXR1cy5jb20iPkdpdEh1YiBTdGF0dXM8L2E+ICZtZGFzaDsKICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2dpdGh1YnN0YXR1cyI+QGdpdGh1YnN0YXR1czwvYT4KICAgICAgPC9kaXY+CgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibG9nbyBsb2dvLWltZy0xeCI+CiAgICAgICAgPGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHRpdGxlPSIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEZNVFpDUkRZM1JFSXpSakF4TVVVeVFVUXpSRUl4UXpSRU5VRkZOVU01TmlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRk1UWkNSRFkzUlVJelJqQXhNVVV5UVVRelJFSXhRelJFTlVGRk5VTTVOaUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tVeE5rSkVOamRDUWpOR01ERXhSVEpCUkRORVFqRkRORVExUVVVMVF6azJJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1V4TmtKRU5qZERRak5HTURFeFJUSkJSRE5FUWpGRE5FUTFRVVUxUXprMklpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtTTTlNQ0FBQUErNUpSRUZVZU5yRVYxMUlrMUVZM3M0K2RkT3AyOVE1YjBvcENnS0Zzb0tvaTVLZzZDSWh1d2k2ekxKTG9ZTG9wcTRxc0tLZ2k0aTZDWUlvVS9xNWlEQUtzNnN5b1M3NklSV3R5SitwN2NkdDdzZjFQR09EK2UwYzNkeWdBeC82N1p6elBNOTUvODc3R1lkSFJnM1pqTVhGeGVwUUtOUzZzTEN3SnhxTk51RnBpTWZqVnM0WmpVYS9wbW1qZUQ2VmxKUzhOcHZOVDRRUTdteHdqU3NKaUVRaW0vMSsvOWxnTUhnSXI1b2h1eEcxV0N3OVZxdjFjbEZSMGRDcUJPREVsVjZ2OTBvZ0VEakdkWWJWalhocGFlbmRpb3FLMDdDSVI3WkFxRTQ5UFQwOUJQTDJQTWdUQnlRR3NZaVpsUUQ0dU1YdGRyK0p4V0lOaGdJTlloR1QyTXNLZ01ybTJkblpYZ1JYaGFIQWc1akVKb2RVQUh4dXg0THVkSEpFOVJkRWRBK2kzSnV6N2JHSGU0bWhFOUZOcmd3QkNMaXJNRlY5T2toNWVmbEZoOFBSNW5LNW5EYWJyUjJCTkpsS08wVDM1K0xpNG40Ky9KKy9KUUN4aG11NWgzdUpvWE5IUGJtV1pBSE1zaFdCOGw1L2lwcWFtbWFBZjB6UEREeDFPTlYzdnVyZGlkcXdBUUwrcEVjOHNMY0FlMUNDdlEzWUh4SVc4UGw4NXhTV05DMWhBRERJdjBySUUvbzRKMGsza3d3NHhTbHdJaGNxM0VGRk9tN0tOL2hVR09Ra3QwQ0ZhNVdwTkpsTXZ4QkV6L0lWUUF4Zy9aUlpsOXdpSEE2M3lEWWllTTdEbkxQNUNpQUdzQzdJNXNndFlLSkdXZTJBOHNlRnFnRkpySmpFUFkxQ24zcEo4LzlXMWU1VldzRkRURW1GckJjb0RoWkpFUWtYdWhJQ015S3BqaGFocU4yMWhSWUFUS2ZVT2xEbWt5Z3JSNG80QzBWT0xHSktyT0lUS0I0amlqemRYeWdCS2l4eUM1VERRZG5rL1B6OHFSdzZvT1dHbHNUS0dPUVc2T0g2RkJXc3llUHhkT1hMVGd4aXllYklMWkNqeitHTGdNSUtuWE56YzQ5WU1sY1JkSFhjU3d4RlZnVEluUWhDOUczM1VoTm9KTHVxcTZ0MzQ1cDl5M2VVeThPVGs1UGpBSHVJOXVvNGIwN0ZCYU9oc3UwQTRVbmMrVDFUVTFOajNLc1NTRTV5SjY1anFGMkREZDhRcVdZbUFacklNMlZsWlRkblptYjZBYnBkVjlWNmVjOXpuZjVRN0hqWXVtZFJFMEpPcDNNaml0TzRTRmErY1p6OFVtcWUzVENiU0x2ZGZrUi9rV0RkTlFsNUludVRjeXNPY3BGVDM1WnJiQnh4NHAzSkFIbFpWVlcxRC82MzRWUnQrRnZMQmdLL3Y1TFY5V1MrMTB4TVRFd3RSdzdYdnFPTCtlMlE4VjNBWUlPSUFYUTI2L2hlV1ZuWkNWZmN5S0hnMkNCZ1RwbVBtallNOGwyNEd5YVVIeWFJaDdYd2ZSOUVyRThxSG9EZm4yTFROQVZDMEhYNk1GY0JJUDhCaSs2RjZjZFcvRElDa0FOUmZ4OTlmRVlGUTdOcGg1aS91UWlBMjE0Z25vN0srZ3VoYWlLZzlnQzYyK004ZVI3WHNCc1lKNGlsYW02MEZiN3I3dUFqOHdGeXV3TTFvSU9XZ2ZtRHk2UlhFRVF6Sk1QZTIzRFhyVlM3cnR5RDNEZjh6L0ZQZ0FFQXpXVTVLdTU5WkFVQUFBQUFTVVZPUks1Q1lJST0iPgogICAgICA8L2E+CgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibG9nbyBsb2dvLWltZy0yeCI+CiAgICAgICAgPGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHRpdGxlPSIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBWUFBQUNxYVhIZUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEVRVU0xUWtVeFJVSTBNVU14TVVVeVFVUXpSRUl4UXpSRU5VRkZOVU01TmlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRVFVTTFRa1V4UmtJME1VTXhNVVV5UVVRelJFSXhRelJFTlVGRk5VTTVOaUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tVeE5rSkVOamRHUWpOR01ERXhSVEpCUkRORVFqRkRORVExUVVVMVF6azJJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1V4TmtKRU5qZ3dRak5HTURFeFJUSkJSRE5FUWpGRE5FUTFRVVUxUXprMklpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtoZlBSYVFBQUI2bEpSRUZVZU5yc1cybU1FMlVZYm9kdHQrMjIyMnUzNVFoZW9DQ1lHQlFsaWdJSmdrWkpOUHpnaWdvYVRFajhBZEZFTWZBRGZ5QUJrZ1dpaVdjaWVLNFMrUU9pSEFZVWoyaE1OS2dZbEV1anBOdHR1OXZ0dGJ2ZHcrY2hVMUs2TTUzNXB0M3ViSENTeWV6UitiNzNlYjczK3Q3dnJmWHN1Zk9XNGJ6Nit2b205L2IyM292bk5OdzM0YjV4WUdBZ09EZzQ2TWJ0NG1lc1Ztc1dkMXFTcEhoZFhkMmZ1UC9BZmNwdXQ1L0E4OHh3eW1jZEJnTHFlbnA2RnVSeXVXVjR6dS92NzU5UXlXQmp4b3o1dDc2Ky9ndW4wOW1LNXhGeWFrb0NBUFNhVENhek5wdk5Qb1lWYmg2TzFZS0dSRjB1MTNzTkRRMjdRTXpmcGlBQUtqMGxuVTYvZ0JWZkFaVzJXV3B3d1Z6eTBJZ1AzRzczRnBqSTZSRWhBR0E5cVZScUExYjltVm9CVnlJQzJ0RGk4WGcyNCtkVXpRaUFiUy9zN094OEcyby8zbUtDQytadzBlZnpQUUVmY1ZqWXJBUlgzZGJWMWJVdEhvOGZNZ3Q0MmYrTXAweVVUVlFiZFdzQUhWc2lrZGlIa0hhUHhjUVhRdWZYZ1VCZ01SeG1lOVUwQUF4Zkg0dkZ2ak03ZUY2VWtiSlM1cW9Rd0VRR0E1N0FjNUpsbEZ5VVZaWjVja1VFZ01WeHNLMmpsU1l6SStRWEpzaXlqek5FQUp5SkF6Yi9LUWE0MWpKS0w4cE9ETVFpVEVBeW1YdzVuOC9QMElqRDNiaDdSZ29nNTlhYW54aUlSVFZ2Vi9vajB0bkhjYS9XTXJWd09Ed0IzcmFUR3h6a0JnL2duWlZhcEZWNjJXeTJuNUFPNzBITS81d2JKMFFuWHlRU2FWUERJdU5aelkwVjNudEhNd3hpd0hBMEdqMk5wN2VjSUJEZ2FEQVlYS0NRSk0xRGhyZ0ozbmh1bGNQYmw4ajRObUhlNDZYL2c2MGZ3YnozYWV3amtxRlFhQXFlYldVMUFPcXlRd3Q4SWQ2cUVITWM5N3p1N3U3RkdHc243SEFpVnVvc1Z3N1AzNUMxbmNjZGdTQ3hvcDFkSGVac3dtZkhNbnhCbzZaVGsrak44ZGwvdkY3dldvZkRzYStNTE45b0VVQk14T2IzKzFlb0VzQlZ3NlptdWE0OXI4WW1oQUtEaUVQY013QnN4TWlxUStpeHpQRnhaeXFScFhBUkcvWU9yMU9iRkowZ1Vza1hCYmFtY1IxT0ttTVV2RHhIUkF1OC9MbVkzakZMTVVwRnF6OUh4RzY1c21ZSmR5S3lFQ094RGlFQWUvcDFnakYyb29uaXZaQXN4VmdsMmRhYTRFUVdDVzZKNTVxRkFGRlppSldZTHhOUXkycU9TVXpHUnN5WENVREllbGl3QUhFTzRXU2xXUUJSRm9aYWtYY0ttQ1hteVhBS3MwVmU5dmw4cTQyV29JWXBKVTRoVjNoS2NOczhtOWdsN3AveFE3M2VGNWtCNGo1bU5yV21USlJOd0F6cWlWMUN4alZUWkNJa0VxK1oxYlpGWlNOMkNlbm1WQUZWeTRQbHo4eEtBR1dqakFLRms2bENCTURSL01KakxMTVNRTm00M3hBaVFLVGFBKzkvd2V3aERqTCtKVkkxa2tUU1NPVGNLYk1Ud1BxRVNBb3Q2ZG42RnIxZ0h3VkpqdTZJUnV5aUJ5UHVVVUJBZzVER2tBZ0JteGx2ZGdJRUs5Z0Rrb2hkWS9CSm80Q0FHMFI4bWlSU3NHQUJrZ1ZRczRLWHUwOThJZ1VYU1NSc0ZBb0taaVZBVkRZMldVaWlQVGpZUmk0MUt3R2lzckdzTHRsc3RoOEZpd256MmZCa1F2V2ZSdGxFM2lGMnlXNjMveUNhY1haMWRXMDJHd0d5VEZhUmQ0aWRKbkNLSFJhQ3hZUkhvRzVMVEtUNlN5aVRvUDFmSkhibUFZUFlSUjBVblpRdE1uQTZzMHpnK0daQmx0MEdkbzdFUEhncEUzUTZuWjhZeUxoYzhYajhNSmgvYUtUQVkrNUZQQUtITEU3UmR3dVlKWm1Od3p5Q01rQkNZeUtST0pCTUpsOUIvUFhYQ2pqbUNtRE9WekgzZmlQcE9iRVdHcW9LZTRFQmw4djFobHFzZEx2ZDIzbWt4SE05cGM5a01wbW5vOUhvZVRpaTdld2JIRVpQUHgxenRMUzF0VjNBbkd1TWppTmp2YlFGdUh3NnpEbzVCeTdkVFBBUU5CZ01MclJhclRrU2xzMW1ud1Q3dXdwOXZpcng5UXpiVy9IdVYvajVkL2IrNmpuaUtsbGxQOGxrZU9OSkRrK2RxOUdzUVRuQzRmQjFoZU8wSzQ3SHdlN1dkRHI5bkFLZ1h3T0J3SEkrQzQ1SHRqMWQ2c2Q0MjlUVU5FY21VZGMrUFJhTEhjdm44N2RYVzR1Z3pkc2FHeHVmTDk0TkZ2OXppMUo3R1ZiaGx2YjJkbmFKM1NWcnhmYytuMitOVHNaNy9INy9NcjNnNVhkU0lIeUpTSDFQWis3ZlRveWwyK0VycWlsZ1o0TmFMWUI5Z29WR2FIalI5M0h2MVpyVTRYRHNGVDIwa0gzUE9iemJXazBDZ0cxamFjVklVbkFRYjlGK1ZleHlMTXprcGNMdjBJSlY3QUhRSU9DQVVZSHg3djVxZ1NjbVlIdFRxU0F5WkxFSlRLMjJCaWU0aXEzeHNxcG00U0FmOUhxOWEyRG5KNHVMSzNTRVVMY2RSdnAzaTN6SHlTcXBmaWN4RWRzUWMxTnJsWVhYdlIrTzdxQVNTZXpYQitoMVN1VW9tZ2c5TEw4QlVvVjQ3NDlFSW9sS2grRWlxV21xVkVabERnSGtzMnB4SHc3eFRxVVF3OUo1TmNBWE9LMTBBR0lvWjZabGk2Slk2WjFRNDYxS29aNE5pS0xIYXJXK0tEc3hsRFVQSFo1elBRWnFVVkRQSnNUcWI1bjltYWxicEFoOEMyWFhETGw2MitXWklERlJVbE5WT2l3ZW5jbk5VM2FRRWtMK2NETVNvTHZabzJmUUI3QUpzc05BdUZ1dm9ybERWVmtrZzJJODcram8ySzJRQVZwaERyZnlWaUs1VnF0TzM0T2theFhDcCs3ZHJkREJDQWR1Ym02ZWlkWCsyV3dxVDVrb213aDRZUUxrK0g0YUU5M2g4WGcyZ3ZIZWtRWk9HU2dMWlRMeURUTEo0THg5L0taV0tCU2FpblQ0SXkzRnFRQmZuVVpSNDJQS1FGa3NCcjlRS1ZYQ1B1c0QzT2lBL1JrUTVrUDhxVi9KbDFXeXdBcC82K2RjbVBNMnpMMVVyVWFoZTRKcWZuV1dLWEl1bDN1VWJmUDhuakFGTFcxT0ZyM2dkRnRaNzJjTkgrUHRRVDcvYnJXK05YcUpBSGgweTlWOC9VL0ExVTdBZndJTUFEN21TM3BDYnVXSkFBQUFBRWxGVGtTdVFtQ0MiPgogICAgICA8L2E+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K"></script>
<link rel="stylesheet" href="data:text/css;base64,LyohCiAqIEJvb3RzdHJhcCB2My4xLjEgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovCgovKiEgbm9ybWFsaXplLmNzcyB2My4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1ib2R5e21hcmdpbjowfWFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxtYWluLG5hdixzZWN0aW9uLHN1bW1hcnl7ZGlzcGxheTpibG9ja31hdWRpbyxjYW52YXMscHJvZ3Jlc3MsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9YXVkaW86bm90KFtjb250cm9sc10pe2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MH1baGlkZGVuXSx0ZW1wbGF0ZXtkaXNwbGF5Om5vbmV9YXtiYWNrZ3JvdW5kOjAgMH1hOmFjdGl2ZSxhOmhvdmVye291dGxpbmU6MH1hYmJyW3RpdGxlXXtib3JkZXItYm90dG9tOjFweCBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfWRmbntmb250LXN0eWxlOml0YWxpY31oMXtmb250LXNpemU6MmVtO21hcmdpbjouNjdlbSAwfW1hcmt7YmFja2dyb3VuZDojZmYwO2NvbG9yOiMwMDB9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdXB7dG9wOi0uNWVtfXN1Yntib3R0b206LS4yNWVtfWltZ3tib3JkZXI6MH1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocnstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6MH1wcmV7b3ZlcmZsb3c6YXV0b31jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW19YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDttYXJnaW46MH1idXR0b257b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLGh0bWwgaW5wdXRbdHlwZT1idXR0b25dLGlucHV0W3R5cGU9cmVzZXRdLGlucHV0W3R5cGU9c3VibWl0XXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2N1cnNvcjpwb2ludGVyfWJ1dHRvbltkaXNhYmxlZF0saHRtbCBpbnB1dFtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGlucHV0OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowO3BhZGRpbmc6MH1pbnB1dHtsaW5lLWhlaWdodDpub3JtYWx9aW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1pbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24saW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfWlucHV0W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveH1pbnB1dFt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24saW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfWZpZWxkc2V0e2JvcmRlcjoxcHggc29saWQgc2lsdmVyO21hcmdpbjowIDJweDtwYWRkaW5nOi4zNWVtIC42MjVlbSAuNzVlbX1sZWdlbmR7Ym9yZGVyOjA7cGFkZGluZzowfXRleHRhcmVhe292ZXJmbG93OmF1dG99b3B0Z3JvdXB7Zm9udC13ZWlnaHQ6NzAwfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfXRkLHRoe3BhZGRpbmc6MH1AbWVkaWEgcHJpbnR7Knt0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDtjb2xvcjojMDAwIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fWEsYTp2aXNpdGVke3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YVtocmVmXTphZnRlcntjb250ZW50OiIgKCIgYXR0cihocmVmKSAiKSJ9YWJiclt0aXRsZV06YWZ0ZXJ7Y29udGVudDoiICgiIGF0dHIodGl0bGUpICIpIn1hW2hyZWZePSJqYXZhc2NyaXB0OiJdOmFmdGVyLGFbaHJlZl49IiMiXTphZnRlcntjb250ZW50OiIifXByZSxibG9ja3F1b3Rle2JvcmRlcjoxcHggc29saWQgIzk5OTtwYWdlLWJyZWFrLWluc2lkZTphdm9pZH10aGVhZHtkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH10cixpbWd7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9aW1ne21heC13aWR0aDoxMDAlIWltcG9ydGFudH1wLGgyLGgze29ycGhhbnM6Mzt3aWRvd3M6M31oMixoM3twYWdlLWJyZWFrLWFmdGVyOmF2b2lkfXNlbGVjdHtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fS5uYXZiYXJ7ZGlzcGxheTpub25lfS50YWJsZSB0ZCwudGFibGUgdGh7YmFja2dyb3VuZC1jb2xvcjojZmZmIWltcG9ydGFudH0uYnRuPi5jYXJldCwuZHJvcHVwPi5idG4+LmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzAwMCFpbXBvcnRhbnR9LmxhYmVse2JvcmRlcjoxcHggc29saWQgIzAwMH0udGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudH0udGFibGUtYm9yZGVyZWQgdGgsLnRhYmxlLWJvcmRlcmVkIHRke2JvcmRlcjoxcHggc29saWQgI2RkZCFpbXBvcnRhbnR9fSp7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fTpiZWZvcmUsOmFmdGVyey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH1odG1se2ZvbnQtc2l6ZTo2Mi41JTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKX1ib2R5e2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZn1pbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH1he2NvbG9yOiM0MjhiY2E7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTpob3ZlcixhOmZvY3Vze2NvbG9yOiMyYTY0OTY7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweH1maWd1cmV7bWFyZ2luOjB9aW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaW1nLXJlc3BvbnNpdmUsLnRodW1ibmFpbD5pbWcsLnRodW1ibmFpbCBhPmltZywuY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLC5jYXJvdXNlbC1pbm5lcj4uaXRlbT5hPmltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfS5pbWctcm91bmRlZHtib3JkZXItcmFkaXVzOjZweH0uaW1nLXRodW1ibmFpbHtwYWRkaW5nOjRweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfS5pbWctY2lyY2xle2JvcmRlci1yYWRpdXM6NTAlfWhye21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VlZX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTtib3JkZXI6MH1oMSxoMixoMyxoNCxoNSxoNiwuaDEsLmgyLC5oMywuaDQsLmg1LC5oNntmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjE7Y29sb3I6aW5oZXJpdH1oMSBzbWFsbCxoMiBzbWFsbCxoMyBzbWFsbCxoNCBzbWFsbCxoNSBzbWFsbCxoNiBzbWFsbCwuaDEgc21hbGwsLmgyIHNtYWxsLC5oMyBzbWFsbCwuaDQgc21hbGwsLmg1IHNtYWxsLC5oNiBzbWFsbCxoMSAuc21hbGwsaDIgLnNtYWxsLGgzIC5zbWFsbCxoNCAuc21hbGwsaDUgLnNtYWxsLGg2IC5zbWFsbCwuaDEgLnNtYWxsLC5oMiAuc21hbGwsLmgzIC5zbWFsbCwuaDQgLnNtYWxsLC5oNSAuc21hbGwsLmg2IC5zbWFsbHtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojOTk5fWgxLC5oMSxoMiwuaDIsaDMsLmgze21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjEwcHh9aDEgc21hbGwsLmgxIHNtYWxsLGgyIHNtYWxsLC5oMiBzbWFsbCxoMyBzbWFsbCwuaDMgc21hbGwsaDEgLnNtYWxsLC5oMSAuc21hbGwsaDIgLnNtYWxsLC5oMiAuc21hbGwsaDMgLnNtYWxsLC5oMyAuc21hbGx7Zm9udC1zaXplOjY1JX1oNCwuaDQsaDUsLmg1LGg2LC5oNnttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fWg0IHNtYWxsLC5oNCBzbWFsbCxoNSBzbWFsbCwuaDUgc21hbGwsaDYgc21hbGwsLmg2IHNtYWxsLGg0IC5zbWFsbCwuaDQgLnNtYWxsLGg1IC5zbWFsbCwuaDUgLnNtYWxsLGg2IC5zbWFsbCwuaDYgLnNtYWxse2ZvbnQtc2l6ZTo3NSV9aDEsLmgxe2ZvbnQtc2l6ZTozNnB4fWgyLC5oMntmb250LXNpemU6MzBweH1oMywuaDN7Zm9udC1zaXplOjI0cHh9aDQsLmg0e2ZvbnQtc2l6ZToxOHB4fWg1LC5oNXtmb250LXNpemU6MTRweH1oNiwuaDZ7Zm9udC1zaXplOjEycHh9cHttYXJnaW46MCAwIDEwcHh9LmxlYWR7bWFyZ2luLWJvdHRvbToyMHB4O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjIwMDtsaW5lLWhlaWdodDoxLjR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5sZWFke2ZvbnQtc2l6ZToyMXB4fX1zbWFsbCwuc21hbGx7Zm9udC1zaXplOjg1JX1jaXRle2ZvbnQtc3R5bGU6bm9ybWFsfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5fS50ZXh0LW11dGVke2NvbG9yOiM5OTl9LnRleHQtcHJpbWFyeXtjb2xvcjojNDI4YmNhfWEudGV4dC1wcmltYXJ5OmhvdmVye2NvbG9yOiMzMDcxYTl9LnRleHQtc3VjY2Vzc3tjb2xvcjojM2M3NjNkfWEudGV4dC1zdWNjZXNzOmhvdmVye2NvbG9yOiMyYjU0MmN9LnRleHQtaW5mb3tjb2xvcjojMzE3MDhmfWEudGV4dC1pbmZvOmhvdmVye2NvbG9yOiMyNDUyNjl9LnRleHQtd2FybmluZ3tjb2xvcjojOGE2ZDNifWEudGV4dC13YXJuaW5nOmhvdmVye2NvbG9yOiM2NjUxMmN9LnRleHQtZGFuZ2Vye2NvbG9yOiNhOTQ0NDJ9YS50ZXh0LWRhbmdlcjpob3Zlcntjb2xvcjojODQzNTM0fS5iZy1wcmltYXJ5e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDI4YmNhfWEuYmctcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMDcxYTl9LmJnLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fWEuYmctc3VjY2Vzczpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjMWUyYjN9LmJnLWluZm97YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fWEuYmctaW5mbzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNhZmQ5ZWV9LmJnLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzfWEuYmctd2FybmluZzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmN2VjYjV9LmJnLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9YS5iZy1kYW5nZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTRiOWI5fS5wYWdlLWhlYWRlcntwYWRkaW5nLWJvdHRvbTo5cHg7bWFyZ2luOjQwcHggMCAyMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWV9dWwsb2x7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MTBweH11bCB1bCxvbCB1bCx1bCBvbCxvbCBvbHttYXJnaW4tYm90dG9tOjB9Lmxpc3QtdW5zdHlsZWR7cGFkZGluZy1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZXtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLWxlZnQ6LTVweH0ubGlzdC1pbmxpbmU+bGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OjVweH1kbHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToyMHB4fWR0LGRke2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDN9ZHR7Zm9udC13ZWlnaHQ6NzAwfWRke21hcmdpbi1sZWZ0OjB9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5kbC1ob3Jpem9udGFsIGR0e2Zsb2F0OmxlZnQ7d2lkdGg6MTYwcHg7Y2xlYXI6bGVmdDt0ZXh0LWFsaWduOnJpZ2h0O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZGwtaG9yaXpvbnRhbCBkZHttYXJnaW4tbGVmdDoxODBweH19YWJiclt0aXRsZV0sYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXXtjdXJzb3I6aGVscDtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgIzk5OX0uaW5pdGlhbGlzbXtmb250LXNpemU6OTAlO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1ibG9ja3F1b3Rle3BhZGRpbmc6MTBweCAyMHB4O21hcmdpbjowIDAgMjBweDtmb250LXNpemU6MTcuNXB4O2JvcmRlci1sZWZ0OjVweCBzb2xpZCAjZWVlfWJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgdWw6bGFzdC1jaGlsZCxibG9ja3F1b3RlIG9sOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfWJsb2NrcXVvdGUgZm9vdGVyLGJsb2NrcXVvdGUgc21hbGwsYmxvY2txdW90ZSAuc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6ODAlO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6Izk5OX1ibG9ja3F1b3RlIGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZSBzbWFsbDpiZWZvcmUsYmxvY2txdW90ZSAuc21hbGw6YmVmb3Jle2NvbnRlbnQ6J1wyMDE0IFwwMEEwJ30uYmxvY2txdW90ZS1yZXZlcnNlLGJsb2NrcXVvdGUucHVsbC1yaWdodHtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCAjZWVlO2JvcmRlci1sZWZ0OjA7dGV4dC1hbGlnbjpyaWdodH0uYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IGZvb3RlcjpiZWZvcmUsLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmJlZm9yZSwuYmxvY2txdW90ZS1yZXZlcnNlIC5zbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDpiZWZvcmV7Y29udGVudDonJ30uYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjphZnRlcixibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YWZ0ZXIsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmFmdGVyLGJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGw6YWZ0ZXJ7Y29udGVudDonXDAwQTAgXDIwMTQnfWJsb2NrcXVvdGU6YmVmb3JlLGJsb2NrcXVvdGU6YWZ0ZXJ7Y29udGVudDoiIn1hZGRyZXNze21hcmdpbi1ib3R0b206MjBweDtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDoxLjQyODU3MTQzfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcywiQ291cmllciBOZXciLG1vbm9zcGFjZX1jb2Rle3BhZGRpbmc6MnB4IDRweDtmb250LXNpemU6OTAlO2NvbG9yOiNjNzI1NGU7YmFja2dyb3VuZC1jb2xvcjojZjlmMmY0O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmFkaXVzOjRweH1rYmR7cGFkZGluZzoycHggNHB4O2ZvbnQtc2l6ZTo5MCU7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4yNSl9cHJle2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo5LjVweDttYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mzt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo0cHh9cHJlIGNvZGV7cGFkZGluZzowO2ZvbnQtc2l6ZTppbmhlcml0O2NvbG9yOmluaGVyaXQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjB9LnByZS1zY3JvbGxhYmxle21heC1oZWlnaHQ6MzQwcHg7b3ZlcmZsb3cteTpzY3JvbGx9LmNvbnRhaW5lcnttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvO3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6MTVweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbnRhaW5lcnt3aWR0aDo3NTBweH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jb250YWluZXJ7d2lkdGg6OTcwcHh9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNvbnRhaW5lcnt3aWR0aDoxMTcwcHh9fS5jb250YWluZXItZmx1aWR7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bztwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9LnJvd3ttYXJnaW4tbGVmdDotMTVweDttYXJnaW4tcmlnaHQ6LTE1cHh9LmNvbC14cy0xLC5jb2wtc20tMSwuY29sLW1kLTEsLmNvbC1sZy0xLC5jb2wteHMtMiwuY29sLXNtLTIsLmNvbC1tZC0yLC5jb2wtbGctMiwuY29sLXhzLTMsLmNvbC1zbS0zLC5jb2wtbWQtMywuY29sLWxnLTMsLmNvbC14cy00LC5jb2wtc20tNCwuY29sLW1kLTQsLmNvbC1sZy00LC5jb2wteHMtNSwuY29sLXNtLTUsLmNvbC1tZC01LC5jb2wtbGctNSwuY29sLXhzLTYsLmNvbC1zbS02LC5jb2wtbWQtNiwuY29sLWxnLTYsLmNvbC14cy03LC5jb2wtc20tNywuY29sLW1kLTcsLmNvbC1sZy03LC5jb2wteHMtOCwuY29sLXNtLTgsLmNvbC1tZC04LC5jb2wtbGctOCwuY29sLXhzLTksLmNvbC1zbS05LC5jb2wtbWQtOSwuY29sLWxnLTksLmNvbC14cy0xMCwuY29sLXNtLTEwLC5jb2wtbWQtMTAsLmNvbC1sZy0xMCwuY29sLXhzLTExLC5jb2wtc20tMTEsLmNvbC1tZC0xMSwuY29sLWxnLTExLC5jb2wteHMtMTIsLmNvbC1zbS0xMiwuY29sLW1kLTEyLC5jb2wtbGctMTJ7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDoxcHg7cGFkZGluZy1sZWZ0OjE1cHg7cGFkZGluZy1yaWdodDoxNXB4fS5jb2wteHMtMSwuY29sLXhzLTIsLmNvbC14cy0zLC5jb2wteHMtNCwuY29sLXhzLTUsLmNvbC14cy02LC5jb2wteHMtNywuY29sLXhzLTgsLmNvbC14cy05LC5jb2wteHMtMTAsLmNvbC14cy0xMSwuY29sLXhzLTEye2Zsb2F0OmxlZnR9LmNvbC14cy0xMnt3aWR0aDoxMDAlfS5jb2wteHMtMTF7d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteHMtMTB7d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wteHMtOXt3aWR0aDo3NSV9LmNvbC14cy04e3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXhzLTd7d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wteHMtNnt3aWR0aDo1MCV9LmNvbC14cy01e3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXhzLTR7d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wteHMtM3t3aWR0aDoyNSV9LmNvbC14cy0ye3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXhzLTF7d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC14cy1wdWxsLTEye3JpZ2h0OjEwMCV9LmNvbC14cy1wdWxsLTExe3JpZ2h0OjkxLjY2NjY2NjY3JX0uY29sLXhzLXB1bGwtMTB7cmlnaHQ6ODMuMzMzMzMzMzMlfS5jb2wteHMtcHVsbC05e3JpZ2h0Ojc1JX0uY29sLXhzLXB1bGwtOHtyaWdodDo2Ni42NjY2NjY2NyV9LmNvbC14cy1wdWxsLTd7cmlnaHQ6NTguMzMzMzMzMzMlfS5jb2wteHMtcHVsbC02e3JpZ2h0OjUwJX0uY29sLXhzLXB1bGwtNXtyaWdodDo0MS42NjY2NjY2NyV9LmNvbC14cy1wdWxsLTR7cmlnaHQ6MzMuMzMzMzMzMzMlfS5jb2wteHMtcHVsbC0ze3JpZ2h0OjI1JX0uY29sLXhzLXB1bGwtMntyaWdodDoxNi42NjY2NjY2NyV9LmNvbC14cy1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMyV9LmNvbC14cy1wdWxsLTB7cmlnaHQ6MH0uY29sLXhzLXB1c2gtMTJ7bGVmdDoxMDAlfS5jb2wteHMtcHVzaC0xMXtsZWZ0OjkxLjY2NjY2NjY3JX0uY29sLXhzLXB1c2gtMTB7bGVmdDo4My4zMzMzMzMzMyV9LmNvbC14cy1wdXNoLTl7bGVmdDo3NSV9LmNvbC14cy1wdXNoLTh7bGVmdDo2Ni42NjY2NjY2NyV9LmNvbC14cy1wdXNoLTd7bGVmdDo1OC4zMzMzMzMzMyV9LmNvbC14cy1wdXNoLTZ7bGVmdDo1MCV9LmNvbC14cy1wdXNoLTV7bGVmdDo0MS42NjY2NjY2NyV9LmNvbC14cy1wdXNoLTR7bGVmdDozMy4zMzMzMzMzMyV9LmNvbC14cy1wdXNoLTN7bGVmdDoyNSV9LmNvbC14cy1wdXNoLTJ7bGVmdDoxNi42NjY2NjY2NyV9LmNvbC14cy1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzJX0uY29sLXhzLXB1c2gtMHtsZWZ0OjB9LmNvbC14cy1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6MTAwJX0uY29sLXhzLW9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmNvbC14cy1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMlfS5jb2wteHMtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jb2wteHMtb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5jb2wteHMtb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5jb2wteHMtb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jb2wteHMtb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5jb2wteHMtb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5jb2wteHMtb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jb2wteHMtb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5jb2wteHMtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMyV9LmNvbC14cy1vZmZzZXQtMHttYXJnaW4tbGVmdDowfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY29sLXNtLTEsLmNvbC1zbS0yLC5jb2wtc20tMywuY29sLXNtLTQsLmNvbC1zbS01LC5jb2wtc20tNiwuY29sLXNtLTcsLmNvbC1zbS04LC5jb2wtc20tOSwuY29sLXNtLTEwLC5jb2wtc20tMTEsLmNvbC1zbS0xMntmbG9hdDpsZWZ0fS5jb2wtc20tMTJ7d2lkdGg6MTAwJX0uY29sLXNtLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLXNtLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXNtLTl7d2lkdGg6NzUlfS5jb2wtc20tOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1zbS03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLXNtLTZ7d2lkdGg6NTAlfS5jb2wtc20tNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1zbS00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLXNtLTN7d2lkdGg6MjUlfS5jb2wtc20tMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1zbS0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtc20tcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtc20tcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC1zbS1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1zbS1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wtc20tcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtNntyaWdodDo1MCV9LmNvbC1zbS1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wtc20tcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtM3tyaWdodDoyNSV9LmNvbC1zbS1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wtc20tcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wtc20tcHVsbC0we3JpZ2h0OjB9LmNvbC1zbS1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLXNtLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC1zbS1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtc20tcHVzaC05e2xlZnQ6NzUlfS5jb2wtc20tcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wtc20tcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wtc20tcHVzaC02e2xlZnQ6NTAlfS5jb2wtc20tcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wtc20tcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtc20tcHVzaC0ze2xlZnQ6MjUlfS5jb2wtc20tcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wtc20tcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC1zbS1wdXNoLTB7bGVmdDowfS5jb2wtc20tb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1zbS1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wtc20tb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLXNtLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLXNtLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLXNtLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLXNtLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLXNtLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLXNtLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLXNtLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLXNtLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLXNtLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wtc20tb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jb2wtbWQtMSwuY29sLW1kLTIsLmNvbC1tZC0zLC5jb2wtbWQtNCwuY29sLW1kLTUsLmNvbC1tZC02LC5jb2wtbWQtNywuY29sLW1kLTgsLmNvbC1tZC05LC5jb2wtbWQtMTAsLmNvbC1tZC0xMSwuY29sLW1kLTEye2Zsb2F0OmxlZnR9LmNvbC1tZC0xMnt3aWR0aDoxMDAlfS5jb2wtbWQtMTF7d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wtbWQtMTB7d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbWQtOXt3aWR0aDo3NSV9LmNvbC1tZC04e3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLW1kLTd7d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wtbWQtNnt3aWR0aDo1MCV9LmNvbC1tZC01e3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLW1kLTR7d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wtbWQtM3t3aWR0aDoyNSV9LmNvbC1tZC0ye3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLW1kLTF7d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1tZC1wdWxsLTEye3JpZ2h0OjEwMCV9LmNvbC1tZC1wdWxsLTExe3JpZ2h0OjkxLjY2NjY2NjY3JX0uY29sLW1kLXB1bGwtMTB7cmlnaHQ6ODMuMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC05e3JpZ2h0Ojc1JX0uY29sLW1kLXB1bGwtOHtyaWdodDo2Ni42NjY2NjY2NyV9LmNvbC1tZC1wdWxsLTd7cmlnaHQ6NTguMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC02e3JpZ2h0OjUwJX0uY29sLW1kLXB1bGwtNXtyaWdodDo0MS42NjY2NjY2NyV9LmNvbC1tZC1wdWxsLTR7cmlnaHQ6MzMuMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC0ze3JpZ2h0OjI1JX0uY29sLW1kLXB1bGwtMntyaWdodDoxNi42NjY2NjY2NyV9LmNvbC1tZC1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMyV9LmNvbC1tZC1wdWxsLTB7cmlnaHQ6MH0uY29sLW1kLXB1c2gtMTJ7bGVmdDoxMDAlfS5jb2wtbWQtcHVzaC0xMXtsZWZ0OjkxLjY2NjY2NjY3JX0uY29sLW1kLXB1c2gtMTB7bGVmdDo4My4zMzMzMzMzMyV9LmNvbC1tZC1wdXNoLTl7bGVmdDo3NSV9LmNvbC1tZC1wdXNoLTh7bGVmdDo2Ni42NjY2NjY2NyV9LmNvbC1tZC1wdXNoLTd7bGVmdDo1OC4zMzMzMzMzMyV9LmNvbC1tZC1wdXNoLTZ7bGVmdDo1MCV9LmNvbC1tZC1wdXNoLTV7bGVmdDo0MS42NjY2NjY2NyV9LmNvbC1tZC1wdXNoLTR7bGVmdDozMy4zMzMzMzMzMyV9LmNvbC1tZC1wdXNoLTN7bGVmdDoyNSV9LmNvbC1tZC1wdXNoLTJ7bGVmdDoxNi42NjY2NjY2NyV9LmNvbC1tZC1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzJX0uY29sLW1kLXB1c2gtMHtsZWZ0OjB9LmNvbC1tZC1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6MTAwJX0uY29sLW1kLW9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmNvbC1tZC1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbWQtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jb2wtbWQtb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbWQtb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbWQtb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jb2wtbWQtb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbWQtb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbWQtb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jb2wtbWQtb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbWQtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMyV9LmNvbC1tZC1vZmZzZXQtMHttYXJnaW4tbGVmdDowfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jb2wtbGctMSwuY29sLWxnLTIsLmNvbC1sZy0zLC5jb2wtbGctNCwuY29sLWxnLTUsLmNvbC1sZy02LC5jb2wtbGctNywuY29sLWxnLTgsLmNvbC1sZy05LC5jb2wtbGctMTAsLmNvbC1sZy0xMSwuY29sLWxnLTEye2Zsb2F0OmxlZnR9LmNvbC1sZy0xMnt3aWR0aDoxMDAlfS5jb2wtbGctMTF7d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wtbGctMTB7d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbGctOXt3aWR0aDo3NSV9LmNvbC1sZy04e3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLWxnLTd7d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wtbGctNnt3aWR0aDo1MCV9LmNvbC1sZy01e3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLWxnLTR7d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wtbGctM3t3aWR0aDoyNSV9LmNvbC1sZy0ye3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLWxnLTF7d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1sZy1wdWxsLTEye3JpZ2h0OjEwMCV9LmNvbC1sZy1wdWxsLTExe3JpZ2h0OjkxLjY2NjY2NjY3JX0uY29sLWxnLXB1bGwtMTB7cmlnaHQ6ODMuMzMzMzMzMzMlfS5jb2wtbGctcHVsbC05e3JpZ2h0Ojc1JX0uY29sLWxnLXB1bGwtOHtyaWdodDo2Ni42NjY2NjY2NyV9LmNvbC1sZy1wdWxsLTd7cmlnaHQ6NTguMzMzMzMzMzMlfS5jb2wtbGctcHVsbC02e3JpZ2h0OjUwJX0uY29sLWxnLXB1bGwtNXtyaWdodDo0MS42NjY2NjY2NyV9LmNvbC1sZy1wdWxsLTR7cmlnaHQ6MzMuMzMzMzMzMzMlfS5jb2wtbGctcHVsbC0ze3JpZ2h0OjI1JX0uY29sLWxnLXB1bGwtMntyaWdodDoxNi42NjY2NjY2NyV9LmNvbC1sZy1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMyV9LmNvbC1sZy1wdWxsLTB7cmlnaHQ6MH0uY29sLWxnLXB1c2gtMTJ7bGVmdDoxMDAlfS5jb2wtbGctcHVzaC0xMXtsZWZ0OjkxLjY2NjY2NjY3JX0uY29sLWxnLXB1c2gtMTB7bGVmdDo4My4zMzMzMzMzMyV9LmNvbC1sZy1wdXNoLTl7bGVmdDo3NSV9LmNvbC1sZy1wdXNoLTh7bGVmdDo2Ni42NjY2NjY2NyV9LmNvbC1sZy1wdXNoLTd7bGVmdDo1OC4zMzMzMzMzMyV9LmNvbC1sZy1wdXNoLTZ7bGVmdDo1MCV9LmNvbC1sZy1wdXNoLTV7bGVmdDo0MS42NjY2NjY2NyV9LmNvbC1sZy1wdXNoLTR7bGVmdDozMy4zMzMzMzMzMyV9LmNvbC1sZy1wdXNoLTN7bGVmdDoyNSV9LmNvbC1sZy1wdXNoLTJ7bGVmdDoxNi42NjY2NjY2NyV9LmNvbC1sZy1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzJX0uY29sLWxnLXB1c2gtMHtsZWZ0OjB9LmNvbC1sZy1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6MTAwJX0uY29sLWxnLW9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmNvbC1sZy1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbGctb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jb2wtbGctb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbGctb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbGctb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jb2wtbGctb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbGctb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbGctb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jb2wtbGctb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbGctb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMyV9LmNvbC1sZy1vZmZzZXQtMHttYXJnaW4tbGVmdDowfX10YWJsZXttYXgtd2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXRoe3RleHQtYWxpZ246bGVmdH0udGFibGV7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjIwcHh9LnRhYmxlPnRoZWFkPnRyPnRoLC50YWJsZT50Ym9keT50cj50aCwudGFibGU+dGZvb3Q+dHI+dGgsLnRhYmxlPnRoZWFkPnRyPnRkLC50YWJsZT50Ym9keT50cj50ZCwudGFibGU+dGZvb3Q+dHI+dGR7cGFkZGluZzo4cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mzt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0udGFibGU+dGhlYWQ+dHI+dGh7dmVydGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1ib3R0b206MnB4IHNvbGlkICNkZGR9LnRhYmxlPmNhcHRpb24rdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsLnRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC50YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50aCwudGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsLnRhYmxlPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkPnRke2JvcmRlci10b3A6MH0udGFibGU+dGJvZHkrdGJvZHl7Ym9yZGVyLXRvcDoycHggc29saWQgI2RkZH0udGFibGUgLnRhYmxle2JhY2tncm91bmQtY29sb3I6I2ZmZn0udGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRoLC50YWJsZS1jb25kZW5zZWQ+dGJvZHk+dHI+dGgsLnRhYmxlLWNvbmRlbnNlZD50Zm9vdD50cj50aCwudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRkLC50YWJsZS1jb25kZW5zZWQ+dGJvZHk+dHI+dGQsLnRhYmxlLWNvbmRlbnNlZD50Zm9vdD50cj50ZHtwYWRkaW5nOjVweH0udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCwudGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGgsLnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoLC50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQsLnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRke2JvcmRlcjoxcHggc29saWQgI2RkZH0udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGgsLnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRke2JvcmRlci1ib3R0b20td2lkdGg6MnB4fS50YWJsZS1zdHJpcGVkPnRib2R5PnRyOm50aC1jaGlsZChvZGQpPnRkLC50YWJsZS1zdHJpcGVkPnRib2R5PnRyOm50aC1jaGlsZChvZGQpPnRoe2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOX0udGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX10YWJsZSBjb2xbY2xhc3MqPWNvbC1de3Bvc2l0aW9uOnN0YXRpYztmbG9hdDpub25lO2Rpc3BsYXk6dGFibGUtY29sdW1ufXRhYmxlIHRkW2NsYXNzKj1jb2wtXSx0YWJsZSB0aFtjbGFzcyo9Y29sLV17cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmU7ZGlzcGxheTp0YWJsZS1jZWxsfS50YWJsZT50aGVhZD50cj50ZC5hY3RpdmUsLnRhYmxlPnRib2R5PnRyPnRkLmFjdGl2ZSwudGFibGU+dGZvb3Q+dHI+dGQuYWN0aXZlLC50YWJsZT50aGVhZD50cj50aC5hY3RpdmUsLnRhYmxlPnRib2R5PnRyPnRoLmFjdGl2ZSwudGFibGU+dGZvb3Q+dHI+dGguYWN0aXZlLC50YWJsZT50aGVhZD50ci5hY3RpdmU+dGQsLnRhYmxlPnRib2R5PnRyLmFjdGl2ZT50ZCwudGFibGU+dGZvb3Q+dHIuYWN0aXZlPnRkLC50YWJsZT50aGVhZD50ci5hY3RpdmU+dGgsLnRhYmxlPnRib2R5PnRyLmFjdGl2ZT50aCwudGFibGU+dGZvb3Q+dHIuYWN0aXZlPnRoe2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0udGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuYWN0aXZlOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5hY3RpdmU6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyLmFjdGl2ZTpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuYWN0aXZlOmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2U4ZThlOH0udGFibGU+dGhlYWQ+dHI+dGQuc3VjY2VzcywudGFibGU+dGJvZHk+dHI+dGQuc3VjY2VzcywudGFibGU+dGZvb3Q+dHI+dGQuc3VjY2VzcywudGFibGU+dGhlYWQ+dHI+dGguc3VjY2VzcywudGFibGU+dGJvZHk+dHI+dGguc3VjY2VzcywudGFibGU+dGZvb3Q+dHI+dGguc3VjY2VzcywudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50aCwudGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50aCwudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50aHtiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9LnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLnN1Y2Nlc3M6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLnN1Y2Nlc3M6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZDBlOWM2fS50YWJsZT50aGVhZD50cj50ZC5pbmZvLC50YWJsZT50Ym9keT50cj50ZC5pbmZvLC50YWJsZT50Zm9vdD50cj50ZC5pbmZvLC50YWJsZT50aGVhZD50cj50aC5pbmZvLC50YWJsZT50Ym9keT50cj50aC5pbmZvLC50YWJsZT50Zm9vdD50cj50aC5pbmZvLC50YWJsZT50aGVhZD50ci5pbmZvPnRkLC50YWJsZT50Ym9keT50ci5pbmZvPnRkLC50YWJsZT50Zm9vdD50ci5pbmZvPnRkLC50YWJsZT50aGVhZD50ci5pbmZvPnRoLC50YWJsZT50Ym9keT50ci5pbmZvPnRoLC50YWJsZT50Zm9vdD50ci5pbmZvPnRoe2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmN30udGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuaW5mbzpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguaW5mbzpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHIuaW5mbzpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuaW5mbzpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNjNGUzZjN9LnRhYmxlPnRoZWFkPnRyPnRkLndhcm5pbmcsLnRhYmxlPnRib2R5PnRyPnRkLndhcm5pbmcsLnRhYmxlPnRmb290PnRyPnRkLndhcm5pbmcsLnRhYmxlPnRoZWFkPnRyPnRoLndhcm5pbmcsLnRhYmxlPnRib2R5PnRyPnRoLndhcm5pbmcsLnRhYmxlPnRmb290PnRyPnRoLndhcm5pbmcsLnRhYmxlPnRoZWFkPnRyLndhcm5pbmc+dGQsLnRhYmxlPnRib2R5PnRyLndhcm5pbmc+dGQsLnRhYmxlPnRmb290PnRyLndhcm5pbmc+dGQsLnRhYmxlPnRoZWFkPnRyLndhcm5pbmc+dGgsLnRhYmxlPnRib2R5PnRyLndhcm5pbmc+dGgsLnRhYmxlPnRmb290PnRyLndhcm5pbmc+dGh7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzfS50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC53YXJuaW5nOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC53YXJuaW5nOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50ci53YXJuaW5nOmhvdmVyPnRkLC50YWJsZS1ob3Zlcj50Ym9keT50ci53YXJuaW5nOmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2ZhZjJjY30udGFibGU+dGhlYWQ+dHI+dGQuZGFuZ2VyLC50YWJsZT50Ym9keT50cj50ZC5kYW5nZXIsLnRhYmxlPnRmb290PnRyPnRkLmRhbmdlciwudGFibGU+dGhlYWQ+dHI+dGguZGFuZ2VyLC50YWJsZT50Ym9keT50cj50aC5kYW5nZXIsLnRhYmxlPnRmb290PnRyPnRoLmRhbmdlciwudGFibGU+dGhlYWQ+dHIuZGFuZ2VyPnRkLC50YWJsZT50Ym9keT50ci5kYW5nZXI+dGQsLnRhYmxlPnRmb290PnRyLmRhbmdlcj50ZCwudGFibGU+dGhlYWQ+dHIuZGFuZ2VyPnRoLC50YWJsZT50Ym9keT50ci5kYW5nZXI+dGgsLnRhYmxlPnRmb290PnRyLmRhbmdlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9LnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmRhbmdlcjpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguZGFuZ2VyOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50ci5kYW5nZXI6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLmRhbmdlcjpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmNjY2N9QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey50YWJsZS1yZXNwb25zaXZle3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxNXB4O292ZXJmbG93LXk6aGlkZGVuO292ZXJmbG93LXg6c2Nyb2xsOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS50YWJsZS1yZXNwb25zaXZlPi50YWJsZXttYXJnaW4tYm90dG9tOjB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRoZWFkPnRyPnRoLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Ym9keT50cj50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGZvb3Q+dHI+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRoZWFkPnRyPnRkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Ym9keT50cj50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGZvb3Q+dHI+dGR7d2hpdGUtc3BhY2U6bm93cmFwfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZHtib3JkZXI6MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDowfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpsYXN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpsYXN0LWNoaWxke2JvcmRlci1yaWdodDowfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRoLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRke2JvcmRlci1ib3R0b206MH19ZmllbGRzZXR7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO21pbi13aWR0aDowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206MjBweDtmb250LXNpemU6MjFweDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOiMzMzM7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjVweDtmb250LXdlaWdodDo3MDB9aW5wdXRbdHlwZT1zZWFyY2hdey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH1pbnB1dFt0eXBlPXJhZGlvXSxpbnB1dFt0eXBlPWNoZWNrYm94XXttYXJnaW46NHB4IDAgMDttYXJnaW4tdG9wOjFweCBcOTtsaW5lLWhlaWdodDpub3JtYWx9aW5wdXRbdHlwZT1maWxlXXtkaXNwbGF5OmJsb2NrfWlucHV0W3R5cGU9cmFuZ2Vde2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPWZpbGVdOmZvY3VzLGlucHV0W3R5cGU9cmFkaW9dOmZvY3VzLGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweH1vdXRwdXR7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDo3cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojNTU1fS5mb3JtLWNvbnRyb2x7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDozNHB4O3BhZGRpbmc6NnB4IDEycHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXN9LmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2YWZlOTtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNik7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpfS5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LmZvcm0tY29udHJvbFtkaXNhYmxlZF0sLmZvcm0tY29udHJvbFtyZWFkb25seV0sZmllbGRzZXRbZGlzYWJsZWRdIC5mb3JtLWNvbnRyb2x7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6I2VlZTtvcGFjaXR5OjF9dGV4dGFyZWEuZm9ybS1jb250cm9se2hlaWdodDphdXRvfWlucHV0W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1pbnB1dFt0eXBlPWRhdGVde2xpbmUtaGVpZ2h0OjM0cHh9LmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxNXB4fS5yYWRpbywuY2hlY2tib3h7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjIwcHg7bWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MTBweDtwYWRkaW5nLWxlZnQ6MjBweH0ucmFkaW8gbGFiZWwsLmNoZWNrYm94IGxhYmVse2Rpc3BsYXk6aW5saW5lO2ZvbnQtd2VpZ2h0OjQwMDtjdXJzb3I6cG9pbnRlcn0ucmFkaW8gaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPXJhZGlvXSwuY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0Oi0yMHB4fS5yYWRpbysucmFkaW8sLmNoZWNrYm94Ky5jaGVja2JveHttYXJnaW4tdG9wOi01cHh9LnJhZGlvLWlubGluZSwuY2hlY2tib3gtaW5saW5le2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Zm9udC13ZWlnaHQ6NDAwO2N1cnNvcjpwb2ludGVyfS5yYWRpby1pbmxpbmUrLnJhZGlvLWlubGluZSwuY2hlY2tib3gtaW5saW5lKy5jaGVja2JveC1pbmxpbmV7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEwcHh9aW5wdXRbdHlwZT1yYWRpb11bZGlzYWJsZWRdLGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSwucmFkaW9bZGlzYWJsZWRdLC5yYWRpby1pbmxpbmVbZGlzYWJsZWRdLC5jaGVja2JveFtkaXNhYmxlZF0sLmNoZWNrYm94LWlubGluZVtkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9cmFkaW9dLGZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPWNoZWNrYm94XSxmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvLGZpZWxkc2V0W2Rpc2FibGVkXSAucmFkaW8taW5saW5lLGZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3gsZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveC1pbmxpbmV7Y3Vyc29yOm5vdC1hbGxvd2VkfS5pbnB1dC1zbXtoZWlnaHQ6MzBweDtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH1zZWxlY3QuaW5wdXQtc217aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweH10ZXh0YXJlYS5pbnB1dC1zbSxzZWxlY3RbbXVsdGlwbGVdLmlucHV0LXNte2hlaWdodDphdXRvfS5pbnB1dC1sZ3toZWlnaHQ6NDZweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzO2JvcmRlci1yYWRpdXM6NnB4fXNlbGVjdC5pbnB1dC1sZ3toZWlnaHQ6NDZweDtsaW5lLWhlaWdodDo0NnB4fXRleHRhcmVhLmlucHV0LWxnLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtbGd7aGVpZ2h0OmF1dG99Lmhhcy1mZWVkYmFja3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2x7cGFkZGluZy1yaWdodDo0Mi41cHh9Lmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyNXB4O3JpZ2h0OjA7ZGlzcGxheTpibG9jazt3aWR0aDozNHB4O2hlaWdodDozNHB4O2xpbmUtaGVpZ2h0OjM0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Lmhhcy1zdWNjZXNzIC5oZWxwLWJsb2NrLC5oYXMtc3VjY2VzcyAuY29udHJvbC1sYWJlbCwuaGFzLXN1Y2Nlc3MgLnJhZGlvLC5oYXMtc3VjY2VzcyAuY2hlY2tib3gsLmhhcy1zdWNjZXNzIC5yYWRpby1pbmxpbmUsLmhhcy1zdWNjZXNzIC5jaGVja2JveC1pbmxpbmV7Y29sb3I6IzNjNzYzZH0uaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6IzNjNzYzZDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzJiNTQyYzstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjNjdiMTY4O2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjNjdiMTY4fS5oYXMtc3VjY2VzcyAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6IzNjNzYzZDtib3JkZXItY29sb3I6IzNjNzYzZDtiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7Y29sb3I6IzNjNzYzZH0uaGFzLXdhcm5pbmcgLmhlbHAtYmxvY2ssLmhhcy13YXJuaW5nIC5jb250cm9sLWxhYmVsLC5oYXMtd2FybmluZyAucmFkaW8sLmhhcy13YXJuaW5nIC5jaGVja2JveCwuaGFzLXdhcm5pbmcgLnJhZGlvLWlubGluZSwuaGFzLXdhcm5pbmcgLmNoZWNrYm94LWlubGluZXtjb2xvcjojOGE2ZDNifS5oYXMtd2FybmluZyAuZm9ybS1jb250cm9se2JvcmRlci1jb2xvcjojOGE2ZDNiOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpfS5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sOmZvY3Vze2JvcmRlci1jb2xvcjojNjY1MTJjOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjMGExNmI7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjMGExNmJ9Lmhhcy13YXJuaW5nIC5pbnB1dC1ncm91cC1hZGRvbntjb2xvcjojOGE2ZDNiO2JvcmRlci1jb2xvcjojOGE2ZDNiO2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM30uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbC1mZWVkYmFja3tjb2xvcjojOGE2ZDNifS5oYXMtZXJyb3IgLmhlbHAtYmxvY2ssLmhhcy1lcnJvciAuY29udHJvbC1sYWJlbCwuaGFzLWVycm9yIC5yYWRpbywuaGFzLWVycm9yIC5jaGVja2JveCwuaGFzLWVycm9yIC5yYWRpby1pbmxpbmUsLmhhcy1lcnJvciAuY2hlY2tib3gtaW5saW5le2NvbG9yOiNhOTQ0NDJ9Lmhhcy1lcnJvciAuZm9ybS1jb250cm9se2JvcmRlci1jb2xvcjojYTk0NDQyOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpfS5oYXMtZXJyb3IgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6Izg0MzUzNDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjY2U4NDgzO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjY2U4NDgzfS5oYXMtZXJyb3IgLmlucHV0LWdyb3VwLWFkZG9ue2NvbG9yOiNhOTQ0NDI7Ym9yZGVyLWNvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlfS5oYXMtZXJyb3IgLmZvcm0tY29udHJvbC1mZWVkYmFja3tjb2xvcjojYTk0NDQyfS5mb3JtLWNvbnRyb2wtc3RhdGlje21hcmdpbi1ib3R0b206MH0uaGVscC1ibG9ja3tkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NXB4O21hcmdpbi1ib3R0b206MTBweDtjb2xvcjojNzM3MzczfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2x7d2lkdGg6MTAwJX0uZm9ybS1pbmxpbmUgLmNvbnRyb2wtbGFiZWx7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLnJhZGlvLC5mb3JtLWlubGluZSAuY2hlY2tib3h7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDtwYWRkaW5nLWxlZnQ6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSwuZm9ybS1pbmxpbmUgLmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hde2Zsb2F0Om5vbmU7bWFyZ2luLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowfX0uZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsLC5mb3JtLWhvcml6b250YWwgLnJhZGlvLC5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94LC5mb3JtLWhvcml6b250YWwgLnJhZGlvLWlubGluZSwuZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmV7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDtwYWRkaW5nLXRvcDo3cHh9LmZvcm0taG9yaXpvbnRhbCAucmFkaW8sLmZvcm0taG9yaXpvbnRhbCAuY2hlY2tib3h7bWluLWhlaWdodDoyN3B4fS5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXB7bWFyZ2luLWxlZnQ6LTE1cHg7bWFyZ2luLXJpZ2h0Oi0xNXB4fS5mb3JtLWhvcml6b250YWwgLmZvcm0tY29udHJvbC1zdGF0aWN7cGFkZGluZy10b3A6N3B4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVse3RleHQtYWxpZ246cmlnaHR9fS5mb3JtLWhvcml6b250YWwgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowO3JpZ2h0OjE1cHh9LmJ0bntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjA7Zm9udC13ZWlnaHQ6NDAwO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDt3aGl0ZS1zcGFjZTpub3dyYXA7cGFkZGluZzo2cHggMTJweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uYnRuOmZvY3VzLC5idG46YWN0aXZlOmZvY3VzLC5idG4uYWN0aXZlOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweH0uYnRuOmhvdmVyLC5idG46Zm9jdXN7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuOmFjdGl2ZSwuYnRuLmFjdGl2ZXtvdXRsaW5lOjA7YmFja2dyb3VuZC1pbWFnZTpub25lOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KTtib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpfS5idG4uZGlzYWJsZWQsLmJ0bltkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG57Y3Vyc29yOm5vdC1hbGxvd2VkO3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTouNjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NjUpOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0uYnRuLWRlZmF1bHR7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjY2N9LmJ0bi1kZWZhdWx0OmhvdmVyLC5idG4tZGVmYXVsdDpmb2N1cywuYnRuLWRlZmF1bHQ6YWN0aXZlLC5idG4tZGVmYXVsdC5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdHtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ViZWJlYjtib3JkZXItY29sb3I6I2FkYWRhZH0uYnRuLWRlZmF1bHQ6YWN0aXZlLC5idG4tZGVmYXVsdC5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdHtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi1kZWZhdWx0LmRpc2FibGVkLC5idG4tZGVmYXVsdFtkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdCwuYnRuLWRlZmF1bHQuZGlzYWJsZWQ6aG92ZXIsLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmhvdmVyLC5idG4tZGVmYXVsdC5kaXNhYmxlZDpmb2N1cywuYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6Zm9jdXMsLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmFjdGl2ZSwuYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmFjdGl2ZSwuYnRuLWRlZmF1bHQuZGlzYWJsZWQuYWN0aXZlLC5idG4tZGVmYXVsdFtkaXNhYmxlZF0uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2NjY30uYnRuLWRlZmF1bHQgLmJhZGdle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzMzfS5idG4tcHJpbWFyeXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTtib3JkZXItY29sb3I6IzM1N2ViZH0uYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5OmZvY3VzLC5idG4tcHJpbWFyeTphY3RpdmUsLmJ0bi1wcmltYXJ5LmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzI3NmIxO2JvcmRlci1jb2xvcjojMjg1ZThlfS5idG4tcHJpbWFyeTphY3RpdmUsLmJ0bi1wcmltYXJ5LmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5LC5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmZvY3VzLC5idG4tcHJpbWFyeVtkaXNhYmxlZF06Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeTpmb2N1cywuYnRuLXByaW1hcnkuZGlzYWJsZWQ6YWN0aXZlLC5idG4tcHJpbWFyeVtkaXNhYmxlZF06YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6YWN0aXZlLC5idG4tcHJpbWFyeS5kaXNhYmxlZC5hY3RpdmUsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXS5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeS5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNDI4YmNhO2JvcmRlci1jb2xvcjojMzU3ZWJkfS5idG4tcHJpbWFyeSAuYmFkZ2V7Y29sb3I6IzQyOGJjYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJ0bi1zdWNjZXNze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNWNiODVjO2JvcmRlci1jb2xvcjojNGNhZTRjfS5idG4tc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3M6Zm9jdXMsLmJ0bi1zdWNjZXNzOmFjdGl2ZSwuYnRuLXN1Y2Nlc3MuYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3N7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0N2E0NDc7Ym9yZGVyLWNvbG9yOiMzOTg0Mzl9LmJ0bi1zdWNjZXNzOmFjdGl2ZSwuYnRuLXN1Y2Nlc3MuYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4tc3VjY2Vzcy5kaXNhYmxlZCwuYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3MsLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmZvY3VzLC5idG4tc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXTphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmRpc2FibGVkLmFjdGl2ZSwuYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM1Y2I4NWM7Ym9yZGVyLWNvbG9yOiM0Y2FlNGN9LmJ0bi1zdWNjZXNzIC5iYWRnZXtjb2xvcjojNWNiODVjO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYnRuLWluZm97Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM1YmMwZGU7Ym9yZGVyLWNvbG9yOiM0NmI4ZGF9LmJ0bi1pbmZvOmhvdmVyLC5idG4taW5mbzpmb2N1cywuYnRuLWluZm86YWN0aXZlLC5idG4taW5mby5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mb3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzM5YjNkNztib3JkZXItY29sb3I6IzI2OWFiY30uYnRuLWluZm86YWN0aXZlLC5idG4taW5mby5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mb3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi1pbmZvLmRpc2FibGVkLC5idG4taW5mb1tkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbywuYnRuLWluZm8uZGlzYWJsZWQ6aG92ZXIsLmJ0bi1pbmZvW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmhvdmVyLC5idG4taW5mby5kaXNhYmxlZDpmb2N1cywuYnRuLWluZm9bZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86Zm9jdXMsLmJ0bi1pbmZvLmRpc2FibGVkOmFjdGl2ZSwuYnRuLWluZm9bZGlzYWJsZWRdOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmFjdGl2ZSwuYnRuLWluZm8uZGlzYWJsZWQuYWN0aXZlLC5idG4taW5mb1tkaXNhYmxlZF0uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm8uYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzViYzBkZTtib3JkZXItY29sb3I6IzQ2YjhkYX0uYnRuLWluZm8gLmJhZGdle2NvbG9yOiM1YmMwZGU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4td2FybmluZ3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZTtib3JkZXItY29sb3I6I2VlYTIzNn0uYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nOmZvY3VzLC5idG4td2FybmluZzphY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi13YXJuaW5ne2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZWQ5YzI4O2JvcmRlci1jb2xvcjojZDU4NTEyfS5idG4td2FybmluZzphY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLXdhcm5pbmcuZGlzYWJsZWQsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nLC5idG4td2FybmluZy5kaXNhYmxlZDpob3ZlciwuYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nLmRpc2FibGVkOmZvY3VzLC5idG4td2FybmluZ1tkaXNhYmxlZF06Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzpmb2N1cywuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5idG4td2FybmluZ1tkaXNhYmxlZF06YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZy5kaXNhYmxlZC5hY3RpdmUsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXS5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZy5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlO2JvcmRlci1jb2xvcjojZWVhMjM2fS5idG4td2FybmluZyAuYmFkZ2V7Y29sb3I6I2YwYWQ0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJ0bi1kYW5nZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGY7Ym9yZGVyLWNvbG9yOiNkNDNmM2F9LmJ0bi1kYW5nZXI6aG92ZXIsLmJ0bi1kYW5nZXI6Zm9jdXMsLmJ0bi1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1kYW5nZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkMjMyMmQ7Ym9yZGVyLWNvbG9yOiNhYzI5MjV9LmJ0bi1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1kYW5nZXJ7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4tZGFuZ2VyLmRpc2FibGVkLC5idG4tZGFuZ2VyW2Rpc2FibGVkXSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIsLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6aG92ZXIsLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpob3ZlciwuYnRuLWRhbmdlci5kaXNhYmxlZDpmb2N1cywuYnRuLWRhbmdlcltkaXNhYmxlZF06Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmZvY3VzLC5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuYnRuLWRhbmdlcltkaXNhYmxlZF06YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjphY3RpdmUsLmJ0bi1kYW5nZXIuZGlzYWJsZWQuYWN0aXZlLC5idG4tZGFuZ2VyW2Rpc2FibGVkXS5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGY7Ym9yZGVyLWNvbG9yOiNkNDNmM2F9LmJ0bi1kYW5nZXIgLmJhZGdle2NvbG9yOiNkOTUzNGY7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tbGlua3tjb2xvcjojNDI4YmNhO2ZvbnQtd2VpZ2h0OjQwMDtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjB9LmJ0bi1saW5rLC5idG4tbGluazphY3RpdmUsLmJ0bi1saW5rW2Rpc2FibGVkXSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5re2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4tbGluaywuYnRuLWxpbms6aG92ZXIsLmJ0bi1saW5rOmZvY3VzLC5idG4tbGluazphY3RpdmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGluazpob3ZlciwuYnRuLWxpbms6Zm9jdXN7Y29sb3I6IzJhNjQ5Njt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rOmhvdmVyLC5idG4tbGlua1tkaXNhYmxlZF06Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1c3tjb2xvcjojOTk5O3RleHQtZGVjb3JhdGlvbjpub25lfS5idG4tbGcsLmJ0bi1ncm91cC1sZz4uYnRue3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzM7Ym9yZGVyLXJhZGl1czo2cHh9LmJ0bi1zbSwuYnRuLWdyb3VwLXNtPi5idG57cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmJ0bi14cywuYnRuLWdyb3VwLXhzPi5idG57cGFkZGluZzoxcHggNXB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH0uYnRuLWJsb2Nre2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LmJ0bi1ibG9jaysuYnRuLWJsb2Nre21hcmdpbi10b3A6NXB4fWlucHV0W3R5cGU9c3VibWl0XS5idG4tYmxvY2ssaW5wdXRbdHlwZT1yZXNldF0uYnRuLWJsb2NrLGlucHV0W3R5cGU9YnV0dG9uXS5idG4tYmxvY2t7d2lkdGg6MTAwJX0uZmFkZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyfS5mYWRlLmlue29wYWNpdHk6MX0uY29sbGFwc2V7ZGlzcGxheTpub25lfS5jb2xsYXBzZS5pbntkaXNwbGF5OmJsb2NrfS5jb2xsYXBzaW5ne3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDowO292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246aGVpZ2h0IC4zNXMgZWFzZTt0cmFuc2l0aW9uOmhlaWdodCAuMzVzIGVhc2V9QGZvbnQtZmFjZXtmb250LWZhbWlseTonR2x5cGhpY29ucyBIYWxmbGluZ3MnO3NyYzp1cmwoLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3QpO3NyYzp1cmwoLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3Q/I2llZml4KSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksdXJsKC4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZikgZm9ybWF0KCd3b2ZmJyksdXJsKC4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIudHRmKSBmb3JtYXQoJ3RydWV0eXBlJyksdXJsKC4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuc3ZnI2dseXBoaWNvbnNfaGFsZmxpbmdzcmVndWxhcikgZm9ybWF0KCdzdmcnKX0uZ2x5cGhpY29ue3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1mYW1pbHk6J0dseXBoaWNvbnMgSGFsZmxpbmdzJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0uZ2x5cGhpY29uLWFzdGVyaXNrOmJlZm9yZXtjb250ZW50OiJcMmEifS5nbHlwaGljb24tcGx1czpiZWZvcmV7Y29udGVudDoiXDJiIn0uZ2x5cGhpY29uLWV1cm86YmVmb3Jle2NvbnRlbnQ6IlwyMGFjIn0uZ2x5cGhpY29uLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcMjIxMiJ9LmdseXBoaWNvbi1jbG91ZDpiZWZvcmV7Y29udGVudDoiXDI2MDEifS5nbHlwaGljb24tZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlwyNzA5In0uZ2x5cGhpY29uLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXDI3MGYifS5nbHlwaGljb24tZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxlMDAxIn0uZ2x5cGhpY29uLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZTAwMiJ9LmdseXBoaWNvbi1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDAzIn0uZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZTAwNSJ9LmdseXBoaWNvbi1zdGFyOmJlZm9yZXtjb250ZW50OiJcZTAwNiJ9LmdseXBoaWNvbi1zdGFyLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTAwNyJ9LmdseXBoaWNvbi11c2VyOmJlZm9yZXtjb250ZW50OiJcZTAwOCJ9LmdseXBoaWNvbi1maWxtOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmdseXBoaWNvbi10aC1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGUwMTAifS5nbHlwaGljb24tdGg6YmVmb3Jle2NvbnRlbnQ6IlxlMDExIn0uZ2x5cGhpY29uLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDEyIn0uZ2x5cGhpY29uLW9rOmJlZm9yZXtjb250ZW50OiJcZTAxMyJ9LmdseXBoaWNvbi1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDE0In0uZ2x5cGhpY29uLXpvb20taW46YmVmb3Jle2NvbnRlbnQ6IlxlMDE1In0uZ2x5cGhpY29uLXpvb20tb3V0OmJlZm9yZXtjb250ZW50OiJcZTAxNiJ9LmdseXBoaWNvbi1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDE3In0uZ2x5cGhpY29uLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGUwMTgifS5nbHlwaGljb24tY29nOmJlZm9yZXtjb250ZW50OiJcZTAxOSJ9LmdseXBoaWNvbi10cmFzaDpiZWZvcmV7Y29udGVudDoiXGUwMjAifS5nbHlwaGljb24taG9tZTpiZWZvcmV7Y29udGVudDoiXGUwMjEifS5nbHlwaGljb24tZmlsZTpiZWZvcmV7Y29udGVudDoiXGUwMjIifS5nbHlwaGljb24tdGltZTpiZWZvcmV7Y29udGVudDoiXGUwMjMifS5nbHlwaGljb24tcm9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjQifS5nbHlwaGljb24tZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTAyNSJ9LmdseXBoaWNvbi1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjYifS5nbHlwaGljb24tdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZTAyNyJ9LmdseXBoaWNvbi1pbmJveDpiZWZvcmV7Y29udGVudDoiXGUwMjgifS5nbHlwaGljb24tcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDI5In0uZ2x5cGhpY29uLXJlcGVhdDpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5nbHlwaGljb24tcmVmcmVzaDpiZWZvcmV7Y29udGVudDoiXGUwMzEifS5nbHlwaGljb24tbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDMyIn0uZ2x5cGhpY29uLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDMzIn0uZ2x5cGhpY29uLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxlMDM0In0uZ2x5cGhpY29uLWhlYWRwaG9uZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDM1In0uZ2x5cGhpY29uLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDM2In0uZ2x5cGhpY29uLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzNyJ9LmdseXBoaWNvbi12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDM4In0uZ2x5cGhpY29uLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwMzkifS5nbHlwaGljb24tYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwNDAifS5nbHlwaGljb24tdGFnOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmdseXBoaWNvbi10YWdzOmJlZm9yZXtjb250ZW50OiJcZTA0MiJ9LmdseXBoaWNvbi1ib29rOmJlZm9yZXtjb250ZW50OiJcZTA0MyJ9LmdseXBoaWNvbi1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGUwNDQifS5nbHlwaGljb24tcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDQ1In0uZ2x5cGhpY29uLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGUwNDYifS5nbHlwaGljb24tZm9udDpiZWZvcmV7Y29udGVudDoiXGUwNDcifS5nbHlwaGljb24tYm9sZDpiZWZvcmV7Y29udGVudDoiXGUwNDgifS5nbHlwaGljb24taXRhbGljOmJlZm9yZXtjb250ZW50OiJcZTA0OSJ9LmdseXBoaWNvbi10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTAifS5nbHlwaGljb24tdGV4dC13aWR0aDpiZWZvcmV7Y29udGVudDoiXGUwNTEifS5nbHlwaGljb24tYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwNTIifS5nbHlwaGljb24tYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmdseXBoaWNvbi1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTQifS5nbHlwaGljb24tYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGUwNTUifS5nbHlwaGljb24tbGlzdDpiZWZvcmV7Y29udGVudDoiXGUwNTYifS5nbHlwaGljb24taW5kZW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU3In0uZ2x5cGhpY29uLWluZGVudC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTgifS5nbHlwaGljb24tZmFjZXRpbWUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxlMDU5In0uZ2x5cGhpY29uLXBpY3R1cmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDYwIn0uZ2x5cGhpY29uLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDYyIn0uZ2x5cGhpY29uLWFkanVzdDpiZWZvcmV7Y29udGVudDoiXGUwNjMifS5nbHlwaGljb24tdGludDpiZWZvcmV7Y29udGVudDoiXGUwNjQifS5nbHlwaGljb24tZWRpdDpiZWZvcmV7Y29udGVudDoiXGUwNjUifS5nbHlwaGljb24tc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDY2In0uZ2x5cGhpY29uLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTA2NyJ9LmdseXBoaWNvbi1tb3ZlOmJlZm9yZXtjb250ZW50OiJcZTA2OCJ9LmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA2OSJ9LmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3MCJ9LmdseXBoaWNvbi1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzEifS5nbHlwaGljb24tcGxheTpiZWZvcmV7Y29udGVudDoiXGUwNzIifS5nbHlwaGljb24tcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDczIn0uZ2x5cGhpY29uLXN0b3A6YmVmb3Jle2NvbnRlbnQ6IlxlMDc0In0uZ2x5cGhpY29uLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDc1In0uZ2x5cGhpY29uLWZhc3QtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzYifS5nbHlwaGljb24tc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3NyJ9LmdseXBoaWNvbi1lamVjdDpiZWZvcmV7Y29udGVudDoiXGUwNzgifS5nbHlwaGljb24tY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTA3OSJ9LmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTA4MCJ9LmdseXBoaWNvbi1wbHVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgxIn0uZ2x5cGhpY29uLW1pbnVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgyIn0uZ2x5cGhpY29uLXJlbW92ZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4MyJ9LmdseXBoaWNvbi1vay1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NCJ9LmdseXBoaWNvbi1xdWVzdGlvbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NSJ9LmdseXBoaWNvbi1pbmZvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDg2In0uZ2x5cGhpY29uLXNjcmVlbnNob3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDg3In0uZ2x5cGhpY29uLXJlbW92ZS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDg4In0uZ2x5cGhpY29uLW9rLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwODkifS5nbHlwaGljb24tYmFuLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwOTAifS5nbHlwaGljb24tYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwOTEifS5nbHlwaGljb24tYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDkyIn0uZ2x5cGhpY29uLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZTA5MyJ9LmdseXBoaWNvbi1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZTA5NCJ9LmdseXBoaWNvbi1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDk1In0uZ2x5cGhpY29uLXJlc2l6ZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZTA5NiJ9LmdseXBoaWNvbi1yZXNpemUtc21hbGw6YmVmb3Jle2NvbnRlbnQ6IlxlMDk3In0uZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTAxIn0uZ2x5cGhpY29uLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTAyIn0uZ2x5cGhpY29uLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxlMTAzIn0uZ2x5cGhpY29uLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA0In0uZ2x5cGhpY29uLWV5ZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTEwNSJ9LmdseXBoaWNvbi1leWUtY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTA2In0uZ2x5cGhpY29uLXdhcm5pbmctc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxMDcifS5nbHlwaGljb24tcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA4In0uZ2x5cGhpY29uLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZTEwOSJ9LmdseXBoaWNvbi1yYW5kb206YmVmb3Jle2NvbnRlbnQ6IlxlMTEwIn0uZ2x5cGhpY29uLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTExIn0uZ2x5cGhpY29uLW1hZ25ldDpiZWZvcmV7Y29udGVudDoiXGUxMTIifS5nbHlwaGljb24tY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGUxMTMifS5nbHlwaGljb24tY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZTExNCJ9LmdseXBoaWNvbi1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZTExNSJ9LmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZTExNiJ9LmdseXBoaWNvbi1mb2xkZXItY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTE3In0uZ2x5cGhpY29uLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTExOCJ9LmdseXBoaWNvbi1yZXNpemUtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMTE5In0uZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZTEyMCJ9LmdseXBoaWNvbi1oZGQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTIxIn0uZ2x5cGhpY29uLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZTEyMiJ9LmdseXBoaWNvbi1iZWxsOmJlZm9yZXtjb250ZW50OiJcZTEyMyJ9LmdseXBoaWNvbi1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGUxMjQifS5nbHlwaGljb24tdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyNSJ9LmdseXBoaWNvbi10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxMjYifS5nbHlwaGljb24taGFuZC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMjcifS5nbHlwaGljb24taGFuZC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTEyOCJ9LmdseXBoaWNvbi1oYW5kLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyOSJ9LmdseXBoaWNvbi1oYW5kLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTMwIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMzEifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTMyIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGUxMzMifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTM0In0uZ2x5cGhpY29uLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZTEzNSJ9LmdseXBoaWNvbi13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTM2In0uZ2x5cGhpY29uLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZTEzNyJ9LmdseXBoaWNvbi1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMTM4In0uZ2x5cGhpY29uLWJyaWVmY2FzZTpiZWZvcmV7Y29udGVudDoiXGUxMzkifS5nbHlwaGljb24tZnVsbHNjcmVlbjpiZWZvcmV7Y29udGVudDoiXGUxNDAifS5nbHlwaGljb24tZGFzaGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZTE0MSJ9LmdseXBoaWNvbi1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQyIn0uZ2x5cGhpY29uLWhlYXJ0LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTE0MyJ9LmdseXBoaWNvbi1saW5rOmJlZm9yZXtjb250ZW50OiJcZTE0NCJ9LmdseXBoaWNvbi1waG9uZTpiZWZvcmV7Y29udGVudDoiXGUxNDUifS5nbHlwaGljb24tcHVzaHBpbjpiZWZvcmV7Y29udGVudDoiXGUxNDYifS5nbHlwaGljb24tdXNkOmJlZm9yZXtjb250ZW50OiJcZTE0OCJ9LmdseXBoaWNvbi1nYnA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQ5In0uZ2x5cGhpY29uLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUwIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUxIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1MiJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyOmJlZm9yZXtjb250ZW50OiJcZTE1MyJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGUxNTQifS5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzOmJlZm9yZXtjb250ZW50OiJcZTE1NSJ9LmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1NiJ9LmdseXBoaWNvbi11bmNoZWNrZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTU3In0uZ2x5cGhpY29uLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGUxNTgifS5nbHlwaGljb24tY29sbGFwc2UtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxNTkifS5nbHlwaGljb24tY29sbGFwc2UtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTYwIn0uZ2x5cGhpY29uLWxvZy1pbjpiZWZvcmV7Y29udGVudDoiXGUxNjEifS5nbHlwaGljb24tZmxhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTYyIn0uZ2x5cGhpY29uLWxvZy1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTYzIn0uZ2x5cGhpY29uLW5ldy13aW5kb3c6YmVmb3Jle2NvbnRlbnQ6IlxlMTY0In0uZ2x5cGhpY29uLXJlY29yZDpiZWZvcmV7Y29udGVudDoiXGUxNjUifS5nbHlwaGljb24tc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNjYifS5nbHlwaGljb24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGUxNjcifS5nbHlwaGljb24tc2F2ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTY4In0uZ2x5cGhpY29uLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGUxNjkifS5nbHlwaGljb24tZXhwb3J0OmJlZm9yZXtjb250ZW50OiJcZTE3MCJ9LmdseXBoaWNvbi1zZW5kOmJlZm9yZXtjb250ZW50OiJcZTE3MSJ9LmdseXBoaWNvbi1mbG9wcHktZGlzazpiZWZvcmV7Y29udGVudDoiXGUxNzIifS5nbHlwaGljb24tZmxvcHB5LXNhdmVkOmJlZm9yZXtjb250ZW50OiJcZTE3MyJ9LmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlOmJlZm9yZXtjb250ZW50OiJcZTE3NCJ9LmdseXBoaWNvbi1mbG9wcHktc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNzUifS5nbHlwaGljb24tZmxvcHB5LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMTc2In0uZ2x5cGhpY29uLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZTE3NyJ9LmdseXBoaWNvbi10cmFuc2ZlcjpiZWZvcmV7Y29udGVudDoiXGUxNzgifS5nbHlwaGljb24tY3V0bGVyeTpiZWZvcmV7Y29udGVudDoiXGUxNzkifS5nbHlwaGljb24taGVhZGVyOmJlZm9yZXtjb250ZW50OiJcZTE4MCJ9LmdseXBoaWNvbi1jb21wcmVzc2VkOmJlZm9yZXtjb250ZW50OiJcZTE4MSJ9LmdseXBoaWNvbi1lYXJwaG9uZTpiZWZvcmV7Y29udGVudDoiXGUxODIifS5nbHlwaGljb24tcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE4MyJ9LmdseXBoaWNvbi10b3dlcjpiZWZvcmV7Y29udGVudDoiXGUxODQifS5nbHlwaGljb24tc3RhdHM6YmVmb3Jle2NvbnRlbnQ6IlxlMTg1In0uZ2x5cGhpY29uLXNkLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZTE4NiJ9LmdseXBoaWNvbi1oZC12aWRlbzpiZWZvcmV7Y29udGVudDoiXGUxODcifS5nbHlwaGljb24tc3VidGl0bGVzOmJlZm9yZXtjb250ZW50OiJcZTE4OCJ9LmdseXBoaWNvbi1zb3VuZC1zdGVyZW86YmVmb3Jle2NvbnRlbnQ6IlxlMTg5In0uZ2x5cGhpY29uLXNvdW5kLWRvbGJ5OmJlZm9yZXtjb250ZW50OiJcZTE5MCJ9LmdseXBoaWNvbi1zb3VuZC01LTE6YmVmb3Jle2NvbnRlbnQ6IlxlMTkxIn0uZ2x5cGhpY29uLXNvdW5kLTYtMTpiZWZvcmV7Y29udGVudDoiXGUxOTIifS5nbHlwaGljb24tc291bmQtNy0xOmJlZm9yZXtjb250ZW50OiJcZTE5MyJ9LmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyazpiZWZvcmV7Y29udGVudDoiXGUxOTQifS5nbHlwaGljb24tcmVnaXN0cmF0aW9uLW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlMTk1In0uZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTE5NyJ9LmdseXBoaWNvbi1jbG91ZC11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTk4In0uZ2x5cGhpY29uLXRyZWUtY29uaWZlcjpiZWZvcmV7Y29udGVudDoiXGUxOTkifS5nbHlwaGljb24tdHJlZS1kZWNpZHVvdXM6YmVmb3Jle2NvbnRlbnQ6IlxlMjAwIn0uY2FyZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tbGVmdDoycHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci10b3A6NHB4IHNvbGlkO2JvcmRlci1yaWdodDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50fS5kcm9wZG93bntwb3NpdGlvbjpyZWxhdGl2ZX0uZHJvcGRvd24tdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0uZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7ei1pbmRleDoxMDAwO2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O21pbi13aWR0aDoxNjBweDtwYWRkaW5nOjVweCAwO21hcmdpbjoycHggMCAwO2xpc3Qtc3R5bGU6bm9uZTtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTUpO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSk7Ym94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94fS5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHR7cmlnaHQ6MDtsZWZ0OmF1dG99LmRyb3Bkb3duLW1lbnUgLmRpdmlkZXJ7aGVpZ2h0OjFweDttYXJnaW46OXB4IDA7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6I2U1ZTVlNX0uZHJvcGRvd24tbWVudT5saT5he2Rpc3BsYXk6YmxvY2s7cGFkZGluZzozcHggMjBweDtjbGVhcjpib3RoO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO2NvbG9yOiMzMzM7d2hpdGUtc3BhY2U6bm93cmFwfS5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjYyNjI2O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0uZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmhvdmVyLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1c3tjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MDtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2F9LmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXN7Y29sb3I6Izk5OX0uZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3ZlciwuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO2N1cnNvcjpub3QtYWxsb3dlZH0ub3Blbj4uZHJvcGRvd24tbWVudXtkaXNwbGF5OmJsb2NrfS5vcGVuPmF7b3V0bGluZTowfS5kcm9wZG93bi1tZW51LXJpZ2h0e2xlZnQ6YXV0bztyaWdodDowfS5kcm9wZG93bi1tZW51LWxlZnR7bGVmdDowO3JpZ2h0OmF1dG99LmRyb3Bkb3duLWhlYWRlcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDIwcHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojOTk5fS5kcm9wZG93bi1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt0b3A6MDt6LWluZGV4Ojk5MH0ucHVsbC1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uZHJvcHVwIC5jYXJldCwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0e2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjRweCBzb2xpZDtjb250ZW50OiIifS5kcm9wdXAgLmRyb3Bkb3duLW1lbnUsLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAlO21hcmdpbi1ib3R0b206MXB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXJpZ2h0IC5kcm9wZG93bi1tZW51e2xlZnQ6YXV0bztyaWdodDowfS5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnUtbGVmdHtsZWZ0OjA7cmlnaHQ6YXV0b319LmJ0bi1ncm91cCwuYnRuLWdyb3VwLXZlcnRpY2Fse3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYnRuLWdyb3VwPi5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRue3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnR9LmJ0bi1ncm91cD4uYnRuOmhvdmVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG46Zm9jdXMsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZvY3VzLC5idG4tZ3JvdXA+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwPi5idG4uYWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi5hY3RpdmV7ei1pbmRleDoyfS5idG4tZ3JvdXA+LmJ0bjpmb2N1cywuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46Zm9jdXN7b3V0bGluZTowfS5idG4tZ3JvdXAgLmJ0bisuYnRuLC5idG4tZ3JvdXAgLmJ0bisuYnRuLWdyb3VwLC5idG4tZ3JvdXAgLmJ0bi1ncm91cCsuYnRuLC5idG4tZ3JvdXAgLmJ0bi1ncm91cCsuYnRuLWdyb3Vwe21hcmdpbi1sZWZ0Oi0xcHh9LmJ0bi10b29sYmFye21hcmdpbi1sZWZ0Oi01cHh9LmJ0bi10b29sYmFyIC5idG4tZ3JvdXAsLmJ0bi10b29sYmFyIC5pbnB1dC1ncm91cHtmbG9hdDpsZWZ0fS5idG4tdG9vbGJhcj4uYnRuLC5idG4tdG9vbGJhcj4uYnRuLWdyb3VwLC5idG4tdG9vbGJhcj4uaW5wdXQtZ3JvdXB7bWFyZ2luLWxlZnQ6NXB4fS5idG4tZ3JvdXA+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSwuYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXB7ZmxvYXQ6bGVmdH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYnRue2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ+LmJ0bjpsYXN0LWNoaWxkLC5idG4tZ3JvdXA+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bGFzdC1jaGlsZD4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwuYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZXtvdXRsaW5lOjB9LmJ0bi1ncm91cD4uYnRuKy5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweH0uYnRuLWdyb3VwPi5idG4tbGcrLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nLWxlZnQ6MTJweDtwYWRkaW5nLXJpZ2h0OjEycHh9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSl9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmt7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4gLmNhcmV0e21hcmdpbi1sZWZ0OjB9LmJ0bi1sZyAuY2FyZXR7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItYm90dG9tLXdpZHRoOjB9LmRyb3B1cCAuYnRuLWxnIC5jYXJldHtib3JkZXItd2lkdGg6MCA1cHggNXB4fS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZmxvYXQ6bm9uZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0bi1ncm91cCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0bi1ncm91cHttYXJnaW4tdG9wOi0xcHg7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cC1qdXN0aWZpZWR7ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlO3RhYmxlLWxheW91dDpmaXhlZDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmJ0bi1ncm91cC1qdXN0aWZpZWQ+LmJ0biwuYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3Vwe2Zsb2F0Om5vbmU7ZGlzcGxheTp0YWJsZS1jZWxsO3dpZHRoOjElfS5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4tZ3JvdXAgLmJ0bnt3aWR0aDoxMDAlfVtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuPmlucHV0W3R5cGU9cmFkaW9dLFtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuPmlucHV0W3R5cGU9Y2hlY2tib3hde2Rpc3BsYXk6bm9uZX0uaW5wdXQtZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmlucHV0LWdyb3VwW2NsYXNzKj1jb2wtXXtmbG9hdDpub25lO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MH0uaW5wdXQtZ3JvdXAtbGc+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OjQ2cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMztib3JkZXItcmFkaXVzOjZweH1zZWxlY3QuaW5wdXQtZ3JvdXAtbGc+LmZvcm0tY29udHJvbCxzZWxlY3QuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH10ZXh0YXJlYS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hZGRvbix0ZXh0YXJlYS5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPi5idG4sc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDphdXRvfS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6MzBweDtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH1zZWxlY3QuaW5wdXQtZ3JvdXAtc20+LmZvcm0tY29udHJvbCxzZWxlY3QuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweH10ZXh0YXJlYS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbix0ZXh0YXJlYS5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPi5idG4sc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDphdXRvfS5pbnB1dC1ncm91cC1hZGRvbiwuaW5wdXQtZ3JvdXAtYnRuLC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9se2Rpc3BsYXk6dGFibGUtY2VsbH0uaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmlucHV0LWdyb3VwLWFkZG9uLC5pbnB1dC1ncm91cC1idG57d2lkdGg6MSU7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaW5wdXQtZ3JvdXAtYWRkb257cGFkZGluZzo2cHggMTJweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojNTU1O3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo0cHh9LmlucHV0LWdyb3VwLWFkZG9uLmlucHV0LXNte3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7Ym9yZGVyLXJhZGl1czozcHh9LmlucHV0LWdyb3VwLWFkZG9uLmlucHV0LWxne3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2JvcmRlci1yYWRpdXM6NnB4fS5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPXJhZGlvXSwuaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT1jaGVja2JveF17bWFyZ2luLXRvcDowfS5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZpcnN0LWNoaWxkLC5pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZCwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLWdyb3VwPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xlLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCk+LmJ0bntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDowfS5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmxhc3QtY2hpbGQsLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4tZ3JvdXA+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG46bm90KDpmaXJzdC1jaGlsZCksLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG57Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZHtib3JkZXItbGVmdDowfS5pbnB1dC1ncm91cC1idG57cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dC1ncm91cC1idG4+LmJ0bntwb3NpdGlvbjpyZWxhdGl2ZX0uaW5wdXQtZ3JvdXAtYnRuPi5idG4rLmJ0bnttYXJnaW4tbGVmdDotMXB4fS5pbnB1dC1ncm91cC1idG4+LmJ0bjpob3ZlciwuaW5wdXQtZ3JvdXAtYnRuPi5idG46Zm9jdXMsLmlucHV0LWdyb3VwLWJ0bj4uYnRuOmFjdGl2ZXt6LWluZGV4OjJ9LmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cHttYXJnaW4tcmlnaHQ6LTFweH0uaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cHttYXJnaW4tbGVmdDotMXB4fS5uYXZ7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubmF2Pmxpe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2t9Lm5hdj5saT5he3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxMHB4IDE1cHh9Lm5hdj5saT5hOmhvdmVyLC5uYXY+bGk+YTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm5hdj5saS5kaXNhYmxlZD5he2NvbG9yOiM5OTl9Lm5hdj5saS5kaXNhYmxlZD5hOmhvdmVyLC5uYXY+bGkuZGlzYWJsZWQ+YTpmb2N1c3tjb2xvcjojOTk5O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5uYXYgLm9wZW4+YSwubmF2IC5vcGVuPmE6aG92ZXIsLm5hdiAub3Blbj5hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXItY29sb3I6IzQyOGJjYX0ubmF2IC5uYXYtZGl2aWRlcntoZWlnaHQ6MXB4O21hcmdpbjo5cHggMDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZTVlNWU1fS5uYXY+bGk+YT5pbWd7bWF4LXdpZHRoOm5vbmV9Lm5hdi10YWJze2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9Lm5hdi10YWJzPmxpe2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbTotMXB4fS5uYXYtdGFicz5saT5he21hcmdpbi1yaWdodDoycHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDB9Lm5hdi10YWJzPmxpPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNlZWUgI2VlZSAjZGRkfS5uYXYtdGFicz5saS5hY3RpdmU+YSwubmF2LXRhYnM+bGkuYWN0aXZlPmE6aG92ZXIsLm5hdi10YWJzPmxpLmFjdGl2ZT5hOmZvY3Vze2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5uYXYtdGFicy5uYXYtanVzdGlmaWVke3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbTowfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpe2Zsb2F0Om5vbmV9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjVweH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87bGVmdDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saXtkaXNwbGF5OnRhYmxlLWNlbGw7d2lkdGg6MSV9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjB9fS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmF7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpob3ZlciwubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpmb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9fS5uYXYtcGlsbHM+bGl7ZmxvYXQ6bGVmdH0ubmF2LXBpbGxzPmxpPmF7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi1waWxscz5saStsaXttYXJnaW4tbGVmdDoycHh9Lm5hdi1waWxscz5saS5hY3RpdmU+YSwubmF2LXBpbGxzPmxpLmFjdGl2ZT5hOmhvdmVyLC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2F9Lm5hdi1zdGFja2VkPmxpe2Zsb2F0Om5vbmV9Lm5hdi1zdGFja2VkPmxpK2xpe21hcmdpbi10b3A6MnB4O21hcmdpbi1sZWZ0OjB9Lm5hdi1qdXN0aWZpZWR7d2lkdGg6MTAwJX0ubmF2LWp1c3RpZmllZD5saXtmbG9hdDpub25lfS5uYXYtanVzdGlmaWVkPmxpPmF7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTo1cHh9Lm5hdi1qdXN0aWZpZWQ+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2xlZnQ6YXV0b31AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdi1qdXN0aWZpZWQ+bGl7ZGlzcGxheTp0YWJsZS1jZWxsO3dpZHRoOjElfS5uYXYtanVzdGlmaWVkPmxpPmF7bWFyZ2luLWJvdHRvbTowfX0ubmF2LXRhYnMtanVzdGlmaWVke2JvcmRlci1ib3R0b206MH0ubmF2LXRhYnMtanVzdGlmaWVkPmxpPmF7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6aG92ZXIsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMtanVzdGlmaWVkPmxpPmF7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hLC5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLC5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn19LnRhYi1jb250ZW50Pi50YWItcGFuZXtkaXNwbGF5Om5vbmV9LnRhYi1jb250ZW50Pi5hY3RpdmV7ZGlzcGxheTpibG9ja30ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnV7bWFyZ2luLXRvcDotMXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5uYXZiYXJ7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4O21hcmdpbi1ib3R0b206MjBweDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFye2JvcmRlci1yYWRpdXM6NHB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1oZWFkZXJ7ZmxvYXQ6bGVmdH19Lm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXg6dmlzaWJsZTtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWNvbGxhcHNle3dpZHRoOmF1dG87Ym9yZGVyLXRvcDowO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLWNvbGxhcHNlLmNvbGxhcHNle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowO292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTp2aXNpYmxlfS5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1zdGF0aWMtdG9wIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1jb2xsYXBzZXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9fS5jb250YWluZXI+Lm5hdmJhci1oZWFkZXIsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWNvbGxhcHNle21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tbGVmdDotMTVweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbnRhaW5lcj4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItaGVhZGVyLC5jb250YWluZXI+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItY29sbGFwc2V7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MH19Lm5hdmJhci1zdGF0aWMtdG9we3otaW5kZXg6MTAwMDtib3JkZXItd2lkdGg6MCAwIDFweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1zdGF0aWMtdG9we2JvcmRlci1yYWRpdXM6MH19Lm5hdmJhci1maXhlZC10b3AsLm5hdmJhci1maXhlZC1ib3R0b217cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDMwfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZpeGVkLXRvcCwubmF2YmFyLWZpeGVkLWJvdHRvbXtib3JkZXItcmFkaXVzOjB9fS5uYXZiYXItZml4ZWQtdG9we3RvcDowO2JvcmRlci13aWR0aDowIDAgMXB4fS5uYXZiYXItZml4ZWQtYm90dG9te2JvdHRvbTowO21hcmdpbi1ib3R0b206MDtib3JkZXItd2lkdGg6MXB4IDAgMH0ubmF2YmFyLWJyYW5ke2Zsb2F0OmxlZnQ7cGFkZGluZzoxNXB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7aGVpZ2h0OjUwcHh9Lm5hdmJhci1icmFuZDpob3ZlciwubmF2YmFyLWJyYW5kOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyPi5jb250YWluZXIgLm5hdmJhci1icmFuZCwubmF2YmFyPi5jb250YWluZXItZmx1aWQgLm5hdmJhci1icmFuZHttYXJnaW4tbGVmdDotMTVweH19Lm5hdmJhci10b2dnbGV7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjE1cHg7cGFkZGluZzo5cHggMTBweDttYXJnaW4tdG9wOjhweDttYXJnaW4tYm90dG9tOjhweDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4fS5uYXZiYXItdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0ubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXJ7ZGlzcGxheTpibG9jazt3aWR0aDoyMnB4O2hlaWdodDoycHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm5hdmJhci10b2dnbGUgLmljb24tYmFyKy5pY29uLWJhcnttYXJnaW4tdG9wOjRweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci10b2dnbGV7ZGlzcGxheTpub25lfX0ubmF2YmFyLW5hdnttYXJnaW46Ny41cHggLTE1cHh9Lm5hdmJhci1uYXY+bGk+YXtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7bGluZS1oZWlnaHQ6MjBweH1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bzttYXJnaW4tdG9wOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3gtc2hhZG93Om5vbmV9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YSwubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVye3BhZGRpbmc6NXB4IDE1cHggNXB4IDI1cHh9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtsaW5lLWhlaWdodDoyMHB4fS5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1c3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLW5hdntmbG9hdDpsZWZ0O21hcmdpbjowfS5uYXZiYXItbmF2Pmxpe2Zsb2F0OmxlZnR9Lm5hdmJhci1uYXY+bGk+YXtwYWRkaW5nLXRvcDoxNXB4O3BhZGRpbmctYm90dG9tOjE1cHh9Lm5hdmJhci1uYXYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0xNXB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5uYXZiYXItcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fX0ubmF2YmFyLWZvcm17bWFyZ2luLWxlZnQ6LTE1cHg7bWFyZ2luLXJpZ2h0Oi0xNXB4O3BhZGRpbmc6MTBweCAxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpLDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpLDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItZm9ybSAuZm9ybS1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuZm9ybS1jb250cm9se2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOmF1dG87dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbHt3aWR0aDoxMDAlfS5uYXZiYXItZm9ybSAuY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAucmFkaW8sLm5hdmJhci1mb3JtIC5jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLnJhZGlvIGlucHV0W3R5cGU9cmFkaW9dLC5uYXZiYXItZm9ybSAuY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF17ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowfS5uYXZiYXItZm9ybSAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7dG9wOjB9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbTo1cHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm17d2lkdGg6YXV0bztib3JkZXI6MDttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9Lm5hdmJhci1mb3JtLm5hdmJhci1yaWdodDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDotMTVweH19Lm5hdmJhci1uYXY+bGk+LmRyb3Bkb3duLW1lbnV7bWFyZ2luLXRvcDowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51e2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5uYXZiYXItYnRue21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206OHB4fS5uYXZiYXItYnRuLmJ0bi1zbXttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fS5uYXZiYXItYnRuLmJ0bi14c3ttYXJnaW4tdG9wOjE0cHg7bWFyZ2luLWJvdHRvbToxNHB4fS5uYXZiYXItdGV4dHttYXJnaW4tdG9wOjE1cHg7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRleHR7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoxNXB4O21hcmdpbi1yaWdodDoxNXB4fS5uYXZiYXItdGV4dC5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH19Lm5hdmJhci1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtib3JkZXItY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZHtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmZvY3Vze2NvbG9yOiM1ZTVlNWU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10ZXh0e2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+bGk+YTpmb2N1c3tjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uYWN0aXZlPmE6Zm9jdXN7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YTpob3ZlciwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXN7Y29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZXtib3JkZXItY29sb3I6I2RkZH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6aG92ZXIsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2RkZH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGUgLmljb24tYmFye2JhY2tncm91bmQtY29sb3I6Izg4OH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1mb3Jte2JvcmRlci1jb2xvcjojZTdlN2U3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U3ZTdlNztjb2xvcjojNTU1fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmZvY3Vze2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXIsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1c3tjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1c3tjb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWxpbmt7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNle2JhY2tncm91bmQtY29sb3I6IzIyMjtib3JkZXItY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZHtjb2xvcjojOTk5fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci10ZXh0e2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izk5OX0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+bGk+YTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uYWN0aXZlPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXN7Y29sb3I6IzQ0NDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZXtib3JkZXItY29sb3I6IzMzM30ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGU6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzMzM30ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGUgLmljb24tYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1mb3Jte2JvcmRlci1jb2xvcjojMTAxMDEwfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzA4MDgwODtjb2xvcjojZmZmfUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRyb3Bkb3duLWhlYWRlcntib3JkZXItY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXJ7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5he2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3Vze2NvbG9yOiM0NDQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH19Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbGlua3tjb2xvcjojOTk5fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbms6aG92ZXJ7Y29sb3I6I2ZmZn0uYnJlYWRjcnVtYntwYWRkaW5nOjhweCAxNXB4O21hcmdpbi1ib3R0b206MjBweDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci1yYWRpdXM6NHB4fS5icmVhZGNydW1iPmxpe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5icmVhZGNydW1iPmxpK2xpOmJlZm9yZXtjb250ZW50OiIvXDAwYTAiO3BhZGRpbmc6MCA1cHg7Y29sb3I6I2NjY30uYnJlYWRjcnVtYj4uYWN0aXZle2NvbG9yOiM5OTl9LnBhZ2luYXRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjA7bWFyZ2luOjIwcHggMDtib3JkZXItcmFkaXVzOjRweH0ucGFnaW5hdGlvbj5saXtkaXNwbGF5OmlubGluZX0ucGFnaW5hdGlvbj5saT5hLC5wYWdpbmF0aW9uPmxpPnNwYW57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDtwYWRkaW5nOjZweCAxMnB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQyOGJjYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO21hcmdpbi1sZWZ0Oi0xcHh9LnBhZ2luYXRpb24+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbj5saTpmaXJzdC1jaGlsZD5zcGFue21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHh9LnBhZ2luYXRpb24+bGk6bGFzdC1jaGlsZD5hLC5wYWdpbmF0aW9uPmxpOmxhc3QtY2hpbGQ+c3Bhbntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5wYWdpbmF0aW9uPmxpPmE6aG92ZXIsLnBhZ2luYXRpb24+bGk+c3Bhbjpob3ZlciwucGFnaW5hdGlvbj5saT5hOmZvY3VzLC5wYWdpbmF0aW9uPmxpPnNwYW46Zm9jdXN7Y29sb3I6IzJhNjQ5NjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyLWNvbG9yOiNkZGR9LnBhZ2luYXRpb24+LmFjdGl2ZT5hLC5wYWdpbmF0aW9uPi5hY3RpdmU+c3BhbiwucGFnaW5hdGlvbj4uYWN0aXZlPmE6aG92ZXIsLnBhZ2luYXRpb24+LmFjdGl2ZT5zcGFuOmhvdmVyLC5wYWdpbmF0aW9uPi5hY3RpdmU+YTpmb2N1cywucGFnaW5hdGlvbj4uYWN0aXZlPnNwYW46Zm9jdXN7ei1pbmRleDoyO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDI4YmNhO2JvcmRlci1jb2xvcjojNDI4YmNhO2N1cnNvcjpkZWZhdWx0fS5wYWdpbmF0aW9uPi5kaXNhYmxlZD5zcGFuLC5wYWdpbmF0aW9uPi5kaXNhYmxlZD5zcGFuOmhvdmVyLC5wYWdpbmF0aW9uPi5kaXNhYmxlZD5zcGFuOmZvY3VzLC5wYWdpbmF0aW9uPi5kaXNhYmxlZD5hLC5wYWdpbmF0aW9uPi5kaXNhYmxlZD5hOmhvdmVyLC5wYWdpbmF0aW9uPi5kaXNhYmxlZD5hOmZvY3Vze2NvbG9yOiM5OTk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZGRkO2N1cnNvcjpub3QtYWxsb3dlZH0ucGFnaW5hdGlvbi1sZz5saT5hLC5wYWdpbmF0aW9uLWxnPmxpPnNwYW57cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHh9LnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4fS5wYWdpbmF0aW9uLWxnPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweH0ucGFnaW5hdGlvbi1zbT5saT5hLC5wYWdpbmF0aW9uLXNtPmxpPnNwYW57cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweH0ucGFnaW5hdGlvbi1zbT5saTpmaXJzdC1jaGlsZD5hLC5wYWdpbmF0aW9uLXNtPmxpOmZpcnN0LWNoaWxkPnNwYW57Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnBhZ2luYXRpb24tc20+bGk6bGFzdC1jaGlsZD5hLC5wYWdpbmF0aW9uLXNtPmxpOmxhc3QtY2hpbGQ+c3Bhbntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYWdlcntwYWRkaW5nLWxlZnQ6MDttYXJnaW46MjBweCAwO2xpc3Qtc3R5bGU6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcn0ucGFnZXIgbGl7ZGlzcGxheTppbmxpbmV9LnBhZ2VyIGxpPmEsLnBhZ2VyIGxpPnNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo1cHggMTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6MTVweH0ucGFnZXIgbGk+YTpob3ZlciwucGFnZXIgbGk+YTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9LnBhZ2VyIC5uZXh0PmEsLnBhZ2VyIC5uZXh0PnNwYW57ZmxvYXQ6cmlnaHR9LnBhZ2VyIC5wcmV2aW91cz5hLC5wYWdlciAucHJldmlvdXM+c3BhbntmbG9hdDpsZWZ0fS5wYWdlciAuZGlzYWJsZWQ+YSwucGFnZXIgLmRpc2FibGVkPmE6aG92ZXIsLnBhZ2VyIC5kaXNhYmxlZD5hOmZvY3VzLC5wYWdlciAuZGlzYWJsZWQ+c3Bhbntjb2xvcjojOTk5O2JhY2tncm91bmQtY29sb3I6I2ZmZjtjdXJzb3I6bm90LWFsbG93ZWR9LmxhYmVse2Rpc3BsYXk6aW5saW5lO3BhZGRpbmc6LjJlbSAuNmVtIC4zZW07Zm9udC1zaXplOjc1JTtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtib3JkZXItcmFkaXVzOi4yNWVtfS5sYWJlbFtocmVmXTpob3ZlciwubGFiZWxbaHJlZl06Zm9jdXN7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0ubGFiZWw6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5sYWJlbC1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6Izk5OX0ubGFiZWwtZGVmYXVsdFtocmVmXTpob3ZlciwubGFiZWwtZGVmYXVsdFtocmVmXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOmdyYXl9LmxhYmVsLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojNDI4YmNhfS5sYWJlbC1wcmltYXJ5W2hyZWZdOmhvdmVyLC5sYWJlbC1wcmltYXJ5W2hyZWZdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzMwNzFhOX0ubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1Y2I4NWN9LmxhYmVsLXN1Y2Nlc3NbaHJlZl06aG92ZXIsLmxhYmVsLXN1Y2Nlc3NbaHJlZl06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojNDQ5ZDQ0fS5sYWJlbC1pbmZve2JhY2tncm91bmQtY29sb3I6IzViYzBkZX0ubGFiZWwtaW5mb1tocmVmXTpob3ZlciwubGFiZWwtaW5mb1tocmVmXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiMzMWIwZDV9LmxhYmVsLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlfS5sYWJlbC13YXJuaW5nW2hyZWZdOmhvdmVyLC5sYWJlbC13YXJuaW5nW2hyZWZdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2VjOTcxZn0ubGFiZWwtZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2Q5NTM0Zn0ubGFiZWwtZGFuZ2VyW2hyZWZdOmhvdmVyLC5sYWJlbC1kYW5nZXJbaHJlZl06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjfS5iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MTBweDtwYWRkaW5nOjNweCA3cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNmZmY7bGluZS1oZWlnaHQ6MTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojOTk5O2JvcmRlci1yYWRpdXM6MTBweH0uYmFkZ2U6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5idG4teHMgLmJhZGdle3RvcDowO3BhZGRpbmc6MXB4IDVweH1hLmJhZGdlOmhvdmVyLGEuYmFkZ2U6Zm9jdXN7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn1hLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU+LmJhZGdlLC5uYXYtcGlsbHM+LmFjdGl2ZT5hPi5iYWRnZXtjb2xvcjojNDI4YmNhO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubmF2LXBpbGxzPmxpPmE+LmJhZGdle21hcmdpbi1sZWZ0OjNweH0uanVtYm90cm9ue3BhZGRpbmc6MzBweDttYXJnaW4tYm90dG9tOjMwcHg7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lmp1bWJvdHJvbiBoMSwuanVtYm90cm9uIC5oMXtjb2xvcjppbmhlcml0fS5qdW1ib3Ryb24gcHttYXJnaW4tYm90dG9tOjE1cHg7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6MjAwfS5jb250YWluZXIgLmp1bWJvdHJvbntib3JkZXItcmFkaXVzOjZweH0uanVtYm90cm9uIC5jb250YWluZXJ7bWF4LXdpZHRoOjEwMCV9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7Lmp1bWJvdHJvbntwYWRkaW5nLXRvcDo0OHB4O3BhZGRpbmctYm90dG9tOjQ4cHh9LmNvbnRhaW5lciAuanVtYm90cm9ue3BhZGRpbmctbGVmdDo2MHB4O3BhZGRpbmctcmlnaHQ6NjBweH0uanVtYm90cm9uIGgxLC5qdW1ib3Ryb24gLmgxe2ZvbnQtc2l6ZTo2M3B4fX0udGh1bWJuYWlse2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHg7bWFyZ2luLWJvdHRvbToyMHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LnRodW1ibmFpbD5pbWcsLnRodW1ibmFpbCBhPmltZ3ttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfWEudGh1bWJuYWlsOmhvdmVyLGEudGh1bWJuYWlsOmZvY3VzLGEudGh1bWJuYWlsLmFjdGl2ZXtib3JkZXItY29sb3I6IzQyOGJjYX0udGh1bWJuYWlsIC5jYXB0aW9ue3BhZGRpbmc6OXB4O2NvbG9yOiMzMzN9LmFsZXJ0e3BhZGRpbmc6MTVweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweH0uYWxlcnQgaDR7bWFyZ2luLXRvcDowO2NvbG9yOmluaGVyaXR9LmFsZXJ0IC5hbGVydC1saW5re2ZvbnQtd2VpZ2h0OjcwMH0uYWxlcnQ+cCwuYWxlcnQ+dWx7bWFyZ2luLWJvdHRvbTowfS5hbGVydD5wK3B7bWFyZ2luLXRvcDo1cHh9LmFsZXJ0LWRpc21pc3NhYmxle3BhZGRpbmctcmlnaHQ6MzVweH0uYWxlcnQtZGlzbWlzc2FibGUgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2NvbG9yOmluaGVyaXR9LmFsZXJ0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojZDZlOWM2O2NvbG9yOiMzYzc2M2R9LmFsZXJ0LXN1Y2Nlc3MgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYzllMmIzfS5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5re2NvbG9yOiMyYjU0MmN9LmFsZXJ0LWluZm97YmFja2dyb3VuZC1jb2xvcjojZDllZGY3O2JvcmRlci1jb2xvcjojYmNlOGYxO2NvbG9yOiMzMTcwOGZ9LmFsZXJ0LWluZm8gaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYTZlMWVjfS5hbGVydC1pbmZvIC5hbGVydC1saW5re2NvbG9yOiMyNDUyNjl9LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzO2JvcmRlci1jb2xvcjojZmFlYmNjO2NvbG9yOiM4YTZkM2J9LmFsZXJ0LXdhcm5pbmcgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojZjdlMWI1fS5hbGVydC13YXJuaW5nIC5hbGVydC1saW5re2NvbG9yOiM2NjUxMmN9LmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGU7Ym9yZGVyLWNvbG9yOiNlYmNjZDE7Y29sb3I6I2E5NDQ0Mn0uYWxlcnQtZGFuZ2VyIGhye2JvcmRlci10b3AtY29sb3I6I2U0YjljMH0uYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5re2NvbG9yOiM4NDM1MzR9QC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9fUBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19LnByb2dyZXNze292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSl9LnByb2dyZXNzLWJhcntmbG9hdDpsZWZ0O3dpZHRoOjA7aGVpZ2h0OjEwMCU7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpO2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpOy13ZWJraXQtdHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZTt0cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlfS5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtc2l6ZTo0MHB4IDQwcHh9LnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyey13ZWJraXQtYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlfS5wcm9ncmVzcy1iYXItc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1Y2I4NWN9LnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MtYmFyLWluZm97YmFja2dyb3VuZC1jb2xvcjojNWJjMGRlfS5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItaW5mb3tiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCl9LnByb2dyZXNzLWJhci13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZX0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy1iYXItZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2Q5NTM0Zn0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWRhbmdlcntiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCl9Lm1lZGlhLC5tZWRpYS1ib2R5e292ZXJmbG93OmhpZGRlbjt6b29tOjF9Lm1lZGlhLC5tZWRpYSAubWVkaWF7bWFyZ2luLXRvcDoxNXB4fS5tZWRpYTpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1lZGlhLW9iamVjdHtkaXNwbGF5OmJsb2NrfS5tZWRpYS1oZWFkaW5ne21hcmdpbjowIDAgNXB4fS5tZWRpYT4ucHVsbC1sZWZ0e21hcmdpbi1yaWdodDoxMHB4fS5tZWRpYT4ucHVsbC1yaWdodHttYXJnaW4tbGVmdDoxMHB4fS5tZWRpYS1saXN0e3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1ncm91cHttYXJnaW4tYm90dG9tOjIwcHg7cGFkZGluZy1sZWZ0OjB9Lmxpc3QtZ3JvdXAtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweCAxNXB4O21hcmdpbi1ib3R0b206LTFweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4fS5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdle2Zsb2F0OnJpZ2h0fS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdlKy5iYWRnZXttYXJnaW4tcmlnaHQ6NXB4fWEubGlzdC1ncm91cC1pdGVte2NvbG9yOiM1NTV9YS5saXN0LWdyb3VwLWl0ZW0gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne2NvbG9yOiMzMzN9YS5saXN0LWdyb3VwLWl0ZW06aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW06Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fWEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3Vze3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTtib3JkZXItY29sb3I6IzQyOGJjYX1hLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLGEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLXRleHQsYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCxhLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0e2NvbG9yOiNlMWVkZjd9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3N7Y29sb3I6IzNjNzYzZH1hLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1c3tjb2xvcjojM2M3NjNkO2JhY2tncm91bmQtY29sb3I6I2QwZTljNn1hLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzNjNzYzZDtib3JkZXItY29sb3I6IzNjNzYzZH0ubGlzdC1ncm91cC1pdGVtLWluZm97Y29sb3I6IzMxNzA4ZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjd9YS5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMzE3MDhmfWEubGlzdC1ncm91cC1pdGVtLWluZm8gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne2NvbG9yOmluaGVyaXR9YS5saXN0LWdyb3VwLWl0ZW0taW5mbzpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3Vze2NvbG9yOiMzMTcwOGY7YmFja2dyb3VuZC1jb2xvcjojYzRlM2YzfWEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlLGEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzE3MDhmO2JvcmRlci1jb2xvcjojMzE3MDhmfS5saXN0LWdyb3VwLWl0ZW0td2FybmluZ3tjb2xvcjojOGE2ZDNiO2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM31hLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5ne2NvbG9yOiM4YTZkM2J9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXN7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWYyY2N9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM4YTZkM2I7Ym9yZGVyLWNvbG9yOiM4YTZkM2J9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXJ7Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2Vye2NvbG9yOiNhOTQ0NDJ9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLWRhbmdlcjpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6Zm9jdXN7Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNlYmNjY2N9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmU6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNhOTQ0NDI7Ym9yZGVyLWNvbG9yOiNhOTQ0NDJ9Lmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjVweH0ubGlzdC1ncm91cC1pdGVtLXRleHR7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OjEuM30ucGFuZWx7bWFyZ2luLWJvdHRvbToyMHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KX0ucGFuZWwtYm9keXtwYWRkaW5nOjE1cHh9LnBhbmVsLWhlYWRpbmd7cGFkZGluZzoxMHB4IDE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5wYW5lbC1oZWFkaW5nPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOmluaGVyaXR9LnBhbmVsLXRpdGxle21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjE2cHg7Y29sb3I6aW5oZXJpdH0ucGFuZWwtdGl0bGU+YXtjb2xvcjppbmhlcml0fS5wYW5lbC1mb290ZXJ7cGFkZGluZzoxMHB4IDE1cHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYW5lbD4ubGlzdC1ncm91cHttYXJnaW4tYm90dG9tOjB9LnBhbmVsPi5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW17Ym9yZGVyLXdpZHRoOjFweCAwO2JvcmRlci1yYWRpdXM6MH0ucGFuZWw+Lmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5wYW5lbD4ubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYW5lbC1oZWFkaW5nKy5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowfS5wYW5lbD4udGFibGUsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZXttYXJnaW4tYm90dG9tOjB9LnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHh9LnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUsLnBhbmVsPi5wYW5lbC1ib2R5Ky50YWJsZS1yZXNwb25zaXZle2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aCwucGFuZWw+LnRhYmxlPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cjpmaXJzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZXtib3JkZXI6MDttYXJnaW4tYm90dG9tOjB9LnBhbmVsLWdyb3Vwe21hcmdpbi1ib3R0b206MjBweH0ucGFuZWwtZ3JvdXAgLnBhbmVse21hcmdpbi1ib3R0b206MDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW59LnBhbmVsLWdyb3VwIC5wYW5lbCsucGFuZWx7bWFyZ2luLXRvcDo1cHh9LnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5ne2JvcmRlci1ib3R0b206MH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnBhbmVsLWdyb3VwIC5wYW5lbC1mb290ZXJ7Ym9yZGVyLXRvcDowfS5wYW5lbC1ncm91cCAucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5wYW5lbC1kZWZhdWx0e2JvcmRlci1jb2xvcjojZGRkfS5wYW5lbC1kZWZhdWx0Pi5wYW5lbC1oZWFkaW5ne2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci1jb2xvcjojZGRkfS5wYW5lbC1kZWZhdWx0Pi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNkZGR9LnBhbmVsLWRlZmF1bHQ+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGRkfS5wYW5lbC1wcmltYXJ5e2JvcmRlci1jb2xvcjojNDI4YmNhfS5wYW5lbC1wcmltYXJ5Pi5wYW5lbC1oZWFkaW5ne2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDI4YmNhO2JvcmRlci1jb2xvcjojNDI4YmNhfS5wYW5lbC1wcmltYXJ5Pi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiM0MjhiY2F9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNDI4YmNhfS5wYW5lbC1zdWNjZXNze2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZDZlOWM2fS5wYW5lbC1pbmZve2JvcmRlci1jb2xvcjojYmNlOGYxfS5wYW5lbC1pbmZvPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiMzMTcwOGY7YmFja2dyb3VuZC1jb2xvcjojZDllZGY3O2JvcmRlci1jb2xvcjojYmNlOGYxfS5wYW5lbC1pbmZvPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLWluZm8+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYmNlOGYxfS5wYW5lbC13YXJuaW5ne2JvcmRlci1jb2xvcjojZmFlYmNjfS5wYW5lbC13YXJuaW5nPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiM4YTZkM2I7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzO2JvcmRlci1jb2xvcjojZmFlYmNjfS5wYW5lbC13YXJuaW5nPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmFlYmNjfS5wYW5lbC1kYW5nZXJ7Ym9yZGVyLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZ3tjb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2ViY2NkMX0ucGFuZWwtZGFuZ2VyPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNlYmNjZDF9LndlbGx7bWluLWhlaWdodDoyMHB4O3BhZGRpbmc6MTlweDttYXJnaW4tYm90dG9tOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2UzZTNlMztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTUpfS53ZWxsLWxne3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjZweH0ud2VsbC1zbXtwYWRkaW5nOjlweDtib3JkZXItcmFkaXVzOjNweH0uY2xvc2V7ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6IzAwMDt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7b3BhY2l0eTouMjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0yMCl9LmNsb3NlOmhvdmVyLC5jbG9zZTpmb2N1c3tjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApfWJ1dHRvbi5jbG9zZXtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1vZGFsLW9wZW57b3ZlcmZsb3c6aGlkZGVufS5tb2RhbHtkaXNwbGF5Om5vbmU7b3ZlcmZsb3c6YXV0bztvdmVyZmxvdy15OnNjcm9sbDtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNTA7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7b3V0bGluZTowfS5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2d7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dDstbW96LXRyYW5zaXRpb246LW1vei10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246LW8tdHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1vdXR9Lm1vZGFsLmluIC5tb2RhbC1kaWFsb2d7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9Lm1vZGFsLWRpYWxvZ3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDphdXRvO21hcmdpbjoxMHB4fS5tb2RhbC1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOjZweDstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjB9Lm1vZGFsLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTA0MDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1vZGFsLWJhY2tkcm9wLmZhZGV7b3BhY2l0eTowO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApfS5tb2RhbC1iYWNrZHJvcC5pbntvcGFjaXR5Oi41O2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKX0ubW9kYWwtaGVhZGVye3BhZGRpbmc6MTVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1O21pbi1oZWlnaHQ6MTYuNDI4NTcxNDNweH0ubW9kYWwtaGVhZGVyIC5jbG9zZXttYXJnaW4tdG9wOi0ycHh9Lm1vZGFsLXRpdGxle21hcmdpbjowO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDN9Lm1vZGFsLWJvZHl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoyMHB4fS5tb2RhbC1mb290ZXJ7bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmc6MTlweCAyMHB4IDIwcHg7dGV4dC1hbGlnbjpyaWdodDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS5tb2RhbC1mb290ZXIgLmJ0bisuYnRue21hcmdpbi1sZWZ0OjVweDttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3RlciAuYnRuLWdyb3VwIC5idG4rLmJ0bnttYXJnaW4tbGVmdDotMXB4fS5tb2RhbC1mb290ZXIgLmJ0bi1ibG9jaysuYnRuLWJsb2Nre21hcmdpbi1sZWZ0OjB9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5tb2RhbC1kaWFsb2d7d2lkdGg6NjAwcHg7bWFyZ2luOjMwcHggYXV0b30ubW9kYWwtY29udGVudHstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC41KTtib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSl9Lm1vZGFsLXNte3dpZHRoOjMwMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm1vZGFsLWxne3dpZHRoOjkwMHB4fX0udG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMzA7ZGlzcGxheTpibG9jazt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40O29wYWNpdHk6MDtmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKX0udG9vbHRpcC5pbntvcGFjaXR5Oi45O2ZpbHRlcjphbHBoYShvcGFjaXR5PTkwKX0udG9vbHRpcC50b3B7bWFyZ2luLXRvcDotM3B4O3BhZGRpbmc6NXB4IDB9LnRvb2x0aXAucmlnaHR7bWFyZ2luLWxlZnQ6M3B4O3BhZGRpbmc6MCA1cHh9LnRvb2x0aXAuYm90dG9te21hcmdpbi10b3A6M3B4O3BhZGRpbmc6NXB4IDB9LnRvb2x0aXAubGVmdHttYXJnaW4tbGVmdDotM3B4O3BhZGRpbmc6MCA1cHh9LnRvb2x0aXAtaW5uZXJ7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6M3B4IDhweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6IzAwMDtib3JkZXItcmFkaXVzOjRweH0udG9vbHRpcC1hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO2hlaWdodDowO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LnRvb2x0aXAudG9wIC50b29sdGlwLWFycm93e2JvdHRvbTowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItdG9wLWNvbG9yOiMwMDB9LnRvb2x0aXAudG9wLWxlZnQgLnRvb2x0aXAtYXJyb3d7Ym90dG9tOjA7bGVmdDo1cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItdG9wLWNvbG9yOiMwMDB9LnRvb2x0aXAudG9wLXJpZ2h0IC50b29sdGlwLWFycm93e2JvdHRvbTowO3JpZ2h0OjVweDtib3JkZXItd2lkdGg6NXB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0udG9vbHRpcC5yaWdodCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO2xlZnQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggNXB4IDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMwMDB9LnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci13aWR0aDo1cHggMCA1cHggNXB4O2JvcmRlci1sZWZ0LWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tIC50b29sdGlwLWFycm93e3RvcDowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXdpZHRoOjAgNXB4IDVweDtib3JkZXItYm90dG9tLWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tLWxlZnQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7bGVmdDo1cHg7Ym9yZGVyLXdpZHRoOjAgNXB4IDVweDtib3JkZXItYm90dG9tLWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tLXJpZ2h0IC50b29sdGlwLWFycm93e3RvcDowO3JpZ2h0OjVweDtib3JkZXItd2lkdGg6MCA1cHggNXB4O2JvcmRlci1ib3R0b20tY29sb3I6IzAwMH0ucG9wb3Zlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDoxMDEwO2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6Mjc2cHg7cGFkZGluZzoxcHg7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7Ym9yZGVyLXJhZGl1czo2cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDEwcHggcmdiYSgwLDAsMCwuMik7Ym94LXNoYWRvdzowIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpO3doaXRlLXNwYWNlOm5vcm1hbH0ucG9wb3Zlci50b3B7bWFyZ2luLXRvcDotMTBweH0ucG9wb3Zlci5yaWdodHttYXJnaW4tbGVmdDoxMHB4fS5wb3BvdmVyLmJvdHRvbXttYXJnaW4tdG9wOjEwcHh9LnBvcG92ZXIubGVmdHttYXJnaW4tbGVmdDotMTBweH0ucG9wb3Zlci10aXRsZXttYXJnaW46MDtwYWRkaW5nOjhweCAxNHB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxOHB4O2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NXB4IDVweCAwIDB9LnBvcG92ZXItY29udGVudHtwYWRkaW5nOjlweCAxNHB4fS5wb3BvdmVyPi5hcnJvdywucG9wb3Zlcj4uYXJyb3c6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jazt3aWR0aDowO2hlaWdodDowO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LnBvcG92ZXI+LmFycm93e2JvcmRlci13aWR0aDoxMXB4fS5wb3BvdmVyPi5hcnJvdzphZnRlcntib3JkZXItd2lkdGg6MTBweDtjb250ZW50OiIifS5wb3BvdmVyLnRvcD4uYXJyb3d7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTExcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci10b3AtY29sb3I6Izk5OTtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjI1KTtib3R0b206LTExcHh9LnBvcG92ZXIudG9wPi5hcnJvdzphZnRlcntjb250ZW50OiIgIjtib3R0b206MXB4O21hcmdpbi1sZWZ0Oi0xMHB4O2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LnBvcG92ZXIucmlnaHQ+LmFycm93e3RvcDo1MCU7bGVmdDotMTFweDttYXJnaW4tdG9wOi0xMXB4O2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM5OTk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjI1KX0ucG9wb3Zlci5yaWdodD4uYXJyb3c6YWZ0ZXJ7Y29udGVudDoiICI7bGVmdDoxcHg7Ym90dG9tOi0xMHB4O2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LnBvcG92ZXIuYm90dG9tPi5hcnJvd3tsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTFweDtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOTk5O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMjUpO3RvcDotMTFweH0ucG9wb3Zlci5ib3R0b20+LmFycm93OmFmdGVye2NvbnRlbnQ6IiAiO3RvcDoxcHg7bWFyZ2luLWxlZnQ6LTEwcHg7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0ucG9wb3Zlci5sZWZ0Pi5hcnJvd3t0b3A6NTAlO3JpZ2h0Oi0xMXB4O21hcmdpbi10b3A6LTExcHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtY29sb3I6Izk5OTtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4yNSl9LnBvcG92ZXIubGVmdD4uYXJyb3c6YWZ0ZXJ7Y29udGVudDoiICI7cmlnaHQ6MXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiNmZmY7Ym90dG9tOi0xMHB4fS5jYXJvdXNlbHtwb3NpdGlvbjpyZWxhdGl2ZX0uY2Fyb3VzZWwtaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9LmNhcm91c2VsLWlubmVyPi5pdGVte2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXRyYW5zaXRpb246LjZzIGVhc2UtaW4tb3V0IGxlZnQ7dHJhbnNpdGlvbjouNnMgZWFzZS1pbi1vdXQgbGVmdH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLC5jYXJvdXNlbC1pbm5lcj4uaXRlbT5hPmltZ3tsaW5lLWhlaWdodDoxfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLC5jYXJvdXNlbC1pbm5lcj4ubmV4dCwuY2Fyb3VzZWwtaW5uZXI+LnByZXZ7ZGlzcGxheTpibG9ja30uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZXtsZWZ0OjB9LmNhcm91c2VsLWlubmVyPi5uZXh0LC5jYXJvdXNlbC1pbm5lcj4ucHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5jYXJvdXNlbC1pbm5lcj4ubmV4dHtsZWZ0OjEwMCV9LmNhcm91c2VsLWlubmVyPi5wcmV2e2xlZnQ6LTEwMCV9LmNhcm91c2VsLWlubmVyPi5uZXh0LmxlZnQsLmNhcm91c2VsLWlubmVyPi5wcmV2LnJpZ2h0e2xlZnQ6MH0uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZS5sZWZ0e2xlZnQ6LTEwMCV9LmNhcm91c2VsLWlubmVyPi5hY3RpdmUucmlnaHR7bGVmdDoxMDAlfS5jYXJvdXNlbC1jb250cm9se3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtib3R0b206MDt3aWR0aDoxNSU7b3BhY2l0eTouNTtmaWx0ZXI6YWxwaGEob3BhY2l0eT01MCk7Zm9udC1zaXplOjIwcHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuNil9LmNhcm91c2VsLWNvbnRyb2wubGVmdHtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsY29sb3Itc3RvcChyZ2JhKDAsMCwwLC41KSAwKSxjb2xvci1zdG9wKHJnYmEoMCwwLDAsLjAwMDEpIDEwMCUpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC41KSAwLHJnYmEoMCwwLDAsLjAwMDEpIDEwMCUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzgwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyMwMDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKX0uY2Fyb3VzZWwtY29udHJvbC5yaWdodHtsZWZ0OmF1dG87cmlnaHQ6MDtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsY29sb3Itc3RvcChyZ2JhKDAsMCwwLC4wMDAxKSAwKSxjb2xvci1zdG9wKHJnYmEoMCwwLDAsLjUpIDEwMCUpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC4wMDAxKSAwLHJnYmEoMCwwLDAsLjUpIDEwMCUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyM4MDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKX0uY2Fyb3VzZWwtY29udHJvbDpob3ZlciwuY2Fyb3VzZWwtY29udHJvbDpmb2N1c3tvdXRsaW5lOjA7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvcGFjaXR5Oi45O2ZpbHRlcjphbHBoYShvcGFjaXR5PTkwKX0uY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LC5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQsLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ei1pbmRleDo1O2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnR7bGVmdDo1MCV9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHR7cmlnaHQ6NTAlfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dHt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O21hcmdpbi10b3A6LTEwcHg7bWFyZ2luLWxlZnQ6LTEwcHg7Zm9udC1mYW1pbHk6c2VyaWZ9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldjpiZWZvcmV7Y29udGVudDonXDIwMzknfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3Jle2NvbnRlbnQ6J1wyMDNhJ30uY2Fyb3VzZWwtaW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTBweDtsZWZ0OjUwJTt6LWluZGV4OjE1O3dpZHRoOjYwJTttYXJnaW4tbGVmdDotMzAlO3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcn0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O21hcmdpbjoxcHg7dGV4dC1pbmRlbnQ6LTk5OXB4O2JvcmRlcjoxcHggc29saWQgI2ZmZjtib3JkZXItcmFkaXVzOjEwcHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMDAwIFw5O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZle21hcmdpbjowO3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5jYXJvdXNlbC1jYXB0aW9ue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTUlO3JpZ2h0OjE1JTtib3R0b206MjBweDt6LWluZGV4OjEwO3BhZGRpbmctdG9wOjIwcHg7cGFkZGluZy1ib3R0b206MjBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC42KX0uY2Fyb3VzZWwtY2FwdGlvbiAuYnRue3RleHQtc2hhZG93Om5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LC5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dHt3aWR0aDozMHB4O2hlaWdodDozMHB4O21hcmdpbi10b3A6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHg7Zm9udC1zaXplOjMwcHh9LmNhcm91c2VsLWNhcHRpb257bGVmdDoyMCU7cmlnaHQ6MjAlO3BhZGRpbmctYm90dG9tOjMwcHh9LmNhcm91c2VsLWluZGljYXRvcnN7Ym90dG9tOjIwcHh9fS5jbGVhcmZpeDpiZWZvcmUsLmNsZWFyZml4OmFmdGVyLC5jb250YWluZXI6YmVmb3JlLC5jb250YWluZXI6YWZ0ZXIsLmNvbnRhaW5lci1mbHVpZDpiZWZvcmUsLmNvbnRhaW5lci1mbHVpZDphZnRlciwucm93OmJlZm9yZSwucm93OmFmdGVyLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YmVmb3JlLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YWZ0ZXIsLmJ0bi10b29sYmFyOmJlZm9yZSwuYnRuLXRvb2xiYXI6YWZ0ZXIsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmJlZm9yZSwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6YWZ0ZXIsLm5hdjpiZWZvcmUsLm5hdjphZnRlciwubmF2YmFyOmJlZm9yZSwubmF2YmFyOmFmdGVyLC5uYXZiYXItaGVhZGVyOmJlZm9yZSwubmF2YmFyLWhlYWRlcjphZnRlciwubmF2YmFyLWNvbGxhcHNlOmJlZm9yZSwubmF2YmFyLWNvbGxhcHNlOmFmdGVyLC5wYWdlcjpiZWZvcmUsLnBhZ2VyOmFmdGVyLC5wYW5lbC1ib2R5OmJlZm9yZSwucGFuZWwtYm9keTphZnRlciwubW9kYWwtZm9vdGVyOmJlZm9yZSwubW9kYWwtZm9vdGVyOmFmdGVye2NvbnRlbnQ6IiAiO2Rpc3BsYXk6dGFibGV9LmNsZWFyZml4OmFmdGVyLC5jb250YWluZXI6YWZ0ZXIsLmNvbnRhaW5lci1mbHVpZDphZnRlciwucm93OmFmdGVyLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YWZ0ZXIsLmJ0bi10b29sYmFyOmFmdGVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDphZnRlciwubmF2OmFmdGVyLC5uYXZiYXI6YWZ0ZXIsLm5hdmJhci1oZWFkZXI6YWZ0ZXIsLm5hdmJhci1jb2xsYXBzZTphZnRlciwucGFnZXI6YWZ0ZXIsLnBhbmVsLWJvZHk6YWZ0ZXIsLm1vZGFsLWZvb3RlcjphZnRlcntjbGVhcjpib3RofS5jZW50ZXItYmxvY2t7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0ucHVsbC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5oaWRle2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnNob3d7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbn0udGV4dC1oaWRle2ZvbnQ6MC8wIGE7Y29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9LmFmZml4e3Bvc2l0aW9uOmZpeGVkfUAtbXMtdmlld3BvcnR7d2lkdGg6ZGV2aWNlLXdpZHRofS52aXNpYmxlLXhzLC52aXNpYmxlLXNtLC52aXNpYmxlLW1kLC52aXNpYmxlLWxne2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey52aXNpYmxlLXhze2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fXRhYmxlLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZX10ci52aXNpYmxlLXhze2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10aC52aXNpYmxlLXhzLHRkLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KXsudmlzaWJsZS1zbXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXNte2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1zbXtkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1zbSx0ZC52aXNpYmxlLXNte2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpey52aXNpYmxlLW1ke2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fXRhYmxlLnZpc2libGUtbWR7ZGlzcGxheTp0YWJsZX10ci52aXNpYmxlLW1ke2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10aC52aXNpYmxlLW1kLHRkLnZpc2libGUtbWR7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZ3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1sZ3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1sZyx0ZC52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuaGlkZGVuLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LmhpZGRlbi1zbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KXsuaGlkZGVuLW1ke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmhpZGRlbi1sZ3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1wcmludHtkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1wcmludCx0ZC52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fUBtZWRpYSBwcmludHsuaGlkZGVuLXByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fQ==">
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<ul class="nav navbar-nav">
<li>
<a href="http://iloveponies.github.io/120-hour-epic-sax-marathon/p-p-p-pokerface.html/index.html">← index</a>
</li>
<li>
<button type="button" class="btn btn-default navbar-btn" data-toggle="collapse" data-target="#exercise-list">
Exercises
</button>
</li>
<li>
<ul id="exercise-list" class="collapse navbar-text list-inline">
</ul>
</li>
</ul></div>
</nav>
<div class="container">
<div class="main-content">
<header>
<h1 class="title">P-P-P-Pokerface</h1>
</header>
<section id="fork-this" class="level2">
<h2>Fork this</h2>
<p><a href="https://github.com/iloveponies/p-p-p-pokerface">https://github.com/iloveponies/p-p-p-pokerface</a></p>
<p><a href="http://iloveponies.github.io/120-hour-epic-sax-marathon/p-p-p-pokerface.html/basic-tools.html#how-to-submit-answers-to-exercises">Here</a> are the instructions if you need them. Be sure to fork the repository behind the link above.</p>
</section>
<section id="data-representation" class="level2">
<h2>Data representation</h2>
<p>A traditional playing card has a rank and a suit. The rank is a number from 2 to 10, J, Q, K or A and the suit is Clubs, Diamonds, Hearts or Spades.</p>
<p>We want a simple way to represent poker hands and cards. A card is simply going to be a string of the form <code>"5C"</code> where the first character represents the rank and the second character represents the suit. To keep the representation at 2 characters, we’ll use the following coding for values between 10 and 14:</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Rank</th>
<th style="text-align: left;">Character</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">10</td>
<td style="text-align: left;">T</td>
</tr>
<tr class="even">
<td style="text-align: left;">11</td>
<td style="text-align: left;">J</td>
</tr>
<tr class="odd">
<td style="text-align: left;">12</td>
<td style="text-align: left;">Q</td>
</tr>
<tr class="even">
<td style="text-align: left;">13</td>
<td style="text-align: left;">K</td>
</tr>
<tr class="odd">
<td style="text-align: left;">14</td>
<td style="text-align: left;">A</td>
</tr>
</tbody>
</table>
<p>So, for example, the Queen of Hearts is <code>"QH"</code> and the Ace of Spades is <code>"AS"</code>.</p>
</section>
<section id="rank-and-suit" class="level2">
<h2>Rank and suit</h2>
<p>We’ll want a couple of helper functions to read the rank and suit of a card.</p>
<p>A useful thing to note is that Strings are sequencable, so you can use sequence destructuring on them:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">let</span> [[fst snd] <span class="st">"5H"</span>]
[fst snd]) <span class="co">;=> [\5 \H]</span></code></pre>
<p>If you are only interested in some destructured values, it is idiomatic to use the name <code>_</code> for ignored values:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">let</span> [[_ snd] <span class="st">"AH"</span>]
snd) <span class="co">;=> \H</span></code></pre>
<p>And finally, remember that you can use <code>(str value)</code> to turn anything into its string representation, including characters.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">str</span> <span class="ch">\C</span>) <span class="co">;=> "C"</span></code></pre>
<p>You should now be able to write the <code>(suit card)</code> function that returns the suit of a card.</p>
<section class="alert alert-success"><h3>
Exercise 1
</h3>
<p>Write the function <code>(suit card)</code> which takes a singe card and returns the suit of the card as a one character string.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(suit <span class="st">"2H"</span>) <span class="co">;=> "H"</span>
(suit <span class="st">"2D"</span>) <span class="co">;=> "D"</span>
(suit <span class="st">"2C"</span>) <span class="co">;=> "C"</span>
(suit <span class="st">"3S"</span>) <span class="co">;=> "S"</span></code></pre>
</section>
<p>To get the rank, you’ll need to convert a character into an integer. To see if a character is a digit, like <code>\5</code> or <code>\2</code>, you can use <code>(Character/isDigit char)</code>:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(Character/isDigit <span class="ch">\5</span>) <span class="co">;=> true</span>
(Character/isDigit <span class="ch">\A</span>) <span class="co">;=> false</span></code></pre>
<p>If a character is a digit, you can use <code>(Integer/valueOf string)</code> to convert it to an integer. You will first have to convert the character into a string.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(Integer/valueOf <span class="st">"12"</span>) <span class="co">;=> 12</span>
(Integer/valueOf (<span class="kw">str</span> <span class="ch">\5</span>)) <span class="co">;=> 5</span></code></pre>
<p>Finally, to turn the characters <code>T</code>, <code>J</code>, <code>Q</code>, <code>K</code> and <code>A</code> into integers, using a map to store the values is very useful:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">get</span> {<span class="ch">\A</span> <span class="dv">100</span>, <span class="ch">\B</span> <span class="dv">20</span>} <span class="ch">\B</span>) <span class="co">;=> 20</span>
({<span class="ch">\A</span> <span class="dv">100</span>, <span class="ch">\B</span> <span class="dv">20</span>} <span class="ch">\B</span>) <span class="co">;=> 20</span>
(<span class="kw">def</span><span class="fu"> replacements </span>{<span class="ch">\A</span> <span class="dv">100</span>, <span class="ch">\B</span> <span class="dv">20</span>})
(replacements <span class="ch">\B</span>) <span class="co">;=> 20</span></code></pre>
<p>You can now write the <code>(rank card)</code> function.</p>
<section class="alert alert-success"><h3>
Exercise 2
</h3>
<p>Write the function <code>(rank card)</code> which takes a single card and returns the rank as a number between 2 and 14.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(rank <span class="st">"2H"</span>) <span class="co">;=> 2</span>
(rank <span class="st">"4S"</span>) <span class="co">;=> 4</span>
(rank <span class="st">"TS"</span>) <span class="co">;=> 10</span>
(rank <span class="st">"JS"</span>) <span class="co">;=> 11</span>
(rank <span class="st">"QS"</span>) <span class="co">;=> 12</span>
(rank <span class="st">"KS"</span>) <span class="co">;=> 13</span>
(rank <span class="st">"AS"</span>) <span class="co">;=> 14</span></code></pre>
</section>
</section>
<section id="some-additional-functions" class="level2">
<h2>Some additional functions</h2>
<p>Here’s a couple of functions that should prove useful.</p>
<p><code>(frequencies sequence)</code> is used to see how many times an element appears in a sequence. It returns a map where elements are mapped to their appearance counts:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(frequencies [<span class="dv">4</span> <span class="dv">7</span> <span class="dv">7</span> <span class="dv">4</span> <span class="dv">7</span>]) <span class="co">;=> {4 2, 7 3}</span></code></pre>
<p>In this case, we had three sevens and two fours.</p>
<p>If you are only interested in the keys or values of a map, you can get them with <code>(keys a-map)</code> and <code>(vals a-map)</code>:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">vals</span> (frequencies [<span class="dv">4</span> <span class="dv">7</span> <span class="dv">7</span> <span class="dv">4</span> <span class="dv">7</span>]))
<span class="co">;=> (2 3)</span>
<span class="co">; ^-- now that looks a lot like a full house</span></code></pre>
<p><code>(max num1 num2 num3 ...)</code> returns its largest parameter and <code>(min num1 num2 num3 ...)</code> returns its smallest paremeter.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">max</span> <span class="dv">1</span> <span class="dv">5</span> <span class="dv">4</span> <span class="dv">2</span>) <span class="co">;=> 5</span>
(<span class="kw">min</span> <span class="dv">1</span> <span class="dv">5</span> <span class="dv">4</span> <span class="dv">2</span>) <span class="co">;=> 1</span></code></pre>
<p>But what should you do if you have a sequence of numbers, like the vector <code>[1 -4 2 3 5]</code>, and you want its smallest or largest value? There is a very useful special form called <code>apply</code> for this: <code>(apply function parameter-sequence)</code> calls <code>function</code> with the parameters from <code>parameter-sequence</code>.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">apply</span> <span class="kw">str</span> [<span class="st">"Over "</span> <span class="dv">9000</span> <span class="st">"!"</span>])
<span class="co">;=> (str "Over " 9000 "!")</span>
<span class="co">;=> "Over 9000!"</span></code></pre>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">apply</span> <span class="kw">max</span> [<span class="dv">5</span> <span class="dv">3</span> <span class="dv">2</span>])
<span class="co">;=> (max 5 3 2)</span>
<span class="co">;=> 5</span></code></pre>
<p>That’s quite a lot to remember, but these should provide useful when detecting different hands. If you get stuck, the functions introduced above might help.</p>
</section>
<section id="hands" class="level2">
<h2>Hands</h2>
<p>If you don’t remember a hand, the <a href="http://en.wikipedia.org/wiki/Poker_hands">Poker hands article</a> at Wikipedia has them listed and explained.</p>
<p>Our representation for a poker hand is simply a vector of cards:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">def</span><span class="fu"> high-seven </span>[<span class="st">"2H"</span> <span class="st">"3S"</span> <span class="st">"4C"</span> <span class="st">"5C"</span> <span class="st">"7D"</span>])</code></pre>
<p>Here’s a bunch of hands to use for testing:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">def</span><span class="fu"> high-seven </span>[<span class="st">"2H"</span> <span class="st">"3S"</span> <span class="st">"4C"</span> <span class="st">"5C"</span> <span class="st">"7D"</span>])
(<span class="kw">def</span><span class="fu"> pair-hand </span>[<span class="st">"2H"</span> <span class="st">"2S"</span> <span class="st">"4C"</span> <span class="st">"5C"</span> <span class="st">"7D"</span>])
(<span class="kw">def</span><span class="fu"> two-pairs-hand </span>[<span class="st">"2H"</span> <span class="st">"2S"</span> <span class="st">"4C"</span> <span class="st">"4D"</span> <span class="st">"7D"</span>])
(<span class="kw">def</span><span class="fu"> three-of-a-kind-hand </span>[<span class="st">"2H"</span> <span class="st">"2S"</span> <span class="st">"2C"</span> <span class="st">"4D"</span> <span class="st">"7D"</span>])
(<span class="kw">def</span><span class="fu"> four-of-a-kind-hand </span>[<span class="st">"2H"</span> <span class="st">"2S"</span> <span class="st">"2C"</span> <span class="st">"2D"</span> <span class="st">"7D"</span>])
(<span class="kw">def</span><span class="fu"> straight-hand </span>[<span class="st">"2H"</span> <span class="st">"3S"</span> <span class="st">"6C"</span> <span class="st">"5D"</span> <span class="st">"4D"</span>])
(<span class="kw">def</span><span class="fu"> low-ace-straight-hand </span>[<span class="st">"2H"</span> <span class="st">"3S"</span> <span class="st">"4C"</span> <span class="st">"5D"</span> <span class="st">"AD"</span>])
(<span class="kw">def</span><span class="fu"> high-ace-straight-hand </span>[<span class="st">"TH"</span> <span class="st">"AS"</span> <span class="st">"QC"</span> <span class="st">"KD"</span> <span class="st">"JD"</span>])
(<span class="kw">def</span><span class="fu"> flush-hand </span>[<span class="st">"2H"</span> <span class="st">"4H"</span> <span class="st">"5H"</span> <span class="st">"9H"</span> <span class="st">"7H"</span>])
(<span class="kw">def</span><span class="fu"> full-house-hand </span>[<span class="st">"2H"</span> <span class="st">"5D"</span> <span class="st">"2D"</span> <span class="st">"2C"</span> <span class="st">"5S"</span>])
(<span class="kw">def</span><span class="fu"> straight-flush-hand </span>[<span class="st">"2H"</span> <span class="st">"3H"</span> <span class="st">"6H"</span> <span class="st">"5H"</span> <span class="st">"4H"</span>])
(<span class="kw">def</span><span class="fu"> low-ace-straight-flush-hand </span>[<span class="st">"2D"</span> <span class="st">"3D"</span> <span class="st">"4D"</span> <span class="st">"5D"</span> <span class="st">"AD"</span>])
(<span class="kw">def</span><span class="fu"> high-ace-straight-flush-hand </span>[<span class="st">"TS"</span> <span class="st">"AS"</span> <span class="st">"QS"</span> <span class="st">"KS"</span> <span class="st">"JS"</span>])</code></pre>
<section class="alert alert-success"><h3>
Exercise 3
</h3>
<p>Write the function <code>(pair? hand)</code> that returns <code>true</code> if there is a pair in <code>hand</code> and <code>false</code> if there is no pair in <code>hand</code>.</p>
<pre><code>(pair? pair-hand) ;=> true
(pair? high-seven) ;=> false</code></pre>
</section>
<section class="alert alert-success"><h3>
Exercise 4
</h3>
<p>Write the function <code>(three-of-a-kind? hand)</code> that returns <code>true</code> if the hand contains a three of a kind.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(three-of-a-kind? two-pairs-hand) <span class="co">;=> false</span>
(three-of-a-kind? three-of-a-kind-hand) <span class="co">;=> true</span></code></pre>
</section>
<section class="alert alert-success"><h3>
Exercise 5
</h3>
<p>Write the function <code>(four-of-a-kind? hand)</code> that returns <code>true</code> if the hand contains a four of a kind.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(four-of-a-kind? two-pairs-hand) <span class="co">;=> false</span>
(four-of-a-kind? four-of-a-kind-hand) <span class="co">;=> true</span></code></pre>
</section>
<section class="alert alert-success"><h3>
Exercise 6
</h3>
<p>Write the function <code>(flush? hand)</code> that returns <code>true</code> if the hand is a flush.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(flush? pair-hand) <span class="co">;=> false</span>
(flush? flush-hand) <span class="co">;=> true)</span></code></pre>
</section>
<p><code>(sort a-seq)</code> returns a sequence with the elements of <code>a-seq</code> in a sorted order.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">sort</span> [<span class="dv">5</span> -<span class="dv">1</span> <span class="dv">3</span> <span class="dv">17</span> -<span class="dv">10</span>]) <span class="co">;=> (-10 -1 3 5 17)</span>
(<span class="kw">sort</span> [<span class="dv">6</span> <span class="dv">4</span> <span class="dv">5</span> <span class="dv">7</span> <span class="dv">3</span>]) <span class="co">;=> (3 4 5 6 7)</span>
<span class="co">; ^</span>
<span class="co">; |</span>
<span class="co">;kind of looks like a straight---</span></code></pre>
<p><code>(range lower-bound upper-bound)</code> takes two integers and returns a sequence with all integers from <code>lower-bound</code> to <code>upper-bound</code>, but does not include <code>upper-bound</code>.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">range</span> <span class="dv">1</span> <span class="dv">5</span>) <span class="co">;=> (1 2 3 4)</span>
(<span class="kw">range</span> <span class="dv">5</span>) <span class="co">;=> (0 1 2 3 4)</span></code></pre>
<p>You can test for equality between sequences with <code>=</code>.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">=</span> [<span class="dv">3</span> <span class="dv">4</span> <span class="dv">5</span> <span class="dv">6</span> <span class="dv">7</span>] (<span class="kw">range</span> <span class="dv">3</span> (<span class="kw">+</span> <span class="dv">3</span> <span class="dv">5</span>)))
<span class="co">;=> (= [3 4 5 6 7]</span>
<span class="co">; (3 4 5 6 7))</span>
<span class="co">;=> (and (= 3 3) (= 4 4) (= 5 5) (= 6 6) (= 7 7))</span>
<span class="co">;=> true</span>
(<span class="kw">=</span> [<span class="dv">1</span> <span class="dv">2</span> <span class="dv">3</span>] (<span class="kw">seq</span> [<span class="dv">1</span> <span class="dv">2</span>])) <span class="co">;=> false</span></code></pre>
<p>Two sequences are equal if their elements are equal and in the same order.</p>
<section class="alert alert-success"><h3>
Exercise 7
</h3>
<p>Write the function <code>(full-house? hand)</code> that returns <code>true</code> if <code>hand</code> is a full house, and otherwise <code>false</code>.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(full-house? three-of-a-kind-hand) <span class="co">;=> false</span>
(full-house? full-house-hand) <span class="co">;=> true</span></code></pre>
</section>
<section class="alert alert-success"><h3>
Exercise 8
</h3>
<p>Write the function <code>(two-pairs? hand)</code> that return <code>true</code> if <code>hand</code> has two pairs, and otherwise <code>false</code>.</p>
<p>Note that a four of a kind is also two pairs.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(two-pairs? two-pairs-hand) <span class="co">;=> true</span>
(two-pairs? pair-hand) <span class="co">;=> false</span>
(two-pairs? four-of-a-kind-hand) <span class="co">;=> true</span></code></pre>
</section>
<p>In a straight, an ace is accepted as either 1 or 14, so both of the following hands have a straight:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">[<span class="st">"2H"</span> <span class="st">"3S"</span> <span class="st">"4C"</span> <span class="st">"5D"</span> <span class="st">"AD"</span>]
[<span class="st">"TH"</span> <span class="st">"AS"</span> <span class="st">"QC"</span> <span class="st">"KD"</span> <span class="st">"JD"</span>]</code></pre>
<p>A useful function here is <code>(replace replace-map a-seq)</code>. It takes a map of replacements and a sequence and replaces the keys of <code>replace-map</code> in <code>a-seq</code> with their associated values.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">replace</span> {<span class="dv">1</span> <span class="st">"a"</span>, <span class="dv">2</span> <span class="st">"b"</span>} [<span class="dv">1</span> <span class="dv">2</span> <span class="dv">3</span> <span class="dv">4</span>]) <span class="co">;=> ["a" "b" 3 4]</span></code></pre>
<p>Finally we can implement <code>straight?</code>.</p>
<section class="alert alert-success"><h3>
Exercise 9
</h3>
<p>Write the function <code>(straight? hand)</code> that returns <code>true</code> if <code>hand</code> is a straight, and otherwise <code>false</code>.</p>
<p>Note that an ace is accepted both as a rank 1 and rank 14 card in straights.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(straight? two-pairs-hand) <span class="co">;=> false</span>
(straight? straight-hand) <span class="co">;=> true</span>
(straight? low-ace-straight-hand) <span class="co">;=> true</span>
(straight? [<span class="st">"2H"</span> <span class="st">"2D"</span> <span class="st">"3H"</span> <span class="st">"4H"</span> <span class="st">"5H"</span>]) <span class="co">;=> false</span>
(straight? high-ace-straight-hand) <span class="co">;=> true</span></code></pre>
</section>
<p>And finally, there’s straight flush. This shouldn’t be very difficult after having already defined flush and straight.</p>
<section class="alert alert-success"><h3>
Exercise 10
</h3>
<p>Write the function <code>(straight-flush? hand)</code> which returns <code>true</code> if the hand is a straight flush, that is both a straight and a flush, and otherwise <code>false</code>.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(straight-flush? straight-hand) <span class="co">;=> false</span>
(straight-flush? flush-hand) <span class="co">;=> false</span>
(straight-flush? straight-flush-hand) <span class="co">;=> true</span>
(straight-flush? low-ace-straight-flush-hand) <span class="co">;=> true</span>
(straight-flush? high-ace-straight-flush-hand) <span class="co">;=> true</span></code></pre>
</section>
<p>Now that we have functions that check for each hand type, it would be nice to be able to assign a value to each hand. We’re going to use the following values:</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Hand</th>
<th style="text-align: left;">Value</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">High card (nothing)</td>
<td style="text-align: left;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">Pair</td>
<td style="text-align: left;">1</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Two pairs</td>
<td style="text-align: left;">2</td>
</tr>
<tr class="even">
<td style="text-align: left;">Three of a kind</td>
<td style="text-align: left;">3</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Straight</td>
<td style="text-align: left;">4</td>
</tr>
<tr class="even">
<td style="text-align: left;">Flush</td>
<td style="text-align: left;">5</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Full house</td>
<td style="text-align: left;">6</td>
</tr>
<tr class="even">
<td style="text-align: left;">Four of a kind</td>
<td style="text-align: left;">7</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Straight flush</td>
<td style="text-align: left;">8</td>
</tr>
</tbody>
</table>
<section class="alert alert-success"><h3>
Exercise 11
</h3>
<p>Write the function <code>(value hand)</code>, which returns the value of a hand according to the table above.</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(value high-seven) <span class="co">;=> 0</span>
(value pair-hand) <span class="co">;=> 1</span>
(value two-pairs-hand) <span class="co">;=> 2</span>
(value three-of-a-kind-hand) <span class="co">;=> 3</span>
(value straight-hand) <span class="co">;=> 4</span>
(value flush-hand) <span class="co">;=> 5</span>
(value full-house-hand) <span class="co">;=> 6</span>
(value four-of-a-kind-hand) <span class="co">;=> 7</span>
(value straight-flush-hand) <span class="co">;=> 8</span></code></pre>
<p>It might be helpful to add a checker <code>(high-card? hand)</code>:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">defn</span><span class="fu"> high-card</span>? [hand]
true) <span class="co">; All hands have a high card.</span></code></pre>
<p>You can create a sequence of <code>[matcher value]</code> pairs like so:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">let</span> [checkers #{[high-card? <span class="dv">0</span>] [pair? <span class="dv">1</span>]
[two-pairs? <span class="dv">2</span>] [three-of-a-kind? <span class="dv">3</span>]
[straight? <span class="dv">4</span>] [flush? <span class="dv">5</span>]
[full-house? <span class="dv">6</span>] [four-of-a-kind? <span class="dv">7</span>]
[straight-flush? <span class="dv">8</span>]}]
...)</code></pre>
<p>You can now use <code>filter</code>, <code>map</code> and <code>apply max</code> to get the highest value that a hand has. The function <code>second</code> can be useful. Remember to use <code>let</code> to give the intermediate results readable names.</p>
<pre class="clj"><code>(second [:i :am :a :sequence]) ;=> :am
(second [two-pairs? 2]) ;=> 2</code></pre>
</section>
</section>
<section id="data-representation-1" class="level2">
<h2>Data representation</h2>
<p>Our representation for poker hands is rather simple, but it allows us to use existing sequence and other functions to work with them. However, the current API is bound to the representation. This has the unfortunate consequence that we can not change the internal representation of cards or hands without changing the external API. There can be good reasons to change the internal representation, including efficiency.</p>
<p>No worries, this is fixable. Let’s create two functions for creating a card and creating a hand from the representation we already use:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(<span class="kw">defn</span><span class="fu"> hand </span>[a-hand]
a-hand)
(<span class="kw">defn</span><span class="fu"> card </span>[a-card]
a-card)</code></pre>
<p>Which you would use like this:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(card <span class="st">"2H"</span>)
(hand [<span class="st">"AH"</span> <span class="st">"AC"</span> <span class="st">"AD"</span> <span class="st">"AS"</span> <span class="st">"4H"</span>])</code></pre>
<p>While these functions in their current form don’t do anything, it allows us to change the internal representation if we want to. You would use the existing functions like this:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(rank (card <span class="st">"2H"</span>)) <span class="co">;=> 2</span>
(value (hand [<span class="st">"2H"</span> <span class="st">"3H"</span> <span class="st">"4H"</span> <span class="st">"5H"</span> <span class="st">"6H"</span>])) <span class="co">;=> 4</span></code></pre>
<p>Now the functions <code>card</code>, <code>hand</code>, <code>rank</code> and <code>suit</code> form the abstraction for a playing card. They are the only functions that need to know about the internal representatin of the card. This means that we would now be able to change the internal representation to something like this, if we wanted to:</p>
<pre class="sourceCode clojure"><code class="sourceCode clojure">(card <span class="st">"2H"</span>) <span class="co">;=> {:rank 2, :suit :hearts}</span></code></pre>
</section>
<section id="whats-next" class="level2">
<h2>What’s Next</h2>
<p>Now that you have mastered evaluating poker hands, it’s time to understand recursion.</p>
<p><a href="http://iloveponies.github.io/120-hour-epic-sax-marathon/p-p-p-pokerface.html/predicates.html">Predicates →</a></p>
</section>
<footer>
<p>
© iloveponies
<span style="float: right">
<a href="http://iloveponies.github.io/120-hour-epic-sax-marathon/p-p-p-pokerface.html/mailto:[email protected]">questions?</a>
</span>
</p>
</footer>
</div>
</div>
</body></html>