This repository has been archived by the owner on Sep 29, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
667 lines (649 loc) · 244 KB
/
index.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
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link type="text/plain" rel="author" href="../humans.txt">
<link rel="stylesheet" id="businessx-fonts-css" href="https://fonts.googleapis.com/css?family=Poppins%3A400%2C700%2C300%7CRoboto%3A400%2C300%2C700%2C900%2C300italic%2C400italic%2C700italic&#038;subset=latin%2Clatin-ext"
type="text/css" media="all">
<link rel="stylesheet" href="assets/css/main.css">
<script src="assets/js/main.js" charset="utf-8"></script>
<title>Data = Tech for Good Hub</title>
</head>
<body class="page-template-default page no-sidebar sticky-logo menu-ff">
<header class="main-header mh-fixed">
<div class="main-header-inner-wrap">
<div class="logo-wrap"><a class="logo-text" href="index.html" rel="home">Tech For Good</a></div>
<nav class="main-menu-wrap" role="navigation" aria-label="Primary Menu">
<ul class="main-menu">
<li><a href="index.html">2018 Analysis</a></li>
<li><a href="analysis/2017.html">2017 Analysis</a></li>
<li><a href="http://techforgoodhub.co.uk/">Main Site <i class="fa fa-external-link"></i></a></li>
<li class="close-menu"><a class="ac-btn btn-small ac-btn-mobile-close" href="#"><i class="fa fa-close"></i></a></li>
</ul>
</nav>
<div class="main-header-right">
<div class="main-header-btns"><span class="ac-btn-h ac-btn-mobile ac-btn-mob"><a class="ac-btn-mobile-menu"
href="#"><i class="fa fa-bars"></i></a></span></div>
</div>
</div>
</header>
<header id="top-header-" class="grid-wrap page-heading heading-full-width clearfix">
<div class="grid-overlay"></div>
<div class="sec-hs-elements ta-center" style="opacity: 1;">
<h1 class="hs-primary-large">Comic Relief Tech for Good<br>applications analysis</h1>
<div class="divider"></div>
<p class="section-description fs-large fader fader-on"><a href="https://drkane.co.uk/">David Kane</a> & <a href="https://wearecast.org.uk/">CAST</a><br>July
2018</p>
</div>
</header>
<section id="content" class="grid-wrap" role="main">
<div class="grid-container grid-1 padding-small clearfix">
<main id="main" class="grid-col grid-posts-col site-page clearfix" role="main">
<article id="" class="page type-page status-publish hentry clearfix post-single">
<p>This is an analysis of applications received by <a href="http://www.comicrelief.com/">Comic Relief</a>
and <a href="https://www.phf.org.uk/">Paul Hamlyn Foundation</a> to the <a href="https://techforgoodhub.co.uk/">Tech
for Good</a> funding stream in 2018/19.
The programme seeks to fund projects which use digital technology to address social challenges.</p>
<p>It was designed to include a simple one stage application process, which consisted of a publicly
available video proposal, and a budget outline. This attracted 119 applications which were
reviewed by staff at Comic Relief and Paul Hamlyn Foundation to create a longlist of the 50
strongest applications, and a shortlist of 22 to be assessed. </p>
<p>The analysis aims to answer five key questions, including comparisons between the applications that
were successfully funded and those that were longlisted. The key questions are:</p>
<ul>
<li>What types of technology are being developed?</li>
<li>What approaches are adopted?</li>
<li>What is the focus of the application? (Linking these to the key themes for <a href="http://www.comicrelief.com/grants/strategy">Comic
Relief</a>)</li>
<li>Who are the target audience for the projects?</li>
<li>What stage of development are the projects?</li>
</ul>
<p>Additionally, the analysis presents data on the types of organisations applying for funding, the
size of those applicants, and geographical analysis of the locations of the applicants.</p>
<h2>Key findings</h2>
<ul>
<li>Applications generally came from registered charities, but one in ten applications came from
Community Interest Companies.</li>
<li>The majority of applicants had income between £100k and £10m.</li>
<li>One third of applicants are based in London.</li>
<li>Most applications aim to provide services, information or advice directly to beneficiaries.</li>
<li>The largest focus of applications was health and wellbeing.</li>
<li>Most applications were at the concept or build stage of development.</li>
<li>85 of applicants have not received funding from either funder before.</li>
</ul>
<h2>Methodology</h2>
<p>Data on the applications received to the programme was available in a spreadsheet format, with some
answers to the research questions. The data was then supplemented with additional data:</p>
<ul>
<li>The applicants were matched to charity numbers to allow charity registration data, such as the
organisations' income and location, to be used. Charity data was used from <a href="https://findthatcharity.uk/">findthatcharity</a>.</li>
<li>Applicants were also matched to company numbers where a charity number was not available. Company
data was then attached using the Companies House information service.</li>
<li>Location data was added based on the registered postcode of organisations.</li>
<li>Organisations were checked against public lists of those previously funded by Comic Relief and
Paul Hamlyn Foundation, released under the <a href="https://www.threesixtygiving.org/">360 Giving
initiative</a>.</li>
</ul>
<p>A small number of applicant organisations could not be reconciled either to companies or charities.
These organisations were manually examined to determine their organisation type, with a small number
where the type of organisation was not able to be discovered.</p>
<p>As organisations could select multiple categories for a particular question (such as type of
technology used), totals in these charts and tables may be greater than the total number of
applications.</p>
<p>Where possible, the data has been compared to similar data from 2017. When comparing the two it is
important to take into account the different data collection methods. In 2017 the data was mainly
gathered by researchers tagging the video and related textual material, whereas this year the
applicants themselves have answered questions relating to what the work will look at.</p>
<h2>Analysis of applicants</h2>
<h3>Applications by status</h3>
<p>Of the 119 organisations, 69 were unsuccessful, 50
were included on the publicly available longlist, and of these 22 were
shortlisted and assessed of which 13 were funded.</p>
<figure>
<figcaption>Final status of applications</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9zdGF0dXNfcGllJz48L2NhbnZhcz4NCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnRfc3RhdHVzX3BpZScpLmdldENvbnRleHQoJzJkJyk7DQogICAgICAgICAgICBjdHguY2FudmFzLndpZHRoICA9IDgwMCAtICguMSAqIDgwMCk7DQogICAgICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDQyMCAtICguMTUgKiA0MjApOw0KICAgICAgICAgICAgdmFyIG15TmV3Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LHsgdHlwZTogJ3BpZScsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnVW5zdWNjZXNzZnVsJywNCiAgICAgICAgJ1Vuc3VjY2Vzc2Z1bCAtIGxvbmdsaXN0ZWQnLA0KICAgICAgICAnRnVuZGVkJywNCiAgICAgICAgJ1Vuc3VjY2Vzc2Z1bCAtIHNob3J0bGlzdGVkJw0KICAgIF0sDQogICAgJ2RhdGFzZXRzJzogWw0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnQXBwbGljYXRpb25zJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDY5LA0KICAgICAgICAgICAgICAgIDI4LA0KICAgICAgICAgICAgICAgIDEzLA0KICAgICAgICAgICAgICAgIDkNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogWw0KICAgICAgICAgICAgICAgICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgICAgICdyZ2IoMCwgMTI4LCAxNTYpJywNCiAgICAgICAgICAgICAgICAncmdiKDIzNCw3Nyw5NCknLA0KICAgICAgICAgICAgICAgICdyZ2IoMTc4LCAyMjksIDk0KScNCiAgICAgICAgICAgIF0NCiAgICAgICAgfQ0KICAgIF0NCn0sIG9wdGlvbnM6IHsNCiAgICAncmVzcG9uc2l2ZSc6IGZhbHNlLA0KICAgICdsZWdlbmQnOiB7DQogICAgICAgICdsYWJlbHMnOiB7DQogICAgICAgICAgICAnZm9udFNpemUnOiAxNiwNCiAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgfSwNCiAgICAgICAgJ3Bvc2l0aW9uJzogJ2JvdHRvbScNCiAgICB9DQp9IH0pOw0KICAgICAgICA8L3NjcmlwdD4NCiAgICA="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h3>Applications by status and organisation type</h3>
<p>95 of the applications (80%) were by
registered charities, with a further 14 by
Community Interest Companies. The organisation type of applicants could not
be determined. Charities were slightly more likely than other types to be
longlisted, and make up 11 of the 13 funded
applications.</p>
<figure>
<figcaption>Applicants by organisation type and status</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9vcmdfdHlwZV9zdGF0dXMnPjwvY2FudmFzPg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydF9vcmdfdHlwZV9zdGF0dXMnKS5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy53aWR0aCAgPSA4MDAgLSAoLjEgKiA4MDApOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy5oZWlnaHQgPSA1MDAgLSAoLjE1ICogNTAwKTsNCiAgICAgICAgICAgIHZhciBteU5ld0NoYXJ0ID0gbmV3IENoYXJ0KGN0eCx7IHR5cGU6ICdob3Jpem9udGFsQmFyJywgZGF0YTogew0KICAgICdsYWJlbHMnOiBbDQogICAgICAgICdDaGFyaXR5JywNCiAgICAgICAgJ0NvbW11bml0eSBJbnRlcmVzdCBDb21wYW55JywNCiAgICAgICAgJ0NvbXBhbnkgTGltaXRlZCBieSBHdWFyYW50ZWUnLA0KICAgICAgICAnQ29tcGFueSBsaW1pdGVkIGJ5IHNoYXJlcycsDQogICAgICAgICdSZWdpc3RlcmVkIFNvY2lldHknLA0KICAgICAgICAnVW5pdmVyc2l0eScNCiAgICBdLA0KICAgICdkYXRhc2V0cyc6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ0Z1bmRlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyMzQsNzcsOTQpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDExLjAsDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDAuMCwNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDAuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMTc4LCAyMjksIDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA5LjAsDQogICAgICAgICAgICAgICAgMC4wLA0KICAgICAgICAgICAgICAgIDAuMCwNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMC4wLA0KICAgICAgICAgICAgICAgIDAuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMjIuMCwNCiAgICAgICAgICAgICAgICAzLjAsDQogICAgICAgICAgICAgICAgMi4wLA0KICAgICAgICAgICAgICAgIDEuMCwNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMC4wDQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdVbnN1Y2Nlc3NmdWwnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgNTMuMCwNCiAgICAgICAgICAgICAgICAxMC4wLA0KICAgICAgICAgICAgICAgIDMuMCwNCiAgICAgICAgICAgICAgICAxLjAsDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDEuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9DQogICAgXQ0KfSwgb3B0aW9uczogew0KICAgICdyZXNwb25zaXZlJzogZmFsc2UsDQogICAgJ2xlZ2VuZCc6IHsNCiAgICAgICAgJ2xhYmVscyc6IHsNCiAgICAgICAgICAgICdmb250U2l6ZSc6IDE2LA0KICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICB9LA0KICAgICAgICAncG9zaXRpb24nOiAnYm90dG9tJw0KICAgIH0sDQogICAgJ3NjYWxlcyc6IHsNCiAgICAgICAgJ3hBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJywNCiAgICAgICAgICAgICAgICAgICAgJ21pbic6IDANCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICdzdGFja2VkJzogdHJ1ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAneUF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h4>Comparison with previous year</h4>
<p>The pattern of organisations is roughly the same between 2017 and 2018, with a small increase
in the proportion of charities applying and a decrease in Community Interest Companies and other
organisation types.</p>
<figure>
<figcaption>Organisation type of applicants</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9vcmdfdHlwZV9jb21wYXJlJz48L2NhbnZhcz4NCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnRfb3JnX3R5cGVfY29tcGFyZScpLmdldENvbnRleHQoJzJkJyk7DQogICAgICAgICAgICBjdHguY2FudmFzLndpZHRoICA9IDgwMCAtICguMSAqIDgwMCk7DQogICAgICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDgwMCAtICguMTUgKiA4MDApOw0KICAgICAgICAgICAgdmFyIG15TmV3Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LHsgdHlwZTogJ2hvcml6b250YWxCYXInLCBkYXRhOiB7DQogICAgJ2xhYmVscyc6IFsNCiAgICAgICAgJ0NoYXJpdHknLA0KICAgICAgICAnQ29tbXVuaXR5IEludGVyZXN0IENvbXBhbnknLA0KICAgICAgICAnQ29tcGFueSBMaW1pdGVkIGJ5IEd1YXJhbnRlZScsDQogICAgICAgICdDb21wYW55IGxpbWl0ZWQgYnkgc2hhcmVzJywNCiAgICAgICAgJ0hvdXNpbmcgQXNzb2NpYXRpb24nLA0KICAgICAgICAnT3ZlcnNlYXMnLA0KICAgICAgICAnUmVnaXN0ZXJlZCBTb2NpZXR5JywNCiAgICAgICAgJ1VuaXZlcnNpdHknLA0KICAgICAgICAnVW5rbm93bicNCiAgICBdLA0KICAgICdkYXRhc2V0cyc6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJzIwMTcnLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgODMsDQogICAgICAgICAgICAgICAgMjMsDQogICAgICAgICAgICAgICAgNywNCiAgICAgICAgICAgICAgICAxMSwNCiAgICAgICAgICAgICAgICAxLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAzLA0KICAgICAgICAgICAgICAgIDEyDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjM0LDc3LDk0KScNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJzIwMTgnLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgOTUsDQogICAgICAgICAgICAgICAgMTQsDQogICAgICAgICAgICAgICAgNSwNCiAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMA0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDAsIDEyOCwgMTU2KScNCiAgICAgICAgfQ0KICAgIF0NCn0sIG9wdGlvbnM6IHsNCiAgICAncmVzcG9uc2l2ZSc6IGZhbHNlLA0KICAgICdsZWdlbmQnOiB7DQogICAgICAgICdsYWJlbHMnOiB7DQogICAgICAgICAgICAnZm9udFNpemUnOiAxNiwNCiAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgfSwNCiAgICAgICAgJ3Bvc2l0aW9uJzogJ2JvdHRvbScNCiAgICB9LA0KICAgICdzY2FsZXMnOiB7DQogICAgICAgICd4QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IHRydWUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMjAsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicsDQogICAgICAgICAgICAgICAgICAgICdtaW4nOiAwDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAneUF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:880px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h3>Size of organisation</h3>
<p>Size of applicants is based on their income provided to Comic Relief on application. Of the
119 applications with income data, 19 had an income of
more than £10 million.</p>
<figure>
<figcaption>Applicants by size and status</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9vcmdfc2l6ZSc+PC9jYW52YXM+DQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0X29yZ19zaXplJykuZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMud2lkdGggID0gODAwIC0gKC4xICogODAwKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gNTAwIC0gKC4xNSAqIDUwMCk7DQogICAgICAgICAgICB2YXIgbXlOZXdDaGFydCA9IG5ldyBDaGFydChjdHgseyB0eXBlOiAnaG9yaXpvbnRhbEJhcicsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnVW5rbm93bicsDQogICAgICAgICdVbmRlciAxMGsnLA0KICAgICAgICAnMTBrIC0gMTAwaycsDQogICAgICAgICcxMDBrIC0gMW0nLA0KICAgICAgICAnMW0gLSAxMG0nLA0KICAgICAgICAnT3ZlciAxMG0nDQogICAgXSwNCiAgICAnZGF0YXNldHMnOiBbDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdGdW5kZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjM0LDc3LDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAxLjAsDQogICAgICAgICAgICAgICAgMC4wLA0KICAgICAgICAgICAgICAgIDIuMCwNCiAgICAgICAgICAgICAgICAyLjAsDQogICAgICAgICAgICAgICAgNC4wLA0KICAgICAgICAgICAgICAgIDQuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMTc4LCAyMjksIDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMC4wLA0KICAgICAgICAgICAgICAgIDAuMCwNCiAgICAgICAgICAgICAgICA0LjAsDQogICAgICAgICAgICAgICAgNC4wLA0KICAgICAgICAgICAgICAgIDEuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDEuMCwNCiAgICAgICAgICAgICAgICA0LjAsDQogICAgICAgICAgICAgICAgMTAuMCwNCiAgICAgICAgICAgICAgICA4LjAsDQogICAgICAgICAgICAgICAgNC4wDQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdVbnN1Y2Nlc3NmdWwnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgNi4wLA0KICAgICAgICAgICAgICAgIDIuMCwNCiAgICAgICAgICAgICAgICAxMC4wLA0KICAgICAgICAgICAgICAgIDIzLjAsDQogICAgICAgICAgICAgICAgMTguMCwNCiAgICAgICAgICAgICAgICAxMC4wDQogICAgICAgICAgICBdDQogICAgICAgIH0NCiAgICBdDQp9LCBvcHRpb25zOiB7DQogICAgJ3Jlc3BvbnNpdmUnOiBmYWxzZSwNCiAgICAnbGVnZW5kJzogew0KICAgICAgICAnbGFiZWxzJzogew0KICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgIH0sDQogICAgICAgICdwb3NpdGlvbic6ICdib3R0b20nDQogICAgfSwNCiAgICAnc2NhbGVzJzogew0KICAgICAgICAneEF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnLA0KICAgICAgICAgICAgICAgICAgICAnbWluJzogMA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3N0YWNrZWQnOiB0cnVlDQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICd5QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdDQogICAgfQ0KfSB9KTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAg"
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<table>
<thead>
<tr>
<th align="left"></th>
<th style="text-align:right;">Funded</th>
<th style="text-align:right;">Unsuccessful - shortlisted</th>
<th style="text-align:right;">Unsuccessful - longlisted</th>
<th style="text-align:right;">Unsuccessful</th>
<th style="text-align:right;">All</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Unknown</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">8</td>
</tr>
<tr>
<td align="left">Under 10k</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">3</td>
</tr>
<tr>
<td align="left">10k - 100k</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">10</td>
<td style="text-align:right;">16</td>
</tr>
<tr>
<td align="left">100k - 1m</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">10</td>
<td style="text-align:right;">23</td>
<td style="text-align:right;">39</td>
</tr>
<tr>
<td align="left">1m - 10m</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">18</td>
<td style="text-align:right;">34</td>
</tr>
<tr>
<td align="left">Over 10m</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">10</td>
<td style="text-align:right;">19</td>
</tr>
<tr>
<td align="left">All</td>
<td style="text-align:right;">13</td>
<td style="text-align:right;">9</td>
<td style="text-align:right;">28</td>
<td style="text-align:right;">69</td>
<td style="text-align:right;">119</td>
</tr>
</tbody>
</table>
<h4>Comparison with previous year</h4>
<p>Compared to previous years, the proportion of organisations with under £1m income has risen, although
it is difficult to directly compare data as the 2017 figures relate to only registered charities.</p>
<figure>
<figcaption>Organisation size of applicants</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9vcmdfc2l6ZV9jb21wYXJlJz48L2NhbnZhcz4NCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnRfb3JnX3NpemVfY29tcGFyZScpLmdldENvbnRleHQoJzJkJyk7DQogICAgICAgICAgICBjdHguY2FudmFzLndpZHRoICA9IDgwMCAtICguMSAqIDgwMCk7DQogICAgICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDUwMCAtICguMTUgKiA1MDApOw0KICAgICAgICAgICAgdmFyIG15TmV3Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LHsgdHlwZTogJ2hvcml6b250YWxCYXInLCBkYXRhOiB7DQogICAgJ2xhYmVscyc6IFsNCiAgICAgICAgJ1Vua25vd24nLA0KICAgICAgICAnVW5kZXIgMTBrJywNCiAgICAgICAgJzEwayAtIDEwMGsnLA0KICAgICAgICAnMTAwayAtIDFtJywNCiAgICAgICAgJzFtIC0gMTBtJywNCiAgICAgICAgJ092ZXIgMTBtJw0KICAgIF0sDQogICAgJ2RhdGFzZXRzJzogWw0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnMjAxNycsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMS4zLA0KICAgICAgICAgICAgICAgIDEwLjEsDQogICAgICAgICAgICAgICAgMjcuOCwNCiAgICAgICAgICAgICAgICA0My4wLA0KICAgICAgICAgICAgICAgIDE3LjcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyMzQsNzcsOTQpJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnMjAxOCcsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA2LjcsDQogICAgICAgICAgICAgICAgMi41LA0KICAgICAgICAgICAgICAgIDEzLjQsDQogICAgICAgICAgICAgICAgMzIuOCwNCiAgICAgICAgICAgICAgICAyOC42LA0KICAgICAgICAgICAgICAgIDE2LjANCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknDQogICAgICAgIH0NCiAgICBdDQp9LCBvcHRpb25zOiB7DQogICAgJ3Jlc3BvbnNpdmUnOiBmYWxzZSwNCiAgICAnbGVnZW5kJzogew0KICAgICAgICAnbGFiZWxzJzogew0KICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgIH0sDQogICAgICAgICdwb3NpdGlvbic6ICdib3R0b20nDQogICAgfSwNCiAgICAnc2NhbGVzJzogew0KICAgICAgICAneEF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnLA0KICAgICAgICAgICAgICAgICAgICAnbWluJzogMA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgJ3lBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMjAsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIF0NCiAgICB9DQp9IH0pOw0KICAgICAgICA8L3NjcmlwdD4NCiAgICA="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h3>Applicant region</h3>
<p>Around one-third of applicants (43) were based in London, according to the location provided with their
application data. The next largest region by number of applicants was the North West (14), followed by
South East (13). The largest organisations were more likely to be from London (40% of those with
more than £1m income are registered in London).</p>
<figure>
<figcaption>Applications by region and status</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9yZWdpb24nPjwvY2FudmFzPg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydF9yZWdpb24nKS5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy53aWR0aCAgPSA4MDAgLSAoLjEgKiA4MDApOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy5oZWlnaHQgPSA1MDAgLSAoLjE1ICogNTAwKTsNCiAgICAgICAgICAgIHZhciBteU5ld0NoYXJ0ID0gbmV3IENoYXJ0KGN0eCx7IHR5cGU6ICdob3Jpem9udGFsQmFyJywgZGF0YTogew0KICAgICdsYWJlbHMnOiBbDQogICAgICAgICdMb25kb24nLA0KICAgICAgICAnTm9ydGggV2VzdCcsDQogICAgICAgICdTb3V0aCBFYXN0JywNCiAgICAgICAgJ1NvdXRoIFdlc3QnLA0KICAgICAgICAnU2NvdGxhbmQnLA0KICAgICAgICAnRWFzdCBNaWRsYW5kcycsDQogICAgICAgICdFYXN0IG9mIEVuZ2xhbmQnLA0KICAgICAgICAnV2VzdCBNaWRsYW5kcycsDQogICAgICAgICdXYWxlcycsDQogICAgICAgICdZb3Jrc2hpcmUgYW5kIFRoZSBIdW1iZXInLA0KICAgICAgICAnTm9ydGggRWFzdCcNCiAgICBdLA0KICAgICdkYXRhc2V0cyc6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ0Z1bmRlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyMzQsNzcsOTQpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDYsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMTc4LCAyMjksIDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA1LA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAxLA0KICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDANCiAgICAgICAgICAgIF0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCAtIGxvbmdsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMCwgMTI4LCAxNTYpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDEzLA0KICAgICAgICAgICAgICAgIDUsDQogICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAgICAxLA0KICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgNCwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAxLA0KICAgICAgICAgICAgICAgIDENCiAgICAgICAgICAgIF0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyNTIsIDE1OCwgMTg1KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAxOSwNCiAgICAgICAgICAgICAgICA4LA0KICAgICAgICAgICAgICAgIDgsDQogICAgICAgICAgICAgICAgNywNCiAgICAgICAgICAgICAgICA2LA0KICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAgMywNCiAgICAgICAgICAgICAgICA0LA0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgNCwNCiAgICAgICAgICAgICAgICAyDQogICAgICAgICAgICBdDQogICAgICAgIH0NCiAgICBdDQp9LCBvcHRpb25zOiB7DQogICAgJ3Jlc3BvbnNpdmUnOiBmYWxzZSwNCiAgICAnbGVnZW5kJzogew0KICAgICAgICAnbGFiZWxzJzogew0KICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgIH0sDQogICAgICAgICdwb3NpdGlvbic6ICdib3R0b20nDQogICAgfSwNCiAgICAnc2NhbGVzJzogew0KICAgICAgICAneEF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnLA0KICAgICAgICAgICAgICAgICAgICAnbWluJzogMA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3N0YWNrZWQnOiB0cnVlDQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICd5QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdDQogICAgfQ0KfSB9KTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAg"
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<p>The digital nature of the projects does mean that the location of the applicant does not necessarily
tell us where the technology developed will actually be used.</p>
<figure>
<figcaption>Applicant locations</figcaption>
<iframe src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNTNjMDQ5MzAzOWRmNDJmMWJiZmUwNTU3NzRhYzFkNjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzUzYzA0OTMwMzlkZjQyZjFiYmZlMDU1Nzc0YWMxZDY1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF81M2MwNDkzMDM5ZGY0MmYxYmJmZTA1NTc3NGFjMWQ2NSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF81M2MwNDkzMDM5ZGY0MmYxYmJmZTA1NTc3NGFjMWQ2NScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTMuNjQ5MDQsLTEuNzg0MTZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMDZmZjdjY2I0ODU0NDc4ZThmMGExYjBlYzc4NzYyZTYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90b25lci97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzUzYzA0OTMwMzlkZjQyZjFiYmZlMDU1Nzc0YWMxZDY1KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2MiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTNjMDQ5MzAzOWRmNDJmMWJiZmUwNTU3NzRhYzFkNjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhYjI2YWEzNDM0ODRkMGU4MGNkN2E5MmI1NDA1ZDQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuOTI0NzA0LC0xLjQ3NDQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMmMzZmMwNTcxZjU0MGUzYTVmZGE2OTliMzBiNzA5NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMjNkZGFmMWEwMjQ0ZGNlYmU3NjlhZDY5YjkyZDE0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTIzZGRhZjFhMDI0NGRjZWJlNzY5YWQ2OWI5MmQxNDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1ldGhvZGlzdCBIb21lcyAgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMmMzZmMwNTcxZjU0MGUzYTVmZGE2OTliMzBiNzA5Ni5zZXRDb250ZW50KGh0bWxfYTIzZGRhZjFhMDI0NGRjZWJlNzY5YWQ2OWI5MmQxNDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWFiMjZhYTM0MzQ4NGQwZTgwY2Q3YTkyYjU0MDVkNDguYmluZFBvcHVwKHBvcHVwXzIyYzNmYzA1NzFmNTQwZTNhNWZkYTY5OWIzMGI3MDk2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkMDI4Zjk5YmI2ZjQxMDg5OGJlYjVhZTY4MjYzYWNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODI1ODkzLC0wLjE0MTM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lY2IzM2FmMzIxYzU0NDYwODY2NWI1ODhjZTFlMTY2NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yODYxY2JjMDg5OTM0OTIzOTQ4MzBiZTEyMjgwODY1NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjg2MWNiYzA4OTkzNDkyMzk0ODMwYmUxMjI4MDg2NTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNoYW5nZSwgR3JvdywgTGl2ZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VjYjMzYWYzMjFjNTQ0NjA4NjY1YjU4OGNlMWUxNjY2LnNldENvbnRlbnQoaHRtbF8yODYxY2JjMDg5OTM0OTIzOTQ4MzBiZTEyMjgwODY1NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85ZDAyOGY5OWJiNmY0MTA4OThiZWI1YWU2ODI2M2FjZS5iaW5kUG9wdXAocG9wdXBfZWNiMzNhZjMyMWM1NDQ2MDg2NjViNTg4Y2UxZTE2NjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGRhOGExN2E2Y2IyNGI2ZmEzZjU2YTRmZmQ3ODc4MzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4yMzYyODUsLTEuNDIzNTExXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YmVjYzM3MWI1M2M0YTA4ODQ3NzBlYTM3ZGE2MDNhNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81YjIwYzk2NjYzNTM0MTIyODhkNjk0ODU1NTk5ZTAyZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNWIyMGM5NjY2MzUzNDEyMjg4ZDY5NDg1NTU5OWUwMmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFydGhyaXRpcyBSZXNlYXJjaCBVSyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdiZWNjMzcxYjUzYzRhMDg4NDc3MGVhMzdkYTYwM2E1LnNldENvbnRlbnQoaHRtbF81YjIwYzk2NjYzNTM0MTIyODhkNjk0ODU1NTk5ZTAyZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84ZGE4YTE3YTZjYjI0YjZmYTNmNTZhNGZmZDc4NzgzOS5iaW5kUG9wdXAocG9wdXBfN2JlY2MzNzFiNTNjNGEwODg0NzcwZWEzN2RhNjAzYTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjhjYjRiZDkyNTNhNDVmYmJiZmM3NWRiMWQxOGUzYmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Ni4wNDY3NjQsLTMuNDE3OTc2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNzdhZWJkYTkyOGY0YTlmOGYzOGFiYjM1ZjMzY2I5MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NWJiOTVjZTU4NDg0NjkyYmRiNmNmZjMxYmM3YTRjYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDViYjk1Y2U1ODQ4NDY5MmJkYjZjZmYzMWJjN2E0Y2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBsYXlsaXN0IEZvciBMaWZlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDc3YWViZGE5MjhmNGE5ZjhmMzhhYmIzNWYzM2NiOTMuc2V0Q29udGVudChodG1sXzQ1YmI5NWNlNTg0ODQ2OTJiZGI2Y2ZmMzFiYzdhNGNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI4Y2I0YmQ5MjUzYTQ1ZmJiYmZjNzVkYjFkMThlM2JiLmJpbmRQb3B1cChwb3B1cF9kNzdhZWJkYTkyOGY0YTlmOGYzOGFiYjM1ZjMzY2I5Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNWE1YTU1MzNjYWY0M2QzYmRlMTdmYjBlOTMyOWM3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjY0MDczOSwtMS43ODIyMTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzEzNTMwNjA5ZGExZTQzNmJiOTRhODY4ODAwYTM0NmYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFhOTAzMzllNmRhNTQzMjViOTI1NTZkNzdkYTExODNiID0gJCgnPGRpdiBpZD0iaHRtbF8xYTkwMzM5ZTZkYTU0MzI1YjkyNTU2ZDc3ZGExMTgzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SG9vdCBDcmVhdGl2ZSBBcnRzIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTM1MzA2MDlkYTFlNDM2YmI5NGE4Njg4MDBhMzQ2ZjMuc2V0Q29udGVudChodG1sXzFhOTAzMzllNmRhNTQzMjViOTI1NTZkNzdkYTExODNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA1YTVhNTUzM2NhZjQzZDNiZGUxN2ZiMGU5MzI5Yzc1LmJpbmRQb3B1cChwb3B1cF8xMzUzMDYwOWRhMWU0MzZiYjk0YTg2ODgwMGEzNDZmMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZWFmYWUzYWU4YWQ0Mjk0OWUzMjgzYWEwMmUxYTg3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjg2NzU4MywtMi40ODUzODFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJhNWQxYTAzZDZmZDQ1MWZhZTYxNzRmOGMwYzk4MjgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVkZmQzMGQwMDhmMzQ5ZDFiNDRkZDZkMGM1NDdlNjIxID0gJCgnPGRpdiBpZD0iaHRtbF81ZGZkMzBkMDA4ZjM0OWQxYjQ0ZGQ2ZDBjNTQ3ZTYyMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGVlbnMgaW4gQ3Jpc2lzIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmE1ZDFhMDNkNmZkNDUxZmFlNjE3NGY4YzBjOTgyODEuc2V0Q29udGVudChodG1sXzVkZmQzMGQwMDhmMzQ5ZDFiNDRkZDZkMGM1NDdlNjIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NlYWZhZTNhZThhZDQyOTQ5ZTMyODNhYTAyZTFhODc2LmJpbmRQb3B1cChwb3B1cF8yYTVkMWEwM2Q2ZmQ0NTFmYWU2MTc0ZjhjMGM5ODI4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MTI3NWNjZjhjYjA0MGE2YThhZTZhZjBmZDQ3YWIyZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ4MjM4NiwtMy4yMTE1MTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRiNTM2Yjg2YjVlMzQzMmQ5MTg4NmE0Mjg0NDgwMmVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdlMGVjMTYwYmRkOTQwOWJhMmVhMDM1MWNhNjcxY2ZhID0gJCgnPGRpdiBpZD0iaHRtbF83ZTBlYzE2MGJkZDk0MDliYTJlYTAzNTFjYTY3MWNmYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SW5ub3ZhdGUgVHJ1c3QgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YjUzNmI4NmI1ZTM0MzJkOTE4ODZhNDI4NDQ4MDJlZC5zZXRDb250ZW50KGh0bWxfN2UwZWMxNjBiZGQ5NDA5YmEyZWEwMzUxY2E2NzFjZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTEyNzVjY2Y4Y2IwNDBhNmE4YWU2YWYwZmQ0N2FiMmYuYmluZFBvcHVwKHBvcHVwXzRiNTM2Yjg2YjVlMzQzMmQ5MTg4NmE0Mjg0NDgwMmVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBkYjA3ZDlhYjBmODQxMDQ5Y2Y0MWNjMDZjNjAwMTIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEzNjU5LC0wLjExODg5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjk2YTMyOWFjYzAxNGFjZmI5ZDUwNjgyZDdlZjkzZGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGE3OWFlNDBmZGFjNGU1YWIyNjhkYTJkMzNhYWRjYzUgPSAkKCc8ZGl2IGlkPSJodG1sXzRhNzlhZTQwZmRhYzRlNWFiMjY4ZGEyZDMzYWFkY2M1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HbG9iYWwgQWN0aW9uIFBsYW4gPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yOTZhMzI5YWNjMDE0YWNmYjlkNTA2ODJkN2VmOTNkZi5zZXRDb250ZW50KGh0bWxfNGE3OWFlNDBmZGFjNGU1YWIyNjhkYTJkMzNhYWRjYzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGRiMDdkOWFiMGY4NDEwNDljZjQxY2MwNmM2MDAxMjAuYmluZFBvcHVwKHBvcHVwXzI5NmEzMjlhY2MwMTRhY2ZiOWQ1MDY4MmQ3ZWY5M2RmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRhMzYxNWQyMDBhYjQ1ZGRhNTI5NGE4N2FlOTI5ZWViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuNzQwODI1LC0zLjQ4MTg1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTZmYjE3MjY5ZjRkNDI2ZmEwZTRjNjYzYmUzZTFjMDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzc1MGFkMzIzYmFhNDNlZmE2NmFmNTk0MjAzZjljNzEgPSAkKCc8ZGl2IGlkPSJodG1sXzM3NTBhZDMyM2JhYTQzZWZhNjZhZjU5NDIwM2Y5YzcxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EZXZvbiBBSXIgQW1idWxhbmNlIFRydXN0IDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTZmYjE3MjY5ZjRkNDI2ZmEwZTRjNjYzYmUzZTFjMDAuc2V0Q29udGVudChodG1sXzM3NTBhZDMyM2JhYTQzZWZhNjZhZjU5NDIwM2Y5YzcxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRhMzYxNWQyMDBhYjQ1ZGRhNTI5NGE4N2FlOTI5ZWViLmJpbmRQb3B1cChwb3B1cF9lNmZiMTcyNjlmNGQ0MjZmYTBlNGM2NjNiZTNlMWMwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMjIyZGU4YzIyOTU0OGQ1OTMxNTgwZmJmNTk3ODU4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ2MzM4OCwtMC4yNjYzMTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ1MzBlYmIwMDgyYTQ0ZWU4YTY5YWFlMWZiZTUxNzM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5YzhhODc5N2I1MTQ1ZTBiY2U4MmVjZDdjNjgyMmMwID0gJCgnPGRpdiBpZD0iaHRtbF85OWM4YTg3OTdiNTE0NWUwYmNlODJlY2Q3YzY4MjJjMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnVzaW5lc3MgTGF1bmNocGFkIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDUzMGViYjAwODJhNDRlZThhNjlhYWUxZmJlNTE3Mzkuc2V0Q29udGVudChodG1sXzk5YzhhODc5N2I1MTQ1ZTBiY2U4MmVjZDdjNjgyMmMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2MyMjJkZThjMjI5NTQ4ZDU5MzE1ODBmYmY1OTc4NTgxLmJpbmRQb3B1cChwb3B1cF80NTMwZWJiMDA4MmE0NGVlOGE2OWFhZTFmYmU1MTczOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ODAzMDczNDE5NDE0NjQwYWRkOWE0ZjhhOTY3MzkwZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjY2MTg1LDEuMjg3NDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ODU0ZDMxODBmZmE0MDc5OTliNzU1YWYyM2EyNTQ1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80Nzk0NzM0NmVmODg0NDY2ODZkZjIwMTc2OTU2YzkxNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDc5NDczNDZlZjg4NDQ2Njg2ZGYyMDE3Njk1NmM5MTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyZWFrIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzg1NGQzMTgwZmZhNDA3OTk5Yjc1NWFmMjNhMjU0NWQuc2V0Q29udGVudChodG1sXzQ3OTQ3MzQ2ZWY4ODQ0NjY4NmRmMjAxNzY5NTZjOTE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY4MDMwNzM0MTk0MTQ2NDBhZGQ5YTRmOGE5NjczOTBlLmJpbmRQb3B1cChwb3B1cF83ODU0ZDMxODBmZmE0MDc5OTliNzU1YWYyM2EyNTQ1ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZGZmYTc3MmRkMDk0NDY2YTMwMGQyYTNiZjgxODhhMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjg2ODMzNywtMS45MTAzOTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FmZDIzZjZiMGVhYjQwNzZhNWMyODkzYmJhODc1OTM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I1NWFiODhiZjQxYjRjYzlhNmMyMTEyZDJkN2Q1ZjYyID0gJCgnPGRpdiBpZD0iaHRtbF9iNTVhYjg4YmY0MWI0Y2M5YTZjMjExMmQyZDdkNWY2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um9zaG5pIEdoYXIgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZmQyM2Y2YjBlYWI0MDc2YTVjMjg5M2JiYTg3NTkzOC5zZXRDb250ZW50KGh0bWxfYjU1YWI4OGJmNDFiNGNjOWE2YzIxMTJkMmQ3ZDVmNjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGRmZmE3NzJkZDA5NDQ2NmEzMDBkMmEzYmY4MTg4YTAuYmluZFBvcHVwKHBvcHVwX2FmZDIzZjZiMGVhYjQwNzZhNWMyODkzYmJhODc1OTM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhZGYzYWFlNjI0MDQyNjViOGQxMzY0YmYwZTExYTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNjAyODQ2LC0wLjA1OTc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWU0ZWNjNzU4NTZmNDI5Yzg5Yzk2YjMyMTMzYTdmNDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWIyNDdiYzU2ZDMyNDRhNjk4ODA0NzNlM2ViMzI5MGUgPSAkKCc8ZGl2IGlkPSJodG1sX2ViMjQ3YmM1NmQzMjQ0YTY5ODgwNDczZTNlYjMyOTBlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IYXJpbmdleSBBZHZpc29yeSBHcm91cCBvbiBBbGNvaG9sIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWU0ZWNjNzU4NTZmNDI5Yzg5Yzk2YjMyMTMzYTdmNDkuc2V0Q29udGVudChodG1sX2ViMjQ3YmM1NmQzMjQ0YTY5ODgwNDczZTNlYjMyOTBlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFhZGYzYWFlNjI0MDQyNjViOGQxMzY0YmYwZTExYTYwLmJpbmRQb3B1cChwb3B1cF8xZTRlY2M3NTg1NmY0MjljODljOTZiMzIxMzNhN2Y0OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjg2NjhiNzZhOTc0N2U5OTk4ZWU3NzlhZDNjNDc2MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUyMzU3OSwtMC4wODQ1MDddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJiMGIxMjMwZDQ1ODQzMmRhOThmY2M4Njg5ZjZmNWJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5MDg2N2FhMmMwNTQyNDU5YThiODQ4ZWY4NWQ0YTdjID0gJCgnPGRpdiBpZD0iaHRtbF8xOTA4NjdhYTJjMDU0MjQ1OWE4Yjg0OGVmODVkNGE3YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIE5hdGlvbmFsIERlYWYgQ2hpbGRyZW4mI3gyNztzIFNvY2lldHkgKE5EQ1MpIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmIwYjEyMzBkNDU4NDMyZGE5OGZjYzg2ODlmNmY1YmYuc2V0Q29udGVudChodG1sXzE5MDg2N2FhMmMwNTQyNDU5YThiODQ4ZWY4NWQ0YTdjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZiODY2OGI3NmE5NzQ3ZTk5OThlZTc3OWFkM2M0NzYxLmJpbmRQb3B1cChwb3B1cF8yYjBiMTIzMGQ0NTg0MzJkYTk4ZmNjODY4OWY2ZjViZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNjBjZTViZTkwMTI0ZDJlOWE2ZTllMTAyNTAzZWMzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjI3MTc5LC01LjAzNDAzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmY2MTY2NThlNzYwNGE0ODkwNTAxYTA5MTczYWY0MDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmJmNTcwMGVmZjI1NDNlOTg1N2RiMmMyOTFjNWFjNzIgPSAkKCc8ZGl2IGlkPSJodG1sX2JiZjU3MDBlZmYyNTQzZTk4NTdkYjJjMjkxYzVhYzcyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DSEFPUyBDT1JOV0FMTCBDSUMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZjYxNjY1OGU3NjA0YTQ4OTA1MDFhMDkxNzNhZjQwMS5zZXRDb250ZW50KGh0bWxfYmJmNTcwMGVmZjI1NDNlOTg1N2RiMmMyOTFjNWFjNzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDYwY2U1YmU5MDEyNGQyZTlhNmU5ZTEwMjUwM2VjMzUuYmluZFBvcHVwKHBvcHVwXzJmNjE2NjU4ZTc2MDRhNDg5MDUwMWEwOTE3M2FmNDAxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIwYjBkYWJkYTgyNjRkZjhhMTQ3ZjgwYjkzOGQ2OTBjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuOTI4MjU0LC0xLjU5Mzc1NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmEwOTEwZjIxMDM3NDY5MjljZWMzMDdkNGQ1YjYxMTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTllOTMyMDI3YjU3NGNiZWEzOTNmYjcxNTliMWRjY2YgPSAkKCc8ZGl2IGlkPSJodG1sX2U5ZTkzMjAyN2I1NzRjYmVhMzkzZmI3MTU5YjFkY2NmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZSBJbnNwaXJlZCBUbyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhMDkxMGYyMTAzNzQ2OTI5Y2VjMzA3ZDRkNWI2MTE0LnNldENvbnRlbnQoaHRtbF9lOWU5MzIwMjdiNTc0Y2JlYTM5M2ZiNzE1OWIxZGNjZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yMGIwZGFiZGE4MjY0ZGY4YTE0N2Y4MGI5MzhkNjkwYy5iaW5kUG9wdXAocG9wdXBfNmEwOTEwZjIxMDM3NDY5MjljZWMzMDdkNGQ1YjYxMTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTE3MDc3YzFhZGMxNDYwMjk5NjE5ZWMwOGI3OGE5MWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My42MjI5ODcsLTIuMTU0MTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA4YWZmZmU2OWVlYzQzMzk5MDNhNzQ0YjVkZWE1ODA1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcyMjhlZmZmMWQyODQ5ZWRhN2Y1MmNlMzdiMzQ2ZmQwID0gJCgnPGRpdiBpZD0iaHRtbF83MjI4ZWZmZjFkMjg0OWVkYTdmNTJjZTM3YjM0NmZkMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RGlnaXRhbCBDcmVhdGl2ZSBOZXR3b3JrIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDhhZmZmZTY5ZWVjNDMzOTkwM2E3NDRiNWRlYTU4MDUuc2V0Q29udGVudChodG1sXzcyMjhlZmZmMWQyODQ5ZWRhN2Y1MmNlMzdiMzQ2ZmQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzkxNzA3N2MxYWRjMTQ2MDI5OTYxOWVjMDhiNzhhOTFiLmJpbmRQb3B1cChwb3B1cF8wOGFmZmZlNjllZWM0MzM5OTAzYTc0NGI1ZGVhNTgwNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzgzZjY2MDE2NTE0MWVlYjMyOGFlMjI1NGE2YzQzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjYxOTY4NywtMy45MzExXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNDZiMmY2OWZlY2Q0MjBmYjlhYjIyOGU3M2E5MDkyZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jN2IxOGEzZjU5OTM0YmRiYjdlMzIyNmM4MGIxOGFhNSA9ICQoJzxkaXYgaWQ9Imh0bWxfYzdiMThhM2Y1OTkzNGJkYmI3ZTMyMjZjODBiMThhYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkEyQiBBY3RpdmUgU3BvcnQgQ0lDIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjQ2YjJmNjlmZWNkNDIwZmI5YWIyMjhlNzNhOTA5MmYuc2V0Q29udGVudChodG1sX2M3YjE4YTNmNTk5MzRiZGJiN2UzMjI2YzgwYjE4YWE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzgzODNmNjYwMTY1MTQxZWViMzI4YWUyMjU0YTZjNDM5LmJpbmRQb3B1cChwb3B1cF9iNDZiMmY2OWZlY2Q0MjBmYjlhYjIyOGU3M2E5MDkyZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MTc4MGUwMDliMGM0M2ExOGRhODA5ZWRiNjMxZmVkZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxOTQyOSwtMC4wOTg1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmZkNTI2ZGNmNTY4NGY1NDg0ZTQ3MDM0ZDI3Mjg4MTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjI1YTQyNjk2NjgyNGNlZmFmOWJkNDQ2MjBmNzE5NDAgPSAkKCc8ZGl2IGlkPSJodG1sX2IyNWE0MjY5NjY4MjRjZWZhZjliZDQ0NjIwZjcxOTQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWFuc3RhbGsgQ2hhcml0eSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZmZDUyNmRjZjU2ODRmNTQ4NGU0NzAzNGQyNzI4ODE5LnNldENvbnRlbnQoaHRtbF9iMjVhNDI2OTY2ODI0Y2VmYWY5YmQ0NDYyMGY3MTk0MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MTc4MGUwMDliMGM0M2ExOGRhODA5ZWRiNjMxZmVkZC5iaW5kUG9wdXAocG9wdXBfNmZkNTI2ZGNmNTY4NGY1NDg0ZTQ3MDM0ZDI3Mjg4MTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTJjNjMwMmRjNDM4NDA2YWJiODBmNTJiMDc5NjYxYWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40OTU3NSwtMC4xMzE1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I4YzdmOGI0MzVjNzQ4NzI4NWM5NTczMjE4N2UzYmUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY1ZmFiZjYxNGRmNjQ1YmRhMTg5MTc1MzNmZjNkNjRmID0gJCgnPGRpdiBpZD0iaHRtbF82NWZhYmY2MTRkZjY0NWJkYTE4OTE3NTMzZmYzZDY0ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FyZGluYWwgSHVtZSBDZW50cmUgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iOGM3ZjhiNDM1Yzc0ODcyODVjOTU3MzIxODdlM2JlMC5zZXRDb250ZW50KGh0bWxfNjVmYWJmNjE0ZGY2NDViZGExODkxNzUzM2ZmM2Q2NGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTJjNjMwMmRjNDM4NDA2YWJiODBmNTJiMDc5NjYxYWUuYmluZFBvcHVwKHBvcHVwX2I4YzdmOGI0MzVjNzQ4NzI4NWM5NTczMjE4N2UzYmUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEzYjc0NDVmOWU0ZjRhMWM4ODU1ZGQzMzI5NmZiNGE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTE1NDgzLC0wLjExMTQ4MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmNkZDM1NzdkNGFlNGVjMTkzM2I5YTE3M2VjMjk0YTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTRjYzNlODM2MmJlNDAwNjhhMjZmZDdmMGZkODcwZjAgPSAkKCc8ZGl2IGlkPSJodG1sX2U0Y2MzZTgzNjJiZTQwMDY4YTI2ZmQ3ZjBmZDg3MGYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Gb3VuZGVyczRTY2hvb2xzIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmNkZDM1NzdkNGFlNGVjMTkzM2I5YTE3M2VjMjk0YTkuc2V0Q29udGVudChodG1sX2U0Y2MzZTgzNjJiZTQwMDY4YTI2ZmQ3ZjBmZDg3MGYwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzEzYjc0NDVmOWU0ZjRhMWM4ODU1ZGQzMzI5NmZiNGE2LmJpbmRQb3B1cChwb3B1cF8yY2RkMzU3N2Q0YWU0ZWMxOTMzYjlhMTczZWMyOTRhOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMWZmOGY2OWVlOTc0YTBhYjg5MGUxNjJkYzE4NWUxYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjA5MDg4MSwwLjAzMDg1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGQ3YjE1M2JiZjZjNDZlZGE0Zjg0YWFiOTU1MmE1MTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjUxZmJlMWE4YTBmNDY1OTkzN2I1N2FjY2YzNmVjODMgPSAkKCc8ZGl2IGlkPSJodG1sXzI1MWZiZTFhOGEwZjQ2NTk5MzdiNTdhY2NmMzZlYzgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HYW1lcyBmb3IgTGlmZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhkN2IxNTNiYmY2YzQ2ZWRhNGY4NGFhYjk1NTJhNTE4LnNldENvbnRlbnQoaHRtbF8yNTFmYmUxYThhMGY0NjU5OTM3YjU3YWNjZjM2ZWM4Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMWZmOGY2OWVlOTc0YTBhYjg5MGUxNjJkYzE4NWUxYy5iaW5kUG9wdXAocG9wdXBfOGQ3YjE1M2JiZjZjNDZlZGE0Zjg0YWFiOTU1MmE1MTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTIzYmUxMDM1OGE3NDM1N2FlYTQ1NWE1ZTVhZmVlNzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45ODAwMzUsLTEuNjYxODU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81Njg2OWQwZWMxYjQ0NjFkOTUzNjM5OWY5YjE5ODMyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OTY0NWM3YTliZGM0NmUxODg1OTU0NmQzMThlYWQ5NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNzk2NDVjN2E5YmRjNDZlMTg4NTk1NDZkMzE4ZWFkOTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZlbmhhbSBBc3NvY2lhdGlvbiBvZiBSZXNpZGVudHMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Njg2OWQwZWMxYjQ0NjFkOTUzNjM5OWY5YjE5ODMyMS5zZXRDb250ZW50KGh0bWxfNzk2NDVjN2E5YmRjNDZlMTg4NTk1NDZkMzE4ZWFkOTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTIzYmUxMDM1OGE3NDM1N2FlYTQ1NWE1ZTVhZmVlNzIuYmluZFBvcHVwKHBvcHVwXzU2ODY5ZDBlYzFiNDQ2MWQ5NTM2Mzk5ZjliMTk4MzIxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdkZjI5OGEyNjJiNDRkMzg4ZDQ5ZDg0MzE4ZWY1MjE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTE5MDYzLC0wLjA5ODczNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmU2YzNkYmUzYjc2NDFlMDhjM2VlYzdlYzVkODlkZmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmJjYzUxZjQ0OGE1NDZiMjkwNDQ2MTRjZWFjYWE1NWIgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiY2M1MWY0NDhhNTQ2YjI5MDQ0NjE0Y2VhY2FhNTViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaGFyaXR5IElUIEFzc29jaWF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU2YzNkYmUzYjc2NDFlMDhjM2VlYzdlYzVkODlkZmMuc2V0Q29udGVudChodG1sX2ZiY2M1MWY0NDhhNTQ2YjI5MDQ0NjE0Y2VhY2FhNTViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdkZjI5OGEyNjJiNDRkMzg4ZDQ5ZDg0MzE4ZWY1MjE5LmJpbmRQb3B1cChwb3B1cF8yZTZjM2RiZTNiNzY0MWUwOGMzZWVjN2VjNWQ4OWRmYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZGMzOWRiZmU4M2E0NGMxYjc5NDBkOGE0NDdmY2EzMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQxMjk0NCwwLjE3OTkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YjNmN2M2ZWQxNDE0YTQzOTU1MGZmYTM5YmMwNDVlZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZWVjYmYyMjg5MzY0MWY2YmM4ODJlNjA0MGY5MjAyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2VlY2JmMjI4OTM2NDFmNmJjODgyZTYwNDBmOTIwMmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlIGFyZSBCZWFtcyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzViM2Y3YzZlZDE0MTRhNDM5NTUwZmZhMzliYzA0NWVmLnNldENvbnRlbnQoaHRtbF83ZWVjYmYyMjg5MzY0MWY2YmM4ODJlNjA0MGY5MjAyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZGMzOWRiZmU4M2E0NGMxYjc5NDBkOGE0NDdmY2EzMy5iaW5kUG9wdXAocG9wdXBfNWIzZjdjNmVkMTQxNGE0Mzk1NTBmZmEzOWJjMDQ1ZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjQ0ZTE4ZmI3YmZiNDUzMGI5N2RlYzU3ZDFkMWYxMmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Ni4xNDU0NjMsLTMuOTIwMDIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMzVlMjczOTQ5MjY0ZTg2OWIzYTQ4MjA3OWRlMDVmMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNjg2YWI4NzQ1OTM0Y2U3ODQwMGY3NTMwOWNjNmM0YiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzY4NmFiODc0NTkzNGNlNzg0MDBmNzUzMDljYzZjNGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hY3JvYmVydCBBcnRzIENlbnRyZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMzNWUyNzM5NDkyNjRlODY5YjNhNDgyMDc5ZGUwNWYzLnNldENvbnRlbnQoaHRtbF8zNjg2YWI4NzQ1OTM0Y2U3ODQwMGY3NTMwOWNjNmM0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82NDRlMThmYjdiZmI0NTMwYjk3ZGVjNTdkMWQxZjEyYS5iaW5kUG9wdXAocG9wdXBfMzM1ZTI3Mzk0OTI2NGU4NjliM2E0ODIwNzlkZTA1ZjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjVhM2QyMDU2OWEzNDBmYjg2YzZkZjNmZDc5OTAwOTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC44MjYyMjIsLTAuMTU2NDQyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lN2FlYzZjYmU3OTk0NWJhYTg3ZjVlYWU4MWNkM2QzMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNWY2YTAzZTI1YmE0NGQzYTMxYWY3ZTEzNzQ3NTcxMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzVmNmEwM2UyNWJhNDRkM2EzMWFmN2UxMzc0NzU3MTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hbmtpbmQgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lN2FlYzZjYmU3OTk0NWJhYTg3ZjVlYWU4MWNkM2QzMy5zZXRDb250ZW50KGh0bWxfYzVmNmEwM2UyNWJhNDRkM2EzMWFmN2UxMzc0NzU3MTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjVhM2QyMDU2OWEzNDBmYjg2YzZkZjNmZDc5OTAwOTguYmluZFBvcHVwKHBvcHVwX2U3YWVjNmNiZTc5OTQ1YmFhODdmNWVhZTgxY2QzZDMzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyMTk1NDcwYTQ0YTQyN2M5ZjQzOWUyNWY1OWU2ZjAzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuMzY5ODk2LC00LjEyMDU3NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjQ5NGQ5YjhmNmVhNGQ2OTgxODIyNjcwOWViMDhjMzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzEwOTYzMWExMWU0NGE0Nzk2NDU1NTNlN2U5ZDZiMDIgPSAkKCc8ZGl2IGlkPSJodG1sX2MxMDk2MzFhMTFlNDRhNDc5NjQ1NTUzZTdlOWQ2YjAyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ib21lLVN0YXJ0IFNvdXRoIGFuZCBXZXN0IERldm9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjQ5NGQ5YjhmNmVhNGQ2OTgxODIyNjcwOWViMDhjMzIuc2V0Q29udGVudChodG1sX2MxMDk2MzFhMTFlNDRhNDc5NjQ1NTUzZTdlOWQ2YjAyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAyMTk1NDcwYTQ0YTQyN2M5ZjQzOWUyNWY1OWU2ZjAzLmJpbmRQb3B1cChwb3B1cF8yNDk0ZDliOGY2ZWE0ZDY5ODE4MjI2NzA5ZWIwOGMzMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTRiZDhmN2IwMjU0MGEwODYyOGUxOTM3NjIxODczYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU1MjgzNiwtMC4xNDM1MjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiMTY1MTFiYTlkYzQ2YWY4NmI2YWEwODYzMDlmMmYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRjYjEzZGNkNmNjZTRiM2ZhZWU1ZTYzNDU4MDg2MDNkID0gJCgnPGRpdiBpZD0iaHRtbF80Y2IxM2RjZDZjY2U0YjNmYWVlNWU2MzQ1ODA4NjAzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmFjZSBFcXVhbGl0eSBGb3VuZGF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmIxNjUxMWJhOWRjNDZhZjg2YjZhYTA4NjMwOWYyZjMuc2V0Q29udGVudChodG1sXzRjYjEzZGNkNmNjZTRiM2ZhZWU1ZTYzNDU4MDg2MDNkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJlNGJkOGY3YjAyNTQwYTA4NjI4ZTE5Mzc2MjE4NzNjLmJpbmRQb3B1cChwb3B1cF9iYjE2NTExYmE5ZGM0NmFmODZiNmFhMDg2MzA5ZjJmMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kM2RlYWY1N2E3NWQ0MGE5YWVhYjMwMmNkYjliOWYxOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5Njc3LC0wLjA1MTA1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTY1NGM4ZTQxZjY3NGUxZWI5MDdkYmI0MjE2MmIxYjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDcyMzRiZjUyYzJjNGJlNThkMTE0YjE5ZDM5NmI0NGUgPSAkKCc8ZGl2IGlkPSJodG1sXzA3MjM0YmY1MmMyYzRiZTU4ZDExNGIxOWQzOTZiNDRlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5JbmRlcGVuZGVudCBBY2FkZW1pYyBSZXNlYXJjaCBTdHVkaWVzIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTY1NGM4ZTQxZjY3NGUxZWI5MDdkYmI0MjE2MmIxYjkuc2V0Q29udGVudChodG1sXzA3MjM0YmY1MmMyYzRiZTU4ZDExNGIxOWQzOTZiNDRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QzZGVhZjU3YTc1ZDQwYTlhZWFiMzAyY2RiOWI5ZjE4LmJpbmRQb3B1cChwb3B1cF8xNjU0YzhlNDFmNjc0ZTFlYjkwN2RiYjQyMTYyYjFiOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZWNlYjRiODVkZjk0MTE4OTc2MzczZjViNDM4ZTVhYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM3OTcyMiwtMS40NzQ5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE4ZjEzY2JjMTIwNDRjZTlhYzkyYWRjZDY1ZTIwOGFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VkZjI3NjM3MDZjZTRmZjc5N2MyMWVmMmIzMTlhNmUyID0gJCgnPGRpdiBpZD0iaHRtbF9lZGYyNzYzNzA2Y2U0ZmY3OTdjMjFlZjJiMzE5YTZlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SW50ZXJjaGFuZ2UgU2hlZmZpZWxkIENJQyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE4ZjEzY2JjMTIwNDRjZTlhYzkyYWRjZDY1ZTIwOGFkLnNldENvbnRlbnQoaHRtbF9lZGYyNzYzNzA2Y2U0ZmY3OTdjMjFlZjJiMzE5YTZlMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZWNlYjRiODVkZjk0MTE4OTc2MzczZjViNDM4ZTVhYS5iaW5kUG9wdXAocG9wdXBfMThmMTNjYmMxMjA0NGNlOWFjOTJhZGNkNjVlMjA4YWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTZiZTM5YjEyZmVhNGY5MWE2NTUyN2NkOGQ1MzE0YmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTQ0MDQsLTIuNTkzNTI5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZTgyNzQ0MzAyNTA0MzNhYjA5Y2I4ZDFlNjAwNDk4OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MDgyZjgxOTgzODE0YTQ5YTE2ODgyOWQyZmZjMmViNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNzA4MmY4MTk4MzgxNGE0OWExNjg4MjlkMmZmYzJlYjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyaXN0b2wgUG91bmQgQ0lDIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmU4Mjc0NDMwMjUwNDMzYWIwOWNiOGQxZTYwMDQ5ODkuc2V0Q29udGVudChodG1sXzcwODJmODE5ODM4MTRhNDlhMTY4ODI5ZDJmZmMyZWI3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzk2YmUzOWIxMmZlYTRmOTFhNjU1MjdjZDhkNTMxNGJhLmJpbmRQb3B1cChwb3B1cF9iZTgyNzQ0MzAyNTA0MzNhYjA5Y2I4ZDFlNjAwNDk4OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZGQzNDIzNmFjMGI0OWQ1OWM1ZjEyNzY3MTZjNWNjZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQwNDE0NywtMi45ODI2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1NWQ5NWI0YTQwMjQyZTQ4NzcxOTI3ZDNjNTc4ZTk1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZlYmJmZGRjYzRkZTQwMGVhYTdhZGZhZTYxMmUzOTE2ID0gJCgnPGRpdiBpZD0iaHRtbF82ZWJiZmRkY2M0ZGU0MDBlYWE3YWRmYWU2MTJlMzkxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWVyc2V5c2lkZSBZb3V0aCBBc3NvY2lhdGlvbiAgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NTVkOTViNGE0MDI0MmU0ODc3MTkyN2QzYzU3OGU5NS5zZXRDb250ZW50KGh0bWxfNmViYmZkZGNjNGRlNDAwZWFhN2FkZmFlNjEyZTM5MTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmRkMzQyMzZhYzBiNDlkNTljNWYxMjc2NzE2YzVjY2YuYmluZFBvcHVwKHBvcHVwXzk1NWQ5NWI0YTQwMjQyZTQ4NzcxOTI3ZDNjNTc4ZTk1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVjNWRhODkwNDI5ZDQxYTJiZTQ4YWVhNDhhNjJkNmVhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMjEwMTMyLDAuMzQ0NDU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNTgzYzRjMTNmOTk0YmFjYWE3MWQwNDEzNDdmMmEzZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZDMyMjlmZjE1MTg0ZGU2OWE1MzBjMjJhYjcxZjJjNiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWQzMjI5ZmYxNTE4NGRlNjlhNTMwYzIyYWI3MWYyYzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN1cHBvcnRpbmcgSnVzdGljZSBDSUMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNTgzYzRjMTNmOTk0YmFjYWE3MWQwNDEzNDdmMmEzZC5zZXRDb250ZW50KGh0bWxfZWQzMjI5ZmYxNTE4NGRlNjlhNTMwYzIyYWI3MWYyYzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWM1ZGE4OTA0MjlkNDFhMmJlNDhhZWE0OGE2MmQ2ZWEuYmluZFBvcHVwKHBvcHVwX2E1ODNjNGMxM2Y5OTRiYWNhYTcxZDA0MTM0N2YyYTNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc5ZjA3MWFjYzVmNzQ1OWNiMjJlZGMwMzYzYjhhNDM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDYxNjI5LC0yLjU4OTAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWRkZDYxMWVhNDI0NGYyZjk0N2JlOGY3OTFhM2E5Y2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODY2MzgxOWIzM2ZjNDQ3ZTk1Y2U1NDE5NzMzMjkwZjAgPSAkKCc8ZGl2IGlkPSJodG1sXzg2NjM4MTliMzNmYzQ0N2U5NWNlNTQxOTczMzI5MGYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db2duaXRpdmUgUGF0aHMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZGRkNjExZWE0MjQ0ZjJmOTQ3YmU4Zjc5MWEzYTljZC5zZXRDb250ZW50KGh0bWxfODY2MzgxOWIzM2ZjNDQ3ZTk1Y2U1NDE5NzMzMjkwZjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzlmMDcxYWNjNWY3NDU5Y2IyMmVkYzAzNjNiOGE0MzguYmluZFBvcHVwKHBvcHVwXzVkZGQ2MTFlYTQyNDRmMmY5NDdiZThmNzkxYTNhOWNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyMGE4YTAxNGE4YjQ0ODlhYTRmZTI2NzM1NTAxZTYyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMzgyMjM0LDEuMzQ1MDQ2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iODkwNDQ4MmNjN2M0ZjlhYTAzMTAwNjY5ODBlMmY1YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MGQ3MTczMGUwMzE0ZDUzODIwNDI5ODU0Y2Q4OGNiNSA9ICQoJzxkaXYgaWQ9Imh0bWxfODBkNzE3MzBlMDMxNGQ1MzgyMDQyOTg1NGNkODhjYjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vdmluZyBNZW1vcnkgRGFuY2UgVGhlYXRyZSBDb21wYW55IEx0ZCA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I4OTA0NDgyY2M3YzRmOWFhMDMxMDA2Njk4MGUyZjVhLnNldENvbnRlbnQoaHRtbF84MGQ3MTczMGUwMzE0ZDUzODIwNDI5ODU0Y2Q4OGNiNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MjBhOGEwMTRhOGI0NDg5YWE0ZmUyNjczNTUwMWU2Mi5iaW5kUG9wdXAocG9wdXBfYjg5MDQ0ODJjYzdjNGY5YWEwMzEwMDY2OTgwZTJmNWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmFkMTY1NzVhZTExNDhlMzk0OTYwYzNlYWNkMDJjZWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43NDYyODIsLTIuNDg5OTE2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NzJhMjQ3ZGRiNGU0MGY2OWYxN2QwNjVmYzI2YTBmMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYTUxYWY1MzBlMzg0YWRmOTUxODhkMmYxZWMyN2Y4YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWE1MWFmNTMwZTM4NGFkZjk1MTg4ZDJmMWVjMjdmOGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJsYWNrYnVybiB3aXRoIERhcndlbiBDYXJlcnMgU2VydmljZSBMdGQgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NzJhMjQ3ZGRiNGU0MGY2OWYxN2QwNjVmYzI2YTBmMC5zZXRDb250ZW50KGh0bWxfZWE1MWFmNTMwZTM4NGFkZjk1MTg4ZDJmMWVjMjdmOGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmFkMTY1NzVhZTExNDhlMzk0OTYwYzNlYWNkMDJjZWUuYmluZFBvcHVwKHBvcHVwXzQ3MmEyNDdkZGI0ZTQwZjY5ZjE3ZDA2NWZjMjZhMGYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyYjk4YzM2ZmZlNDQ4OTg5NTMyYzE0OGE1MzE5NDVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMjY4OTIxLDAuNTIzMTE2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MzkwYzYxNjgxNzc0YzM5ODZhM2JmMmY5M2JmYTMyOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMjEyYTgxZmFhMDE0NjFjYTY3NzBhNmQ4Y2NmMWJiNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTIxMmE4MWZhYTAxNDYxY2E2NzcwYTZkOGNjZjFiYjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1haWRzdG9uZSAmYW1wOyBNaWQgS2VudCBNaW5kIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTM5MGM2MTY4MTc3NGMzOTg2YTNiZjJmOTNiZmEzMjguc2V0Q29udGVudChodG1sX2UyMTJhODFmYWEwMTQ2MWNhNjc3MGE2ZDhjY2YxYmI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUyYjk4YzM2ZmZlNDQ4OTg5NTMyYzE0OGE1MzE5NDVkLmJpbmRQb3B1cChwb3B1cF81MzkwYzYxNjgxNzc0YzM5ODZhM2JmMmY5M2JmYTMyOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMTYzZDZlNTNlNWM0NmFlYThmMDBkNTE1OTViYjU0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjAwNzY4OSwtMi4xOTkyMTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAxOTY0ODc2N2JlMTRjZjJhNjg5NzM5MTc0ODI1Y2U4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhiMTFkYjQ4MDc2OTRlYWY4OWVmZmI1MTE0Y2ViYTc2ID0gJCgnPGRpdiBpZD0iaHRtbF84YjExZGI0ODA3Njk0ZWFmODllZmZiNTExNGNlYmE3NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGlua2luZyBHZW5lcmF0aW9ucyBOSSAtIEJldGggSm9obnNvbiBGb3VuZGF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDE5NjQ4NzY3YmUxNGNmMmE2ODk3MzkxNzQ4MjVjZTguc2V0Q29udGVudChodG1sXzhiMTFkYjQ4MDc2OTRlYWY4OWVmZmI1MTE0Y2ViYTc2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMxNjNkNmU1M2U1YzQ2YWVhOGYwMGQ1MTU5NWJiNTRjLmJpbmRQb3B1cChwb3B1cF8wMTk2NDg3NjdiZTE0Y2YyYTY4OTczOTE3NDgyNWNlOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYWZjMjk5YjM3Njg0NjRlYmRkZjE2MDQzMWQ5NzkxZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzU1Ljg1ODMyLC00LjI2OTE2MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTI5YTAzNmY0NmJhNDk2MmEzOWU5ZTlkMjk0N2FlMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWE2YTQ5ZmE0MGNhNDhjNDk0MDM5Mzk5OGYwN2RkYmMgPSAkKCc8ZGl2IGlkPSJodG1sXzFhNmE0OWZhNDBjYTQ4YzQ5NDAzOTM5OThmMDdkZGJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb25leSBBZHZpY2UgU2NvdGxhbmQgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMjlhMDM2ZjQ2YmE0OTYyYTM5ZTllOWQyOTQ3YWUxMS5zZXRDb250ZW50KGh0bWxfMWE2YTQ5ZmE0MGNhNDhjNDk0MDM5Mzk5OGYwN2RkYmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmFmYzI5OWIzNzY4NDY0ZWJkZGYxNjA0MzFkOTc5MWUuYmluZFBvcHVwKHBvcHVwXzEyOWEwMzZmNDZiYTQ5NjJhMzllOWU5ZDI5NDdhZTExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ1N2Q0NzJiNTczZjQ5ODdiNDRhM2I0ZjRiZGZmM2JjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTAyMTYyLC0wLjA4MTgzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmExOTgwODM3YzBlNDVjYWI0YjhlMWUyMjU3ZGE5MjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTQwY2I0N2Q1ZmFiNDk4OTlhZjliZjAyMGU4NDJkNzQgPSAkKCc8ZGl2IGlkPSJodG1sX2E0MGNiNDdkNWZhYjQ5ODk5YWY5YmYwMjBlODQyZDc0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CbGlzcyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JhMTk4MDgzN2MwZTQ1Y2FiNGI4ZTFlMjI1N2RhOTIxLnNldENvbnRlbnQoaHRtbF9hNDBjYjQ3ZDVmYWI0OTg5OWFmOWJmMDIwZTg0MmQ3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NTdkNDcyYjU3M2Y0OTg3YjQ0YTNiNGY0YmRmZjNiYy5iaW5kUG9wdXAocG9wdXBfYmExOTgwODM3YzBlNDVjYWI0YjhlMWUyMjU3ZGE5MjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjAwZTA4OWZkYjU3NDU4OGFjYjFiNGI1OWE3ZTUyM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Ny40Nzk2NzQsLTQuMjI0Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTk2NmVkYTBiNjgxNDE2ZWI1NzI0MzAwNzVjMDVjN2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTczNjljMGU0YjhhNGY1OThlZGNjNDRkZjEzZjMwOTUgPSAkKCc8ZGl2IGlkPSJodG1sXzk3MzY5YzBlNGI4YTRmNTk4ZWRjYzQ0ZGYxM2YzMDk1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TYWZlLFN0cm9uZyBhbmQgRnJlZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U5NjZlZGEwYjY4MTQxNmViNTcyNDMwMDc1YzA1YzdjLnNldENvbnRlbnQoaHRtbF85NzM2OWMwZTRiOGE0ZjU5OGVkY2M0NGRmMTNmMzA5NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iMDBlMDg5ZmRiNTc0NTg4YWNiMWI0YjU5YTdlNTIzZS5iaW5kUG9wdXAocG9wdXBfZTk2NmVkYTBiNjgxNDE2ZWI1NzI0MzAwNzVjMDVjN2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjExODI5NDQ0ZmFkNGYzMDgyYTA4ZDZhYjA3MDI4MDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4xNTE3ODQsLTIuMzYyMTkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYzI0NmMzNzczMzY0NDBkODllNWJkZjM1YTlmNTgyYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82M2Q0YWVjZGE5NWM0ZTZhYmZiNmRiNzlmNjJiNmI4YyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjNkNGFlY2RhOTVjNGU2YWJmYjZkYjc5ZjYyYjZiOGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJvdW5jZWJhY2sgRm9vZCBDLkkuQyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FjMjQ2YzM3NzMzNjQ0MGQ4OWU1YmRmMzVhOWY1ODJhLnNldENvbnRlbnQoaHRtbF82M2Q0YWVjZGE5NWM0ZTZhYmZiNmRiNzlmNjJiNmI4Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MTE4Mjk0NDRmYWQ0ZjMwODJhMDhkNmFiMDcwMjgwMi5iaW5kUG9wdXAocG9wdXBfYWMyNDZjMzc3MzM2NDQwZDg5ZTViZGYzNWE5ZjU4MmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTI3NTA0YTQxNmNhNGZmZGJmOTJiYzQ2ZjQyOWNlYTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDYxODYsLTAuMDg3MTk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYzI5NmM0YWY4NWQ0YmRhOTNmMTExOTFlMjE3YjNlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMmQ2NGM3ZjVkYTM0YjA3OWFmMWU4MmY2YjgzMjdhNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTJkNjRjN2Y1ZGEzNGIwNzlhZjFlODJmNmI4MzI3YTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1lbnRhbCBIZWFsdGggRm91bmRhdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBjMjk2YzRhZjg1ZDRiZGE5M2YxMTE5MWUyMTdiM2U3LnNldENvbnRlbnQoaHRtbF9hMmQ2NGM3ZjVkYTM0YjA3OWFmMWU4MmY2YjgzMjdhNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lMjc1MDRhNDE2Y2E0ZmZkYmY5MmJjNDZmNDI5Y2VhMC5iaW5kUG9wdXAocG9wdXBfMGMyOTZjNGFmODVkNGJkYTkzZjExMTkxZTIxN2IzZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjQ0YzY2NTNhMWQ4NDk5YTk1OTQ3NjNiNmIxZDU2NjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MjU4NjQsLTAuMDU3MjM2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NTBiZDM0MzkyNTc0MzU0YWEwODgwNzNhM2IyYzhkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNDYzMzMxYmIwNmY0NGFhYWQ5MDg2NGFjNmEzN2ZhNCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTQ2MzMzMWJiMDZmNDRhYWFkOTA4NjRhYzZhMzdmYTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN0dWRlbnQgSHVicyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU1MGJkMzQzOTI1NzQzNTRhYTA4ODA3M2EzYjJjOGQ2LnNldENvbnRlbnQoaHRtbF9hNDYzMzMxYmIwNmY0NGFhYWQ5MDg2NGFjNmEzN2ZhNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNDRjNjY1M2ExZDg0OTlhOTU5NDc2M2I2YjFkNTY2Ni5iaW5kUG9wdXAocG9wdXBfNTUwYmQzNDM5MjU3NDM1NGFhMDg4MDczYTNiMmM4ZDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2MxNGJkYTExMmYyNDM5Y2IxNTNhMjU4ODFkYmNmMTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40NzE4MTgsLTIuMTc1OTgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNjliZDE4ZDk3Yzc0OTg4OTJjMTNhYjI0NjBiNDU2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kYWE4NTRlNWQ4MmU0YmRmYTdhOGM0NDY5OTRiY2E5NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGFhODU0ZTVkODJlNGJkZmE3YThjNDQ2OTk0YmNhOTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVNRVJHRSAzUlMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNjliZDE4ZDk3Yzc0OTg4OTJjMTNhYjI0NjBiNDU2Yy5zZXRDb250ZW50KGh0bWxfZGFhODU0ZTVkODJlNGJkZmE3YThjNDQ2OTk0YmNhOTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2MxNGJkYTExMmYyNDM5Y2IxNTNhMjU4ODFkYmNmMTQuYmluZFBvcHVwKHBvcHVwXzE2OWJkMThkOTdjNzQ5ODg5MmMxM2FiMjQ2MGI0NTZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI1MzBmYzQyN2U2MjRmMmQ4NDNmM2UyYTI0NGQ2YWNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDg2ODQ3LC0wLjIxMjI2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjY2OTgxN2VlM2Y0NDViOGI1MWI4MjE2YjM2YTVkNTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGRjZTRhMzkxNzIzNGM5ZWI5NGJmMzRkMjMwYzA0YTkgPSAkKCc8ZGl2IGlkPSJodG1sXzBkY2U0YTM5MTcyMzRjOWViOTRiZjM0ZDIzMGMwNGE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QZXRlciBKb25lcyBGb3VuZGF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjY2OTgxN2VlM2Y0NDViOGI1MWI4MjE2YjM2YTVkNTQuc2V0Q29udGVudChodG1sXzBkY2U0YTM5MTcyMzRjOWViOTRiZjM0ZDIzMGMwNGE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI1MzBmYzQyN2U2MjRmMmQ4NDNmM2UyYTI0NGQ2YWNhLmJpbmRQb3B1cChwb3B1cF82NjY5ODE3ZWUzZjQ0NWI4YjUxYjgyMTZiMzZhNWQ1NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wOWM4YzIzM2E1MmY0MDdlYmQ5NTQzYzBlMzQ4NmJiMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzU1LjkzNTY2MSwtMy4yMDEwOThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY2YzBhNjE5NWYzODRiNDQ5YzgzOWFjMTViZjhhNDQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1NDRkNDMxMjYxNjQ0MzVhNTY5YTM0NDRhODdjYWE0ID0gJCgnPGRpdiBpZD0iaHRtbF83NTQ0ZDQzMTI2MTY0NDM1YTU2OWEzNDQ0YTg3Y2FhNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q0hJTERSRU4gMVNUIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjZjMGE2MTk1ZjM4NGI0NDljODM5YWMxNWJmOGE0NDMuc2V0Q29udGVudChodG1sXzc1NDRkNDMxMjYxNjQ0MzVhNTY5YTM0NDRhODdjYWE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA5YzhjMjMzYTUyZjQwN2ViZDk1NDNjMGUzNDg2YmIwLmJpbmRQb3B1cChwb3B1cF82NmMwYTYxOTVmMzg0YjQ0OWM4MzlhYzE1YmY4YTQ0Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMGFiNDlkNTA1MTI0NmMwOTZkMWM5ZDhhMjIwNTc2MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ3MzUyNSwtMS44NzcwODddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzViNjc0NjBmZjkyZjQ0M2RiYzc5NjkxYmRhZDU1M2Q5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg1ZjMyNDcxMWZmODQwODE4ZDBmOTRhM2RiZjcxNjA2ID0gJCgnPGRpdiBpZD0iaHRtbF84NWYzMjQ3MTFmZjg0MDgxOGQwZjk0YTNkYmY3MTYwNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3VsdHVyZSBTaG9jayBQcm9qZWN0cyBDSUMgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81YjY3NDYwZmY5MmY0NDNkYmM3OTY5MWJkYWQ1NTNkOS5zZXRDb250ZW50KGh0bWxfODVmMzI0NzExZmY4NDA4MThkMGY5NGEzZGJmNzE2MDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTBhYjQ5ZDUwNTEyNDZjMDk2ZDFjOWQ4YTIyMDU3NjIuYmluZFBvcHVwKHBvcHVwXzViNjc0NjBmZjkyZjQ0M2RiYzc5NjkxYmRhZDU1M2Q5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5NDA4Yjc5ODRkZTQ1MmU4NmJkMTU0YTFhZDBlMjI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNjI2NTUsMS4yODk3MDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RjMDg2ODUyNjY3MTQ5NzA5ZGM5NzNmODVkMzFhOTQ5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFkZjMyYjE2NjEyOTRkYWVhYzI2ZmI1MjQwMmVjYWY0ID0gJCgnPGRpdiBpZD0iaHRtbF8xZGYzMmIxNjYxMjk0ZGFlYWMyNmZiNTI0MDJlY2FmNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuY3JvZnQgQWR2aWNlIFByb2plY3QgKE1BUCkgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYzA4Njg1MjY2NzE0OTcwOWRjOTczZjg1ZDMxYTk0OS5zZXRDb250ZW50KGh0bWxfMWRmMzJiMTY2MTI5NGRhZWFjMjZmYjUyNDAyZWNhZjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjk0MDhiNzk4NGRlNDUyZTg2YmQxNTRhMWFkMGUyMjUuYmluZFBvcHVwKHBvcHVwX2RjMDg2ODUyNjY3MTQ5NzA5ZGM5NzNmODVkMzFhOTQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NjZWNlMjlkNDRkMDRhNmE5OGFmOTBjNDkxNTRhM2U2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTUuOTY2NTg2LC0zLjE5MzE0OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGFjZWMzMDlmYjRlNDcxOTk3MTEwZDU4YWNiYTNmNjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGJkYWIxZWE3YzFhNDA2YmJjZTNhYThmZGZkMjUwNGIgPSAkKCc8ZGl2IGlkPSJodG1sXzhiZGFiMWVhN2MxYTQwNmJiY2UzYWE4ZmRmZDI1MDRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaXRpemVucyBBZHZpY2UgU2NvdGxhbmQgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYWNlYzMwOWZiNGU0NzE5OTcxMTBkNThhY2JhM2Y2Ni5zZXRDb250ZW50KGh0bWxfOGJkYWIxZWE3YzFhNDA2YmJjZTNhYThmZGZkMjUwNGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2NlY2UyOWQ0NGQwNGE2YTk4YWY5MGM0OTE1NGEzZTYuYmluZFBvcHVwKHBvcHVwX2RhY2VjMzA5ZmI0ZTQ3MTk5NzExMGQ1OGFjYmEzZjY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljYmUxYzQwZDNhNDRlNjA5MzcwMzc2MzI0Y2Y3ZDZjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTMwMTU5LC0wLjEwMjA1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lODFlMDg3M2VmOWI0NzEyOWFjZTJmZDg1Y2JkYTMzMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNTZhMTU5ZGZjMDU0MmZkYTgwNmI4OGZkNmVkYWVmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzU2YTE1OWRmYzA1NDJmZGE4MDZiODhmZDZlZGFlZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5hdGlvbmFsIENoaWxkcmVuJiN4Mjc7cyBCdXJlYXUgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lODFlMDg3M2VmOWI0NzEyOWFjZTJmZDg1Y2JkYTMzMC5zZXRDb250ZW50KGh0bWxfYzU2YTE1OWRmYzA1NDJmZGE4MDZiODhmZDZlZGFlZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWNiZTFjNDBkM2E0NGU2MDkzNzAzNzYzMjRjZjdkNmMuYmluZFBvcHVwKHBvcHVwX2U4MWUwODczZWY5YjQ3MTI5YWNlMmZkODVjYmRhMzMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RmZDNmN2ExNGMwZjRkY2FiZjQ3ZWVhMWU4MjYzMDU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMzc4MDY4LC0wLjExMzI5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzYxZjljNWJmMzI4NDFmN2I0OGFkYzQyNWY5YjQ4YmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGUxMTFjMjFiYjBkNDc3MDgyZDM1ODQwMDI4MDY5ZDkgPSAkKCc8ZGl2IGlkPSJodG1sXzRlMTExYzIxYmIwZDQ3NzA4MmQzNTg0MDAyODA2OWQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SYXBlIGFuZCBTZXh1YWwgQWJ1c2UgU3VwcG9ydCBDZW50cmUgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNjFmOWM1YmYzMjg0MWY3YjQ4YWRjNDI1ZjliNDhiZS5zZXRDb250ZW50KGh0bWxfNGUxMTFjMjFiYjBkNDc3MDgyZDM1ODQwMDI4MDY5ZDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGZkM2Y3YTE0YzBmNGRjYWJmNDdlZWExZTgyNjMwNTQuYmluZFBvcHVwKHBvcHVwX2M2MWY5YzViZjMyODQxZjdiNDhhZGM0MjVmOWI0OGJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UzOWI4MzViMzExYzRlYWU5MWExMWI2NzMzMjRkMDQ1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTc3MjM5LC0wLjM3MDIwOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDYzODI1YWRmZGI5NGQzOGFhNzcyOWMzNDY3ZjM0OTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjUxODYyZjdmNDJmNDZmOWExZGU2NTU1MzY4MWZlZTUgPSAkKCc8ZGl2IGlkPSJodG1sXzY1MTg2MmY3ZjQyZjQ2ZjlhMWRlNjU1NTM2ODFmZWU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Zb3VuZyBIYXJyb3cgRm91bmRhdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA2MzgyNWFkZmRiOTRkMzhhYTc3MjljMzQ2N2YzNDkyLnNldENvbnRlbnQoaHRtbF82NTE4NjJmN2Y0MmY0NmY5YTFkZTY1NTUzNjgxZmVlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lMzliODM1YjMxMWM0ZWFlOTFhMTFiNjczMzI0ZDA0NS5iaW5kUG9wdXAocG9wdXBfMDYzODI1YWRmZGI5NGQzOGFhNzcyOWMzNDY3ZjM0OTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDQ5ZDJhOWM4ODE1NGI2YmFjNjg4YWEzNmE0ZmQ5Y2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My41MDA1MzIsLTIuNDQ2NTA4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zYzJhNjQxMWZhYzU0YWJjYTVmZTk3MjQ4OTIyYjY1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YjhiMmM0YTc1N2I0NWIzODI2OGQ1N2ZlMjZlNzMxYSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2I4YjJjNGE3NTdiNDViMzgyNjhkNTdmZTI2ZTczMWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRydXN0IGluIExlaWdoIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2MyYTY0MTFmYWM1NGFiY2E1ZmU5NzI0ODkyMmI2NTcuc2V0Q29udGVudChodG1sXzdiOGIyYzRhNzU3YjQ1YjM4MjY4ZDU3ZmUyNmU3MzFhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA0OWQyYTljODgxNTRiNmJhYzY4OGFhMzZhNGZkOWNlLmJpbmRQb3B1cChwb3B1cF8zYzJhNjQxMWZhYzU0YWJjYTVmZTk3MjQ4OTIyYjY1Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMmM4MGJkOTVlYWE0NjIwYWIwZjg5MTE5MGM5YzYxMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ4MTg5OCwtMi4yMzYwNThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZmMTA4YjE1OTEzMjRhZjU4MWUxODk3MWVjOTEyMjg4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M2N2JiYTUzMzBjYzQxNTU5ODNlNzdjMzNjMzk5MTg4ID0gJCgnPGRpdiBpZD0iaHRtbF9jNjdiYmE1MzMwY2M0MTU1OTgzZTc3YzMzYzM5OTE4OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3JlYXRlciBNYW5jaGVzdGVyIENvbW11bml0eSBDaGFwbGFpbmN5IDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmYxMDhiMTU5MTMyNGFmNTgxZTE4OTcxZWM5MTIyODguc2V0Q29udGVudChodG1sX2M2N2JiYTUzMzBjYzQxNTU5ODNlNzdjMzNjMzk5MTg4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QyYzgwYmQ5NWVhYTQ2MjBhYjBmODkxMTkwYzljNjEyLmJpbmRQb3B1cChwb3B1cF9mZjEwOGIxNTkxMzI0YWY1ODFlMTg5NzFlYzkxMjI4OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kOTQxOGIwYTVmMDM0MTY0OTJkNzUyNjZiMjhjN2E1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ3NDkyMiwtMS44NjQxMTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EyY2FhNzRlMDkwYjQ2NDJhYzkwZGJkNDJjYzM3ZDM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5Y2U5MjE3N2ZiOTRhYmI5ZGEyMzQ4NzY3ZjZmNmNjID0gJCgnPGRpdiBpZD0iaHRtbF85OWNlOTIxNzdmYjk0YWJiOWRhMjM0ODc2N2Y2ZjZjYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFyZW50cyBBbmQgQ2hpbGRyZW4gVG9nZXRoZXIgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMmNhYTc0ZTA5MGI0NjQyYWM5MGRiZDQyY2MzN2QzNi5zZXRDb250ZW50KGh0bWxfOTljZTkyMTc3ZmI5NGFiYjlkYTIzNDg3NjdmNmY2Y2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDk0MThiMGE1ZjAzNDE2NDkyZDc1MjY2YjI4YzdhNTEuYmluZFBvcHVwKHBvcHVwX2EyY2FhNzRlMDkwYjQ2NDJhYzkwZGJkNDJjYzM3ZDM2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiOGU5YmRkMWMzNDQ0MDQ5NDBiMGI1YTY1MDdlMDRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuMzUwNjY2LC0xLjQzODM2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzQxZmYxZTBiNTg4NDc4Zjg3MzA3MzUxMjViZjMwYjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGRkYWFhODk0ZThmNGFlNWE3MWM5NDc2MTYzYmIyNTQgPSAkKCc8ZGl2IGlkPSJodG1sXzRkZGFhYTg5NGU4ZjRhZTVhNzFjOTQ3NjE2M2JiMjU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IYW1ibGV0b24gYW5kIFJpY2htb25kc2hpcmUgQ2FyZXJzIENlbnRyZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc0MWZmMWUwYjU4ODQ3OGY4NzMwNzM1MTI1YmYzMGIyLnNldENvbnRlbnQoaHRtbF80ZGRhYWE4OTRlOGY0YWU1YTcxYzk0NzYxNjNiYjI1NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83YjhlOWJkZDFjMzQ0NDA0OTQwYjBiNWE2NTA3ZTA0Zi5iaW5kUG9wdXAocG9wdXBfNzQxZmYxZTBiNTg4NDc4Zjg3MzA3MzUxMjViZjMwYjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWU1MDNkMDczMGQ4NDZjMmFmMmEwNDQ3MmYzOTJiNDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTM4NTcsMC4wNTExNTRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3ZmM5Y2Q3OGQwMzRkOGJhMjA1NTVkZTNkYThlYjNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcxMTkzZmJhNDQ0NDQ3ZTE4OWI3ZjBmOTUyZDJmMWI2ID0gJCgnPGRpdiBpZD0iaHRtbF83MTE5M2ZiYTQ0NDQ0N2UxODliN2YwZjk1MmQyZjFiNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2FsdXNhIENvbW11bml0eSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y3ZmM5Y2Q3OGQwMzRkOGJhMjA1NTVkZTNkYThlYjNkLnNldENvbnRlbnQoaHRtbF83MTE5M2ZiYTQ0NDQ0N2UxODliN2YwZjk1MmQyZjFiNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZTUwM2QwNzMwZDg0NmMyYWYyYTA0NDcyZjM5MmI0MC5iaW5kUG9wdXAocG9wdXBfZjdmYzljZDc4ZDAzNGQ4YmEyMDU1NWRlM2RhOGViM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjZmZmUzOTIwN2VmNDc0ZDgxNzFjYjlhZTQ3ZjU5MDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS42MDIzNzEsLTMuMzQzNzg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mY2M1ZTgwYmZlMzk0YzgzOWNkYzM1YzliNjcyYjMwYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNjEwOTU4NTc5MjI0MmRkYmYzZWM1OTM4YzU0MzY1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjYxMDk1ODU3OTIyNDJkZGJmM2VjNTkzOGM1NDM2NWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRyaXZhbGxpcyBIb21lcyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZjYzVlODBiZmUzOTRjODM5Y2RjMzVjOWI2NzJiMzBiLnNldENvbnRlbnQoaHRtbF9iNjEwOTU4NTc5MjI0MmRkYmYzZWM1OTM4YzU0MzY1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNmZmZTM5MjA3ZWY0NzRkODE3MWNiOWFlNDdmNTkwNC5iaW5kUG9wdXAocG9wdXBfZmNjNWU4MGJmZTM5NGM4MzljZGMzNWM5YjY3MmIzMGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDE4YmMxMTc2YzY0NGFkNDg5NDVlMTRmY2MzYWRlYWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC44MjU4OTMsLTAuMTQxMzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YwMmEzNGRjYTE1NjQ3MjBiOTdjOTgzOTBlZjhiNDdjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ3ZDEzYzE2NTk1MzRiYzg4MDBmMWFhNDBlMTdjZTE4ID0gJCgnPGRpdiBpZD0iaHRtbF80N2QxM2MxNjU5NTM0YmM4ODAwZjFhYTQwZTE3Y2UxOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2hhbmdlLCBHcm93LCBMaXZlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjAyYTM0ZGNhMTU2NDcyMGI5N2M5ODM5MGVmOGI0N2Muc2V0Q29udGVudChodG1sXzQ3ZDEzYzE2NTk1MzRiYzg4MDBmMWFhNDBlMTdjZTE4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAxOGJjMTE3NmM2NDRhZDQ4OTQ1ZTE0ZmNjM2FkZWFhLmJpbmRQb3B1cChwb3B1cF9mMDJhMzRkY2ExNTY0NzIwYjk3Yzk4MzkwZWY4YjQ3Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MjhmODA0YTJjZTY0NmNmYWJiM2ZkOTZjNzYzYTJmYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQxMzI3OSwtMi40OTc3NDldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE0M2ZmOGM2Y2I5NDRkZDVhYWFlOTAxNTQ2MDEyMTNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YzODI2YjFiYzk1YTQyNTFhMzc3ZTllM2U0YzlkZmUyID0gJCgnPGRpdiBpZD0iaHRtbF9mMzgyNmIxYmM5NWE0MjUxYTM3N2U5ZTNlNGM5ZGZlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QWN0aW9uIGZvciBNLkUuIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTQzZmY4YzZjYjk0NGRkNWFhYWU5MDE1NDYwMTIxM2Uuc2V0Q29udGVudChodG1sX2YzODI2YjFiYzk1YTQyNTFhMzc3ZTllM2U0YzlkZmUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcyOGY4MDRhMmNlNjQ2Y2ZhYmIzZmQ5NmM3NjNhMmZjLmJpbmRQb3B1cChwb3B1cF8xNDNmZjhjNmNiOTQ0ZGQ1YWFhZTkwMTU0NjAxMjEzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MTQwMDQ3NDFjM2Y0MDhjODQyZTFkMDQzNTJmMmQ3OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5MzUyMywtMC4yMzc0NDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDI1MiwgMTU4LCAxODUpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJkMThmOTFmNzY1MDQzNDdhODVhZDczODkwNWNlZjYyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBjMTlkNTRhNWQ4NTRlMzZhMzdiNTEyMWUzYzMyYjJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI5YmI4MWQ1MWYwMTQ4ZmNhOWFjODg0ZmZhMGNmNDMwID0gJCgnPGRpdiBpZD0iaHRtbF8yOWJiODFkNTFmMDE0OGZjYTlhYzg4NGZmYTBjZjQzMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3RhbmRpbmcgVG9nZXRoZXIgQWdhaW5zdCBEb21lc3RpYyBWaW9sZW5jZSA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBjMTlkNTRhNWQ4NTRlMzZhMzdiNTEyMWUzYzMyYjJkLnNldENvbnRlbnQoaHRtbF8yOWJiODFkNTFmMDE0OGZjYTlhYzg4NGZmYTBjZjQzMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MTQwMDQ3NDFjM2Y0MDhjODQyZTFkMDQzNTJmMmQ3OS5iaW5kUG9wdXAocG9wdXBfMGMxOWQ1NGE1ZDg1NGUzNmEzN2I1MTIxZTNjMzJiMmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmU4ZDM2MTAxMmIwNDVmYzgxNzBmYmQzNGNmYzlhYWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My41MDA1MzIsLTIuNDQ2NTA4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyNTIsIDE1OCwgMTg1KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjUyLCAxNTgsIDE4NSkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZDE4ZjkxZjc2NTA0MzQ3YTg1YWQ3Mzg5MDVjZWY2Mik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNmNjYjBiNDBiYzU0YjM5ODczYjZjMjdhMDU0M2EyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMzE0MjQ4M2I3M2I0MmMzYjhhYWU2NWFlOTRiN2E3YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDMxNDI0ODNiNzNiNDJjM2I4YWFlNjVhZTk0YjdhN2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRydXN0IGluIExlaWdoIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzZjY2IwYjQwYmM1NGIzOTg3M2I2YzI3YTA1NDNhMjIuc2V0Q29udGVudChodG1sX2QzMTQyNDgzYjczYjQyYzNiOGFhZTY1YWU5NGI3YTdiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZlOGQzNjEwMTJiMDQ1ZmM4MTcwZmJkMzRjZmM5YWFmLmJpbmRQb3B1cChwb3B1cF8zNmNjYjBiNDBiYzU0YjM5ODczYjZjMjdhMDU0M2EyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTNjMDQ5MzAzOWRmNDJmMWJiZmUwNTU3NzRhYzFkNjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdlMzQyNjQ3ZDY5ZjQzMTA5N2VjZjg2NjEzNGI3MGQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTQ3MzYsLTAuMTc3Mzg2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhYTQ2ODlkMWE3ZTRmNGVhN2FlMWJkZWMwYmUyNGY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgyNWRkZTA1MGQ1MDQzN2NiMDRkMzcxZDIyNDE4Zjk0ID0gJCgnPGRpdiBpZD0iaHRtbF84MjVkZGUwNTBkNTA0MzdjYjA0ZDM3MWQyMjQxOGY5NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIEFubmEgRnJldWQgQ2VudHJlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmFhNDY4OWQxYTdlNGY0ZWE3YWUxYmRlYzBiZTI0Zjguc2V0Q29udGVudChodG1sXzgyNWRkZTA1MGQ1MDQzN2NiMDRkMzcxZDIyNDE4Zjk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdlMzQyNjQ3ZDY5ZjQzMTA5N2VjZjg2NjEzNGI3MGQ3LmJpbmRQb3B1cChwb3B1cF82YWE0Njg5ZDFhN2U0ZjRlYTdhZTFiZGVjMGJlMjRmOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNWRkMDk1Y2ZiZmU0NWRkODI5YWE1NDFkNTNhY2I1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjE0ODI1LDAuODcyMDA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q1YTNlOWY4YzFjZDRiMTk5MmVhNGIxMmZjNTBkMTYxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk1ZmU2YTMyZjBlNDQ0NzNiZTUyZTVlZTRkZDRkNjFiID0gJCgnPGRpdiBpZD0iaHRtbF85NWZlNmEzMmYwZTQ0NDczYmU1MmU1ZWU0ZGQ0ZDYxYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q1hLIExpbWl0ZWQgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNWEzZTlmOGMxY2Q0YjE5OTJlYTRiMTJmYzUwZDE2MS5zZXRDb250ZW50KGh0bWxfOTVmZTZhMzJmMGU0NDQ3M2JlNTJlNWVlNGRkNGQ2MWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTVkZDA5NWNmYmZlNDVkZDgyOWFhNTQxZDUzYWNiNTYuYmluZFBvcHVwKHBvcHVwX2Q1YTNlOWY4YzFjZDRiMTk5MmVhNGIxMmZjNTBkMTYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzYWU2ZThmNjE4OTRkMmM4OTMyMmUzNDcxZTVhM2IxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNjI2MjAyLC0xLjEyMDY2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZmQxNjMyYjc3MTY0MTAxYmJkN2FiMjQzYzc4OWNiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MzIxNTQ0OTJkN2U0N2FiYWFhMThiNjA2ZmIyNmRkYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjMyMTU0NDkyZDdlNDdhYmFhYTE4YjYwNmZiMjZkZGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZpc3RhIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWZkMTYzMmI3NzE2NDEwMWJiZDdhYjI0M2M3ODljYjUuc2V0Q29udGVudChodG1sXzYzMjE1NDQ5MmQ3ZTQ3YWJhYWExOGI2MDZmYjI2ZGRjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUzYWU2ZThmNjE4OTRkMmM4OTMyMmUzNDcxZTVhM2IxLmJpbmRQb3B1cChwb3B1cF81ZmQxNjMyYjc3MTY0MTAxYmJkN2FiMjQzYzc4OWNiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MTlhMjMwMjQ1ZTA0MzJiYjgyYTQyZjZhYjM5ZjE0ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUzNjMyLDAuMDc5NzkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNiOTJlNDIwN2RlMTRlMzliMjZkYjA1ZmY3NjE0YWUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEzMTJlNmMzZWY1MTQ3NDliZmViOTEyYjY0NDU2YjM3ID0gJCgnPGRpdiBpZD0iaHRtbF8xMzEyZTZjM2VmNTE0NzQ5YmZlYjkxMmI2NDQ1NmIzNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2lsZW50IFNlY3JldCA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNiOTJlNDIwN2RlMTRlMzliMjZkYjA1ZmY3NjE0YWUwLnNldENvbnRlbnQoaHRtbF8xMzEyZTZjM2VmNTE0NzQ5YmZlYjkxMmI2NDQ1NmIzNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MTlhMjMwMjQ1ZTA0MzJiYjgyYTQyZjZhYjM5ZjE0ZS5iaW5kUG9wdXAocG9wdXBfM2I5MmU0MjA3ZGUxNGUzOWIyNmRiMDVmZjc2MTRhZTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWRmYTQ3OGY3Mzk5NDMzNDkwOGFlNmIyZmZhYTMwM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDQ3MzIsLTIuNDgzNTMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhjN2JmYzI5NDMxYzQ5OTViMWZhYTJjNGRmZDZjNGQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ5YzRmYTgzZDA3NjQyMTJhNTQ1MDcxZTBmOGNmNjhkID0gJCgnPGRpdiBpZD0iaHRtbF80OWM0ZmE4M2QwNzY0MjEyYTU0NTA3MWUwZjhjZjY4ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGZ0IDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGM3YmZjMjk0MzFjNDk5NWIxZmFhMmM0ZGZkNmM0ZDMuc2V0Q29udGVudChodG1sXzQ5YzRmYTgzZDA3NjQyMTJhNTQ1MDcxZTBmOGNmNjhkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlkZmE0NzhmNzM5OTQzMzQ5MDhhZTZiMmZmYWEzMDNlLmJpbmRQb3B1cChwb3B1cF84YzdiZmMyOTQzMWM0OTk1YjFmYWEyYzRkZmQ2YzRkMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZTgwNTdjZDk5MjA0MDI5OWE2YTA2YzFkZjRkMDE0OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM5MDIwNSwtMi4zNDMwNzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmFlM2Q4YTBmZjgxNDVkNzkyYjI5YTY5YmI4NDUyZGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmM4YzVjNDVhM2MyNGFlY2E0NThjODI4M2U5NDI2NDYgPSAkKCc8ZGl2IGlkPSJodG1sX2ZjOGM1YzQ1YTNjMjRhZWNhNDU4YzgyODNlOTQyNjQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbWJyYWNlIFJlc2lsaWVuY2UgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82YWUzZDhhMGZmODE0NWQ3OTJiMjlhNjliYjg0NTJkZC5zZXRDb250ZW50KGh0bWxfZmM4YzVjNDVhM2MyNGFlY2E0NThjODI4M2U5NDI2NDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmU4MDU3Y2Q5OTIwNDAyOTlhNmEwNmMxZGY0ZDAxNDkuYmluZFBvcHVwKHBvcHVwXzZhZTNkOGEwZmY4MTQ1ZDc5MmIyOWE2OWJiODQ1MmRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNjOGEyZGM2MTEwOTQxZDhiMmY4YWU0NzAzZmVmZWE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuODU5OTU2LC0zLjEzNDcxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OGJhYWI0NDI1MjI0NGRiODZiOTVlMDE1ZTgwMzk5MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NTQwOTExZTQ3Njk0MDI2YmFmYWI1M2E5YjQ1ZGMwYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzU0MDkxMWU0NzY5NDAyNmJhZmFiNTNhOWI0NWRjMGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBGYW1seSBJbml0aWF0aXZlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOThiYWFiNDQyNTIyNDRkYjg2Yjk1ZTAxNWU4MDM5OTAuc2V0Q29udGVudChodG1sXzc1NDA5MTFlNDc2OTQwMjZiYWZhYjUzYTliNDVkYzBiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNjOGEyZGM2MTEwOTQxZDhiMmY4YWU0NzAzZmVmZWE4LmJpbmRQb3B1cChwb3B1cF85OGJhYWI0NDI1MjI0NGRiODZiOTVlMDE1ZTgwMzk5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZGRhNWUyZTEzZWY0M2EzYWM5ZDMzZDY0NjI1ZWIzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ4MzM2OSwtMi4yMjczNTRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWEwNTA4Yjc2NDQ3NDRmNWJmODBmNWM4YWIzZjVmYzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWM0YWYyNDVjZjIxNDExMmIzNDk0MjAzNjM4ZGE3MGMgPSAkKCc8ZGl2IGlkPSJodG1sX2VjNGFmMjQ1Y2YyMTQxMTJiMzQ5NDIwMzYzOGRhNzBjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdHJlZXQgTGVhZ3VlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWEwNTA4Yjc2NDQ3NDRmNWJmODBmNWM4YWIzZjVmYzUuc2V0Q29udGVudChodG1sX2VjNGFmMjQ1Y2YyMTQxMTJiMzQ5NDIwMzYzOGRhNzBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRkZGE1ZTJlMTNlZjQzYTNhYzlkMzNkNjQ2MjVlYjM1LmJpbmRQb3B1cChwb3B1cF8xYTA1MDhiNzY0NDc0NGY1YmY4MGY1YzhhYjNmNWZjNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZGYzNmNkODdmNmM0YTdlOWVlZTFkYTc2MjZiMzdkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5OTg2OSwtMC4wOTI5NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjg1NmZmYzQwMDI5NGQwNDhhYWI0MjNhZGRmZjEzZTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTk4ZTI4OTczNDNhNGQwMjg2NDRhOTIzOGEwNTI5NjYgPSAkKCc8ZGl2IGlkPSJodG1sXzk5OGUyODk3MzQzYTRkMDI4NjQ0YTkyMzhhMDUyOTY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgRm95ZXIgRmVkZXJhdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4NTZmZmM0MDAyOTRkMDQ4YWFiNDIzYWRkZmYxM2U2LnNldENvbnRlbnQoaHRtbF85OThlMjg5NzM0M2E0ZDAyODY0NGE5MjM4YTA1Mjk2Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80ZGYzNmNkODdmNmM0YTdlOWVlZTFkYTc2MjZiMzdkYS5iaW5kUG9wdXAocG9wdXBfMjg1NmZmYzQwMDI5NGQwNDhhYWI0MjNhZGRmZjEzZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjI0MjA3OWNkZmE0NDE4YTllOTIzN2E2NmU5NDMxNzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41OTE3MzUsMC4wMzE0NTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTY1Mjg4MmQwODUyNGU2OWI3NjIzOGFhNDFmOGM5NzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWUxYTQ3Nzc3NzBlNGFmM2I4ZTQzOWM1NmJlNWUxYjcgPSAkKCc8ZGl2IGlkPSJodG1sXzllMWE0Nzc3NzcwZTRhZjNiOGU0MzljNTZiZTVlMWI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5KZXdpc2ggTGFkcyYjeDI3OyAmYW1wOyBHaXJscyYjeDI3OyBCcmlnYWRlIC1UaGUgSkxHQiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE2NTI4ODJkMDg1MjRlNjliNzYyMzhhYTQxZjhjOTc2LnNldENvbnRlbnQoaHRtbF85ZTFhNDc3Nzc3MGU0YWYzYjhlNDM5YzU2YmU1ZTFiNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yMjQyMDc5Y2RmYTQ0MThhOWU5MjM3YTY2ZTk0MzE3OS5iaW5kUG9wdXAocG9wdXBfMTY1Mjg4MmQwODUyNGU2OWI3NjIzOGFhNDFmOGM5NzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzM5OTkxODI2MTA4NDBjM2JmOWViNTAxMDUyNmJmZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4zMzA5NTUsLTEuMjUwMzY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzMzQzZTQxYmU0ZjRjNWFiOTk4YzI1NjcxZTA1ZmI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUyZGJjMjdiYmMyNTQyMmE4YTc1ZjE5M2M3YmQ2NmZjID0gJCgnPGRpdiBpZD0iaHRtbF81MmRiYzI3YmJjMjU0MjJhOGE3NWYxOTNjN2JkNjZmYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGl2aW5nIFBhaW50aW5ncyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzMzQzZTQxYmU0ZjRjNWFiOTk4YzI1NjcxZTA1ZmI0LnNldENvbnRlbnQoaHRtbF81MmRiYzI3YmJjMjU0MjJhOGE3NWYxOTNjN2JkNjZmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83Mzk5OTE4MjYxMDg0MGMzYmY5ZWI1MDEwNTI2YmZkMy5iaW5kUG9wdXAocG9wdXBfYzMzNDNlNDFiZTRmNGM1YWI5OThjMjU2NzFlMDVmYjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjE3Y2IyMDhlMTk1NDU0OWJmYTAwNGUxNWYyNTdiZDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40ODU4MDUsLTAuMTE2NDA5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiODcwNmUyMTE4MjQ2MzM4YTc4MjVjMTBhMzlkYTYxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjNzFmM2E3MzAxZjQ1NGRhNGE3YmQyZjc3N2VhMjJhID0gJCgnPGRpdiBpZD0iaHRtbF8yYzcxZjNhNzMwMWY0NTRkYTRhN2JkMmY3NzdlYTIyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVZBIChBZ2FpbnN0IFZpb2xlbmNlIGFuZCBBYnVzZSkgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYjg3MDZlMjExODI0NjMzOGE3ODI1YzEwYTM5ZGE2MS5zZXRDb250ZW50KGh0bWxfMmM3MWYzYTczMDFmNDU0ZGE0YTdiZDJmNzc3ZWEyMmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjE3Y2IyMDhlMTk1NDU0OWJmYTAwNGUxNWYyNTdiZDIuYmluZFBvcHVwKHBvcHVwX2NiODcwNmUyMTE4MjQ2MzM4YTc4MjVjMTBhMzlkYTYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIwZTJjNjAwOThhYTQ1YjVhYjc0OTFjZTJmOTcxNDM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNjAwOSwtMC4wNjc1NDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDUzM2JlMjkzMGU4NGZjZWFmZGFmYmIwZGFjNTMzMjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTI0ZGI2NjVmNzE1NGMxOGE1MGI4M2JhNWJjNmE3ZjIgPSAkKCc8ZGl2IGlkPSJodG1sX2EyNGRiNjY1ZjcxNTRjMThhNTBiODNiYTViYzZhN2YyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NQUMtVUsgTHRkIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDUzM2JlMjkzMGU4NGZjZWFmZGFmYmIwZGFjNTMzMjMuc2V0Q29udGVudChodG1sX2EyNGRiNjY1ZjcxNTRjMThhNTBiODNiYTViYzZhN2YyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIwZTJjNjAwOThhYTQ1YjVhYjc0OTFjZTJmOTcxNDM3LmJpbmRQb3B1cChwb3B1cF8wNTMzYmUyOTMwZTg0ZmNlYWZkYWZiYjBkYWM1MzMyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NTUzNzA0OGVhMGQ0YmFmYmIxY2RlMjgwMjI2NjRiNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ3Nzg5OCwtMi4yMzU4MjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGViMGZkZDUwNzQxNGQ1NGFiYTQ1YTU3Yjg3ZTA5YmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2E0ZjYyZDc1YzJiNDU1Nzg2OTY1OTc3MzVmOGE5ODUgPSAkKCc8ZGl2IGlkPSJodG1sXzNhNGY2MmQ3NWMyYjQ1NTc4Njk2NTk3NzM1ZjhhOTg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MR0JUIEZvdW5kYXRpb24gPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZWIwZmRkNTA3NDE0ZDU0YWJhNDVhNTdiODdlMDliZS5zZXRDb250ZW50KGh0bWxfM2E0ZjYyZDc1YzJiNDU1Nzg2OTY1OTc3MzVmOGE5ODUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzU1MzcwNDhlYTBkNGJhZmJiMWNkZTI4MDIyNjY0YjUuYmluZFBvcHVwKHBvcHVwX2RlYjBmZGQ1MDc0MTRkNTRhYmE0NWE1N2I4N2UwOWJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1ODc2MGIyNThlYzQzMWNhMzU5OTA2NzliYWUyMWVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTI5NzM3LC0wLjEwMTUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MxODdiZjY5NWIzMTRmMWFiZjY0OGMwNDMzNzE3NWNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxYjE5MzA5MTVkOTQzZDNiNTZiOGJhZTllYTY4MWRlID0gJCgnPGRpdiBpZD0iaHRtbF9mMWIxOTMwOTE1ZDk0M2QzYjU2YjhiYWU5ZWE2ODFkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RmFtaWx5IEFjdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MxODdiZjY5NWIzMTRmMWFiZjY0OGMwNDMzNzE3NWNlLnNldENvbnRlbnQoaHRtbF9mMWIxOTMwOTE1ZDk0M2QzYjU2YjhiYWU5ZWE2ODFkZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81NTg3NjBiMjU4ZWM0MzFjYTM1OTkwNjc5YmFlMjFlZS5iaW5kUG9wdXAocG9wdXBfYzE4N2JmNjk1YjMxNGYxYWJmNjQ4YzA0MzM3MTc1Y2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWMyMzQzNjhjNDYwNGU2YzlmZmI3MDY0N2FmNWQ4NzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDE0NjYsLTAuMDk5MzgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg1M2Y5ZjlhMWM5NzQyOWQ5MGQ1ODkzZTU1YmU2YjI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UxOWYyMjdiY2UyMTQ0ZTViMmEwMDQ3OTM5M2IyZWE3ID0gJCgnPGRpdiBpZD0iaHRtbF9lMTlmMjI3YmNlMjE0NGU1YjJhMDA0NzkzOTNiMmVhNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TXVzY3VsYXIgRHlzdHJvcGh5IFVLIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODUzZjlmOWExYzk3NDI5ZDkwZDU4OTNlNTViZTZiMjkuc2V0Q29udGVudChodG1sX2UxOWYyMjdiY2UyMTQ0ZTViMmEwMDQ3OTM5M2IyZWE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFjMjM0MzY4YzQ2MDRlNmM5ZmZiNzA2NDdhZjVkODcyLmJpbmRQb3B1cChwb3B1cF84NTNmOWY5YTFjOTc0MjlkOTBkNTg5M2U1NWJlNmIyOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGRkOTJmYWJiMTY0MTVhOTYxNGY3YzlhZGM3YjlmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU1ODk0OSwwLjA3NjU5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNmFjMDEwYTA4M2U0ZDRkYjAyMmEwNzgwYWM0Nzk1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMzVmOTZhNTM4ZGI0YjQxODEzMTQyMjRkM2ZiNTI0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDM1Zjk2YTUzOGRiNGI0MTgxMzE0MjI0ZDNmYjUyNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFhbmNoYWwgV29tZW4mI3gyNztzIEFpZCA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE2YWMwMTBhMDgzZTRkNGRiMDIyYTA3ODBhYzQ3OTU3LnNldENvbnRlbnQoaHRtbF8wMzVmOTZhNTM4ZGI0YjQxODEzMTQyMjRkM2ZiNTI0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85OGRkOTJmYWJiMTY0MTVhOTYxNGY3YzlhZGM3YjlmMS5iaW5kUG9wdXAocG9wdXBfMTZhYzAxMGEwODNlNGQ0ZGIwMjJhMDc4MGFjNDc5NTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2MzNDY5NWM4YWJmNDdjYWE3ZGFjNzdmMDBmMDA4Y2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MjE0ODEsLTAuMTAyMDA4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiZTY1NTM3NDNjMjQxYzhiNjNmOTA5ODc4Mzg2MDUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzNmVkOGU0OGNkYzQ3Zjk5Y2ZjYzMxNDIwYTczNmE5ID0gJCgnPGRpdiBpZD0iaHRtbF9lMzZlZDhlNDhjZGM0N2Y5OWNmY2MzMTQyMGE3MzZhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2hpZnQgRm91bmRhdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NiZTY1NTM3NDNjMjQxYzhiNjNmOTA5ODc4Mzg2MDUwLnNldENvbnRlbnQoaHRtbF9lMzZlZDhlNDhjZGM0N2Y5OWNmY2MzMTQyMGE3MzZhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jYzM0Njk1YzhhYmY0N2NhYTdkYWM3N2YwMGYwMDhjYy5iaW5kUG9wdXAocG9wdXBfY2JlNjU1Mzc0M2MyNDFjOGI2M2Y5MDk4NzgzODYwNTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzRmNTk3MmY0YzRmNDM0NDkwMGI4YWE0ZWEzMzc0MzAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTE4MjQsLTAuMTI1NDk0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyMGMwY2U2ZTFlODRhNWRiMzk5MTU3YmZiNjZhMDczID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAxYjkxYmNhODhlOTRiYjA4NmZhZDhiMzdkZGI2NzE3ID0gJCgnPGRpdiBpZD0iaHRtbF8wMWI5MWJjYTg4ZTk0YmIwODZmYWQ4YjM3ZGRiNjcxNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UHJpc29uIFJhZGlvIEFzc29jaWF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjIwYzBjZTZlMWU4NGE1ZGIzOTkxNTdiZmI2NmEwNzMuc2V0Q29udGVudChodG1sXzAxYjkxYmNhODhlOTRiYjA4NmZhZDhiMzdkZGI2NzE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc0ZjU5NzJmNGM0ZjQzNDQ5MDBiOGFhNGVhMzM3NDMwLmJpbmRQb3B1cChwb3B1cF9mMjBjMGNlNmUxZTg0YTVkYjM5OTE1N2JmYjY2YTA3Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNDViZjg5MGFlZTM0NWMwODVmMzY2YTAzNjIzNTRhZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxMDkyNSwtMC4xMTc3MDhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTFmMGRiY2UyMDFlNGIwNGFiY2Y4M2I5OWQwZDVlNmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDRlZTAyNzM5YTFlNDQyYzgzZDU5ZDE1ZWRiZGJjMjAgPSAkKCc8ZGl2IGlkPSJodG1sX2Q0ZWUwMjczOWExZTQ0MmM4M2Q1OWQxNWVkYmRiYzIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Hb29kR3ltIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFmMGRiY2UyMDFlNGIwNGFiY2Y4M2I5OWQwZDVlNmQuc2V0Q29udGVudChodG1sX2Q0ZWUwMjczOWExZTQ0MmM4M2Q1OWQxNWVkYmRiYzIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzM0NWJmODkwYWVlMzQ1YzA4NWYzNjZhMDM2MjM1NGFkLmJpbmRQb3B1cChwb3B1cF8xMWYwZGJjZTIwMWU0YjA0YWJjZjgzYjk5ZDBkNWU2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNjljOThhYWVjOTk0ZjlmOTc5NzQ0MGU4MzQyYThjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjMwMTE2NCwtMC42ODcwOThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWE4Y2EyYmUyNzA3NDk5N2E0MzUxNmUzMWFjMzMyYTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTM3MjdmZGZiMmU2NDUzMmI1MjY3YTk1OWFhMzM4NWEgPSAkKCc8ZGl2IGlkPSJodG1sX2UzNzI3ZmRmYjJlNjQ1MzJiNTI2N2E5NTlhYTMzODVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ob3J0aGFtcHRvbnNoaXJlIENhcmVycyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhOGNhMmJlMjcwNzQ5OTdhNDM1MTZlMzFhYzMzMmEzLnNldENvbnRlbnQoaHRtbF9lMzcyN2ZkZmIyZTY0NTMyYjUyNjdhOTU5YWEzMzg1YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kNjljOThhYWVjOTk0ZjlmOTc5NzQ0MGU4MzQyYThjZS5iaW5kUG9wdXAocG9wdXBfYWE4Y2EyYmUyNzA3NDk5N2E0MzUxNmUzMWFjMzMyYTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTY1Mjc1ZjM3YTg5NGRhYWFjMGMyZGFhY2Y3ZDdiNjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MjE3MTIsLTAuMTQyMzAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdhYzY2MzdmZDMyMjQ5NTU5NDA2OWY4MWEwNjQ5ODJjKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QzNzQyOTczMTBkYTQxZjI4OGIxZWZlNmNkNDZjZTQ4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U5YmM5MzA0NmRiNzQ0ZWVhYzhiMDhlMzMzZGRhZmMzID0gJCgnPGRpdiBpZD0iaHRtbF9lOWJjOTMwNDZkYjc0NGVlYWM4YjA4ZTMzM2RkYWZjMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U29jaWFsIEZpbmFuY2UgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMzc0Mjk3MzEwZGE0MWYyODhiMWVmZTZjZDQ2Y2U0OC5zZXRDb250ZW50KGh0bWxfZTliYzkzMDQ2ZGI3NDRlZWFjOGIwOGUzMzNkZGFmYzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTY1Mjc1ZjM3YTg5NGRhYWFjMGMyZGFhY2Y3ZDdiNjUuYmluZFBvcHVwKHBvcHVwX2QzNzQyOTczMTBkYTQxZjI4OGIxZWZlNmNkNDZjZTQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdmMTZkNjVjYjM3MjQ1OWFiMmZkYjJjYWYxMWFkNjcxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNDM2MzMyLC0yLjE5ODUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMjlkNmNjMjFhYjY0MmMxOTk0MjE2MjJmNmZhYzIwMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTBhOTliYTdiNWM0ZWMyOGQxNDNjYWM3MWNmMTUyMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTEwYTk5YmE3YjVjNGVjMjhkMTQzY2FjNzFjZjE1MjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vdGhlcmhvb2QgUGxhbiBDb21tdW5pdHkgSW50ZXJlc3QgQ29tcGFueSAgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMjlkNmNjMjFhYjY0MmMxOTk0MjE2MjJmNmZhYzIwMi5zZXRDb250ZW50KGh0bWxfNTEwYTk5YmE3YjVjNGVjMjhkMTQzY2FjNzFjZjE1MjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2YxNmQ2NWNiMzcyNDU5YWIyZmRiMmNhZjExYWQ2NzEuYmluZFBvcHVwKHBvcHVwX2UyOWQ2Y2MyMWFiNjQyYzE5OTQyMTYyMmY2ZmFjMjAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4ZDYyMzcyMDU1ZDQzYjM4YmI2YzdmOGMyMWUxZDM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuMjg5ODc3LC0yLjkwNDQ4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mY2Y4MmFjN2ZmYjE0NjM3YTA5ZGM3ODEwYTE2MWIyYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNzQ3M2MyYjBhM2Q0NDMxYTk3ZmZhNTE2YmJjM2I1NCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTc0NzNjMmIwYTNkNDQzMWE5N2ZmYTUxNmJiYzNiNTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPllvdXRoIEZlZGVyYXRpb24gPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mY2Y4MmFjN2ZmYjE0NjM3YTA5ZGM3ODEwYTE2MWIyYy5zZXRDb250ZW50KGh0bWxfMTc0NzNjMmIwYTNkNDQzMWE5N2ZmYTUxNmJiYzNiNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDhkNjIzNzIwNTVkNDNiMzhiYjZjN2Y4YzIxZTFkMzguYmluZFBvcHVwKHBvcHVwX2ZjZjgyYWM3ZmZiMTQ2MzdhMDlkYzc4MTBhMTYxYjJjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhMWUxZGZhMWE2NDRmZmJiODIwNjRjZTM4N2VhYzllID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTUuMDE5OTc2LC0xLjU2MjM2MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigwLCAxMjgsIDE1NikiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYyk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YTJmMzgwOTczMzQ0OGRhODAyNTQxNDNjMmJhNTQ4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMjU3MDZkODQ3Njc0YWIyOTc0OTlkMWM5NWY2ZmM3NCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjI1NzA2ZDg0NzY3NGFiMjk3NDk5ZDFjOTVmNmZjNzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPmh1bGxhYmFsb28gcmVzZWFyY2ggY2ljIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWEyZjM4MDk3MzM0NDhkYTgwMjU0MTQzYzJiYTU0OGQuc2V0Q29udGVudChodG1sXzIyNTcwNmQ4NDc2NzRhYjI5NzQ5OWQxYzk1ZjZmYzc0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhMWUxZGZhMWE2NDRmZmJiODIwNjRjZTM4N2VhYzllLmJpbmRQb3B1cChwb3B1cF81YTJmMzgwOTczMzQ0OGRhODAyNTQxNDNjMmJhNTQ4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wOTRhZDAzZjliZjk0ZjY4OWY3YWRhODliNzAwYzhlOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjYzNDU0NSwtMS4xMjc5OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTZhZGY3Njg5M2UxNDI0NThhZGEzZmQ0M2UzN2MzYWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmMwMTU4ODQzMjY0NDg1ZTk3MzkwNGIyY2MzZGEwZjYgPSAkKCc8ZGl2IGlkPSJodG1sX2JjMDE1ODg0MzI2NDQ4NWU5NzM5MDRiMmNjM2RhMGY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgTWlnaHR5IENyZWF0aXZlcyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE2YWRmNzY4OTNlMTQyNDU4YWRhM2ZkNDNlMzdjM2FiLnNldENvbnRlbnQoaHRtbF9iYzAxNTg4NDMyNjQ0ODVlOTczOTA0YjJjYzNkYTBmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wOTRhZDAzZjliZjk0ZjY4OWY3YWRhODliNzAwYzhlOC5iaW5kUG9wdXAocG9wdXBfMTZhZGY3Njg5M2UxNDI0NThhZGEzZmQ0M2UzN2MzYWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzBmZmE5NTA5NjZiNGYwYTllMmMzM2RhM2U4ZGMwNjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43NDM0MzUsLTAuMzMwOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDAsIDEyOCwgMTU2KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMCwgMTI4LCAxNTYpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FjNjYzN2ZkMzIyNDk1NTk0MDY5ZjgxYTA2NDk4MmMpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODk5OTIzZmRmMmVjNGJmZWI0NDc0ZjZhMWIxNzFmZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzMyODhhODU1NTNhNDQ1ZGJkMTQzZjkwNWEzMjc2NjYgPSAkKCc8ZGl2IGlkPSJodG1sXzMzMjg4YTg1NTUzYTQ0NWRiZDE0M2Y5MDVhMzI3NjY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ecm9wUG9pbnQgQy5JLkMuIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODk5OTIzZmRmMmVjNGJmZWI0NDc0ZjZhMWIxNzFmZDcuc2V0Q29udGVudChodG1sXzMzMjg4YTg1NTUzYTQ0NWRiZDE0M2Y5MDVhMzI3NjY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2MwZmZhOTUwOTY2YjRmMGE5ZTJjMzNkYTNlOGRjMDY2LmJpbmRQb3B1cChwb3B1cF84OTk5MjNmZGYyZWM0YmZlYjQ0NzRmNmExYjE3MWZkNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTNjMDQ5MzAzOWRmNDJmMWJiZmUwNTU3NzRhYzFkNjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VjODljNTBmZjUzOTRhOTA4YmY2MTZhYjdmMGZjNjJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc4MjQ5LC0xLjg4MTkxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzNGJlZWJiNGViNTRkZDY5MWVhNzAyYThjODgwMTkxKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q1ZTM3ZjNlNWE3MTQwMGY4ODdjNzRiNTE2Y2NjZDQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IzNDRkNmQ1ZDZiMjQ1M2JiMDNhZmRhMzkxMGVlNDc0ID0gJCgnPGRpdiBpZD0iaHRtbF9iMzQ0ZDZkNWQ2YjI0NTNiYjAzYWZkYTM5MTBlZTQ3NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIERldmVsb3BlciBTb2NpZXR5IChERVYpIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDVlMzdmM2U1YTcxNDAwZjg4N2M3NGI1MTZjY2NkNDUuc2V0Q29udGVudChodG1sX2IzNDRkNmQ1ZDZiMjQ1M2JiMDNhZmRhMzkxMGVlNDc0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VjODljNTBmZjUzOTRhOTA4YmY2MTZhYjdmMGZjNjJkLmJpbmRQb3B1cChwb3B1cF9kNWUzN2YzZTVhNzE0MDBmODg3Yzc0YjUxNmNjY2Q0NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYmUyNjJiYTcyY2I0N2RlOTYyYmRmYjA2NDVjNWNiZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5NTYxOCwtMC4yMjQyNjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYzhlNzQyM2I2Mjg0ZTZlOTlmMjkzNTkxYjJjNjFjYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMTMwMzNhZDRjMDY0OWNhYWM3Y2Y1MzE2NmEwNTBhMCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTEzMDMzYWQ0YzA2NDljYWFjN2NmNTMxNjZhMDUwYTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVsaXphYmV0aCBGaW5uIENhcmUgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYzhlNzQyM2I2Mjg0ZTZlOTlmMjkzNTkxYjJjNjFjYy5zZXRDb250ZW50KGh0bWxfMTEzMDMzYWQ0YzA2NDljYWFjN2NmNTMxNjZhMDUwYTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWJlMjYyYmE3MmNiNDdkZTk2MmJkZmIwNjQ1YzVjYmYuYmluZFBvcHVwKHBvcHVwXzBjOGU3NDIzYjYyODRlNmU5OWYyOTM1OTFiMmM2MWNjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YzZjU4ODg2NjNmMzQ3NTU5MjlmZTkxYTQzZTk5MWU5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuOTAwMDk4LC0yLjA3ODk2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzNGJlZWJiNGViNTRkZDY5MWVhNzAyYThjODgwMTkxKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzllYzVjMTQzZTExZDRmZThiYjBlYzUwNTgyYTE2ZmZhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3OTU5ZTM0NzZhYTQ4NGNhODU5YjRjYmI4Mjg4NzUyID0gJCgnPGRpdiBpZD0iaHRtbF9mNzk1OWUzNDc2YWE0ODRjYTg1OWI0Y2JiODI4ODc1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2VsbENoaWxkIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWVjNWMxNDNlMTFkNGZlOGJiMGVjNTA1ODJhMTZmZmEuc2V0Q29udGVudChodG1sX2Y3OTU5ZTM0NzZhYTQ4NGNhODU5YjRjYmI4Mjg4NzUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2YzZjU4ODg2NjNmMzQ3NTU5MjlmZTkxYTQzZTk5MWU5LmJpbmRQb3B1cChwb3B1cF85ZWM1YzE0M2UxMWQ0ZmU4YmIwZWM1MDU4MmExNmZmYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNDNjMGUzODVlNGM0YWRjYjU4Nzk2YWE5MzNmY2U2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUyOTk3NCwtMC4wNTQwMDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNjdmNDE2MmU5NmI0ZDAwYTY5YTYxZGIxNTE5MTk4NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MDI0NWNhNzUzNGI0NTA4OTA0M2JiZTliYmYwM2MwYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjAyNDVjYTc1MzRiNDUwODkwNDNiYmU5YmJmMDNjMGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNwaWNlIElubm92YXRpb25zIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTY3ZjQxNjJlOTZiNGQwMGE2OWE2MWRiMTUxOTE5ODYuc2V0Q29udGVudChodG1sXzYwMjQ1Y2E3NTM0YjQ1MDg5MDQzYmJlOWJiZjAzYzBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I0M2MwZTM4NWU0YzRhZGNiNTg3OTZhYTkzM2ZjZTY4LmJpbmRQb3B1cChwb3B1cF9hNjdmNDE2MmU5NmI0ZDAwYTY5YTYxZGIxNTE5MTk4Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZGE2ZWUwOWU5MmY0YTY3OGY3ODAzN2EzNzQyZmEwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUyMDAyNSwtMC4xMDM3NTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZmY3MWNiYjFiMTA0NDVhOTU1NDIzMTEyODFiMzFmZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZTNlNjU5Yjg4MDY0NDhlYTRkNWEyYWQ4MzkyY2FmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNWUzZTY1OWI4ODA2NDQ4ZWE0ZDVhMmFkODM5MmNhZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFkZGFjdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNmZjcxY2JiMWIxMDQ0NWE5NTU0MjMxMTI4MWIzMWZlLnNldENvbnRlbnQoaHRtbF81ZTNlNjU5Yjg4MDY0NDhlYTRkNWEyYWQ4MzkyY2FmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jZGE2ZWUwOWU5MmY0YTY3OGY3ODAzN2EzNzQyZmEwYy5iaW5kUG9wdXAocG9wdXBfM2ZmNzFjYmIxYjEwNDQ1YTk1NTQyMzExMjgxYjMxZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2Y0NzRhZTBhYmY4NDY0MWE3MmNjMDM2YjgxYmE2ZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4zNTI1MjUsLTAuMjUxNTc5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTM0YmVlYmI0ZWI1NGRkNjkxZWE3MDJhOGM4ODAxOTEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWU2ZTJjMDJiMTkyNDlhYThmZjQwMTM1NTVhZDdhYzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmQ0ZTJlNmJkNjNmNGM5YTgyNDA2NjJjYzRjODFlOWEgPSAkKCc8ZGl2IGlkPSJodG1sXzJkNGUyZTZiZDYzZjRjOWE4MjQwNjYyY2M0YzgxZTlhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TYW1hcml0YW5zIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWU2ZTJjMDJiMTkyNDlhYThmZjQwMTM1NTVhZDdhYzMuc2V0Q29udGVudChodG1sXzJkNGUyZTZiZDYzZjRjOWE4MjQwNjYyY2M0YzgxZTlhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdmNDc0YWUwYWJmODQ2NDFhNzJjYzAzNmI4MWJhNmY1LmJpbmRQb3B1cChwb3B1cF8xZTZlMmMwMmIxOTI0OWFhOGZmNDAxMzU1NWFkN2FjMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NjhkMWI2YTNlM2I0N2Q1ODMwMTI4YmIwZmNjMmFhMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjkyNjIzOCwtMi41MTE1MDZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MGI0ZjYwYTY5OGE0NGRiOWQ0M2RiMzNjOTYyMjA4OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNTAwZTU2NWU1NTY0YzE1YTE5YWI1Njk5MzY1OTgyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMTUwMGU1NjVlNTU2NGMxNWExOWFiNTY5OTM2NTk4MmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkhvcGUgU3VwcG9ydCBTZXJ2aWNlcyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQwYjRmNjBhNjk4YTQ0ZGI5ZDQzZGIzM2M5NjIyMDg5LnNldENvbnRlbnQoaHRtbF8xNTAwZTU2NWU1NTY0YzE1YTE5YWI1Njk5MzY1OTgyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NjhkMWI2YTNlM2I0N2Q1ODMwMTI4YmIwZmNjMmFhMS5iaW5kUG9wdXAocG9wdXBfNDBiNGY2MGE2OThhNDRkYjlkNDNkYjMzYzk2MjIwODkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTY4ODUyYmE3YmE3NDkwODkzODFjMjViODI0ZGM2NjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4zOTU4NzksLTAuMjIyMjk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTM0YmVlYmI0ZWI1NGRkNjkxZWE3MDJhOGM4ODAxOTEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTAyOWJkMGNlNGY3NDZlY2I2NGI1MjgwZDAwNjdkYmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWM5YWE4YTg3MDAzNGMzNmFhZDI3YjkwOWVlY2JmNWEgPSAkKCc8ZGl2IGlkPSJodG1sXzFjOWFhOGE4NzAwMzRjMzZhYWQyN2I5MDllZWNiZjVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5lUXVhbGl0eSBUaW1lIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTAyOWJkMGNlNGY3NDZlY2I2NGI1MjgwZDAwNjdkYmYuc2V0Q29udGVudChodG1sXzFjOWFhOGE4NzAwMzRjMzZhYWQyN2I5MDllZWNiZjVhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzE2ODg1MmJhN2JhNzQ5MDg5MzgxYzI1YjgyNGRjNjY2LmJpbmRQb3B1cChwb3B1cF85MDI5YmQwY2U0Zjc0NmVjYjY0YjUyODBkMDA2N2RiZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85M2JjZDk3OWVkMjM0MWQ5YmQ2OTcwZDNjMmFmZDE3NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUwMjc0MSwtMC4wOTI1M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzNGJlZWJiNGViNTRkZDY5MWVhNzAyYThjODgwMTkxKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QxMGY3ZjM2MDI4MTQ1NzU5NzFiZmViZDY4NmZmMDMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU5NDc5Mzk1NmZhMTRjZDNhYjkyOWYwZDM1NDBmZmI4ID0gJCgnPGRpdiBpZD0iaHRtbF81OTQ3OTM5NTZmYTE0Y2QzYWI5MjlmMGQzNTQwZmZiOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGVzdGlhIEhvdXNpbmcgJmFtcDsgU3VwcG9ydCA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxMGY3ZjM2MDI4MTQ1NzU5NzFiZmViZDY4NmZmMDMzLnNldENvbnRlbnQoaHRtbF81OTQ3OTM5NTZmYTE0Y2QzYWI5MjlmMGQzNTQwZmZiOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85M2JjZDk3OWVkMjM0MWQ5YmQ2OTcwZDNjMmFmZDE3NC5iaW5kUG9wdXAocG9wdXBfZDEwZjdmMzYwMjgxNDU3NTk3MWJmZWJkNjg2ZmYwMzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmRhN2YxNzk5Nzc3NDZjNDkzOGY1NTJkODE2MTI4YmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi4yMzQ4MjEsMC4xMjk1MjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDIzNCw3Nyw5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzRiZWViYjRlYjU0ZGQ2OTFlYTcwMmE4Yzg4MDE5MSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zOGMwMDI5MjRjYzM0NzY1YmZjZmY3M2QyNWQwYjIwOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YzU5ZDAzYmUwODg0ZWY3OGU0NGRlZTMzYzcyOTkyZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNGM1OWQwM2JlMDg4NGVmNzhlNDRkZWUzM2M3Mjk5MmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBsYXlwaHlzaW8gPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOGMwMDI5MjRjYzM0NzY1YmZjZmY3M2QyNWQwYjIwOS5zZXRDb250ZW50KGh0bWxfNGM1OWQwM2JlMDg4NGVmNzhlNDRkZWUzM2M3Mjk5MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmRhN2YxNzk5Nzc3NDZjNDkzOGY1NTJkODE2MTI4YmIuYmluZFBvcHVwKHBvcHVwXzM4YzAwMjkyNGNjMzQ3NjViZmNmZjczZDI1ZDBiMjA5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxZTIxYTVhZDY0NDRiYTI5YWMzMjczOGNjYmNjMjllID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMjg1MTcsLTAuMzc4MzgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTM0YmVlYmI0ZWI1NGRkNjkxZWE3MDJhOGM4ODAxOTEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzNhY2I5MmEzZTE3NDVjZGJlODlkM2Q2ZTNiMGJjZTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWY4ZmZlOGI4ODc0NDRjZTk5MjY3OWM2ZmMxYmZhYjIgPSAkKCc8ZGl2IGlkPSJodG1sX2FmOGZmZThiODg3NDQ0Y2U5OTI2NzljNmZjMWJmYWIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVEVNNCA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMzYWNiOTJhM2UxNzQ1Y2RiZTg5ZDNkNmUzYjBiY2U2LnNldENvbnRlbnQoaHRtbF9hZjhmZmU4Yjg4NzQ0NGNlOTkyNjc5YzZmYzFiZmFiMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MWUyMWE1YWQ2NDQ0YmEyOWFjMzI3MzhjY2JjYzI5ZS5iaW5kUG9wdXAocG9wdXBfMzNhY2I5MmEzZTE3NDVjZGJlODlkM2Q2ZTNiMGJjZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDBkNWYwOGM1YjYyNGY1ZTk0MjM5ZDhiNjA1ZGM1NWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi4zMTMyMzQsLTAuMTcyMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigyMzQsNzcsOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTM0YmVlYmI0ZWI1NGRkNjkxZWE3MDJhOGM4ODAxOTEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTQyYjU2MjgwYTgzNDMzNjk2NzQ2NDVhYjc3MGFmOGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDcyNGE5MTIzZTUyNGVlYmEwNWFiMGYyNzc2ODEzOTUgPSAkKCc8ZGl2IGlkPSJodG1sXzQ3MjRhOTEyM2U1MjRlZWJhMDVhYjBmMjc3NjgxMzk1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRVNDIEZvdW5kYXRpb24gPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNDJiNTYyODBhODM0MzM2OTY3NDY0NWFiNzcwYWY4YS5zZXRDb250ZW50KGh0bWxfNDcyNGE5MTIzZTUyNGVlYmEwNWFiMGYyNzc2ODEzOTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDBkNWYwOGM1YjYyNGY1ZTk0MjM5ZDhiNjA1ZGM1NWUuYmluZFBvcHVwKHBvcHVwXzE0MmI1NjI4MGE4MzQzMzY5Njc0NjQ1YWI3NzBhZjhhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhmZjZhNzVlNmZjNDQ2MGRhNDgzNDk4NGMxZjI0NmIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTI2NDQ0LC0wLjExMjU1Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMjM0LDc3LDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzNGJlZWJiNGViNTRkZDY5MWVhNzAyYThjODgwMTkxKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhYjkxYWUzOTJlYzQyOThhZGI5Y2M4YjI4ODhmMTlmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMwNWM0NzBiMDFmYzQ0Y2RhOWRjZGQ4ZTFjZTIxN2VlID0gJCgnPGRpdiBpZD0iaHRtbF8zMDVjNDcwYjAxZmM0NGNkYTlkY2RkOGUxY2UyMTdlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIENoaWxkcmVuJiN4Mjc7cyBTb2NpZXR5IDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmFiOTFhZTM5MmVjNDI5OGFkYjljYzhiMjg4OGYxOWYuc2V0Q29udGVudChodG1sXzMwNWM0NzBiMDFmYzQ0Y2RhOWRjZGQ4ZTFjZTIxN2VlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhmZjZhNzVlNmZjNDQ2MGRhNDgzNDk4NGMxZjI0NmIyLmJpbmRQb3B1cChwb3B1cF82YWI5MWFlMzkyZWM0Mjk4YWRiOWNjOGIyODg4ZjE5Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF80YTE4NzcyMGMzZWI0YTQxODdmMGQ2Y2ZhYWJmOTkzZCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTNjMDQ5MzAzOWRmNDJmMWJiZmUwNTU3NzRhYzFkNjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y2ZTE0ODZkYjc0MTQ5NDE5Yzk5ZjE4YmQzNTdiODg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDkxNjM1LC0wLjEyMDUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzRhMTg3NzIwYzNlYjRhNDE4N2YwZDZjZmFhYmY5OTNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NhNGM1YTdlNmE4NTQ0NzlhMTkwOGEzNzc4ZDVmOWQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUwOTg4ZDMwYjg3NTQ0ZGI4MzkwM2YxYTdjYzU3YTNhID0gJCgnPGRpdiBpZD0iaHRtbF81MDk4OGQzMGI4NzU0NGRiODM5MDNmMWE3Y2M1N2EzYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmV3IEVjb25vbWljcyBGb3VuZGF0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2E0YzVhN2U2YTg1NDQ3OWExOTA4YTM3NzhkNWY5ZDUuc2V0Q29udGVudChodG1sXzUwOTg4ZDMwYjg3NTQ0ZGI4MzkwM2YxYTdjYzU3YTNhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y2ZTE0ODZkYjc0MTQ5NDE5Yzk5ZjE4YmQzNTdiODg0LmJpbmRQb3B1cChwb3B1cF9jYTRjNWE3ZTZhODU0NDc5YTE5MDhhMzc3OGQ1ZjlkNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOTNhOGNhYzY2ZDQ0YTQzOTZmNDc3NzVlZWUwOWQzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUyOTk3NCwtMC4wNTQwMDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80YTE4NzcyMGMzZWI0YTQxODdmMGQ2Y2ZhYWJmOTkzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjhjNmIwZDNlZTg0YjFkYmE0M2ZkNDFlYWViZDYzMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81M2IzOTBlODg4MGY0MDVhOWNmMmI3OGRjMTg2M2Y1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTNiMzkwZTg4ODBmNDA1YTljZjJiNzhkYzE4NjNmNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlF1YWtlciBTb2NpYWwgQWN0aW9uIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGI4YzZiMGQzZWU4NGIxZGJhNDNmZDQxZWFlYmQ2MzEuc2V0Q29udGVudChodG1sXzUzYjM5MGU4ODgwZjQwNWE5Y2YyYjc4ZGMxODYzZjUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U5M2E4Y2FjNjZkNDRhNDM5NmY0Nzc3NWVlZTA5ZDNmLmJpbmRQb3B1cChwb3B1cF80YjhjNmIwZDNlZTg0YjFkYmE0M2ZkNDFlYWViZDYzMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yYzAxZTRlYzFjNDU0NWEyYjYwNDNkMDdkOTE4YTcxMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5NDkwMiwtMC4xNDIxMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzRhMTg3NzIwYzNlYjRhNDE4N2YwZDZjZmFhYmY5OTNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM3MDg2YTAwZjM4YjQyOWFiNTRlZmRhMjg3OTg4ZTgwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmOGZhZGYyYjY1MzQ1NTRiZDNlNmM2ZWJjNDVmZTQxID0gJCgnPGRpdiBpZD0iaHRtbF8zZjhmYWRmMmI2NTM0NTU0YmQzZTZjNmViYzQ1ZmU0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFya2luc29uJiN4Mjc7cyBVSyA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM3MDg2YTAwZjM4YjQyOWFiNTRlZmRhMjg3OTg4ZTgwLnNldENvbnRlbnQoaHRtbF8zZjhmYWRmMmI2NTM0NTU0YmQzZTZjNmViYzQ1ZmU0MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yYzAxZTRlYzFjNDU0NWEyYjYwNDNkMDdkOTE4YTcxMC5iaW5kUG9wdXAocG9wdXBfMzcwODZhMDBmMzhiNDI5YWI1NGVmZGEyODc5ODhlODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWVlYTcyZmQ4MDU0NGJkOTgyNTYzNzQ3MGM5YjY4MTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40OTU1NDUsLTAuMTE2NDI2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigxNzgsIDIyOSwgOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigxNzgsIDIyOSwgOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNGExODc3MjBjM2ViNGE0MTg3ZjBkNmNmYWFiZjk5M2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDNjNmVmOTdhZDg1NDAxZGJlOWNmYTY2Y2JlM2ViZDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWRmODIyZmQxODk4NGNjNGI4MjZiMDUzZDZjMTNmNmIgPSAkKCc8ZGl2IGlkPSJodG1sX2FkZjgyMmZkMTg5ODRjYzRiODI2YjA1M2Q2YzEzZjZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Zb3V0aCBVbml0ZWQgRm91bmRhdGlvbiA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QzYzZlZjk3YWQ4NTQwMWRiZTljZmE2NmNiZTNlYmQ1LnNldENvbnRlbnQoaHRtbF9hZGY4MjJmZDE4OTg0Y2M0YjgyNmIwNTNkNmMxM2Y2Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lZWVhNzJmZDgwNTQ0YmQ5ODI1NjM3NDcwYzliNjgxNS5iaW5kUG9wdXAocG9wdXBfZDNjNmVmOTdhZDg1NDAxZGJlOWNmYTY2Y2JlM2ViZDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWNjNDgwZWU2ZDVlNGRhMWJjNTBkMjA5ZTkzM2Y1NzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1NS45NzQ1MDksLTMuMTY4OTU2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInJnYigxNzgsIDIyOSwgOTQpIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiBmYWxzZSwKICAiZmlsbENvbG9yIjogInJnYigxNzgsIDIyOSwgOTQpIiwKICAiZmlsbE9wYWNpdHkiOiAxLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNiwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNGExODc3MjBjM2ViNGE0MTg3ZjBkNmNmYWFiZjk5M2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDM3YTI5MTIwZGI4NDA1ZDk4YzE4OTdhZTBhNzA2YzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2Q4ZDg0NWU0ODkwNDEwMjkyNzQwMGRjMmZkNjQyZWIgPSAkKCc8ZGl2IGlkPSJodG1sXzdkOGQ4NDVlNDg5MDQxMDI5Mjc0MDBkYzJmZDY0MmViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UYWlsb3IgRWQgRm91bmRhdGlvbiAtIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDM3YTI5MTIwZGI4NDA1ZDk4YzE4OTdhZTBhNzA2Yzcuc2V0Q29udGVudChodG1sXzdkOGQ4NDVlNDg5MDQxMDI5Mjc0MDBkYzJmZDY0MmViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFjYzQ4MGVlNmQ1ZTRkYTFiYzUwZDIwOWU5MzNmNTc5LmJpbmRQb3B1cChwb3B1cF9kMzdhMjkxMjBkYjg0MDVkOThjMTg5N2FlMGE3MDZjNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MDc5NWU2M2ZjMTU0OWNiOGU1Yjg4MzZjMjBiZDk1ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ4MjM4OSwtMi4zMzc4NjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80YTE4NzcyMGMzZWI0YTQxODdmMGQ2Y2ZhYWJmOTkzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZTQyNDNhMjY0YWU0NTUwYjViNmIxOWQ0MjdkZGNkNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ODBlZmFlMDY4Njg0ODhjYTQyNTgwN2E1YjQ1ODUwNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTgwZWZhZTA2ODY4NDg4Y2E0MjU4MDdhNWI0NTg1MDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNhbGZvcmQgQ1ZTIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2U0MjQzYTI2NGFlNDU1MGI1YjZiMTlkNDI3ZGRjZDcuc2V0Q29udGVudChodG1sXzU4MGVmYWUwNjg2ODQ4OGNhNDI1ODA3YTViNDU4NTA2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYwNzk1ZTYzZmMxNTQ5Y2I4ZTViODgzNmMyMGJkOTVmLmJpbmRQb3B1cChwb3B1cF9jZTQyNDNhMjY0YWU0NTUwYjViNmIxOWQ0MjdkZGNkNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NGE5ZjhiZmM4YWE0NWVjODdlYTk1YzQ5MGJkNWVjYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjIwNjg4NywwLjEyODU3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzRhMTg3NzIwYzNlYjRhNDE4N2YwZDZjZmFhYmY5OTNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhYTcwMjk4YzhlNTQ4NDI5ZjIyOWRlZDk5ZWI2YzY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q3NTkwOTNkNTRmYzRjZDM5MTQzM2RhMjBkYmI1ZTY5ID0gJCgnPGRpdiBpZD0iaHRtbF9kNzU5MDkzZDU0ZmM0Y2QzOTE0MzNkYTIwZGJiNWU2OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmVkIEJhbGxvb24gb2YgdGhlIEFpciA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhYTcwMjk4YzhlNTQ4NDI5ZjIyOWRlZDk5ZWI2YzY4LnNldENvbnRlbnQoaHRtbF9kNzU5MDkzZDU0ZmM0Y2QzOTE0MzNkYTIwZGJiNWU2OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81NGE5ZjhiZmM4YWE0NWVjODdlYTk1YzQ5MGJkNWVjYS5iaW5kUG9wdXAocG9wdXBfYWFhNzAyOThjOGU1NDg0MjlmMjI5ZGVkOTllYjZjNjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmFmOWQ0YTI3NDU2NGYxMDk5YTUwZDI1MmNiNTRmNmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC44NzY0NSwtMS4yNDA0NjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAicmdiKDE3OCwgMjI5LCA5NCkiLAogICJmaWxsT3BhY2l0eSI6IDEsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA2LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80YTE4NzcyMGMzZWI0YTQxODdmMGQ2Y2ZhYWJmOTkzZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kODg5YTVmNGUxNGM0NWIzYjM0YzI0NDc2MmQyMzc1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NWE2ZGFiNTE0YmM0MDdlYTFjZTg3NjBmMWVjZTc4NSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTVhNmRhYjUxNGJjNDA3ZWExY2U4NzYwZjFlY2U3ODUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkF1dGlzbSBIYW1wc2hpcmUgPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kODg5YTVmNGUxNGM0NWIzYjM0YzI0NDc2MmQyMzc1NS5zZXRDb250ZW50KGh0bWxfOTVhNmRhYjUxNGJjNDA3ZWExY2U4NzYwZjFlY2U3ODUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmFmOWQ0YTI3NDU2NGYxMDk5YTUwZDI1MmNiNTRmNmEuYmluZFBvcHVwKHBvcHVwX2Q4ODlhNWY0ZTE0YzQ1YjNiMzRjMjQ0NzYyZDIzNzU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q0Mzc4YTFmNWM4YTRmOGFiNDFkYTljMWVmNmE5ZDJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDg0NzMxLC0wLjAzODgyMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogZmFsc2UsCiAgImZpbGxDb2xvciI6ICJyZ2IoMTc4LCAyMjksIDk0KSIsCiAgImZpbGxPcGFjaXR5IjogMSwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDYsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzRhMTg3NzIwYzNlYjRhNDE4N2YwZDZjZmFhYmY5OTNkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA1NWI1YzQ1YzJkMzQ0MzQ4NmY3MGUzZWUyMjE2OWQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwMjhhOWY0NTQ0ZjQ1NTQ4MzRhNjA3Mzg2MjMyMzE3ID0gJCgnPGRpdiBpZD0iaHRtbF82MDI4YTlmNDU0NGY0NTU0ODM0YTYwNzM4NjIzMjMxNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RmFyZVNoYXJlIDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDU1YjVjNDVjMmQzNDQzNDg2ZjcwZTNlZTIyMTY5ZDIuc2V0Q29udGVudChodG1sXzYwMjhhOWY0NTQ0ZjQ1NTQ4MzRhNjA3Mzg2MjMyMzE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q0Mzc4YTFmNWM4YTRmOGFiNDFkYTljMWVmNmE5ZDJkLmJpbmRQb3B1cChwb3B1cF8wNTViNWM0NWMyZDM0NDM0ODZmNzBlM2VlMjIxNjlkMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbGF5ZXJfY29udHJvbF9lYjI1MTViZjM2ZDk0Yjg5ODQ0MGMzNDI2MjU4NDM1ZCA9IHsKICAgICAgICAgICAgICAgIGJhc2VfbGF5ZXJzIDogeyAic3RhbWVudG9uZXIiIDogdGlsZV9sYXllcl8wNmZmN2NjYjQ4NTQ0NzhlOGYwYTFiMGVjNzg3NjJlNiwgfSwKICAgICAgICAgICAgICAgIG92ZXJsYXlzIDogeyAiVW5zdWNjZXNzZnVsIiA6IGZlYXR1cmVfZ3JvdXBfMmQxOGY5MWY3NjUwNDM0N2E4NWFkNzM4OTA1Y2VmNjIsIlVuc3VjY2Vzc2Z1bCAtIGxvbmdsaXN0ZWQiIDogZmVhdHVyZV9ncm91cF83YWM2NjM3ZmQzMjI0OTU1OTQwNjlmODFhMDY0OTgyYywiRnVuZGVkIiA6IGZlYXR1cmVfZ3JvdXBfYTM0YmVlYmI0ZWI1NGRkNjkxZWE3MDJhOGM4ODAxOTEsIlVuc3VjY2Vzc2Z1bCAtIHNob3J0bGlzdGVkIiA6IGZlYXR1cmVfZ3JvdXBfNGExODc3MjBjM2ViNGE0MTg3ZjBkNmNmYWFiZjk5M2QsIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIEwuY29udHJvbC5sYXllcnMoCiAgICAgICAgICAgICAgICBsYXllcl9jb250cm9sX2ViMjUxNWJmMzZkOTRiODk4NDQwYzM0MjYyNTg0MzVkLmJhc2VfbGF5ZXJzLAogICAgICAgICAgICAgICAgbGF5ZXJfY29udHJvbF9lYjI1MTViZjM2ZDk0Yjg5ODQ0MGMzNDI2MjU4NDM1ZC5vdmVybGF5cywKICAgICAgICAgICAgICAgIHtwb3NpdGlvbjogJ3RvcHJpZ2h0JywKICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgYXV0b1pJbmRleDogdHJ1ZQogICAgICAgICAgICAgICAgfSkuYWRkVG8obWFwXzUzYzA0OTMwMzlkZjQyZjFiYmZlMDU1Nzc0YWMxZDY1KTsKICAgICAgICAKPC9zY3JpcHQ+"
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h4>Comparison with previous year</h4>
<p>Compared to previous years, the proportion of organisations with under £1m income has risen, although
there were more applications in all income bands.</p>
<figure>
<figcaption>Region of applicants</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9yZWdpb25fY29tcGFyZSc+PC9jYW52YXM+DQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0X3JlZ2lvbl9jb21wYXJlJykuZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMud2lkdGggID0gODAwIC0gKC4xICogODAwKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gNTAwIC0gKC4xNSAqIDUwMCk7DQogICAgICAgICAgICB2YXIgbXlOZXdDaGFydCA9IG5ldyBDaGFydChjdHgseyB0eXBlOiAnaG9yaXpvbnRhbEJhcicsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnRWFzdCBNaWRsYW5kcycsDQogICAgICAgICdFYXN0IG9mIEVuZ2xhbmQnLA0KICAgICAgICAnTG9uZG9uJywNCiAgICAgICAgJ05vcnRoIEVhc3QnLA0KICAgICAgICAnTm9ydGggV2VzdCcsDQogICAgICAgICdOb3J0aGVybiBJcmVsYW5kJywNCiAgICAgICAgJ1Njb3RsYW5kJywNCiAgICAgICAgJ1NvdXRoIEVhc3QnLA0KICAgICAgICAnU291dGggV2VzdCcsDQogICAgICAgICdXYWxlcycsDQogICAgICAgICdXZXN0IE1pZGxhbmRzJywNCiAgICAgICAgJ1lvcmtzaGlyZSBhbmQgVGhlIEh1bWJlcicNCiAgICBdLA0KICAgICdkYXRhc2V0cyc6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJzIwMTcnLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMi45LA0KICAgICAgICAgICAgICAgIDIuMSwNCiAgICAgICAgICAgICAgICAzOS4zLA0KICAgICAgICAgICAgICAgIDcuMSwNCiAgICAgICAgICAgICAgICAxMC43LA0KICAgICAgICAgICAgICAgIDIuOSwNCiAgICAgICAgICAgICAgICA1LjcsDQogICAgICAgICAgICAgICAgNy4xLA0KICAgICAgICAgICAgICAgIDguNiwNCiAgICAgICAgICAgICAgICAzLjYsDQogICAgICAgICAgICAgICAgMi45LA0KICAgICAgICAgICAgICAgIDcuMQ0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDIzNCw3Nyw5NCknDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICcyMDE4JywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDUuMSwNCiAgICAgICAgICAgICAgICA1LjEsDQogICAgICAgICAgICAgICAgMzYuOCwNCiAgICAgICAgICAgICAgICAyLjYsDQogICAgICAgICAgICAgICAgMTIuMCwNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgNi4wLA0KICAgICAgICAgICAgICAgIDExLjEsDQogICAgICAgICAgICAgICAgNy43LA0KICAgICAgICAgICAgICAgIDQuMywNCiAgICAgICAgICAgICAgICA1LjEsDQogICAgICAgICAgICAgICAgNC4zDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMCwgMTI4LCAxNTYpJw0KICAgICAgICB9DQogICAgXQ0KfSwgb3B0aW9uczogew0KICAgICdyZXNwb25zaXZlJzogZmFsc2UsDQogICAgJ2xlZ2VuZCc6IHsNCiAgICAgICAgJ2xhYmVscyc6IHsNCiAgICAgICAgICAgICdmb250U2l6ZSc6IDE2LA0KICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICB9LA0KICAgICAgICAncG9zaXRpb24nOiAnYm90dG9tJw0KICAgIH0sDQogICAgJ3NjYWxlcyc6IHsNCiAgICAgICAgJ3hBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJywNCiAgICAgICAgICAgICAgICAgICAgJ21pbic6IDANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICd5QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdDQogICAgfQ0KfSB9KTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAg"
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h3>Previously applied for funding</h3>
<p>Using data on funding by Comic Relief and Paul Hamlyn Foundation published by them as part of the
360 Giving programme, it is possible to see how many applicants have previously received funding from
either funder through other programmes. </p>
<p>In total, 11 of the 119 applicants have previously received funding from Comic Relief and six have
previously received funding from Paul Hamlyn Foundation (including one applicant who has received
funding from both). This shows that the large majority of applicants are new to funding from either
funder.</p>
<p>Of the 13 funded organisations, two have received funding from Comic Relief
previously, while none have received funding from Paul Hamlyn Foundation.</p>
<h2>Technology used</h2>
<p>Each application selected the technology they were expecting to use in their project. This can be a
difficult judgement to make: the nature of many of the applications and the stage of their development
meant that the specific technology to be used was often not clear or not yet decided.</p>
<figure>
<figcaption>Applications using particular technologies</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF90ZWNoJz48L2NhbnZhcz4NCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnRfdGVjaCcpLmdldENvbnRleHQoJzJkJyk7DQogICAgICAgICAgICBjdHguY2FudmFzLndpZHRoICA9IDgwMCAtICguMSAqIDgwMCk7DQogICAgICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDUwMCAtICguMTUgKiA1MDApOw0KICAgICAgICAgICAgdmFyIG15TmV3Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LHsgdHlwZTogJ2hvcml6b250YWxCYXInLCBkYXRhOiB7DQogICAgJ2xhYmVscyc6IFsNCiAgICAgICAgJ01vYmlsZSAoZWcgYXBwKScsDQogICAgICAgICdTb2Z0d2FyZScsDQogICAgICAgICdTaGFyaW5nJywNCiAgICAgICAgJ1Byb2R1Y2luZyBjb250ZW50JywNCiAgICAgICAgJ0NoYXQnLA0KICAgICAgICAnU29jaWFsIG1lZGlhJywNCiAgICAgICAgJ0RpcmVjdG9yeScsDQogICAgICAgICdPcGVuIHNvdXJjZScsDQogICAgICAgICdPdGhlcicsDQogICAgICAgICdNYWNoaW5lIGxlYXJuaW5nLyBhcnRpZmljaWFsIGludGVsbGlnZW5jZScsDQogICAgICAgICdEZXNrdG9wIHB1Ymxpc2hpbmcnDQogICAgXSwNCiAgICAnZGF0YXNldHMnOiBbDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdVbnN1Y2Nlc3NmdWwnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgNDguMCwNCiAgICAgICAgICAgICAgICA0MC4wLA0KICAgICAgICAgICAgICAgIDM2LjAsDQogICAgICAgICAgICAgICAgMzIuMCwNCiAgICAgICAgICAgICAgICAyMC4wLA0KICAgICAgICAgICAgICAgIDIzLjAsDQogICAgICAgICAgICAgICAgMTcuMCwNCiAgICAgICAgICAgICAgICAxOC4wLA0KICAgICAgICAgICAgICAgIDcuMCwNCiAgICAgICAgICAgICAgICAxMC4wLA0KICAgICAgICAgICAgICAgIDcuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMjMuMCwNCiAgICAgICAgICAgICAgICAxMi4wLA0KICAgICAgICAgICAgICAgIDE1LjAsDQogICAgICAgICAgICAgICAgMTMuMCwNCiAgICAgICAgICAgICAgICA5LjAsDQogICAgICAgICAgICAgICAgNy4wLA0KICAgICAgICAgICAgICAgIDYuMCwNCiAgICAgICAgICAgICAgICAzLjAsDQogICAgICAgICAgICAgICAgNS4wLA0KICAgICAgICAgICAgICAgIDQuMCwNCiAgICAgICAgICAgICAgICAzLjANCiAgICAgICAgICAgIF0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCAtIHNob3J0bGlzdGVkJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDE3OCwgMjI5LCA5NCknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgOC4wLA0KICAgICAgICAgICAgICAgIDYuMCwNCiAgICAgICAgICAgICAgICA0LjAsDQogICAgICAgICAgICAgICAgNC4wLA0KICAgICAgICAgICAgICAgIDEuMCwNCiAgICAgICAgICAgICAgICAyLjAsDQogICAgICAgICAgICAgICAgNC4wLA0KICAgICAgICAgICAgICAgIDQuMCwNCiAgICAgICAgICAgICAgICAxLjAsDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDEuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnRnVuZGVkJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDIzNCw3Nyw5NCknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgOS4wLA0KICAgICAgICAgICAgICAgIDguMCwNCiAgICAgICAgICAgICAgICAyLjAsDQogICAgICAgICAgICAgICAgMy4wLA0KICAgICAgICAgICAgICAgIDQuMCwNCiAgICAgICAgICAgICAgICAwLjAsDQogICAgICAgICAgICAgICAgMS4wLA0KICAgICAgICAgICAgICAgIDMuMCwNCiAgICAgICAgICAgICAgICA2LjAsDQogICAgICAgICAgICAgICAgMy4wLA0KICAgICAgICAgICAgICAgIDAuMA0KICAgICAgICAgICAgXQ0KICAgICAgICB9DQogICAgXQ0KfSwgb3B0aW9uczogew0KICAgICdyZXNwb25zaXZlJzogZmFsc2UsDQogICAgJ2xlZ2VuZCc6IHsNCiAgICAgICAgJ2xhYmVscyc6IHsNCiAgICAgICAgICAgICdmb250U2l6ZSc6IDE2LA0KICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICB9LA0KICAgICAgICAncG9zaXRpb24nOiAnYm90dG9tJw0KICAgIH0sDQogICAgJ3NjYWxlcyc6IHsNCiAgICAgICAgJ3hBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJywNCiAgICAgICAgICAgICAgICAgICAgJ21pbic6IDANCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICdzdGFja2VkJzogdHJ1ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAneUF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<p>Tags were applied to all 119 applications, with 18 applications having one tag
applied and 101 having more than one. The most used tag was "Mobile (eg App)",
which was applied to 88 applications, followed by "Software" (66),
"Sharing" (57) and "Producing content" (52).
32 applications used social media.</p>
<table>
<thead>
<tr>
<th align="left"></th>
<th style="text-align:right;">Unsuccessful</th>
<th style="text-align:right;">Unsuccessful - longlisted</th>
<th style="text-align:right;">Unsuccessful - shortlisted</th>
<th style="text-align:right;">Funded</th>
<th style="text-align:right;">All</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Mobile (eg App)</td>
<td style="text-align:right;">48</td>
<td style="text-align:right;">23</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">9</td>
<td style="text-align:right;">88</td>
</tr>
<tr>
<td align="left">Software</td>
<td style="text-align:right;">40</td>
<td style="text-align:right;">12</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">66</td>
</tr>
<tr>
<td align="left">Sharing</td>
<td style="text-align:right;">36</td>
<td style="text-align:right;">15</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">57</td>
</tr>
<tr>
<td align="left">Producing content</td>
<td style="text-align:right;">32</td>
<td style="text-align:right;">13</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">52</td>
</tr>
<tr>
<td align="left">Chat</td>
<td style="text-align:right;">20</td>
<td style="text-align:right;">9</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">34</td>
</tr>
<tr>
<td align="left">Social media</td>
<td style="text-align:right;">23</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">32</td>
</tr>
<tr>
<td align="left">Directory</td>
<td style="text-align:right;">17</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">28</td>
</tr>
<tr>
<td align="left">Open source</td>
<td style="text-align:right;">18</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">28</td>
</tr>
<tr>
<td align="left">Other</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">5</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">19</td>
</tr>
<tr>
<td align="left">Machine learning/ artificial intelligence</td>
<td style="text-align:right;">10</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">18</td>
</tr>
<tr>
<td align="left">Desktop publishing</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">11</td>
</tr>
</tbody>
</table>
<h2>Types of approach</h2>
<p>A better approach for understanding applicants' intentions is to look at the approach they are taking
in the work. These are focused on what the technology will actually do: provide information to users,
provide an actual service, or connect with other users.</p>
<figure>
<figcaption>Approaches used by applications</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9hcHByb2FjaGVzJz48L2NhbnZhcz4NCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnRfYXBwcm9hY2hlcycpLmdldENvbnRleHQoJzJkJyk7DQogICAgICAgICAgICBjdHguY2FudmFzLndpZHRoICA9IDgwMCAtICguMSAqIDgwMCk7DQogICAgICAgICAgICBjdHguY2FudmFzLmhlaWdodCA9IDUwMCAtICguMTUgKiA1MDApOw0KICAgICAgICAgICAgdmFyIG15TmV3Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LHsgdHlwZTogJ2hvcml6b250YWxCYXInLCBkYXRhOiB7DQogICAgJ2xhYmVscyc6IFsNCiAgICAgICAgJ1Byb3ZpZGluZyBhIHNlcnZpY2UnLA0KICAgICAgICAnUHJvdmlkaW5nIGluZm9ybWF0aW9uL2FkdmljZScsDQogICAgICAgICdQZWVyIHN1cHBvcnQvY29ubmVjdGluZyB1c2VycycsDQogICAgICAgICdUcmFpbmluZy9lZHVjYXRpb24nLA0KICAgICAgICAnRGlyZWN0b3J5L3NlYXJjaCcsDQogICAgICAgICdSZXBvcnRpbmcnLA0KICAgICAgICAnT3RoZXInDQogICAgXSwNCiAgICAnZGF0YXNldHMnOiBbDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdGdW5kZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjM0LDc3LDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAxMSwNCiAgICAgICAgICAgICAgICA4LA0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgNiwNCiAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAgMg0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMTc4LCAyMjksIDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA4LA0KICAgICAgICAgICAgICAgIDgsDQogICAgICAgICAgICAgICAgNSwNCiAgICAgICAgICAgICAgICAzLA0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgMywNCiAgICAgICAgICAgICAgICAyDQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdVbnN1Y2Nlc3NmdWwgLSBsb25nbGlzdGVkJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDAsIDEyOCwgMTU2KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAyMSwNCiAgICAgICAgICAgICAgICAyMywNCiAgICAgICAgICAgICAgICAyMCwNCiAgICAgICAgICAgICAgICAxMiwNCiAgICAgICAgICAgICAgICAxMiwNCiAgICAgICAgICAgICAgICAxMCwNCiAgICAgICAgICAgICAgICA3DQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdVbnN1Y2Nlc3NmdWwnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgNTQsDQogICAgICAgICAgICAgICAgNTMsDQogICAgICAgICAgICAgICAgNDAsDQogICAgICAgICAgICAgICAgNDcsDQogICAgICAgICAgICAgICAgMjQsDQogICAgICAgICAgICAgICAgMTksDQogICAgICAgICAgICAgICAgOA0KICAgICAgICAgICAgXQ0KICAgICAgICB9DQogICAgXQ0KfSwgb3B0aW9uczogew0KICAgICdyZXNwb25zaXZlJzogZmFsc2UsDQogICAgJ2xlZ2VuZCc6IHsNCiAgICAgICAgJ2xhYmVscyc6IHsNCiAgICAgICAgICAgICdmb250U2l6ZSc6IDE2LA0KICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICB9LA0KICAgICAgICAncG9zaXRpb24nOiAnYm90dG9tJw0KICAgIH0sDQogICAgJ3NjYWxlcyc6IHsNCiAgICAgICAgJ3hBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJywNCiAgICAgICAgICAgICAgICAgICAgJ21pbic6IDANCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICdzdGFja2VkJzogdHJ1ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAneUF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAyMCwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<p>94 applicants said that their project would involve providing a service,
with 92 applications involving providing information/advice and 69
peer support/connecting users.</p>
<table>
<thead>
<tr>
<th align="left"></th>
<th style="text-align:right;">Funded</th>
<th style="text-align:right;">Unsuccessful - shortlisted</th>
<th style="text-align:right;">Unsuccessful - longlisted</th>
<th style="text-align:right;">Unsuccessful</th>
<th style="text-align:right;">All</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Providing a service</td>
<td style="text-align:right;">11</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">21</td>
<td style="text-align:right;">54</td>
<td style="text-align:right;">94</td>
</tr>
<tr>
<td align="left">Providing information/ advice</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">23</td>
<td style="text-align:right;">53</td>
<td style="text-align:right;">92</td>
</tr>
<tr>
<td align="left">Peer support/ connecting users</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">5</td>
<td style="text-align:right;">20</td>
<td style="text-align:right;">40</td>
<td style="text-align:right;">69</td>
</tr>
<tr>
<td align="left">Training/ education</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">12</td>
<td style="text-align:right;">47</td>
<td style="text-align:right;">68</td>
</tr>
<tr>
<td align="left">Directory/ search</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">12</td>
<td style="text-align:right;">24</td>
<td style="text-align:right;">42</td>
</tr>
<tr>
<td align="left">Reporting</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">10</td>
<td style="text-align:right;">19</td>
<td style="text-align:right;">34</td>
</tr>
<tr>
<td align="left">Other</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">19</td>
</tr>
</tbody>
</table>
<h2>Focus of application</h2>
<p>Applications were tagged with the problem or theme they are focusing on, based on the four key
themes from Comic Relief's grants strategy up to August 2018:</p>
<ul>
<li>Improving health and wellbeing</li>
<li>Building stronger communities</li>
<li>Investing in children and young people</li>
<li>Empowering women and girls</li>
</ul>
<figure>
<figcaption>Focus of applications</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9mb2N1cyc+PC9jYW52YXM+DQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0X2ZvY3VzJykuZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMud2lkdGggID0gODAwIC0gKC4xICogODAwKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gNTAwIC0gKC4xNSAqIDUwMCk7DQogICAgICAgICAgICB2YXIgbXlOZXdDaGFydCA9IG5ldyBDaGFydChjdHgseyB0eXBlOiAnaG9yaXpvbnRhbEJhcicsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnSW1wcm92aW5nIGhlYWx0aCBhbmQgd2VsbGJlaW5nICcsDQogICAgICAgICdCdWlsZGluZyBzdHJvbmdlciBjb21tdW5pdGllcyAnLA0KICAgICAgICAnSW52ZXN0aW5nIGluIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgJywNCiAgICAgICAgJ0VtcG93ZXJpbmcgd29tZW4gYW5kIGdpcmxzICcNCiAgICBdLA0KICAgICdkYXRhc2V0cyc6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ0Z1bmRlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyMzQsNzcsOTQpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDcsDQogICAgICAgICAgICAgICAgMywNCiAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgIDENCiAgICAgICAgICAgIF0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCAtIHNob3J0bGlzdGVkJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDE3OCwgMjI5LCA5NCknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgNCwNCiAgICAgICAgICAgICAgICAzLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMQ0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgOCwNCiAgICAgICAgICAgICAgICA2LA0KICAgICAgICAgICAgICAgIDExLA0KICAgICAgICAgICAgICAgIDMNCiAgICAgICAgICAgIF0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigyNTIsIDE1OCwgMTg1KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAyMCwNCiAgICAgICAgICAgICAgICAyNiwNCiAgICAgICAgICAgICAgICAxOSwNCiAgICAgICAgICAgICAgICA0DQogICAgICAgICAgICBdDQogICAgICAgIH0NCiAgICBdDQp9LCBvcHRpb25zOiB7DQogICAgJ3Jlc3BvbnNpdmUnOiBmYWxzZSwNCiAgICAnbGVnZW5kJzogew0KICAgICAgICAnbGFiZWxzJzogew0KICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgIH0sDQogICAgICAgICdwb3NpdGlvbic6ICdib3R0b20nDQogICAgfSwNCiAgICAnc2NhbGVzJzogew0KICAgICAgICAneEF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnLA0KICAgICAgICAgICAgICAgICAgICAnbWluJzogMA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3N0YWNrZWQnOiB0cnVlDQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICd5QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICBdDQogICAgfQ0KfSB9KTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAg"
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<p>Almost one-third of applications related to health and wellbeing, with 7 of the 13
funded applications working in this area.</p>
<table>
<thead>
<tr>
<th align="left"></th>
<th style="text-align:right;">Funded</th>
<th style="text-align:right;">Unsuccessful - shortlisted</th>
<th style="text-align:right;">Unsuccessful - longlisted</th>
<th style="text-align:right;">Unsuccessful</th>
<th style="text-align:right;">All</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Improving health and wellbeing</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">8</td>
<td style="text-align:right;">20</td>
<td style="text-align:right;">39</td>
</tr>
<tr>
<td align="left">Building stronger communities</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">26</td>
<td style="text-align:right;">38</td>
</tr>
<tr>
<td align="left">Investing in children and young people</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">11</td>
<td style="text-align:right;">19</td>
<td style="text-align:right;">33</td>
</tr>
<tr>
<td align="left">Empowering women and girls</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">9</td>
</tr>
</tbody>
</table>
<h2>Target audience</h2>
<p>Applicants were asked to choose the type of audiences they were targeting, across five audience
groups. Applicants could specify more than one target audience. Most applications related to providing
a service to the organisations' beneficiaries directly, with 99 applications choosing this audience.
78 applications were aimed at professionals who work with those beneficiaries - e.g. teachers,
care workers, health workers. 54 applications are aimed at the general public, 75 at organisations
and 57 at volunteers or campaigners. All of the successful applications work directly with beneficiaries.</p>
<figure>
<figcaption>Audience of applications</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9hdWRpZW5jZSc+PC9jYW52YXM+DQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0X2F1ZGllbmNlJykuZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMud2lkdGggID0gODAwIC0gKC4xICogODAwKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gNTAwIC0gKC4xNSAqIDUwMCk7DQogICAgICAgICAgICB2YXIgbXlOZXdDaGFydCA9IG5ldyBDaGFydChjdHgseyB0eXBlOiAnaG9yaXpvbnRhbEJhcicsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnQmVuZWZpY2lhcmllcy9zZXJ2aWNlIHVzZXJzJywNCiAgICAgICAgJ0Zyb250bGluZSBwcmFjdGl0aW9uZXJzL3Byb2Zlc3Npb25hbHMnLA0KICAgICAgICAnT3JnYW5pc2F0aW9ucycsDQogICAgICAgICdWb2x1bnRlZXJzJywNCiAgICAgICAgJ0dlbmVyYWwgcHVibGljJywNCiAgICAgICAgJ090aGVyJw0KICAgIF0sDQogICAgJ2RhdGFzZXRzJzogWw0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnRnVuZGVkJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDIzNCw3Nyw5NCknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMTEsDQogICAgICAgICAgICAgICAgMTAsDQogICAgICAgICAgICAgICAgNCwNCiAgICAgICAgICAgICAgICA3LA0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgMg0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICdyZ2IoMTc4LCAyMjksIDk0KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA3LA0KICAgICAgICAgICAgICAgIDYsDQogICAgICAgICAgICAgICAgNywNCiAgICAgICAgICAgICAgICA0LA0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgMQ0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJ3JnYigwLCAxMjgsIDE1NiknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMjQsDQogICAgICAgICAgICAgICAgMjAsDQogICAgICAgICAgICAgICAgMTgsDQogICAgICAgICAgICAgICAgMTYsDQogICAgICAgICAgICAgICAgMTAsDQogICAgICAgICAgICAgICAgNA0KICAgICAgICAgICAgXQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsJywNCiAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAncmdiKDI1MiwgMTU4LCAxODUpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDU3LA0KICAgICAgICAgICAgICAgIDQyLA0KICAgICAgICAgICAgICAgIDQ2LA0KICAgICAgICAgICAgICAgIDMwLA0KICAgICAgICAgICAgICAgIDM2LA0KICAgICAgICAgICAgICAgIDgNCiAgICAgICAgICAgIF0NCiAgICAgICAgfQ0KICAgIF0NCn0sIG9wdGlvbnM6IHsNCiAgICAncmVzcG9uc2l2ZSc6IGZhbHNlLA0KICAgICdsZWdlbmQnOiB7DQogICAgICAgICdsYWJlbHMnOiB7DQogICAgICAgICAgICAnZm9udFNpemUnOiAxNiwNCiAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgfSwNCiAgICAgICAgJ3Bvc2l0aW9uJzogJ2JvdHRvbScNCiAgICB9LA0KICAgICdzY2FsZXMnOiB7DQogICAgICAgICd4QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAnZHJhd0JvcmRlcic6IHRydWUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMjAsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicsDQogICAgICAgICAgICAgICAgICAgICdtaW4nOiAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAnc3RhY2tlZCc6IHRydWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgJ3lBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMjAsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIF0NCiAgICB9DQp9IH0pOw0KICAgICAgICA8L3NjcmlwdD4NCiAgICA="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<h2>Stage of development</h2>
<p>To examine the stage of development that each project was in, a scale based on
<a href="https://socialtechtrust.org/wp-content/uploads/2017/10/Measuring-the-Growth-of-Your-Social-Tech-Business-FINAL.pdf">research
from the Social Tech Trust (formerly known as Nominet Trust)</a>.
The <em>concept</em> stage was added to the five developed by Social Tech Trust to capture those applicants
that
had not undertaken any development work on their project. The categories used were:</p>
<ul>
<li>Concept - An idea for the product but no development undertaken</li>
<li>Build - going from concept to minimum viable product (MVP)</li>
<li>Demonstrate - early pilot testing and proving the value of the product or service</li>
<li>Develop - building the operational team and partnerships to support growth, creating a
sustainable business model</li>
<li>Readiness - preparing to scale up delivery</li>
<li>Scaling - increasing access to the product or service</li>
</ul>
<p>Classifying the projects was not always straightforward, as some applications were unclear about the
stage that their project had reached. </p>
<figure>
<figcaption>Application stage of development</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9zdGFnZXMnPjwvY2FudmFzPg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydF9zdGFnZXMnKS5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy53aWR0aCAgPSA4MDAgLSAoLjEgKiA4MDApOw0KICAgICAgICAgICAgY3R4LmNhbnZhcy5oZWlnaHQgPSA1MDAgLSAoLjE1ICogNTAwKTsNCiAgICAgICAgICAgIHZhciBteU5ld0NoYXJ0ID0gbmV3IENoYXJ0KGN0eCx7IHR5cGU6ICdsaW5lJywgZGF0YTogew0KICAgICdsYWJlbHMnOiBbDQogICAgICAgICdDb25jZXB0JywNCiAgICAgICAgJ0J1aWxkJywNCiAgICAgICAgJ0RlbW9uc3RyYXRlJywNCiAgICAgICAgJ0RldmVsb3AnLA0KICAgICAgICAnUmVhZGluZXNzJywNCiAgICAgICAgJ1NjYWxpbmcnDQogICAgXSwNCiAgICAnZGF0YXNldHMnOiBbDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICdGdW5kZWQnLA0KICAgICAgICAgICAgJ2JvcmRlckNvbG9yJzogJ3JnYigyMzQsNzcsOTQpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDYsDQogICAgICAgICAgICAgICAgNSwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAwDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgJ2xpbmVUZW5zaW9uJzogMA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gc2hvcnRsaXN0ZWQnLA0KICAgICAgICAgICAgJ2JvcmRlckNvbG9yJzogJ3JnYigxNzgsIDIyOSwgOTQpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDQsDQogICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIDEsDQogICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAxDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgJ2xpbmVUZW5zaW9uJzogMA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnVW5zdWNjZXNzZnVsIC0gbG9uZ2xpc3RlZCcsDQogICAgICAgICAgICAnYm9yZGVyQ29sb3InOiAncmdiKDAsIDEyOCwgMTU2KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICA3LA0KICAgICAgICAgICAgICAgIDcsDQogICAgICAgICAgICAgICAgMywNCiAgICAgICAgICAgICAgICA3LA0KICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAgMg0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICdsaW5lVGVuc2lvbic6IDANCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgICAgJ2xhYmVsJzogJ1Vuc3VjY2Vzc2Z1bCcsDQogICAgICAgICAgICAnYm9yZGVyQ29sb3InOiAncmdiKDI1MiwgMTU4LCAxODUpJywNCiAgICAgICAgICAgICdkYXRhJzogWw0KICAgICAgICAgICAgICAgIDI1LA0KICAgICAgICAgICAgICAgIDE2LA0KICAgICAgICAgICAgICAgIDUsDQogICAgICAgICAgICAgICAgMTMsDQogICAgICAgICAgICAgICAgMywNCiAgICAgICAgICAgICAgICA3DQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgJ2xpbmVUZW5zaW9uJzogMA0KICAgICAgICB9DQogICAgXQ0KfSwgb3B0aW9uczogew0KICAgICdyZXNwb25zaXZlJzogZmFsc2UsDQogICAgJ2xlZ2VuZCc6IHsNCiAgICAgICAgJ2xhYmVscyc6IHsNCiAgICAgICAgICAgICdmb250U2l6ZSc6IDE2LA0KICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICB9LA0KICAgICAgICAncG9zaXRpb24nOiAnYm90dG9tJw0KICAgIH0sDQogICAgJ3NjYWxlcyc6IHsNCiAgICAgICAgJ3hBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICdkcmF3Qm9yZGVyJzogZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICd5QXhlcyc6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAnZ3JpZExpbmVzJzogew0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAndGlja3MnOiB7DQogICAgICAgICAgICAgICAgICAgICdmb250U2l6ZSc6IDIwLA0KICAgICAgICAgICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAnc3RhY2tlZCc6IHRydWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
<p>As would be expected for a fund of this nature, most applications were at an early stage of development.
42 applications were at the <em>concept</em> stage, with a further 38 at the <em>build</em> and <em>demonstrate</em>
stages
and 22 at the <em>develop</em> stage. 11 of the 13 funded projects were at the concept or build stage.</p>
<table>
<thead>
<tr>
<th align="left"></th>
<th style="text-align:right;">Funded</th>
<th style="text-align:right;">Unsuccessful - shortlisted</th>
<th style="text-align:right;">Unsuccessful - longlisted</th>
<th style="text-align:right;">Unsuccessful</th>
<th style="text-align:right;">All</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Concept</td>
<td style="text-align:right;">6</td>
<td style="text-align:right;">4</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">25</td>
<td style="text-align:right;">42</td>
</tr>
<tr>
<td align="left">Build</td>
<td style="text-align:right;">5</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">16</td>
<td style="text-align:right;">30</td>
</tr>
<tr>
<td align="left">Demonstrate</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">5</td>
<td style="text-align:right;">8</td>
</tr>
<tr>
<td align="left">Develop</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">13</td>
<td style="text-align:right;">22</td>
</tr>
<tr>
<td align="left">Readiness</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">7</td>
</tr>
<tr>
<td align="left">Scaling</td>
<td style="text-align:right;">0</td>
<td style="text-align:right;">1</td>
<td style="text-align:right;">2</td>
<td style="text-align:right;">7</td>
<td style="text-align:right;">10</td>
</tr>
<tr>
<td align="left">All</td>
<td style="text-align:right;">13</td>
<td style="text-align:right;">9</td>
<td style="text-align:right;">28</td>
<td style="text-align:right;">69</td>
<td style="text-align:right;">119</td>
</tr>
</tbody>
</table>
<h4>Comparison with previous year</h4>
<p>Compared to 2017, there was a slightly higher proportion of projects at the <em>build</em> and <em>scaling</em>
stages, and a lower proportion at the <em>demonstrate</em> stage. Some care should be taken in looking at
these findings however, as in 2018 the stage of development was assessed by the project themselves,
while in 2017 it was assessed by the researchers.</p>
<figure>
<figcaption>Application stage of development</figcaption>
<iframe src="data:text/html;base64,DQogICAgICAgIDwhLS0gTG9hZCBDaGFydHMuanMgLS0+DQogICAgICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0NoYXJ0LmpzLzIuNS4wL0NoYXJ0LmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KICAgIA0KICAgICAgICA8Y2FudmFzIGlkPSdjaGFydF9zdGFnZXNfY29tcGFyZSc+PC9jYW52YXM+DQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0X3N0YWdlc19jb21wYXJlJykuZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMud2lkdGggID0gODAwIC0gKC4xICogODAwKTsNCiAgICAgICAgICAgIGN0eC5jYW52YXMuaGVpZ2h0ID0gNTAwIC0gKC4xNSAqIDUwMCk7DQogICAgICAgICAgICB2YXIgbXlOZXdDaGFydCA9IG5ldyBDaGFydChjdHgseyB0eXBlOiAnbGluZScsIGRhdGE6IHsNCiAgICAnbGFiZWxzJzogWw0KICAgICAgICAnQ29uY2VwdCcsDQogICAgICAgICdCdWlsZCcsDQogICAgICAgICdEZW1vbnN0cmF0ZScsDQogICAgICAgICdEZXZlbG9wJywNCiAgICAgICAgJ1JlYWRpbmVzcycsDQogICAgICAgICdTY2FsaW5nJw0KICAgIF0sDQogICAgJ2RhdGFzZXRzJzogWw0KICAgICAgICB7DQogICAgICAgICAgICAnbGFiZWwnOiAnMjAxNycsDQogICAgICAgICAgICAnYm9yZGVyQ29sb3InOiAncmdiKDAsIDEyOCwgMTU2KScsDQogICAgICAgICAgICAnZGF0YSc6IFsNCiAgICAgICAgICAgICAgICAzNi4yLA0KICAgICAgICAgICAgICAgIDE5LjksDQogICAgICAgICAgICAgICAgMTkuMSwNCiAgICAgICAgICAgICAgICAxNy43LA0KICAgICAgICAgICAgICAgIDUuMCwNCiAgICAgICAgICAgICAgICAyLjENCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICAnbGluZVRlbnNpb24nOiAwDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICAgICdsYWJlbCc6ICcyMDE4JywNCiAgICAgICAgICAgICdib3JkZXJDb2xvcic6ICdyZ2IoMjUyLCAxNTgsIDE4NSknLA0KICAgICAgICAgICAgJ2RhdGEnOiBbDQogICAgICAgICAgICAgICAgMzUuMywNCiAgICAgICAgICAgICAgICAyNS4yLA0KICAgICAgICAgICAgICAgIDYuNywNCiAgICAgICAgICAgICAgICAxOC41LA0KICAgICAgICAgICAgICAgIDUuOSwNCiAgICAgICAgICAgICAgICA4LjQNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICAnbGluZVRlbnNpb24nOiAwDQogICAgICAgIH0NCiAgICBdDQp9LCBvcHRpb25zOiB7DQogICAgJ3Jlc3BvbnNpdmUnOiBmYWxzZSwNCiAgICAnbGVnZW5kJzogew0KICAgICAgICAnbGFiZWxzJzogew0KICAgICAgICAgICAgJ2ZvbnRTaXplJzogMTYsDQogICAgICAgICAgICAnZm9udEZhbWlseSc6ICdcJ1JvYm90b1wnLHNhbnMtc2VyaWYnDQogICAgICAgIH0sDQogICAgICAgICdwb3NpdGlvbic6ICdib3R0b20nDQogICAgfSwNCiAgICAnc2NhbGVzJzogew0KICAgICAgICAneEF4ZXMnOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJ2dyaWRMaW5lcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgJ2RyYXdCb3JkZXInOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ3RpY2tzJzogew0KICAgICAgICAgICAgICAgICAgICAnZm9udFNpemUnOiAxNiwNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRGYW1pbHknOiAnXCdSb2JvdG9cJyxzYW5zLXNlcmlmJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgJ3lBeGVzJzogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICdncmlkTGluZXMnOiB7DQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICd0aWNrcyc6IHsNCiAgICAgICAgICAgICAgICAgICAgJ2ZvbnRTaXplJzogMjAsDQogICAgICAgICAgICAgICAgICAgICdmb250RmFtaWx5JzogJ1wnUm9ib3RvXCcsc2Fucy1zZXJpZicNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICdzdGFja2VkJzogZmFsc2UNCiAgICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgIH0NCn0gfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgIA=="
style="height:600px;width: 100%;border:none !important;" allowfullscreen="" webkitallowfullscreen=""
mozallowfullscreen=""></iframe>
</figure>
</article>
</main>
</div>
</section>
</body>
</html>