This repository has been archived by the owner on Jul 9, 2019. It is now read-only.
/
ui.go
741 lines (714 loc) · 648 KB
/
ui.go
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
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
package main
const ui_main = `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>录直播 - WebUI</title>
<link href="favicon.ico" rel="bookmark" type="image/x-icon"/>
<link href="favicon.ico" rel="icon" type="image/x-icon"/>
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="bootstrap.min.css" rel="stylesheet">
<script src="jquery.min.js"></script>
<script src="bootstrap.min.js"></script>
<script src="flv.min.js"></script>
<script language='javascript'>
function addTaskAction() {
$("button").attr("disabled", "disabled");
$("#addTaskDialog").modal('hide');
if ($("#addTask_pathg").attr("hidden") == "hidden") {
addTaskCheck();
} else
doAddTask();
return false;
}
function addTasksAction() {
$("button").attr("disabled", "disabled");
$("#addTasksDialog").modal('hide');
var urls = $("#addTask_urls").val();
urls = encodeURIComponent(urls);
if (urls == "") {
showTip("至少输入一行地址.", 2);
$("button").removeAttr("disabled");
} else {
showTip("正在添加批量任务...", 0);
doAjax("addex", "urls=" + urls, function (ret) {
if (ret > 0) {
showTip("成功添加" + ret + "条任务.", 1);
} else {
showTip("没有成功添加任务.", 3);
}
$("button").removeAttr("disabled");
showTasks(true);
},
function () {
showTip("请求后端失败.", 3);
$("button").removeAttr("disabled");
});
}
return false;
}
var theTasks = null;
function showTasks(s) {
var hta = false;
$("button").attr("disabled", "disabled");
$("#tasklist").html("");
var cf = 0;
if (s == true)
cf = 1000;
setTimeout(function () {
showTip("正在获取任务列表...", 0);
doAjax("tasks", "", function (ret) {
var j = JSON.parse(ret);
if (!j.E) {
theTasks = j.Tasks;
var rows = "";
var row = "";
for (var i = 0; i < theTasks.length; i++) {
var v = theTasks[i];
var inf = v.LiveInfo;
t = "[无数据]";
if (inf != null)
var t = inf.RoomTitle;
s = v.Run ? "<div class=\"progress progress-striped active\"><div class=\"progress-bar progress-success\" style=\"width: 100%;\"></div></div>" : "<div class=\"progress progress-striped\"><div class=\"progress-bar progress-bar-danger\" role=\"progressbar\" style=\"width: 100%;\"></div></div>";
var m = v.M ? "循环" : "普通";
var l = !v.Run ? "未运行" : v.TimeLong;
var ls = v.Live ? "<span class=\"glyphicon glyphicon-ok-circle\" />" : "<span class=\"glyphicon glyphicon-remove-circle\" />";
var buttons = "<th>";
if (v.Run)
buttons += "<button onclick=\"stopBtnEvt(" + (i + 1) + ")\" class=\"btn btn-warning\" type=\"button\"><span class=\"glyphicon glyphicon-stop\" /> 停止</button>\n";
else {
buttons += "<button onclick=\"startBtnEvt(" + (i + 1) + ")\" class=\"btn btn-success\" type=\"button\"><span class=\"glyphicon glyphicon-play\" /> 开始</button>\n";
buttons += "<button onclick=\"delBtnEvt(" + (i + 1) + ")\" class=\"btn btn-danger\" type=\"button\"><span class=\"glyphicon glyphicon-remove\" /> 删除</button>\n";
}
if (!hta) {
if (v.Files != null) {
if (v.Files.length == 1) {
buttons += "<button onclick=\"down(" + (i + 1) + ",0)\" class=\"btn btn-primary\" type=\"button\"><span class=\"glyphicon glyphicon-download\" /> 下载</button>\n";
if (v.FileExt == "flv")
buttons += "<button onclick=\"play(" + (i + 1) + ",0)\" class=\"btn btn-primary\" type=\"button\"><span class=\"glyphicon glyphicon-play-circle\" /> 播放</button>\n";
} else {
var dlBtn = "<div class=\"btn-group\"><button type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"glyphicon glyphicon-download\" /> 下载 <span class=\"caret\"></span></button><ul class=\"dropdown-menu\" role=\"menu\">";
var pyBtn = "<div class=\"btn-group\"><button type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"glyphicon glyphicon-play-circle\" /> 播放 <span class=\"caret\"></span></button><ul class=\"dropdown-menu\" role=\"menu\">";
for (var x = 0; x < v.Files.length; x++) {
dlBtn += "<li onclick=\"down(" + (i + 1) + "," + (x + 1) + ")\"><button class=\"btn btn-link\"><span class=\"glyphicon glyphicon-download-alt\" /> 分段" + (x + 1) + "</a></li>";
pyBtn += "<li onclick=\"play(" + (i + 1) + "," + (x + 1) + ")\"><button class=\"btn btn-link\"><span class=\"glyphicon glyphicon-play\" /> 分段" + (x + 1) + "</a></li>";
}
dlBtn += "</ul></div>\n";
pyBtn += "</ul></div>\n";
buttons += dlBtn;
if (v.FileExt == "flv") {
buttons += pyBtn;
}
}
}
}
if (v.LiveInfo != null)
buttons += "<button onclick=\"infoBtnEvt(" + (i + 1) + ")\" class=\"btn btn-info\" type=\"button\"><span class=\"glyphicon glyphicon-option-horizontal\" /> 详情</button>\n";
buttons += "</th>";
row = "<tr>";
row += "<td>" + (i + 1) + "</td>";
row += "<td><a target=\"_blank\" href=\"" + v.SiteURL + "\" title=\"" + v.Site + "\"><img height=\"16\" width=\"16\" src=" + v.SiteIcon + " /></a></td>";
row += "<td>" + ls + "</td>";
row += "<td>" + m + "</td>";
row += "<td>" + s + "</td>";
row += "<td>" + l + "</td>";
row += "<td>" + t + "</td>";
row += buttons;
row += "</tr>";
rows += row;
}
$("#tasklist").html(rows);
}
if (j.Err) {
showTip("获取任务列表完成,但发生了错误.", 2);
} else
showTip("获取任务列表成功.", 1);
$("button").removeAttr("disabled");
},
function () {
showTip("获取任务列表失败.", 3);
$("button").removeAttr("disabled");
});
}, cf);
}
function showSupports() {
showTip("正在获取平台支持信息...", 0);
doAjax("supports", "",
function (ret) {
ret = ret.replace(/\*/g, "<span style=\"color: red; \">*</span>");
$("#sup").removeAttr("hidden");
$("#supt").html(ret);
showTip("获取平台支持信息成功.", 1);
},
function () {
showTip("获取平台支持信息失败.", 2);
});
}
$(document).ready(function () {
showTip("正在检查版本更新...", 0);
doAjax("ver", "",
function (ret) {
var arr = ret.split("|");
$("#tver").text("(Ver " + arr[0] + ")");
if (arr[1] != "null") {
$("#uver").text("发现新版本(Ver " + arr[1] + ")");
$("#uver_tip").removeAttr("hidden");
$("#uver_a").click(function () {
$("#uver_tip").attr("hidden", "hidden");
$("button").attr("disabled", "disabled");
showTip("自动更新中...", 1);
doAjax("update", "", function (ret) {
if (ret == "true")
showTip("自动更新成功,下次启动将使用新版.", 1);
else
showTip("自动更新失败.", 2);
$("button").removeAttr("disabled");
}, function () {
showTip("请求后端失败.", 3);
$("button").removeAttr("disabled");
});
});
}
showTip("获取版本信息成功.", 1);
showSupports();
showTasks();
},
function () {
showTip("获取版本信息失败.", 2);
showSupports();
showTasks();
}
)
;
})
;
function doAddTask() {
var url = $("#addTask_url").val();
url = encodeURIComponent(url);
var path = $("#addTask_path").val();
var ext = $("#addTask_fileext").val();
var m = $("#addTask_m").is(':checked');
var r = $("#addTask_run").is(':checked');
var tp = path;
if (!m)
tp += "." + ext;
checkPathExist(tp, function (e) {
if (e != null) {
if (e == true) {
alert("文件(路径)已存在,请更换.");
setTimeout(function () {
$("button").removeAttr("disabled");
$("#addTaskDialog").modal('show');
}, 500);
return;
}
showTip("正在添加任务...", 0);
url = encodeURIComponent(url);
tp = encodeURIComponent(tp);
doAjax("add", "url=" + url + "&path=" + tp + "&m=" + m + "&run=" + r,
function (ret) {
if (ret == "ok")
showTip("添加任务成功.", 1);
else
showTip("添加任务失败.", 3);
showTasks(true);
},
function () {
showTip("请求后端失败.", 3);
showTasks(true);
});
} else
$("button").removeAttr("disabled");
});
}
function checkPathExist(path, cb) {
showTip("正在获取路径信息...", 0);
doAjax("exist", "path=" + path,
function (ret) {
showTip("路径信息获取成功.", 1);
cb(ret == "exist");
},
function () {
showTip("路径信息获取失败.", 3);
cb(null);
});
}
function addTaskCheck() {
showTip("正在获取地址信息...", 0);
var url = $("#addTask_url").val();
url = encodeURIComponent(url);
doAjax("check", "url=" + url,
function (ret) {
var j = JSON.parse(ret);
if (!j.Pass) {
showTip("不支持的地址.", 2);
$("button").removeAttr("disabled");
} else if (j.Has) {
if (!j.Support) {
showTip("当前系统中没有FFmpeg,不支持添加此地址.(<strong><a target=\"_noblank\" href=\"https://ffmpeg.org/download.html\" class=\"btn btn-link\">点此下载</a></strong>)", 2);
$("button").removeAttr("disabled");
return;
}
if (!j.Live) {
$("#addTask_m").prop("checked", true);
$("#addTask_m").attr("disabled", "disabled");
$("#addTask_mg").attr("class", "checkbox disabled");
}
$("#addTask_path").val(j.Path);
$("#addTask_fileext").val(j.FileExt);
$("#addTask_url").attr("readonly", 'readonly');
$("#addTask_pathg").removeAttr("hidden");
setTimeout(function () {
$("button").removeAttr("disabled");
$("#addTaskDialog").modal('show');
}, 500);
} else {
showTip("不存在的房间.", 2);
$("button").removeAttr("disabled");
}
},
function () {
showTip("获取地址信息失败.", 3);
$("button").removeAttr("disabled");
});
}
function startBtnEvt(o) {
if (theTasks[o - 1].Files != null && !confirm("文件(路径)已存在,是否覆盖并继续?"))
return;
$("button").attr("disabled", "disabled");
showTip("正在开始任务...", 0);
doAjax("start", "id=" + o,
function (ret) {
if (ret == "ok")
showTip("开始任务成功.", 1);
else
showTip("开始任务失败.", 3);
showTasks(true);
},
function () {
showTip("请求后端失败.", 3);
showTasks(true);
});
}
function stopBtnEvt(o) {
if (confirm("确定要停止此任务?")) {
$("button").attr("disabled", "disabled");
showTip("正在停止任务...", 0);
doAjax("stop", "id=" + o, function (ret) {
if (ret == "ok")
showTip("停止任务成功.", 1);
else
showTip("停止任务失败.", 3);
showTasks(true);
},
function () {
showTip("请求后端失败.", 3);
showTasks(true);
});
}
}
function delBtnEvt(o) {
if (confirm("确定要删除此任务?")) {
var f = confirm("删除文件(路径)?");
$("button").attr("disabled", "disabled");
showTip("正在删除任务...", 0);
doAjax("del", "id=" + o + "&f=" + f, function (ret) {
if (ret == "ok")
showTip("删除任务成功.", 1);
else
showTip("删除任务失败.", 3);
showTasks(true);
},
function () {
showTip("请求后端失败.", 3);
showTasks(true);
});
}
}
function infoBtnEvt(o) {
var v = theTasks[o - 1];
var i = v.LiveInfo;
$("#info_url").val(v.URL);
$("#info_start").val(v.Run ? v.StartTime : "未开始");
$("#info_index").val(v.Index);
$("#info_path").val(v.Path);
$("#info_live").attr('hidden', "hidden");
if (v.Live && v.Run) {
$("#info_live").removeAttr('hidden');
$("#info_nick").val(i.LiveNick);
$("#info_d").val(i.RoomDetails);
$("#info_i").attr("src", i.LivingIMG);
}
$("#info_ui").modal('show');
}
function down(o, s) {
var u = "/ajax?act=get&id=" + o;
if (s != 0)
u += "&sub=" + s;
window.location.href = u;
}
function play(o, s) {
var u = "/ajax?act=get&id=" + o;
if (s != 0)
u += "&sub=" + s;
var flvPlayer = flvjs.createPlayer({
type: "flv",
url: u
});
$("#player_ui").modal('show').on("hide.bs.modal", function () {
flvPlayer.unload();
});
if (flvjs.isSupported()) {
var videoElement = document.getElementById("videoElement");
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
}
var tips = 0;
function showTip(text, m) {
var c = "label label-";
switch (m) {
case 0:
c += "info";
break;
case 1:
c += "success";
break;
case 2:
c += "warning";
break;
case 3:
c += "danger";
}
$("#tiptext").attr("class", c);
$("#tiptext").html(text);
tips++;
setTimeout(function () {
tips--;
if (tips == 0) {
$("#tiptext").attr("class", "label label-info");
$("#tiptext").html("");
}
}, 3000);
}
function showAddtaskUI(m) {
if (m == true) {
$("#addTask_urls").val("");
$("#addTasksDialog").modal('show');
} else {
$("#addTask_url").val("");
$("#addTask_pathg").attr("hidden", "hidden");
$("#addTask_url").removeAttr("readonly");
$("#addTask_mg").attr("class", "checkbox");
$("#addTask_m").removeAttr("disabled");
$("#addTask_run").prop("checked", true);
$("#addTask_m").prop("checked", false);
$("#addTaskDialog").modal('show');
}
}
function doAjax(act, args, s, e, c, t) {
if (t == undefined)
t = -1;
if (t != undefined && args != "")
args = "&" + args;
$.ajax({
url: "/ajax?act=" + act + args + "&_=" + Math.random(),
success: function (ret) {
if (s != undefined)
s(ret);
},
error: function () {
if (e != undefined)
e();
},
complete: function () {
if (c != undefined)
c();
},
timeout: t
});
}
function quit() {
if (confirm("退出后将停止所有正在运行的任务,确定退出?")) {
$("button").attr("disabled", "disabled");
showTip("正在退出...", 0);
doAjax("quit", "", function (ret) {
if (ret == "ok") {
showTip("请求已送达,3秒后关闭本窗口...", 2);
setTimeout(function () {
window.close();
}, 3000)
}
}, function () {
showTip("请求后端失败.", 3);
$("button").removeAttr("disabled");
});
}
}
function showLogs() {
$("button").attr("disabled", "disabled");
showTip("正在获取运行日志...", 0);
doAjax("log", "", function (ret) {
$("#logs").val(ret);
$("#logDialog").modal('show');
$("button").removeAttr("disabled");
}, function () {
showTip("请求后端失败.", 3);
$("button").removeAttr("disabled");
});
}
</script>
</head>
<body>
<div class="container-fluid ">
<div id="uver_tip" class="alert alert-info" style="margin:auto auto;width:30%;text-align: center"
hidden="hidden">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4 id="uver"></h4>
<strong><a id="uver_a" class="btn btn-link">点此更新</a></strong>
</div>
<h4 style="text-align: center">
<span class="label label-success" id="tiptext"></span>
</h4>
<div class="row-fluid">
<div class="span12 ">
<div class="page-header ">
<h1><span class="glyphicon glyphicon-facetime-video"></span> 录直播
<small id="tver"></small>
<div style="float:right">
<button class="btn btn-mini btn-info" onclick="showLogs()" disabled="disabled"><span
class="glyphicon glyphicon-tag"></span> 查看日志
</button>
<button class="btn btn-mini btn-danger" type="button" onclick="quit()"><span
class="glyphicon glyphicon-log-out"></span> 退出程序
</button>
</div>
</h1>
</div>
<div style="text-align:center">
<h5 id="sup" hidden="hidden" style="color: gray">
已支持的平台:
<span id="supt">
</span>
<br>
(带<span style="color: red; ">*</span>的平台需要FFmpeg)
</h5>
</div>
<div class="btn-group">
<button disabled="disabled" class="btn btn-primary" onclick="showAddtaskUI(false)"><span
class="glyphicon glyphicon-plus"></span> 添加任务...
</button>
<button disabled="disabled" data-toggle="dropdown" class="btn btn-primary dropdown-toggle"><span
class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<button disabled="disabled" class="btn btn-link" onclick="showAddtaskUI(true)"><span
class="glyphicon glyphicon-plus"></span> 批量添加...
</button>
</li>
</ul>
</div>
<button class="btn btn-default" onclick="showTasks()" disabled="disabled"><span
class="glyphicon glyphicon-refresh"></span> 刷新列表
</button>
<table class="table">
<thead>
<tr>
<th><span class="glyphicon glyphicon-minus"></span> 任务编号</th>
<th><span class="glyphicon glyphicon-hdd"></span> 直播平台</th>
<th><span class="glyphicon glyphicon-play-circle"></span> 开播状态</th>
<th><span class="glyphicon glyphicon-flag"></span> 任务模式</th>
<th><span class="glyphicon glyphicon-stats"></span> 运行状态</th>
<th><span class="glyphicon glyphicon-time"></span> 运行时长</th>
<th><span class="glyphicon glyphicon-book"></span> 房间标题</th>
<th><span class="glyphicon glyphicon-hand-right"></span> 其他操作</th>
</tr>
</thead>
<tbody id="tasklist">
</tbody>
</table>
</div>
</div>
</div>
<!--添加任务遮罩层-->
<div class="modal fade" id="addTaskDialog" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<form onsubmit="return addTaskAction()">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-plus"></span> 添加任务</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label><span class="glyphicon glyphicon-film"></span> 直播地址:</label>
<label for="addTask_url"></label><input type="url" class="form-control" id="addTask_url"
required="required"/>
</div>
<div id="addTask_pathg" hidden="hidden">
<div class="form-group">
<label><span class="glyphicon glyphicon-folder-open"></span>
保存路径(文件名,自动添加后缀.):</label>
<label for="addTask_path"></label><input type="text" class="form-control"
id="addTask_path"
required="required" value="#"/>
</div>
<div class="form-group">
<div class="checkbox" id="addTask_mg">
<label><input type="checkbox" id="addTask_m"/><span
class="glyphicon glyphicon-flash"></span> 循环模式</label>
</div>
<div class="checkbox">
<label><input type="checkbox" id="addTask_run"/><span
class="glyphicon glyphicon-play"></span> 立即开始</label>
</div>
</div>
</div>
<input hidden="hidden" id="addTask_fileext" title=""/>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-ok"></span> 添加
</button>
</div>
</form>
</div>
</div>
</div>
<!--详情遮罩层-->
<div class="modal fade" id="info_ui" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-tasks"></span> 任务详情</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label><span class="glyphicon glyphicon-film"></span> 直播地址:</label>
<label for="info_url"></label><input class="form-control" id="info_url" readonly="readonly"/>
</div>
<div class="form-group">
<label><span class="glyphicon glyphicon-time"></span> 开始时间:</label>
<label for="info_start"></label><input type="text" class="form-control" id="info_start"
readonly="readonly"/>
</div>
<div class="form-group">
<label><span class="glyphicon glyphicon-file"></span> 已有文件:</label>
<label for="info_index"></label><input type="text" class="form-control" id="info_index"
readonly="readonly"/>
</div>
<div class="form-group">
<label><span class="glyphicon glyphicon-folder-open"></span> 保存路径:</label>
<label for="info_path"></label><input type="text" class="form-control" id="info_path"
readonly="readonly"/>
</div>
<br/>
<div id="info_live" hidden="hidden">
<div class="form-group">
<label><span class="glyphicon glyphicon-user"></span> 主播昵称:</label>
<label for="info_nick"></label><input type="text" class="form-control" id="info_nick"
readonly="readonly"/>
</div>
<div class="form-group">
<label><span class="glyphicon glyphicon-picture"></span> 直播截图:</label>
<br/>
<img id="info_i" src="" width="320" height="180"/>
</div>
<div class="form-group">
<label><span class="glyphicon glyphicon-pencil"></span> 房间说明:</label>
<textarea class="form-control" id="info_d" readonly="readonly" rows="5" title=""></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<!--批量添加遮罩层-->
<div class="modal fade" id="addTasksDialog" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<form onsubmit="return addTasksAction()">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-plus"></span> 批量添加</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label><span class="glyphicon glyphicon-film"></span> 直播地址(一行一个):</label>
<label for="addTask_url"></label><textarea class="form-control" id="addTask_urls"
rows="5" title=""></textarea>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-ok"></span> 添加
</button>
</div>
</form>
</div>
</div>
</div>
<!--运行日志遮罩层-->
<div class="modal fade" id="logDialog" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<form onsubmit="return addTasksAction()">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-tags"></span> 运行日志</h4>
</div>
<div class="modal-body">
<div class="form-group">
<textarea class="form-control" id="logs" rows="25" title="" readonly="readonly"></textarea>
</div>
</div>
</form>
</div>
</div>
</div>
<!--播放器遮罩层-->
<div class="modal fade" id="player_ui" tabindex="-1" role="dialog" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-play"></span> 播放器</h4>
</div>
<div class="embed-responsive embed-responsive-16by9">
<video id="videoElement" width="640" height="360" controls="controls"></video>
</div>
</div>
</div>
</div>
</body>
</html>
`
const hta = `<html>
<head>
<HTA:Application
icon="favicon.ico"
contextmenu="no"
navigable="yes"/>
<meta http-equiv="refresh" content="0;url=/?hta=true">
</head>
</html>`
const favicon_ico = "AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEACACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAgAAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiP/////////////4gAAAAAAAAAAAAAAAf/////9/////////iAAAAAAAAAAAAAAIf/////dnj///////9wAAAAAAAAAAAAAH////+Hdmf////////3AAAAAAAAAAAAAH/////3Z+aP///////4gAAAAAAAAAAAAH/////4ZseP////////cAAAAAAAAAAAAH//////du6P////////gAAAAAAAAAAAAI//////dWd/j///////9wAAAAAAAAAAAAj////4h2VnZ3d4////9wAAAAAAAAAAAAf//4d2dnZWdubmj/+HeAAAAAAAAAAAAAB4d3bmZXE1dWfOePd4h3AAAAAAAAAAAAB3ZubHE1N3c1dnZ0ePiIAAAAAAAAAAAHbm5+U3eI+Ij4iHdniI+IgAAAAAAAAAAAduzld4iHeYd4iIg4j4iIeAAAAAAAAAAAB2dYj4OYeJiTiIeIiIiLVwAAAAAAAAAAAFeIiBl3mId5GIOPj4jzcAAAAAB3eAAAB3j4i1l5eZl5eXeIiIg0AAAAAACIiHeHF4iI85eXeIhxMRj4+LcTAAAAAACI+PiIeIiIiDeIiIiIiHiIjzGDcAAAAAB4iIiIOI+IiIiIj4+IiB+IiDObWAAAAACIj4iPeIiI+PiPiIiIeDj4g5g3twAAAAAHiIiIP4i3c4j4iIiL/ziIO4m5eAAAAAAAiIiIOIj//3iIiIh//3j3ebe3m3AAAAAAB7+HNY////OIiIiP93eIc3mLeHAAAAAAAAiDk/+Hj/iDOIuPgRf/ebuXuXAAAAAAAAAHt/gXf/85sYiPiDf/d3e5i3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+AB5ufoAjIuPAICFlwCBh5oAhYmcAImMnQCPkJgAg4uiAImOowCAjqwAjZGjAIKQrwCSlaYAlJinAJ+fogCUl6gAlZqrAJmdrACKmrgAlJ60AJ2grQCOoL0AnaKzAKGlswCnqrcArq+1AKSpuQCprLkArrC8ALGzvACHlsUAl6fEAJ6u2ACns8oAs7XBALW4wwC5u8UAvL7IAKa41QCOjesAgLXtAIK9+AC9wMoArcDcAIjC+wCyxeEAtsnlALjL5wC6zekAvtHsAMLEzQDFx9AAx8nSAMvN1QDO0NcAztDYANLU2gDW2N4A2NnfAMDT7wDb3eIAwtXxAMba9QDf4OUA4eLmAOTl6QDn6OwA6urtAO3u8QDz8/UA9/f4APf4+QD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN3P///////////////////////////+/aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2///////////3vfn////////////////pzgAAAAAAAAAAAAAAAAAAAAAAAAAAAM7a/////////PnTSivt////////////////zQAAAAAAAAAAAAAAAAAAAAAAAAAAAIL4////////7yEiS1Un/P///////////////7oAAAAAAAAAAAAAAAAAAAAAAAAAALv//////////1dSRVBM7P///////////////+zaAAAAAAAAAAAAAAAAAAAAAAAAAMH+/////////9BRBk9O3P////////////////+8AAAAAAAAAAAAAAAAAAAAAAAAAMH///////////tWBlVS2v/////////////////qAAAAAAAAAAAAAAAAAAAAAAAAAM75///////////FA1NKyPP5/f//////////////uwAAAAAAAAAAAAAAAAAAAAAAAADT/////////PjcIAQCRkVHJixAuNT8////////wQAAAAAAAAAAAAAAAAAAAAAAAADL+f///ew/SQhDTAcGHiRGVE9PVUbU////3KC/ugAAAAAAAAAAAAAAAAAAAAAAAAAAvO+7PSVSUFVIL4QXbYhsEQhOT1VC6fnBwPLlwIEAAAAAAAAAAAAAAAAAAAAAAAAAKUhOVVBQTRwSFRk2cHyAfGsWBUxORB+A9PT19MkAAAAAAAAAAAAAAAAAAAAAAD5OVVBQUFUHCzTA3fL09PX19fT03aUqSHn09fX19eXOAAAAAAAAAAAAAAAAAAAAAAAjVVBQTh1w3fT03cCPj5CRzPL09fXicPL09fX19eWgzgAAAAAAAAAAAAAAAAAAAAAAKFVGMdj09eJqiZ2fn5+fmhTC9PVw4vT19fX19cwBugAAAAAAAAAAAAAAAAAAAAAAAB548vX14lhbWJyfn5+fhFpakeVw9PX19fX19DIpAAAAAAAAAAAAfqOlzQAAAAAAF5H09fX1kFuTW1mFl4dkWpOTWnLA9fX19fX0OwwAAAAAAAAAAAAA5/T15cK/v6APcPT19fX1cZOTWm2QzNbMf1hbWQvd9fX19dgaChsAAAAAAAAAAAAA3fX19fT15uJ41/T19fX1zF101vT09fT09eTJzDTy9PX19GpcqmJ1AAAAAAAAAAAAoPX19fX19fR88vX19fX19fL09fX19fX19fT04jD09fX1zJVclqqLygAAAAAAAAAA0eL19fX19fV89PX19fX19fX19fX19fX19dagwTH19fXyY6ysYauwdQAAAAAAAAAAAL/n9fX19fR89PXiwr+ledb19fX19fX13cj//nD19fVylaysqmisrwAAAAAAAAAAAACl5/X19eIP5srR/v///MbM9fX19fX0v/3//7/y8n5vlKysrKustqgAAAAAAAAAAAAAo9b09KVcNNn///////558vTy9fXd2v/8eTnDyPB4Z6ysrKysspAAAAAAAAAAAAAAAADNyjWVMf7/4bv2///a1m4YpfTW7//aCQ+g//+liqysrKyssaIAAAAAAAAAAAAAAAAAAJGqpf/4DjJ6///4NZasYdbW6v/z6QtB//+/jaysrKyssaEAAAAAAAAAAAAAAAAAAGOso//3eg8W/f/5Yqusq2Ldzf//7jzv//mBjaysrKyssacAAAAAAAAAAAAAAAAAAF6sbv///8Hc///vlaysrKl/PPv//////8bdjaysrKysqYwAAAAAAAAAAAAAAAAAAF+sZ9z///////+gqaysrKxeZWrs///3xn7XaaysqmeRO3rDxgAAAAAAAAAAAAAAAHWrq2LR/v///8oYq6ysrKypaGhycHiRzF5tlqyVdvb///3/+8EAAAAAAAAAAAAAAKOprKxcNIN9Nmmrq6ysrKysq6qS3p6bYJUKq5V5/v////////bcAAAAAAAAAAAA2XZprKyVE6yWbWWsrKysrKysrKyGm5uYlKkYqjX8//////////+CAAAAAAAAAADG8PturKysYaysYRisrKysrKysrKxmm5lmrKllaM7////////////QAAAAAAAAAM7w//+Craysq6ysrFyqrKysrKysrKxgEl6srKmWYvn//////9E5OdPpAAAAAAAAALv8oNzsc7GsrKysrKusrKysrKysrKxcaausrKyroP/////9gQ5BOQvhAAAAAAAAAOz8FzT+oK2xrKysrKysrKysrKysrKqVrKysrKyW0f/////BIO///9HuAAAAAAAAAPf/xgvs+XCzrKysrKysrKysrKysrKqqrKysrKxoyP////8Pz//////cAAAAAAAAAOz/+Q65/+pus7K3t7KsrKysrKysrKysrKysrKxhyP////kO+P/////DAAAAAAAAAM7//zwu///aY+Dj4+O2sbG3saysrKysrKysrKxn9v////kP/P/////PAAAAAAAAAMjIIAkL8///3Dbf4+PjtrG3saysrKysrKysrLGK6v////8X+P///88AAAAAAAAAAAAND7sP2v///+wzruPj47GsrKysrKysrKyxtuOMu//////DoPn/98EAAAAAAAAAAACC7P8tvP/////OPHSv47aysbGxsbGytrffrqgAQfP/////zrnvoAAAAAAAAAAAAAAAd/gxdv/////x79MNboyutLW0tbSuoaLMAAAAAMHc/P/++c7DAAAAAAAAAAAAAAAAAHYuOf///////KDGAAAAAAAAAAAAAAAAAAAAAAAAzsG8zgAAAAAAAAAAAAAAAAAAAAAyMvD7++/OMcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALq7wdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/4AAAD/8AAP/gAAAH/wAA/8AAAAf/AAD/wAAAA/8AAP/AAAAB/wAA/8AAAAH/AAD/wAAAAf8AAP/AAAAA/wAA/+AAAAD/AAD/4AAAAP8AAP/wAAAAfwAA//AAAAB/AAD/wAAAAD8AAP/gAAAAHwAA//AAAAAfAAD/+AAAAD8AAOHwAAAAfwAA4AAAAAB/AADgAAAAAD8AAOAAAAAAHwAA4AAAAAAfAADwAAAAAB8AAPgAAAAADwAA/AAAAAAPAAD/AAAAAA8AAP/AAAAADwAA/8AAAAAPAAD/wAAAAA8AAP/AAAAAAwAA/8AAAAABAAD/wAAAAAAAAP+AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AAAAAAEAAP8AAAAAAQAA/wAAABADAAD/gAAAeAcAAP/AB//+HwAA/+AP////AAD/+H////8AAP///////wAAKAAAACAAAABAAAAAAQAIAAAAAAAABAAAAAAAAAAAAAAAAQAAAAEAAAAAAABjVjkAcWA1ADI5WAAxOmEAPkRhACdFeABPTlAAU1FdAFZYXQBqX0UAcmNDAHVtWABDSmUAR05pAEhOagBUXXsAZFtmAFpgeQBgZXoAlnouAJt9LQCEbTMAhm80AIhwMQCReDcAlHw8AIh8XgCLf2MAnoAuAJ+BMACfgzkAooItAK+LKQCxjCgAtI8oALiRJwC9lSYA3asfAOCtHgDAlyYAyZ0jAM+iIgDXpyEA2qkgAJ+JUACljlAAlIhrAKaYcgAyNqEAMDS1ACxNigA1RIUAPUWGADVJiAArUIsAP1aCAD9djwA9RZ8AK1eZACtanwAsXqUALWOvADxnpQA1Z60AL2q5ADFqtwA7ZLkAMW69ADdyvwBKSYAAREaMAE9ZmwBSXJsASmGLAFtmhABeaooATmWQAFhikABVYJ8AVG2aAGRqggBrcIYAa3OKAHl8hgBrd5MAYnWYAG58nAByf50ATFajAFJRqABIa6IARG6oAF9zrQBXeKgAXnuqAGBrpABie6IAc3m0ADM1xgAzNcgAPGnDADNyxAA4dcQAMnbNADl6zgAyetQAM33YAFNUxABfW8MAXVrUAENsxABiYMcAaGLWAHRp6ACDePoAfYGVAHiBmAB5h6UAfYqmAHeAqQB8jKsAdI61AHyKsgB9kLMANIDdADSE5AA2iewAN43zADiP9QA4kPcAOJP8AE2AwwBFgMwAUYLDAFyKxABplssAWJrmAEKV9QBAl/0ARZr8AE2e+QBQnPMAVaT7AFyo/ABxpuIAe6/nAG6u8wBirPsAcLP6AHu6+wCRj44AgYaZAIaKnACJjZ8AnZqTAJmZngC1rZoAgIynAIqPogCAjqwAi5CiAIaSrACMlawAjpiuAJKWpwCUlqcAk5qtAJmdrQCFlLIAiJe2AIqZtwCAkLsAjp69AJWdsQCQn7sAnKCvAJ6isACSoLwAmqS5AKKlsgCgprYApKe1AKaptgClq7wAqay5AKiuvgCvsb4Au7ewALCyvgCHk8QAi5nEAIWhxwCPpccAk6TCAJinxACQqc0Ana7LAJ6wzACmrsAAq7HCAKCyzwCxtMAAtbjDALa5xQC4u8UAurzGALy/xwCzuskAur3IALy/yQCjtNAAprjUAKi61wCqvNkAhb32AL7BygCuwNwAscPfAIjC+wCzxuIAtsjkALnL5wC7zuoAvdDsAMTFyQDBxM0Ax8jPAMrKzQDGydEAyMrSAMrM1ADP0dgA0NHZANPV3ADU1twAwNTvANzd4gDC1fEAxtr1AN/g5QDh4uYA4+ToAOTl6QDn6OwA6urtAO7u8QDv8PMA8fL0APP09QD09fYA9vb4APn5+gD7+/wA+/z8AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACw+v/////64f//////////4QAAAAAAAAAAAAAAAAAAAKX/////6LQgm///////////uQAAAAAAAAAAAAAAAAAA2P/////jFSIk8v/////////7ygAAAAAAAAAAAAAAAADn//////8uFCnp///////////NAAAAAAAAAAAAAAAAANH//////7wWJM72//////////oAAAAAAAAAAAAAAAAAuf///+3OnAoBGBUfLTDh///69bcAAAAAAAAAAAAAAAAAzs6XGiohEQhHRgskJy/t56nCSwAAAAAAAAAAAAAAAJ0aKCYrAgROV6CrqVUMHxZY7+/uugAAAAAAAAAAAAAAGywnIgmp4NS/vr/V7+/FUu/v7++kAAAAAAAAAAAAAAAAHBl37t1IcHNzc1pI3nff7+/v4AcAAAAAAAC6yAAAAAATxe/vYGQxbG5sMWRPV+/v7+5LVAAAAAAAAN/v3LKjEKrv7+9IMlms09N7OjV57+/gOAZ5AAAAAAAAwu/v7++p4O/v79rW7+/v7+/vssLv73s8flwAAAAAAADH7u/v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QwZwfHx8dwAAAAAAAABwQgsBAgUMd14AAAAAAAAACAcaHT1IOTdyUwAAAAAAAApfEhYZDx1xcg4AAABiXzxfci9OX0kbchwQAAAAXnJKYWpYcnJeUVAiIgAAAAAAHlpAdTBLcARmIipNAAAAADFeQHYkLVNwVSMjHwAAAABFLUURKigXGA0rd3xsAAAAViYoFCgqFRMiW3xAPwAAbThHNTUoKCgoInNkbXAAAGQDd0ZZNiooKi52ZHdsAAAAOmh5O0wzM08AZ2xUAAAAAABaaAAAAAAAAAAAAADwDwAA4AcAAOAHAADwBwAA8AMAAPADAACAAwAAgAMAAOABAADgAQAA4AAAAOAAAADAAAAAwAAAAOARAADz/wAAKAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtbjDBMjK0grY2d8K8PDzCv7+/gr///8K////Cvz8/Qr19fYK8vPzCvLy8wry8vMK8/P0Cvv7+wr+/v4K////Cv///wr///8K////Cv///wr///8K+vr7Curr7grU1twKyszUAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbn64CZWqCn7y+yP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0tn/iY6gnra5xBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSlqcoY2mB//v7+///////////////////////////////////////4uPn/4+QmP/o6Or//v7+////////////////////////////////////////////////////////////w8XO/21ziqSxtMADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjaICXtLbB//////////////////////////////////Lz9f/q6+7/rbC8/6CBLP9wZ1T/ztDX/////////////////////////////////////////////////////////////v7+/5+jsv+Tl6hSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRV3HB5ufr/////////////////////////////////9LU2/9cV1L/XFte/6qHKv/XpyD/eGtM//Ly9P////////////////////////////////////////////////////////////j4+f91eo/hrLC8GgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgZX3B+fn6//////////////////////////////////j4+f+Ngmj/xZsk/5R4Lv/hrh//roop/8rN1f/////////////////////////////////////////////////////////////////Nz9f/e3+TkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABobYTB+/v8//////////////////////////////////////+ur7X/wZcl/3dkNP/dqx//u5Mm/7u+yP/////////////////////////////////////////////////////////////////+/v7/foOW4rW4wwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABma4PB+fr7///////////////////////////////////////u7/L/lIBK/3dkNP/XpyD/xZok/7a4wv//////////////////////////////////////////////////////////////////////xcfQ/4iMnnIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxdoyk7O3w//////////////////7+/v/9/f3////////////9/f3/n5+i/15TPf/InST/oYEs/5ibqf/c3eL/6+vu//X19//6+vv/+/z8//7+/v//////////////////////////////////////+vr7/2pvhsoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRlqdPrrG9/////////////f39//39/f/+/v7//Pz9//X19//k5en/ubvE/0RIXv9pWjf/U0s8/5x+Lf+Sdy//g243/35tQv9/c1X/fXhv/4yLj/+ztLv/9vb3///////////////////////+/v7//f39/4yQov+Rl6sgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpq8HdXmLtOrr7v////////////r6+//Lztb/cG5u/4F0U/93Zjr/jnQv/6uJKv99aDP/cmE1/0FASP9oW0n/mXwv/9CiIv/grR//4K0f/9mpIP+cfS3/r7G9/////////////f39/7m7xv+AiJ7/iI+k/4KHmf9udo91AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoJmJJYGEk+vS1Nr/h4ub/2JhY/9vYkT/yJ0k/+GuH//YqCD/iHAy/0hHbv9LT6D/P0Rg/0VJlP9YVbr/REWT/z0/Xv9yYTf/v5cm/9+tH//SpCL/eHZ4/8LEzP/n6Oz/jpOk/3+Orf+/0+7/tsrn/3yKqv9QWnnMi5exCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCeWQmd3BgdF1UQuuNdTf/vJQm/9ioIP/grR//360f/7KN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ev8yd87/OJH5/y1Zmv+QocD/nK3J/8TGz///////3d7j/8HDzf8lLU3/YWZ9///////+/v7/hY2j/096t/85lP7/OJP8/ziT/P84kvv/OJP9/0KZ/f9cgbL/Snm5KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9pphA4W5HyN4/2/3WDof//////4uPo/3R5jv8uNVT/PURg//n5+v//////6uru/zZblP84kfr/OZT+/zeP9f87Wo//prjV/56isv///////////83Q2P9ZYHr/1tfd///////r6+7/cn2Y/054s/85lP7/OZT+/zmU/v85lP7/OJP8/0CY/f9ghLr/TXKoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRorxQuUYn/OJL7/05kjv/5+fr//v7+//3+/v+NkqT/vL7I////////////0NLa/zVzw/84k/3/OJL7/ziT/P80ftr/ZnWZ/1tjf//r7O////////7+/v/8/P3///////39/f+Wmqv/orPQ/0NytP85lP7/OJP8/zmU/v85lP7/OJL7/zmC2v9UdKL/bYOoSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVpsA8tTYPwOJP9/zFkq//Bw87////////////8/f3////////////+/v7/eoGX/zWE5P85lP7/OJP8/ziT/f84k/z/KlGN/ytcn/9NXYH/y8zU//r6+//8/Pz/4+To/5WZqv9teZb/nq7Y/zVrtv85lP7/OJP9/zSB3/85Z6r/bIKn/1Vdef9zeY//jZGj+GtyirKjprUfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoRnzBN4/2/zeP9v84XJX/paq6//j4+f////////////n5+v+aorX/KkV3/zeL7/84kvz/OJP9/ziS/P85lP7/NIDc/y9ru/8vZrL/X2uK/11nhf9lboz/dIGi/4eWxf8zUIL/RUqT/zJ50f85lP7/MHLG/19qiP/e3+X//f39//v7/P/4+Pn//v7+/+7v8f96f5Tbvb/JBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGWYHBN4bl/ziS+/84kPf/KE2J/01Ud/9yfZn/bnaQ/0xVgf8wbb3/N4zx/ziQ9/84k/3/OZT+/ziT/f84kvv/OJH6/zeO9f82h+n/bny6/46N6/+Bfef/dmzn/z5Jk/8xdsz/ITJe/zaL7v8xc8f/bHSO//f3+P/////////////////////////////////f4OX/h4udjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJ2vBmFvjoJiaID/N262/ziT/f85lP7/MnbN/yY6a/84kvv/M3zW/0FJlf8sX6b/OJP8/ziT/f84kvz/OJP9/ziS+/84kvv/OJP9/ziS+/84kvv/RFqq/3Rp6P90aej/W1rB/zBvwf81heT/JkV8/zaL7/9EVXz/8vP0///////////////////////////////////////9/f3/e4CU/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACipbMGam+Gt9fY3//u7/H/S2KM/z6V+v84kvv/OJD4/ylUk/84k/3/OJH6/yxZnv8lQ3n/OJP8/ziS+/85lP7/OZT+/ziS+/84k/3/OJL7/zmU/v85lP7/PVOm/3Fn4v9nX9L/MV2o/ziR+v8zf9v/LF6m/y5ntP+gpLP//v7+///////////////////////+/v7/+/v8//39/f//////qau4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiaH+Z19je//7+/v/9/v7/eX+V/1GQ2v85lP3/OJP9/ziQ+P85lP7/OZT+/ziP9/8nTov/Nons/ziT/f84kvz/OJP8/zmU/v84k/3/OJP8/zmU/v84k/z/NE+X/y43av8vUJD/OJD3/zmU/v8zfdf/MnnR/zxckf/r6+7///////////////////////r6+v+rrrv/VVt1/1thev+wsr7/xMbP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKKltCKDiJr58fH0/36Cl/+6vcf/zM7W/0tmlP9Gm/z/OJP8/ziS+/85lP7/OJL7/ziS+/83j/b/OJH6/ziT/P85lP7/OJP8/ziT/P84k/3/OJL7/ziS+/84kPj/KU+N/y9su/83jfL/OZT+/zmU/v84kvv/N4vv/3qGof/+/v7/////////////////+Pj5/3l+kv8sM1L/Ymd+/1led/8jK0v/wMPN/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6So0fMztX/9PX2/z5EYf9QVnD/9fb3/3qCmf9ekdP/PZb9/zmU/v85lP7/OZT+/zmU/v84k/z/OJP8/ziT/P84k/3/OJL7/ziT/P85lP7/OZT+/zmU/v82ie3/MHHD/ziT/P84kvv/OZT+/ziS+/85lP7/M3zW/6WpuP/////////////////+/v7/jJGi/z5EYf/Y2d///v7+//z8/P+oq7j/zc/X/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSYqEfh4uf//v7+/5aaqv8iKkr/zs/W/+np7f9TYob/Zqfv/zmU/f85lP7/OZT+/zmU/v85lP7/OJP8/zmU/v85lP7/OZT+/ziT/f84kvv/OJP8/ziS+/81hOP/NYbm/zmU/v85lP7/OJL7/zmU/v84kvv/LmWw/5uerf/////////////////4+Pn/OD9c/6eqt//////////////////+/v7/vb/J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaZqUfLztb//////+fo7P8uNVT/f4OW///////HydL/S2KL/2Gn9P9UpPz/e7r6/3m5+v9Zpvv/OpT9/ziT/P84k/3/OJL7/zmU/v84k/3/OJP9/zmU/v84kvr/OJL8/ziT/f84kvv/OZT+/ziS+/85lP7/LVqa/5qdrP/////////////////r7O//KjFR/+Tl6v/////////////////9/f3/lJen/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSntRmhpLL4/f39//r6+/9dY3v/Q0pm//j4+f/+/v7/tLbC/0Zij/+AuvX/icP8/4nD/P+Iwvv/aa/6/zuU/P9Fmfr/drf6/0OZ/P84k/3/OJP8/ziS+/85lP7/OJL7/ziS/P84k/3/OJL7/ziS+/85lP7/MWCi/9/h5v/////////////////r7O//MThX//T09v/////////////////6+vr/hIibsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3fZG9m5+v/z9GYv8eJUf/JS1N/9vd4v///////////7m8xv9IWoP/gLXt/4nD/P+Jw/z/icP8/16p+/9Mnvz/fbv6/0md/P84kvv/OJL7/zmU/v84kvv/OZT+/zmU/v85lP7/OZT+/zmU/v9Emvz/RnKt/8TGz//////////////////3+Pn/QEdj/+Lk6P////////////////+nqrf/p6q4PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxdotHKTBR/zY9W/+FiZv/NTtb/7W4w//////////////////KzNT/QE5x/2uYz/+Iwfr/icP8/4O/+/8+lvv/OZT+/zmU/v85lP7/OZT+/zmU/v85lP7/OZT+/zmU/v86lP3/Rpv8/2Wt+/+Cvfj/UXKh/4iMnv/+/v7////////////+/v7/lJio/3+El//s7O//+/z8/+Hj5/9vdInFuLvFAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREpmt8rM1P/4+Pn/QUdk/4qOn///////////////////////n6Kx/1hfev9OaZX/dqff/4W/+f9jrPv/UaL8/0ec/f9AmP3/P5f9/z+X/f9Fm/3/UKH8/2Os+/94uPr/frXt/2iSxPxScqG8Y3yjWkxUcOPc3eP/////////////////+fn6/6KmtP99gpb/0dPZ/2Vrg9qqrbofAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdnuPM2NogPPo6ez/SE5p/2Zsgv/+/v7/////////////////2Nnf/9TV3P+rrrz/Ji5S/0dZgPFUdqX/a5bI/3mt5f99sOz/e6/r/3ux7P96reX/bZnP/1p9sP9KaJjXSmeWnlZ+tEUAAAAAAAAAAIiWsCpoboa8t7nE//Pz9f/9/f3/+/v7/+rr7v+fo7L/ZmyCspqerSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG91ikReY3zyQEdk/1FYcv/8/P3//////////////////Pz8//T09v97gJP/TVp5mWaDrBtbe6o/XnqlelBxpHpHaKF6RWegekZpoXpFaaB6V3enelWBuy9djssBAAAAAAAAAAAAAAAAAAAAAAAAAACkqLYJjJCiWXl9kq5yd4zMaW6FzHJ3jKiOkqM5lpmpBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZX3hENjxb31FXcf/Z2+H/8PDy/+7u8f/W2N7/oKOy/0lPav9ZX3iZdYCZBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2+GCWFnfmlSWHK3VVp0t2Fmfrd6f5OAd3uQZo+TpCePk6QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAAP/wAA/8AAAAf/AAD/wAAAA/8AAP/AAAAD/wAA/8AAAAH/AAD/wAAAAf8AAP/AAAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAAfwAA/8AAAAB/AAD/4AAAAD8AAP/AAAAAPwAA/4AAAAA/AAD/wAAAAB8AAP/gAAAAHwAA4/AAAAAfAADAYAAAAD8AAMAAAAAAPwAAwAAAAAAfAADAAAAAAB8AAOAAAAAADwAA4AAAAAAPAADwAAAAAA8AAPgAAAAADwAA/AAAAAAHAAD/wAAAAAcAAP+AAAAABwAA/4AAAAAHAAD/gAAAAAEAAP/AAAAAAAAA/8AAAAAAAAD/AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/gAAAAAAAAD+AAAAAAAAAP8AAAAAAQAA/wAAADADAAD/gAAA+AcAAP/AB////wAA/+AP////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoaSyHcjK0lvw8fNb/v7+W////1v8/Pxb9/f3W/b291v39/db/f39W/7+/lv///9b////W////1v8/f1b6+zvW7m7xjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwdYuv9PX2//7+/v7//////v7+/v/////y8vT+xMXJ//39/f7//////v7+/v/////+/v7+//////7+/v7/////wcPN+ZOYqVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgoaZHJGVpvv/////////////////////z9HY/6Oms/+igi3/nZqT//7+/v/////////////////////////////////+/v7/oaSz5qaqtxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEiJssv8HL/v/////+/v7+//////7+/v7HyM//m30t/rGMKP+4kSf+4+To//7+/v7//////v7+/v/////+/v7+//////7+/v739/n/hoqcogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6SoyzJzNT///////////////////////z8/P+ljlD/lnou/8mdI//R0tn///////////////////////////////////////////+0t8LyqKu4FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlpqqIbq9yPz//////v7+/v7+/v/+/v7+/v7+/7u3sP6EbTP/vZUm/ri7xf/u7/H++fn6//z8/f7+/v7//v7+/v/////+/v7+//////T09v6EiZx6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5eoyv7+/v/+/v7//v7+/9/g5f+7vsj/mZme/2pfRf9jVjn/iHAx/56ALv+fgzn/n4lQ/6aYcv/Kys3////////////09fb/6ert/4+UpcoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYlI0uuLnD9ry/x/6Rj47/lXw7/s+iIv+viyn+ZFtm/1NRXf5ERoz/SkmA/nJjQ/++lib+4K0f/5SIa/7d3+P/yMrT/oeUsP+UpcT+W2aF/YONpi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaWNaIoFzUpSReDb2wJcm/92rH//XpyH/cWA1/zE6Yf9YYpD/bnye/4COrP+Kmbf/hZSy/2t3k/91bVj/n4Ew/4ZvNP9yf53/xtn0/8fb9v/C1vH/b3uXnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsZFMac2VC2NqpIP/grR7+tI8o/1ZYXf6FlbT/vdHs/qa41f+LmcX+h5PE/4yZxP6outf/xtr1/sba9f+er8z+aHOK/8XZ9P7H2/b/xtr1/sfb9v9yfZrKV194OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6bU0admhG15F4N/99iqb/wtbx/7bJ5f9RWpn/YmDH/4N5+v+Eefv/g3j5/1JRqP9TXp3/ucvn/3mHpf+7zur/x9v2/8fb9v/H2/b/vNDr/05NT/1MUmlVAAAAAAAAAAAAAAAAAAAAAIKPrBh1gZ+pdIGgnHaCoF6HlbINAAAAAGptdx5GTGXbnK3K/sba9f/G2vX+YGuk/zM1yP40N6L/U1PC/l1a1P9UVcb+MTWg/zM1xv5VYJ//b3yb/sfb9v/G2vX+x9v2/8LV8f5bZoT/S09cvQAAAAAAAAAAAAAAAAAAAAAAAAAAc3+dSrzP6v/H2/b/s8Xh/4uat+x2gZ3WRlBw64iXtv/H2/b/xtr1/8ba9f9PWZv/MDS1/0xWo/+AkLv/orPQ/6Cyz/98irL/PUWf/z1Fhv9+jKv/x9v2/8fb9v++0ez/P1aC/ydFeP9NZpC9AAAAAAAAAAAAAAAAAAAAAAAAAACDka0elqbD+sba9f7H2/b/xtr1/sba9v+FlbT+vdDs/8ba9f7G2vX/xtr1/rDC3/+pu9n+xtr1/8ba9f7G2vX/xtr1/sba9f/E2PP+k6PA/5Wlwv7H2/b/xtr1/neOtf8rWp/+NILh/0Jsp/tBY5hFAAAAAAAAAAAAAAAAAAAAAAAAAAB1gZ6jwdTw/8fb9v/H2/b/x9v2/4SSsP/G2vX/xtr1/7LE3/+esMz/tMbi/8ba9f/G2vX/xtr1/8fb9v/G2vX/tMbi/5Wdsf+Hi57/pLXR/8fb9v+uwNz/OHTC/ziR+f8varn/RZb0/1d4qNUAAAAAAAAAAAAAAAAAAAAAAAAAAIybuAl3hKK7wNTv/8ba9f7H2/b/X2uM/rfJ5f+Yorj+0NHZ/+Tl6f6xtcH/kJ+7/sfb9v/G2vX+xtr1/8PX8v6eprn//f3+/trb4f+hss/+tMfj/11piP40ftj/OJP9/jaK7v84j/X+W4rH/1WBvBoAAAAAAAAAAAAAAAAAAAAAAAAAAIybuAhtepiuj5+8+pCfvP8uUIj/Y2uF//n6+v/z9PX/8/T2//////+lqbj/tsjk/46evf++0e3/rL7a/9TW3f/r6+7/SE5q/4qPov/GydL/k5qt/zl3x/84k/3/OJP8/ziT/P9Ymub/S3awQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1haUOVXCeOjJxw/6gprf/8/T2/j9FYv+JjZ/+/P39/+fo7P5OZZD/M37Z/lFunf+nuNT+2tzh/93e4/5qcIb/R05p/v////+tssH+RYDM/ziT/P44k/3/OJP8/lel+v9Ga6FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9XpJbNYTk/5ynvf/x8vT/jJGi/0VLZv/8/P3/7u/y/zdyv/84k/3/NYPj/32Qs/+2ucb//////8HEzf/Jy9P//v7+/46Yr/9FgMz/OZT+/zmU/v84k/3/VaT7/09qmnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFYk1k0g+L+Xnuq//z8/P74+Pn/7/Dz/v////+1ucX+NYbm/ziT/P44k/3/NWet/j9dj//HydH+/Pz9//Hy9P6hprb/kqHE/jl6zv84k/z+NYDd/1GCw/5KYYv/goqg24CIn10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGOeLDFzx/81huf/Znyi/9PV3P/m5+v/tbrI/z1npP83jfP/OJP9/ziT/f82iu3/M33Z/1dtmP93gKn/c3m0/19zrf81SYj/NYXl/zZywf+orr7/+/v8//v7+//+/v7/3t/k/p2gr2EAAAAAAAAAAAAAAAAAAAAAAAAAAJOYqgNoeZmBPGem/jiT/f8yetP+LE2K/zFqt/41RIX/OJH5/jiT/f84k/z+OJP8/ziT/P44k/3/Q2zE/nRp6P9oYtb+M3HH/yhRj/4ze9X/p6y7/v7+/v/+/v7+//////7+/v7/////o6a07AAAAAAAAAAAAAAAAAAAAACZnKwEg4eapO3u8P+Gkqz/QJT3/ziS+/8yds3/OJP8/ytXmf8ze9X/OJP9/ziT/f84k/3/OJL8/zmU/v88acP/X1vD/ztkuf84kvv/LWSv/0hrov/6+vv/////////////////3+Dl/+Tl6f/KzNT/AAAAAAAAAAAAAAAAAAAAAImNn1HU1tz+qq26/8vN1f5NgMP/OZP8/jiS/P84k/z+OJH5/zWE5P44k/3/OJP8/jiT/f84k/z+OJP8/y5jr/4sXqX/OJD3/jiT/f82iev+mKS7//7+/v7/////+/z8/oWJm/9FS2b+P0Vi/5mdrf4AAAAAAAAAAAAAAAAAAAAAmJurhPr6+v9BSGT/wsTN/4CMp/9QnPP/OZT+/zmU/v85lP7/OJP9/ziT/f84k/3/OJP8/zmU/v84k/3/MnfO/ziT/f84kvz/OJP8/zSA3f/Cxc////////////+hpLL/gYaZ//v7/P/z9PX/vsHK/wAAAAAAAAAAAAAAAAAAAACcn6+E/v7+/p6isP9rcIb+7+/y/2F6of5Nnvn/YKv7/mCq/P89lvz+OJP9/ziT/P45lP7/OJP8/jiT/f83jvP+OJP9/ziT/f44k/3/MW69/rq8xv/+/v7+/////2dsg/7l5ur//v7+/v////+/wcv+AAAAAAAAAAAAAAAAAAAAAIyQoVTn6Oz/qay5/zI5WP/29vj/3d7j/2B7pf+Fvfb/icP8/3u6+/9Al/3/cLP6/0OZ/P84k/z/OJP8/ziS/P84k/3/OJP9/ziT/f82dMP/5ufr////////////bHGH//b29////////v7+/6OmtLcAAAAAAAAAAAAAAAAAAAAAiIyeDEVLaOE8Q2D/REpm/tTW3P/+/v7+4eLm/2J1mP57r+f/iML7/meu+v9HnPz+OpT9/ziT/P45lP7/OJP9/jmU/f8/l/3+Xan8/16Kwf67vcf//v7+/v////+mqbb+uLvG//r6+/7IytL+n6KxRAAAAAAAAAAAAAAAAAAAAAAAAAAAWF53ZcnK0/99gZX/q626////////////yszU/3iBmP9XeKj/cabi/2au+/9bqPz/VKP8/1al/P9hq/z/bq7z/2mWy/9dg7XAY4CrSm11jczv7/L///////z8/f+1uMP/pKe1/4SIm3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhJcCZmyDoWRpgP6NkaL//v7+/v/////29vf+5OXp/0tUcdFTapJkVXGcnlh9s6ZWe7WmVny0plR2qaZLb6ZiWoW9IQAAAAAAAAAAlZ6yA4WKnHyeobDPnJ+u3I6So7CGip0+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgZn4DTVNugmdsg/Cxs7//sLO//YyPoe1dY3u1d36VFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeX2SEYSImyWbnq0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAA//4AAH/8AAA//AAAP/wAAB/8AAAf/gAAH/4AAA/8AAAP/AAAB/4AAAeCAAAPgAAAD4AAAAfAAAAHwAAAA+AAAAP4AAAD/AAAA/wAAAH8AAAA+AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPgAAAH4AAMD/AP///8f//8oAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAen+TM+vr7q3+/v6t+fn5rezs7a3+/v6t////rf7+/q3Z2uChj5OkFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaZqZD//////////7Wvov+qjkT/9/j5/////////////v7+/7G0wKcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqrbqS//////7+/v/W0L7/qIYr/93f4//9/f3//v7+///////p6u37iIyeIwAAAAAAAAAAAAAAAAAAAAAAAAAAkZKYPtzd4fzBuqv/taFs/2FYUP9tYFv/nIE8/7mmcv/p6e3/vsbW/3uEnH0AAAAAAAAAAAAAAAAAAAAAAAAAAHJoUGrDmSb8sI4x/3mAjf9+jLL/h5W7/5eoxP+enpL/iY6U/8ba9f+aqsbZTlZwDgAAAABZYnwGbHiXUW15lRtubWsOenZr7LPF4f9mcbr/W1nJ/25o4/9CRqv/foyy/8TX8//F2fT/bHSH7kVMYxUAAAAAX2mDGrjL5v2zxeH6gpCu8LTH4//G2vX/doPC/5am0v+0xuL/kaDO/3mGrf/H2/b/aISx/ztmpO1HYo0RAAAAAAAAAACOnbqZxdn0/5ytyv+3yOL/wcrb/6+91f/G2vX/xdn0/7nC0v+ps8j/obPP/zeG5P84huT/VoC4fAAAAAAAAAAAa3eTAn2Lqm1RdKnNvMDL/6uuu//i4+j/cZLC/5mtzv/e3+T/YWd//8HF0P88h+P/OJP8/1CIzKsAAAAAAAAAAAAAAAAAAAAANm+7rLrE1v+usb3/6Ons/zeH6P9Ig9D/rrfJ/97f5P+wt8n/PIjl/z6K5/9cfrDSfoeeFwAAAAAAAAAAAAAAAEVuqapChNb/hp3C/1h9uv84kvr/OJD4/0F6zP9xccf/PF+j/1GHzf/o6u7//f3+/8fJ0tIAAAAAAAAAAJ6hsH66vsv/P47s/zeM8P8yetP/OJP9/ziT/P83fdv/P2vG/zWF5P+2wtX//v7+/6qtuf+ipbP/AAAAAAAAAADLzdXBg4ea/4iky/9InPz/Q5r8/ziT/f84k/3/N4vv/ziT/f81heX/3uDk/8HDzf/Y2d//3N3i/wAAAAAAAAAAkJSlkFdcdv/p6u3/iqTG/4K79v9Ypfv/O5X8/ziT/f86lP3/So7f/+fo7P/Exs//6uru/8LEzb4AAAAAAAAAAF5jexqEiJvnzc/W/+/w8v9/jKbzYIzDwFeR2NJYkNXSX47IoGGDsUKdo7OSzc/W6pufrruPk6QfAAAAAAAAAAAAAAAAUVdxIYWJnImcoK+CcHWLMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAHAADgBwAA4AMAAOADAADgAQAAAAEAAAABAACAAQAAgAEAAOAAAADgAAAAwAAAAMAAAADAAAAAwAAAAOH/AAA="
const bootstrap_min_css = "LyohCiAqIEJvb3RzdHJhcCB2My4zLjcgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE2IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL2h0bWx7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbWVudSxuYXYsc2VjdGlvbixzdW1tYXJ5e2Rpc3BsYXk6YmxvY2t9YXVkaW8sY2FudmFzLHByb2dyZXNzLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjB9W2hpZGRlbl0sdGVtcGxhdGV7ZGlzcGxheTpub25lfWF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1hOmFjdGl2ZSxhOmhvdmVye291dGxpbmU6MH1hYmJyW3RpdGxlXXtib3JkZXItYm90dG9tOjFweCBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfWRmbntmb250LXN0eWxlOml0YWxpY31oMXttYXJnaW46LjY3ZW0gMDtmb250LXNpemU6MmVtfW1hcmt7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOiNmZjB9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdXB7dG9wOi0uNWVtfXN1Yntib3R0b206LS4yNWVtfWltZ3tib3JkZXI6MH1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocntoZWlnaHQ6MDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9cHJle292ZXJmbG93OmF1dG99Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udDppbmhlcml0O2NvbG9yOmluaGVyaXR9YnV0dG9ue292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIGlucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPXJlc2V0XSxpbnB1dFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtjdXJzb3I6cG9pbnRlcn1idXR0b25bZGlzYWJsZWRdLGh0bWwgaW5wdXRbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjB9aW5wdXR7bGluZS1oZWlnaHQ6bm9ybWFsfWlucHV0W3R5cGU9Y2hlY2tib3hdLGlucHV0W3R5cGU9cmFkaW9dey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9aW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGR9aW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLGlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1maWVsZHNldHtwYWRkaW5nOi4zNWVtIC42MjVlbSAuNzVlbTttYXJnaW46MCAycHg7Ym9yZGVyOjFweCBzb2xpZCBzaWx2ZXJ9bGVnZW5ke3BhZGRpbmc6MDtib3JkZXI6MH10ZXh0YXJlYXtvdmVyZmxvdzphdXRvfW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OjcwMH10YWJsZXtib3JkZXItc3BhY2luZzowO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX10ZCx0aHtwYWRkaW5nOjB9LyohIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9tYWluLmNzcyAqL0BtZWRpYSBwcmludHsqLDphZnRlciw6YmVmb3Jle2NvbG9yOiMwMDAhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50O2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH1hLGE6dmlzaXRlZHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWFbaHJlZl06YWZ0ZXJ7Y29udGVudDoiICgiIGF0dHIoaHJlZikgIikifWFiYnJbdGl0bGVdOmFmdGVye2NvbnRlbnQ6IiAoIiBhdHRyKHRpdGxlKSAiKSJ9YVtocmVmXj0iamF2YXNjcmlwdDoiXTphZnRlcixhW2hyZWZePSIjIl06YWZ0ZXJ7Y29udGVudDoiIn1ibG9ja3F1b3RlLHByZXtib3JkZXI6MXB4IHNvbGlkICM5OTk7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9dGhlYWR7ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9aW1nLHRye3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfWltZ3ttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9aDIsaDMscHtvcnBoYW5zOjM7d2lkb3dzOjN9aDIsaDN7cGFnZS1icmVhay1hZnRlcjphdm9pZH0ubmF2YmFye2Rpc3BsYXk6bm9uZX0uYnRuPi5jYXJldCwuZHJvcHVwPi5idG4+LmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzAwMCFpbXBvcnRhbnR9LmxhYmVse2JvcmRlcjoxcHggc29saWQgIzAwMH0udGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudH0udGFibGUgdGQsLnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnR9LnRhYmxlLWJvcmRlcmVkIHRkLC50YWJsZS1ib3JkZXJlZCB0aHtib3JkZXI6MXB4IHNvbGlkICNkZGQhaW1wb3J0YW50fX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7c3JjOnVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdCk7c3JjOnVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXgpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSx1cmwoLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci53b2ZmMikgZm9ybWF0KCd3b2ZmMicpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLndvZmYpIGZvcm1hdCgnd29mZicpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnN2ZyNnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIpIGZvcm1hdCgnc3ZnJyl9LmdseXBoaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LmdseXBoaWNvbi1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXDAwMmEifS5nbHlwaGljb24tcGx1czpiZWZvcmV7Y29udGVudDoiXDAwMmIifS5nbHlwaGljb24tZXVyOmJlZm9yZSwuZ2x5cGhpY29uLWV1cm86YmVmb3Jle2NvbnRlbnQ6IlwyMGFjIn0uZ2x5cGhpY29uLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcMjIxMiJ9LmdseXBoaWNvbi1jbG91ZDpiZWZvcmV7Y29udGVudDoiXDI2MDEifS5nbHlwaGljb24tZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlwyNzA5In0uZ2x5cGhpY29uLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXDI3MGYifS5nbHlwaGljb24tZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxlMDAxIn0uZ2x5cGhpY29uLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZTAwMiJ9LmdseXBoaWNvbi1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDAzIn0uZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZTAwNSJ9LmdseXBoaWNvbi1zdGFyOmJlZm9yZXtjb250ZW50OiJcZTAwNiJ9LmdseXBoaWNvbi1zdGFyLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTAwNyJ9LmdseXBoaWNvbi11c2VyOmJlZm9yZXtjb250ZW50OiJcZTAwOCJ9LmdseXBoaWNvbi1maWxtOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmdseXBoaWNvbi10aC1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGUwMTAifS5nbHlwaGljb24tdGg6YmVmb3Jle2NvbnRlbnQ6IlxlMDExIn0uZ2x5cGhpY29uLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDEyIn0uZ2x5cGhpY29uLW9rOmJlZm9yZXtjb250ZW50OiJcZTAxMyJ9LmdseXBoaWNvbi1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDE0In0uZ2x5cGhpY29uLXpvb20taW46YmVmb3Jle2NvbnRlbnQ6IlxlMDE1In0uZ2x5cGhpY29uLXpvb20tb3V0OmJlZm9yZXtjb250ZW50OiJcZTAxNiJ9LmdseXBoaWNvbi1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDE3In0uZ2x5cGhpY29uLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGUwMTgifS5nbHlwaGljb24tY29nOmJlZm9yZXtjb250ZW50OiJcZTAxOSJ9LmdseXBoaWNvbi10cmFzaDpiZWZvcmV7Y29udGVudDoiXGUwMjAifS5nbHlwaGljb24taG9tZTpiZWZvcmV7Y29udGVudDoiXGUwMjEifS5nbHlwaGljb24tZmlsZTpiZWZvcmV7Y29udGVudDoiXGUwMjIifS5nbHlwaGljb24tdGltZTpiZWZvcmV7Y29udGVudDoiXGUwMjMifS5nbHlwaGljb24tcm9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjQifS5nbHlwaGljb24tZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTAyNSJ9LmdseXBoaWNvbi1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjYifS5nbHlwaGljb24tdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZTAyNyJ9LmdseXBoaWNvbi1pbmJveDpiZWZvcmV7Y29udGVudDoiXGUwMjgifS5nbHlwaGljb24tcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDI5In0uZ2x5cGhpY29uLXJlcGVhdDpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5nbHlwaGljb24tcmVmcmVzaDpiZWZvcmV7Y29udGVudDoiXGUwMzEifS5nbHlwaGljb24tbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDMyIn0uZ2x5cGhpY29uLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDMzIn0uZ2x5cGhpY29uLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxlMDM0In0uZ2x5cGhpY29uLWhlYWRwaG9uZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDM1In0uZ2x5cGhpY29uLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDM2In0uZ2x5cGhpY29uLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzNyJ9LmdseXBoaWNvbi12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDM4In0uZ2x5cGhpY29uLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwMzkifS5nbHlwaGljb24tYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwNDAifS5nbHlwaGljb24tdGFnOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmdseXBoaWNvbi10YWdzOmJlZm9yZXtjb250ZW50OiJcZTA0MiJ9LmdseXBoaWNvbi1ib29rOmJlZm9yZXtjb250ZW50OiJcZTA0MyJ9LmdseXBoaWNvbi1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGUwNDQifS5nbHlwaGljb24tcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDQ1In0uZ2x5cGhpY29uLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGUwNDYifS5nbHlwaGljb24tZm9udDpiZWZvcmV7Y29udGVudDoiXGUwNDcifS5nbHlwaGljb24tYm9sZDpiZWZvcmV7Y29udGVudDoiXGUwNDgifS5nbHlwaGljb24taXRhbGljOmJlZm9yZXtjb250ZW50OiJcZTA0OSJ9LmdseXBoaWNvbi10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTAifS5nbHlwaGljb24tdGV4dC13aWR0aDpiZWZvcmV7Y29udGVudDoiXGUwNTEifS5nbHlwaGljb24tYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwNTIifS5nbHlwaGljb24tYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmdseXBoaWNvbi1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTQifS5nbHlwaGljb24tYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGUwNTUifS5nbHlwaGljb24tbGlzdDpiZWZvcmV7Y29udGVudDoiXGUwNTYifS5nbHlwaGljb24taW5kZW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU3In0uZ2x5cGhpY29uLWluZGVudC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTgifS5nbHlwaGljb24tZmFjZXRpbWUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxlMDU5In0uZ2x5cGhpY29uLXBpY3R1cmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDYwIn0uZ2x5cGhpY29uLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDYyIn0uZ2x5cGhpY29uLWFkanVzdDpiZWZvcmV7Y29udGVudDoiXGUwNjMifS5nbHlwaGljb24tdGludDpiZWZvcmV7Y29udGVudDoiXGUwNjQifS5nbHlwaGljb24tZWRpdDpiZWZvcmV7Y29udGVudDoiXGUwNjUifS5nbHlwaGljb24tc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDY2In0uZ2x5cGhpY29uLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTA2NyJ9LmdseXBoaWNvbi1tb3ZlOmJlZm9yZXtjb250ZW50OiJcZTA2OCJ9LmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA2OSJ9LmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3MCJ9LmdseXBoaWNvbi1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzEifS5nbHlwaGljb24tcGxheTpiZWZvcmV7Y29udGVudDoiXGUwNzIifS5nbHlwaGljb24tcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDczIn0uZ2x5cGhpY29uLXN0b3A6YmVmb3Jle2NvbnRlbnQ6IlxlMDc0In0uZ2x5cGhpY29uLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDc1In0uZ2x5cGhpY29uLWZhc3QtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzYifS5nbHlwaGljb24tc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3NyJ9LmdseXBoaWNvbi1lamVjdDpiZWZvcmV7Y29udGVudDoiXGUwNzgifS5nbHlwaGljb24tY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTA3OSJ9LmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTA4MCJ9LmdseXBoaWNvbi1wbHVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgxIn0uZ2x5cGhpY29uLW1pbnVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgyIn0uZ2x5cGhpY29uLXJlbW92ZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4MyJ9LmdseXBoaWNvbi1vay1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NCJ9LmdseXBoaWNvbi1xdWVzdGlvbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NSJ9LmdseXBoaWNvbi1pbmZvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDg2In0uZ2x5cGhpY29uLXNjcmVlbnNob3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDg3In0uZ2x5cGhpY29uLXJlbW92ZS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDg4In0uZ2x5cGhpY29uLW9rLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwODkifS5nbHlwaGljb24tYmFuLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwOTAifS5nbHlwaGljb24tYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwOTEifS5nbHlwaGljb24tYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDkyIn0uZ2x5cGhpY29uLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZTA5MyJ9LmdseXBoaWNvbi1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZTA5NCJ9LmdseXBoaWNvbi1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDk1In0uZ2x5cGhpY29uLXJlc2l6ZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZTA5NiJ9LmdseXBoaWNvbi1yZXNpemUtc21hbGw6YmVmb3Jle2NvbnRlbnQ6IlxlMDk3In0uZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTAxIn0uZ2x5cGhpY29uLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTAyIn0uZ2x5cGhpY29uLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxlMTAzIn0uZ2x5cGhpY29uLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA0In0uZ2x5cGhpY29uLWV5ZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTEwNSJ9LmdseXBoaWNvbi1leWUtY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTA2In0uZ2x5cGhpY29uLXdhcm5pbmctc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxMDcifS5nbHlwaGljb24tcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA4In0uZ2x5cGhpY29uLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZTEwOSJ9LmdseXBoaWNvbi1yYW5kb206YmVmb3Jle2NvbnRlbnQ6IlxlMTEwIn0uZ2x5cGhpY29uLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTExIn0uZ2x5cGhpY29uLW1hZ25ldDpiZWZvcmV7Y29udGVudDoiXGUxMTIifS5nbHlwaGljb24tY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGUxMTMifS5nbHlwaGljb24tY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZTExNCJ9LmdseXBoaWNvbi1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZTExNSJ9LmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZTExNiJ9LmdseXBoaWNvbi1mb2xkZXItY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTE3In0uZ2x5cGhpY29uLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTExOCJ9LmdseXBoaWNvbi1yZXNpemUtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMTE5In0uZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZTEyMCJ9LmdseXBoaWNvbi1oZGQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTIxIn0uZ2x5cGhpY29uLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZTEyMiJ9LmdseXBoaWNvbi1iZWxsOmJlZm9yZXtjb250ZW50OiJcZTEyMyJ9LmdseXBoaWNvbi1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGUxMjQifS5nbHlwaGljb24tdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyNSJ9LmdseXBoaWNvbi10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxMjYifS5nbHlwaGljb24taGFuZC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMjcifS5nbHlwaGljb24taGFuZC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTEyOCJ9LmdseXBoaWNvbi1oYW5kLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyOSJ9LmdseXBoaWNvbi1oYW5kLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTMwIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMzEifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTMyIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGUxMzMifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTM0In0uZ2x5cGhpY29uLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZTEzNSJ9LmdseXBoaWNvbi13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTM2In0uZ2x5cGhpY29uLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZTEzNyJ9LmdseXBoaWNvbi1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMTM4In0uZ2x5cGhpY29uLWJyaWVmY2FzZTpiZWZvcmV7Y29udGVudDoiXGUxMzkifS5nbHlwaGljb24tZnVsbHNjcmVlbjpiZWZvcmV7Y29udGVudDoiXGUxNDAifS5nbHlwaGljb24tZGFzaGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZTE0MSJ9LmdseXBoaWNvbi1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQyIn0uZ2x5cGhpY29uLWhlYXJ0LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTE0MyJ9LmdseXBoaWNvbi1saW5rOmJlZm9yZXtjb250ZW50OiJcZTE0NCJ9LmdseXBoaWNvbi1waG9uZTpiZWZvcmV7Y29udGVudDoiXGUxNDUifS5nbHlwaGljb24tcHVzaHBpbjpiZWZvcmV7Y29udGVudDoiXGUxNDYifS5nbHlwaGljb24tdXNkOmJlZm9yZXtjb250ZW50OiJcZTE0OCJ9LmdseXBoaWNvbi1nYnA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQ5In0uZ2x5cGhpY29uLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUwIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUxIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1MiJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyOmJlZm9yZXtjb250ZW50OiJcZTE1MyJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGUxNTQifS5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzOmJlZm9yZXtjb250ZW50OiJcZTE1NSJ9LmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1NiJ9LmdseXBoaWNvbi11bmNoZWNrZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTU3In0uZ2x5cGhpY29uLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGUxNTgifS5nbHlwaGljb24tY29sbGFwc2UtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxNTkifS5nbHlwaGljb24tY29sbGFwc2UtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTYwIn0uZ2x5cGhpY29uLWxvZy1pbjpiZWZvcmV7Y29udGVudDoiXGUxNjEifS5nbHlwaGljb24tZmxhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTYyIn0uZ2x5cGhpY29uLWxvZy1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTYzIn0uZ2x5cGhpY29uLW5ldy13aW5kb3c6YmVmb3Jle2NvbnRlbnQ6IlxlMTY0In0uZ2x5cGhpY29uLXJlY29yZDpiZWZvcmV7Y29udGVudDoiXGUxNjUifS5nbHlwaGljb24tc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNjYifS5nbHlwaGljb24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGUxNjcifS5nbHlwaGljb24tc2F2ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTY4In0uZ2x5cGhpY29uLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGUxNjkifS5nbHlwaGljb24tZXhwb3J0OmJlZm9yZXtjb250ZW50OiJcZTE3MCJ9LmdseXBoaWNvbi1zZW5kOmJlZm9yZXtjb250ZW50OiJcZTE3MSJ9LmdseXBoaWNvbi1mbG9wcHktZGlzazpiZWZvcmV7Y29udGVudDoiXGUxNzIifS5nbHlwaGljb24tZmxvcHB5LXNhdmVkOmJlZm9yZXtjb250ZW50OiJcZTE3MyJ9LmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlOmJlZm9yZXtjb250ZW50OiJcZTE3NCJ9LmdseXBoaWNvbi1mbG9wcHktc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNzUifS5nbHlwaGljb24tZmxvcHB5LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMTc2In0uZ2x5cGhpY29uLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZTE3NyJ9LmdseXBoaWNvbi10cmFuc2ZlcjpiZWZvcmV7Y29udGVudDoiXGUxNzgifS5nbHlwaGljb24tY3V0bGVyeTpiZWZvcmV7Y29udGVudDoiXGUxNzkifS5nbHlwaGljb24taGVhZGVyOmJlZm9yZXtjb250ZW50OiJcZTE4MCJ9LmdseXBoaWNvbi1jb21wcmVzc2VkOmJlZm9yZXtjb250ZW50OiJcZTE4MSJ9LmdseXBoaWNvbi1lYXJwaG9uZTpiZWZvcmV7Y29udGVudDoiXGUxODIifS5nbHlwaGljb24tcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE4MyJ9LmdseXBoaWNvbi10b3dlcjpiZWZvcmV7Y29udGVudDoiXGUxODQifS5nbHlwaGljb24tc3RhdHM6YmVmb3Jle2NvbnRlbnQ6IlxlMTg1In0uZ2x5cGhpY29uLXNkLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZTE4NiJ9LmdseXBoaWNvbi1oZC12aWRlbzpiZWZvcmV7Y29udGVudDoiXGUxODcifS5nbHlwaGljb24tc3VidGl0bGVzOmJlZm9yZXtjb250ZW50OiJcZTE4OCJ9LmdseXBoaWNvbi1zb3VuZC1zdGVyZW86YmVmb3Jle2NvbnRlbnQ6IlxlMTg5In0uZ2x5cGhpY29uLXNvdW5kLWRvbGJ5OmJlZm9yZXtjb250ZW50OiJcZTE5MCJ9LmdseXBoaWNvbi1zb3VuZC01LTE6YmVmb3Jle2NvbnRlbnQ6IlxlMTkxIn0uZ2x5cGhpY29uLXNvdW5kLTYtMTpiZWZvcmV7Y29udGVudDoiXGUxOTIifS5nbHlwaGljb24tc291bmQtNy0xOmJlZm9yZXtjb250ZW50OiJcZTE5MyJ9LmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyazpiZWZvcmV7Y29udGVudDoiXGUxOTQifS5nbHlwaGljb24tcmVnaXN0cmF0aW9uLW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlMTk1In0uZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTE5NyJ9LmdseXBoaWNvbi1jbG91ZC11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTk4In0uZ2x5cGhpY29uLXRyZWUtY29uaWZlcjpiZWZvcmV7Y29udGVudDoiXGUxOTkifS5nbHlwaGljb24tdHJlZS1kZWNpZHVvdXM6YmVmb3Jle2NvbnRlbnQ6IlxlMjAwIn0uZ2x5cGhpY29uLWNkOmJlZm9yZXtjb250ZW50OiJcZTIwMSJ9LmdseXBoaWNvbi1zYXZlLWZpbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMjAyIn0uZ2x5cGhpY29uLW9wZW4tZmlsZTpiZWZvcmV7Y29udGVudDoiXGUyMDMifS5nbHlwaGljb24tbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMjA0In0uZ2x5cGhpY29uLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxlMjA1In0uZ2x5cGhpY29uLXBhc3RlOmJlZm9yZXtjb250ZW50OiJcZTIwNiJ9LmdseXBoaWNvbi1hbGVydDpiZWZvcmV7Y29udGVudDoiXGUyMDkifS5nbHlwaGljb24tZXF1YWxpemVyOmJlZm9yZXtjb250ZW50OiJcZTIxMCJ9LmdseXBoaWNvbi1raW5nOmJlZm9yZXtjb250ZW50OiJcZTIxMSJ9LmdseXBoaWNvbi1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGUyMTIifS5nbHlwaGljb24tcGF3bjpiZWZvcmV7Y29udGVudDoiXGUyMTMifS5nbHlwaGljb24tYmlzaG9wOmJlZm9yZXtjb250ZW50OiJcZTIxNCJ9LmdseXBoaWNvbi1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjE1In0uZ2x5cGhpY29uLWJhYnktZm9ybXVsYTpiZWZvcmV7Y29udGVudDoiXGUyMTYifS5nbHlwaGljb24tdGVudDpiZWZvcmV7Y29udGVudDoiXDI2ZmEifS5nbHlwaGljb24tYmxhY2tib2FyZDpiZWZvcmV7Y29udGVudDoiXGUyMTgifS5nbHlwaGljb24tYmVkOmJlZm9yZXtjb250ZW50OiJcZTIxOSJ9LmdseXBoaWNvbi1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGY4ZmYifS5nbHlwaGljb24tZXJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMjIxIn0uZ2x5cGhpY29uLWhvdXJnbGFzczpiZWZvcmV7Y29udGVudDoiXDIzMWIifS5nbHlwaGljb24tbGFtcDpiZWZvcmV7Y29udGVudDoiXGUyMjMifS5nbHlwaGljb24tZHVwbGljYXRlOmJlZm9yZXtjb250ZW50OiJcZTIyNCJ9LmdseXBoaWNvbi1waWdneS1iYW5rOmJlZm9yZXtjb250ZW50OiJcZTIyNSJ9LmdseXBoaWNvbi1zY2lzc29yczpiZWZvcmV7Y29udGVudDoiXGUyMjYifS5nbHlwaGljb24tYml0Y29pbjpiZWZvcmV7Y29udGVudDoiXGUyMjcifS5nbHlwaGljb24tYnRjOmJlZm9yZXtjb250ZW50OiJcZTIyNyJ9LmdseXBoaWNvbi14YnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjI3In0uZ2x5cGhpY29uLXllbjpiZWZvcmV7Y29udGVudDoiXDAwYTUifS5nbHlwaGljb24tanB5OmJlZm9yZXtjb250ZW50OiJcMDBhNSJ9LmdseXBoaWNvbi1ydWJsZTpiZWZvcmV7Y29udGVudDoiXDIwYmQifS5nbHlwaGljb24tcnViOmJlZm9yZXtjb250ZW50OiJcMjBiZCJ9LmdseXBoaWNvbi1zY2FsZTpiZWZvcmV7Y29udGVudDoiXGUyMzAifS5nbHlwaGljb24taWNlLWxvbGx5OmJlZm9yZXtjb250ZW50OiJcZTIzMSJ9LmdseXBoaWNvbi1pY2UtbG9sbHktdGFzdGVkOmJlZm9yZXtjb250ZW50OiJcZTIzMiJ9LmdseXBoaWNvbi1lZHVjYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlMjMzIn0uZ2x5cGhpY29uLW9wdGlvbi1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZTIzNCJ9LmdseXBoaWNvbi1vcHRpb24tdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMjM1In0uZ2x5cGhpY29uLW1lbnUtaGFtYnVyZ2VyOmJlZm9yZXtjb250ZW50OiJcZTIzNiJ9LmdseXBoaWNvbi1tb2RhbC13aW5kb3c6YmVmb3Jle2NvbnRlbnQ6IlxlMjM3In0uZ2x5cGhpY29uLW9pbDpiZWZvcmV7Y29udGVudDoiXGUyMzgifS5nbHlwaGljb24tZ3JhaW46YmVmb3Jle2NvbnRlbnQ6IlxlMjM5In0uZ2x5cGhpY29uLXN1bmdsYXNzZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMjQwIn0uZ2x5cGhpY29uLXRleHQtc2l6ZTpiZWZvcmV7Y29udGVudDoiXGUyNDEifS5nbHlwaGljb24tdGV4dC1jb2xvcjpiZWZvcmV7Y29udGVudDoiXGUyNDIifS5nbHlwaGljb24tdGV4dC1iYWNrZ3JvdW5kOmJlZm9yZXtjb250ZW50OiJcZTI0MyJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24tdG9wOmJlZm9yZXtjb250ZW50OiJcZTI0NCJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZTI0NSJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24taG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGUyNDYifS5nbHlwaGljb24tb2JqZWN0LWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjQ3In0uZ2x5cGhpY29uLW9iamVjdC1hbGlnbi12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGUyNDgifS5nbHlwaGljb24tb2JqZWN0LWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTI0OSJ9LmdseXBoaWNvbi10cmlhbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUyNTAifS5nbHlwaGljb24tdHJpYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGUyNTEifS5nbHlwaGljb24tdHJpYW5nbGUtYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZTI1MiJ9LmdseXBoaWNvbi10cmlhbmdsZS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxlMjUzIn0uZ2x5cGhpY29uLWNvbnNvbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMjU0In0uZ2x5cGhpY29uLXN1cGVyc2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZTI1NSJ9LmdseXBoaWNvbi1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjU2In0uZ2x5cGhpY29uLW1lbnUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGUyNTcifS5nbHlwaGljb24tbWVudS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUyNTgifS5nbHlwaGljb24tbWVudS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTI1OSJ9LmdseXBoaWNvbi1tZW51LXVwOmJlZm9yZXtjb250ZW50OiJcZTI2MCJ9Knstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWx7Zm9udC1zaXplOjEwcHg7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keXtmb250LWZhbWlseToiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9YnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXR9YXtjb2xvcjojMzM3YWI3O3RleHQtZGVjb3JhdGlvbjpub25lfWE6Zm9jdXMsYTpob3Zlcntjb2xvcjojMjM1MjdjO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTpmb2N1c3tvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4fWZpZ3VyZXttYXJnaW46MH1pbWd7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jYXJvdXNlbC1pbm5lcj4uaXRlbT5hPmltZywuY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLC5pbWctcmVzcG9uc2l2ZSwudGh1bWJuYWlsIGE+aW1nLC50aHVtYm5haWw+aW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LmltZy1yb3VuZGVke2JvcmRlci1yYWRpdXM6NnB4fS5pbWctdGh1bWJuYWlse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmc6NHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDstby10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5pbWctY2lyY2xle2JvcmRlci1yYWRpdXM6NTAlfWhye21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VlZX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTtib3JkZXI6MH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3twb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO2NsaXA6YXV0b31bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfS5oMSwuaDIsLmgzLC5oNCwuaDUsLmg2LGgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuMTtjb2xvcjppbmhlcml0fS5oMSAuc21hbGwsLmgxIHNtYWxsLC5oMiAuc21hbGwsLmgyIHNtYWxsLC5oMyAuc21hbGwsLmgzIHNtYWxsLC5oNCAuc21hbGwsLmg0IHNtYWxsLC5oNSAuc21hbGwsLmg1IHNtYWxsLC5oNiAuc21hbGwsLmg2IHNtYWxsLGgxIC5zbWFsbCxoMSBzbWFsbCxoMiAuc21hbGwsaDIgc21hbGwsaDMgLnNtYWxsLGgzIHNtYWxsLGg0IC5zbWFsbCxoNCBzbWFsbCxoNSAuc21hbGwsaDUgc21hbGwsaDYgLnNtYWxsLGg2IHNtYWxse2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiM3Nzd9LmgxLC5oMiwuaDMsaDEsaDIsaDN7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MTBweH0uaDEgLnNtYWxsLC5oMSBzbWFsbCwuaDIgLnNtYWxsLC5oMiBzbWFsbCwuaDMgLnNtYWxsLC5oMyBzbWFsbCxoMSAuc21hbGwsaDEgc21hbGwsaDIgLnNtYWxsLGgyIHNtYWxsLGgzIC5zbWFsbCxoMyBzbWFsbHtmb250LXNpemU6NjUlfS5oNCwuaDUsLmg2LGg0LGg1LGg2e21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9Lmg0IC5zbWFsbCwuaDQgc21hbGwsLmg1IC5zbWFsbCwuaDUgc21hbGwsLmg2IC5zbWFsbCwuaDYgc21hbGwsaDQgLnNtYWxsLGg0IHNtYWxsLGg1IC5zbWFsbCxoNSBzbWFsbCxoNiAuc21hbGwsaDYgc21hbGx7Zm9udC1zaXplOjc1JX0uaDEsaDF7Zm9udC1zaXplOjM2cHh9LmgyLGgye2ZvbnQtc2l6ZTozMHB4fS5oMyxoM3tmb250LXNpemU6MjRweH0uaDQsaDR7Zm9udC1zaXplOjE4cHh9Lmg1LGg1e2ZvbnQtc2l6ZToxNHB4fS5oNixoNntmb250LXNpemU6MTJweH1we21hcmdpbjowIDAgMTBweH0ubGVhZHttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuNH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmxlYWR7Zm9udC1zaXplOjIxcHh9fS5zbWFsbCxzbWFsbHtmb250LXNpemU6ODUlfS5tYXJrLG1hcmt7cGFkZGluZzouMmVtO2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM30udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1qdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeX0udGV4dC1ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS50ZXh0LWxvd2VyY2FzZXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnRleHQtdXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udGV4dC1jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LnRleHQtbXV0ZWR7Y29sb3I6Izc3N30udGV4dC1wcmltYXJ5e2NvbG9yOiMzMzdhYjd9YS50ZXh0LXByaW1hcnk6Zm9jdXMsYS50ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6IzI4NjA5MH0udGV4dC1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS50ZXh0LXN1Y2Nlc3M6Zm9jdXMsYS50ZXh0LXN1Y2Nlc3M6aG92ZXJ7Y29sb3I6IzJiNTQyY30udGV4dC1pbmZve2NvbG9yOiMzMTcwOGZ9YS50ZXh0LWluZm86Zm9jdXMsYS50ZXh0LWluZm86aG92ZXJ7Y29sb3I6IzI0NTI2OX0udGV4dC13YXJuaW5ne2NvbG9yOiM4YTZkM2J9YS50ZXh0LXdhcm5pbmc6Zm9jdXMsYS50ZXh0LXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzY2NTEyY30udGV4dC1kYW5nZXJ7Y29sb3I6I2E5NDQ0Mn1hLnRleHQtZGFuZ2VyOmZvY3VzLGEudGV4dC1kYW5nZXI6aG92ZXJ7Y29sb3I6Izg0MzUzNH0uYmctcHJpbWFyeXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzN2FiN31hLmJnLXByaW1hcnk6Zm9jdXMsYS5iZy1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzI4NjA5MH0uYmctc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9YS5iZy1zdWNjZXNzOmZvY3VzLGEuYmctc3VjY2Vzczpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjMWUyYjN9LmJnLWluZm97YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fWEuYmctaW5mbzpmb2N1cyxhLmJnLWluZm86aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYWZkOWVlfS5iZy13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM31hLmJnLXdhcm5pbmc6Zm9jdXMsYS5iZy13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y3ZWNiNX0uYmctZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2YyZGVkZX1hLmJnLWRhbmdlcjpmb2N1cyxhLmJnLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNGI5Yjl9LnBhZ2UtaGVhZGVye3BhZGRpbmctYm90dG9tOjlweDttYXJnaW46NDBweCAwIDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZX1vbCx1bHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxMHB4fW9sIG9sLG9sIHVsLHVsIG9sLHVsIHVse21hcmdpbi1ib3R0b206MH0ubGlzdC11bnN0eWxlZHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5le3BhZGRpbmctbGVmdDowO21hcmdpbi1sZWZ0Oi01cHg7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZT5saXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0OjVweDtwYWRkaW5nLWxlZnQ6NXB4fWRse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjIwcHh9ZGQsZHR7bGluZS1oZWlnaHQ6MS40Mjg1NzE0M31kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bGVmdDt3aWR0aDoxNjBweDtvdmVyZmxvdzpoaWRkZW47Y2xlYXI6bGVmdDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjE4MHB4fX1hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdLGFiYnJbdGl0bGVde2N1cnNvcjpoZWxwO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjNzc3fS5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJsb2NrcXVvdGV7cGFkZGluZzoxMHB4IDIwcHg7bWFyZ2luOjAgMCAyMHB4O2ZvbnQtc2l6ZToxNy41cHg7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkICNlZWV9YmxvY2txdW90ZSBvbDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgdWw6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9YmxvY2txdW90ZSAuc21hbGwsYmxvY2txdW90ZSBmb290ZXIsYmxvY2txdW90ZSBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTo4MCU7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojNzc3fWJsb2NrcXVvdGUgLnNtYWxsOmJlZm9yZSxibG9ja3F1b3RlIGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZSBzbWFsbDpiZWZvcmV7Y29udGVudDonXDIwMTQgXDAwQTAnfS5ibG9ja3F1b3RlLXJldmVyc2UsYmxvY2txdW90ZS5wdWxsLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MDt0ZXh0LWFsaWduOnJpZ2h0O2JvcmRlci1yaWdodDo1cHggc29saWQgI2VlZTtib3JkZXItbGVmdDowfS5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmJlZm9yZSwuYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjpiZWZvcmUsLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmJlZm9yZXtjb250ZW50OicnfS5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YWZ0ZXIsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDphZnRlcixibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmFmdGVyLGJsb2NrcXVvdGUucHVsbC1yaWdodCBzbWFsbDphZnRlcntjb250ZW50OidcMDBBMCBcMjAxNCd9YWRkcmVzc3ttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7bGluZS1oZWlnaHQ6MS40Mjg1NzE0M31jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTpNZW5sbyxNb25hY28sQ29uc29sYXMsIkNvdXJpZXIgTmV3Iixtb25vc3BhY2V9Y29kZXtwYWRkaW5nOjJweCA0cHg7Zm9udC1zaXplOjkwJTtjb2xvcjojYzcyNTRlO2JhY2tncm91bmQtY29sb3I6I2Y5ZjJmNDtib3JkZXItcmFkaXVzOjRweH1rYmR7cGFkZGluZzoycHggNHB4O2ZvbnQtc2l6ZTo5MCU7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Ym9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KX1rYmQga2Jke3BhZGRpbmc6MDtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfXByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OS41cHg7bWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMzMzt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4fXByZSBjb2Rle3BhZGRpbmc6MDtmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0O3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowfS5wcmUtc2Nyb2xsYWJsZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250YWluZXJ7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxNXB4O21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7d2lkdGg6NzUwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29udGFpbmVye3dpZHRoOjk3MHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jb250YWluZXJ7d2lkdGg6MTE3MHB4fX0uY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfS5yb3d7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4fS5jb2wtbGctMSwuY29sLWxnLTEwLC5jb2wtbGctMTEsLmNvbC1sZy0xMiwuY29sLWxnLTIsLmNvbC1sZy0zLC5jb2wtbGctNCwuY29sLWxnLTUsLmNvbC1sZy02LC5jb2wtbGctNywuY29sLWxnLTgsLmNvbC1sZy05LC5jb2wtbWQtMSwuY29sLW1kLTEwLC5jb2wtbWQtMTEsLmNvbC1tZC0xMiwuY29sLW1kLTIsLmNvbC1tZC0zLC5jb2wtbWQtNCwuY29sLW1kLTUsLmNvbC1tZC02LC5jb2wtbWQtNywuY29sLW1kLTgsLmNvbC1tZC05LC5jb2wtc20tMSwuY29sLXNtLTEwLC5jb2wtc20tMTEsLmNvbC1zbS0xMiwuY29sLXNtLTIsLmNvbC1zbS0zLC5jb2wtc20tNCwuY29sLXNtLTUsLmNvbC1zbS02LC5jb2wtc20tNywuY29sLXNtLTgsLmNvbC1zbS05LC5jb2wteHMtMSwuY29sLXhzLTEwLC5jb2wteHMtMTEsLmNvbC14cy0xMiwuY29sLXhzLTIsLmNvbC14cy0zLC5jb2wteHMtNCwuY29sLXhzLTUsLmNvbC14cy02LC5jb2wteHMtNywuY29sLXhzLTgsLmNvbC14cy05e3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MXB4O3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0uY29sLXhzLTEsLmNvbC14cy0xMCwuY29sLXhzLTExLC5jb2wteHMtMTIsLmNvbC14cy0yLC5jb2wteHMtMywuY29sLXhzLTQsLmNvbC14cy01LC5jb2wteHMtNiwuY29sLXhzLTcsLmNvbC14cy04LC5jb2wteHMtOXtmbG9hdDpsZWZ0fS5jb2wteHMtMTJ7d2lkdGg6MTAwJX0uY29sLXhzLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLXhzLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXhzLTl7d2lkdGg6NzUlfS5jb2wteHMtOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC14cy03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLXhzLTZ7d2lkdGg6NTAlfS5jb2wteHMtNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC14cy00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLXhzLTN7d2lkdGg6MjUlfS5jb2wteHMtMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC14cy0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wteHMtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wteHMtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC14cy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtOXtyaWdodDo3NSV9LmNvbC14cy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wteHMtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtNntyaWdodDo1MCV9LmNvbC14cy1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wteHMtcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtM3tyaWdodDoyNSV9LmNvbC14cy1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wteHMtcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wteHMtcHVsbC0we3JpZ2h0OmF1dG99LmNvbC14cy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLXhzLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC14cy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wteHMtcHVzaC05e2xlZnQ6NzUlfS5jb2wteHMtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wteHMtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wteHMtcHVzaC02e2xlZnQ6NTAlfS5jb2wteHMtcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wteHMtcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wteHMtcHVzaC0ze2xlZnQ6MjUlfS5jb2wteHMtcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wteHMtcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC14cy1wdXNoLTB7bGVmdDphdXRvfS5jb2wteHMtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC14cy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wteHMtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLXhzLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLXhzLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLXhzLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wteHMtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbC1zbS0xLC5jb2wtc20tMTAsLmNvbC1zbS0xMSwuY29sLXNtLTEyLC5jb2wtc20tMiwuY29sLXNtLTMsLmNvbC1zbS00LC5jb2wtc20tNSwuY29sLXNtLTYsLmNvbC1zbS03LC5jb2wtc20tOCwuY29sLXNtLTl7ZmxvYXQ6bGVmdH0uY29sLXNtLTEye3dpZHRoOjEwMCV9LmNvbC1zbS0xMXt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1zbS0xMHt3aWR0aDo4My4zMzMzMzMzMyV9LmNvbC1zbS05e3dpZHRoOjc1JX0uY29sLXNtLTh7d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtc20tN3t3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1zbS02e3dpZHRoOjUwJX0uY29sLXNtLTV7d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtc20tNHt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1zbS0ze3dpZHRoOjI1JX0uY29sLXNtLTJ7d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtc20tMXt3aWR0aDo4LjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtMTJ7cmlnaHQ6MTAwJX0uY29sLXNtLXB1bGwtMTF7cmlnaHQ6OTEuNjY2NjY2NjclfS5jb2wtc20tcHVsbC0xMHtyaWdodDo4My4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTl7cmlnaHQ6NzUlfS5jb2wtc20tcHVsbC04e3JpZ2h0OjY2LjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtN3tyaWdodDo1OC4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTZ7cmlnaHQ6NTAlfS5jb2wtc20tcHVsbC01e3JpZ2h0OjQxLjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtNHtyaWdodDozMy4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTN7cmlnaHQ6MjUlfS5jb2wtc20tcHVsbC0ye3JpZ2h0OjE2LjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtMXtyaWdodDo4LjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtMHtyaWdodDphdXRvfS5jb2wtc20tcHVzaC0xMntsZWZ0OjEwMCV9LmNvbC1zbS1wdXNoLTExe2xlZnQ6OTEuNjY2NjY2NjclfS5jb2wtc20tcHVzaC0xMHtsZWZ0OjgzLjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtOXtsZWZ0Ojc1JX0uY29sLXNtLXB1c2gtOHtsZWZ0OjY2LjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtN3tsZWZ0OjU4LjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtNntsZWZ0OjUwJX0uY29sLXNtLXB1c2gtNXtsZWZ0OjQxLjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtNHtsZWZ0OjMzLjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtM3tsZWZ0OjI1JX0uY29sLXNtLXB1c2gtMntsZWZ0OjE2LjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtMXtsZWZ0OjguMzMzMzMzMzMlfS5jb2wtc20tcHVzaC0we2xlZnQ6YXV0b30uY29sLXNtLW9mZnNldC0xMnttYXJnaW4tbGVmdDoxMDAlfS5jb2wtc20tb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uY29sLXNtLW9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9LmNvbC1zbS1vZmZzZXQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNvbC1zbS1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9LmNvbC1zbS1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0uY29sLXNtLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29sLW1kLTEsLmNvbC1tZC0xMCwuY29sLW1kLTExLC5jb2wtbWQtMTIsLmNvbC1tZC0yLC5jb2wtbWQtMywuY29sLW1kLTQsLmNvbC1tZC01LC5jb2wtbWQtNiwuY29sLW1kLTcsLmNvbC1tZC04LC5jb2wtbWQtOXtmbG9hdDpsZWZ0fS5jb2wtbWQtMTJ7d2lkdGg6MTAwJX0uY29sLW1kLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLW1kLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLW1kLTl7d2lkdGg6NzUlfS5jb2wtbWQtOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1tZC03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLW1kLTZ7d2lkdGg6NTAlfS5jb2wtbWQtNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1tZC00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLW1kLTN7d2lkdGg6MjUlfS5jb2wtbWQtMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1tZC0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbWQtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC1tZC1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1tZC1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtNntyaWdodDo1MCV9LmNvbC1tZC1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtM3tyaWdodDoyNSV9LmNvbC1tZC1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC0we3JpZ2h0OmF1dG99LmNvbC1tZC1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLW1kLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC1tZC1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC05e2xlZnQ6NzUlfS5jb2wtbWQtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC02e2xlZnQ6NTAlfS5jb2wtbWQtcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC0ze2xlZnQ6MjUlfS5jb2wtbWQtcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC1tZC1wdXNoLTB7bGVmdDphdXRvfS5jb2wtbWQtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1tZC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wtbWQtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLW1kLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLW1kLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLW1kLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wtbWQtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY29sLWxnLTEsLmNvbC1sZy0xMCwuY29sLWxnLTExLC5jb2wtbGctMTIsLmNvbC1sZy0yLC5jb2wtbGctMywuY29sLWxnLTQsLmNvbC1sZy01LC5jb2wtbGctNiwuY29sLWxnLTcsLmNvbC1sZy04LC5jb2wtbGctOXtmbG9hdDpsZWZ0fS5jb2wtbGctMTJ7d2lkdGg6MTAwJX0uY29sLWxnLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLWxnLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLWxnLTl7d2lkdGg6NzUlfS5jb2wtbGctOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1sZy03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLWxnLTZ7d2lkdGg6NTAlfS5jb2wtbGctNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1sZy00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLWxnLTN7d2lkdGg6MjUlfS5jb2wtbGctMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1sZy0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtbGctcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbGctcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC1sZy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1sZy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wtbGctcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtNntyaWdodDo1MCV9LmNvbC1sZy1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wtbGctcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtM3tyaWdodDoyNSV9LmNvbC1sZy1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wtbGctcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wtbGctcHVsbC0we3JpZ2h0OmF1dG99LmNvbC1sZy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLWxnLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC1sZy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbGctcHVzaC05e2xlZnQ6NzUlfS5jb2wtbGctcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbGctcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbGctcHVzaC02e2xlZnQ6NTAlfS5jb2wtbGctcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbGctcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbGctcHVzaC0ze2xlZnQ6MjUlfS5jb2wtbGctcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbGctcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC1sZy1wdXNoLTB7bGVmdDphdXRvfS5jb2wtbGctb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1sZy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wtbGctb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLWxnLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLWxnLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLWxnLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wtbGctb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19dGFibGV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1jYXB0aW9ue3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHg7Y29sb3I6Izc3Nzt0ZXh0LWFsaWduOmxlZnR9dGh7dGV4dC1hbGlnbjpsZWZ0fS50YWJsZXt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MjBweH0udGFibGU+dGJvZHk+dHI+dGQsLnRhYmxlPnRib2R5PnRyPnRoLC50YWJsZT50Zm9vdD50cj50ZCwudGFibGU+dGZvb3Q+dHI+dGgsLnRhYmxlPnRoZWFkPnRyPnRkLC50YWJsZT50aGVhZD50cj50aHtwYWRkaW5nOjhweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS50YWJsZT50aGVhZD50cj50aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2RkZH0udGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwudGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsLnRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC50YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGh7Ym9yZGVyLXRvcDowfS50YWJsZT50Ym9keSt0Ym9keXtib3JkZXItdG9wOjJweCBzb2xpZCAjZGRkfS50YWJsZSAudGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1jb25kZW5zZWQ+dGJvZHk+dHI+dGQsLnRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50aCwudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRkLC50YWJsZS1jb25kZW5zZWQ+dGZvb3Q+dHI+dGgsLnRhYmxlLWNvbmRlbnNlZD50aGVhZD50cj50ZCwudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRoe3BhZGRpbmc6NXB4fS50YWJsZS1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkICNkZGR9LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkLC50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aCwudGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQsLnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoLC50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGh7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGh7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHh9LnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjl9LnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX10YWJsZSBjb2xbY2xhc3MqPWNvbC1de3Bvc2l0aW9uOnN0YXRpYztkaXNwbGF5OnRhYmxlLWNvbHVtbjtmbG9hdDpub25lfXRhYmxlIHRkW2NsYXNzKj1jb2wtXSx0YWJsZSB0aFtjbGFzcyo9Y29sLV17cG9zaXRpb246c3RhdGljO2Rpc3BsYXk6dGFibGUtY2VsbDtmbG9hdDpub25lfS50YWJsZT50Ym9keT50ci5hY3RpdmU+dGQsLnRhYmxlPnRib2R5PnRyLmFjdGl2ZT50aCwudGFibGU+dGJvZHk+dHI+dGQuYWN0aXZlLC50YWJsZT50Ym9keT50cj50aC5hY3RpdmUsLnRhYmxlPnRmb290PnRyLmFjdGl2ZT50ZCwudGFibGU+dGZvb3Q+dHIuYWN0aXZlPnRoLC50YWJsZT50Zm9vdD50cj50ZC5hY3RpdmUsLnRhYmxlPnRmb290PnRyPnRoLmFjdGl2ZSwudGFibGU+dGhlYWQ+dHIuYWN0aXZlPnRkLC50YWJsZT50aGVhZD50ci5hY3RpdmU+dGgsLnRhYmxlPnRoZWFkPnRyPnRkLmFjdGl2ZSwudGFibGU+dGhlYWQ+dHI+dGguYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0udGFibGUtaG92ZXI+dGJvZHk+dHIuYWN0aXZlOmhvdmVyPnRkLC50YWJsZS1ob3Zlcj50Ym9keT50ci5hY3RpdmU6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hY3RpdmUsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmFjdGl2ZTpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguYWN0aXZlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U4ZThlOH0udGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50aCwudGFibGU+dGJvZHk+dHI+dGQuc3VjY2VzcywudGFibGU+dGJvZHk+dHI+dGguc3VjY2VzcywudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50aCwudGFibGU+dGZvb3Q+dHI+dGQuc3VjY2VzcywudGFibGU+dGZvb3Q+dHI+dGguc3VjY2VzcywudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50aCwudGFibGU+dGhlYWQ+dHI+dGQuc3VjY2VzcywudGFibGU+dGhlYWQ+dHI+dGguc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9LnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5zdWNjZXNzLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5zdWNjZXNzOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5zdWNjZXNzOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QwZTljNn0udGFibGU+dGJvZHk+dHIuaW5mbz50ZCwudGFibGU+dGJvZHk+dHIuaW5mbz50aCwudGFibGU+dGJvZHk+dHI+dGQuaW5mbywudGFibGU+dGJvZHk+dHI+dGguaW5mbywudGFibGU+dGZvb3Q+dHIuaW5mbz50ZCwudGFibGU+dGZvb3Q+dHIuaW5mbz50aCwudGFibGU+dGZvb3Q+dHI+dGQuaW5mbywudGFibGU+dGZvb3Q+dHI+dGguaW5mbywudGFibGU+dGhlYWQ+dHIuaW5mbz50ZCwudGFibGU+dGhlYWQ+dHIuaW5mbz50aCwudGFibGU+dGhlYWQ+dHI+dGQuaW5mbywudGFibGU+dGhlYWQ+dHI+dGguaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjd9LnRhYmxlLWhvdmVyPnRib2R5PnRyLmluZm86aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLmluZm86aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5pbmZvLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5pbmZvOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5pbmZvOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM30udGFibGU+dGJvZHk+dHIud2FybmluZz50ZCwudGFibGU+dGJvZHk+dHIud2FybmluZz50aCwudGFibGU+dGJvZHk+dHI+dGQud2FybmluZywudGFibGU+dGJvZHk+dHI+dGgud2FybmluZywudGFibGU+dGZvb3Q+dHIud2FybmluZz50ZCwudGFibGU+dGZvb3Q+dHIud2FybmluZz50aCwudGFibGU+dGZvb3Q+dHI+dGQud2FybmluZywudGFibGU+dGZvb3Q+dHI+dGgud2FybmluZywudGFibGU+dGhlYWQ+dHIud2FybmluZz50ZCwudGFibGU+dGhlYWQ+dHIud2FybmluZz50aCwudGFibGU+dGhlYWQ+dHI+dGQud2FybmluZywudGFibGU+dGhlYWQ+dHI+dGgud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9LnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi53YXJuaW5nLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC53YXJuaW5nOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC53YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZhZjJjY30udGFibGU+dGJvZHk+dHIuZGFuZ2VyPnRkLC50YWJsZT50Ym9keT50ci5kYW5nZXI+dGgsLnRhYmxlPnRib2R5PnRyPnRkLmRhbmdlciwudGFibGU+dGJvZHk+dHI+dGguZGFuZ2VyLC50YWJsZT50Zm9vdD50ci5kYW5nZXI+dGQsLnRhYmxlPnRmb290PnRyLmRhbmdlcj50aCwudGFibGU+dGZvb3Q+dHI+dGQuZGFuZ2VyLC50YWJsZT50Zm9vdD50cj50aC5kYW5nZXIsLnRhYmxlPnRoZWFkPnRyLmRhbmdlcj50ZCwudGFibGU+dGhlYWQ+dHIuZGFuZ2VyPnRoLC50YWJsZT50aGVhZD50cj50ZC5kYW5nZXIsLnRhYmxlPnRoZWFkPnRyPnRoLmRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9LnRhYmxlLWhvdmVyPnRib2R5PnRyLmRhbmdlcjpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuZGFuZ2VyOmhvdmVyPnRoLC50YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uZGFuZ2VyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5kYW5nZXI6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlYmNjY2N9LnRhYmxlLXJlc3BvbnNpdmV7bWluLWhlaWdodDouMDElO292ZXJmbG93LXg6YXV0b31AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KXsudGFibGUtcmVzcG9uc2l2ZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTVweDtvdmVyZmxvdy15OmhpZGRlbjstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO2JvcmRlcjoxcHggc29saWQgI2RkZH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGV7bWFyZ2luLWJvdHRvbTowfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Ym9keT50cj50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGJvZHk+dHI+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRmb290PnRyPnRkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Zm9vdD50cj50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRoZWFkPnRyPnRoe3doaXRlLXNwYWNlOm5vd3JhcH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aHtib3JkZXItYm90dG9tOjB9fWZpZWxkc2V0e21pbi13aWR0aDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MH1sZWdlbmR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6MDttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjIxcHg7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzMzO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9bGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbTo1cHg7Zm9udC13ZWlnaHQ6NzAwfWlucHV0W3R5cGU9c2VhcmNoXXstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9aW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117bWFyZ2luOjRweCAwIDA7bWFyZ2luLXRvcDoxcHhcOTtsaW5lLWhlaWdodDpub3JtYWx9aW5wdXRbdHlwZT1maWxlXXtkaXNwbGF5OmJsb2NrfWlucHV0W3R5cGU9cmFuZ2Vde2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPWZpbGVdOmZvY3VzLGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzLGlucHV0W3R5cGU9cmFkaW9dOmZvY3Vze291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHh9b3V0cHV0e2Rpc3BsYXk6YmxvY2s7cGFkZGluZy10b3A6N3B4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzU1NX0uZm9ybS1jb250cm9se2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MzRweDtwYWRkaW5nOjZweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7LW8tdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXN9LmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2YWZlOTtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNik7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpfS5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5mb3JtLWNvbnRyb2xbZGlzYWJsZWRdLC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldLGZpZWxkc2V0W2Rpc2FibGVkXSAuZm9ybS1jb250cm9se2JhY2tncm91bmQtY29sb3I6I2VlZTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbFtkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5mb3JtLWNvbnRyb2x7Y3Vyc29yOm5vdC1hbGxvd2VkfXRleHRhcmVhLmZvcm0tY29udHJvbHtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXtpbnB1dFt0eXBlPWRhdGVdLmZvcm0tY29udHJvbCxpbnB1dFt0eXBlPXRpbWVdLmZvcm0tY29udHJvbCxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5mb3JtLWNvbnRyb2wsaW5wdXRbdHlwZT1tb250aF0uZm9ybS1jb250cm9se2xpbmUtaGVpZ2h0OjM0cHh9LmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9ZGF0ZV0sLmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9dGltZV0sLmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLC5pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPW1vbnRoXSxpbnB1dFt0eXBlPWRhdGVdLmlucHV0LXNtLGlucHV0W3R5cGU9dGltZV0uaW5wdXQtc20saW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0uaW5wdXQtc20saW5wdXRbdHlwZT1tb250aF0uaW5wdXQtc217bGluZS1oZWlnaHQ6MzBweH0uaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT1kYXRlXSwuaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT10aW1lXSwuaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sLmlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9bW9udGhdLGlucHV0W3R5cGU9ZGF0ZV0uaW5wdXQtbGcsaW5wdXRbdHlwZT10aW1lXS5pbnB1dC1sZyxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5pbnB1dC1sZyxpbnB1dFt0eXBlPW1vbnRoXS5pbnB1dC1sZ3tsaW5lLWhlaWdodDo0NnB4fX0uZm9ybS1ncm91cHttYXJnaW4tYm90dG9tOjE1cHh9LmNoZWNrYm94LC5yYWRpb3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9LmNoZWNrYm94IGxhYmVsLC5yYWRpbyBsYWJlbHttaW4taGVpZ2h0OjIwcHg7cGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luLWJvdHRvbTowO2ZvbnQtd2VpZ2h0OjQwMDtjdXJzb3I6cG9pbnRlcn0uY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XSwucmFkaW8gaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOjRweFw5O21hcmdpbi1sZWZ0Oi0yMHB4fS5jaGVja2JveCsuY2hlY2tib3gsLnJhZGlvKy5yYWRpb3ttYXJnaW4tdG9wOi01cHh9LmNoZWNrYm94LWlubGluZSwucmFkaW8taW5saW5le3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbi1ib3R0b206MDtmb250LXdlaWdodDo0MDA7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyfS5jaGVja2JveC1pbmxpbmUrLmNoZWNrYm94LWlubGluZSwucmFkaW8taW5saW5lKy5yYWRpby1pbmxpbmV7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEwcHh9ZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9Y2hlY2tib3hdLGZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPXJhZGlvXSxpbnB1dFt0eXBlPWNoZWNrYm94XS5kaXNhYmxlZCxpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0saW5wdXRbdHlwZT1yYWRpb10uZGlzYWJsZWQsaW5wdXRbdHlwZT1yYWRpb11bZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uY2hlY2tib3gtaW5saW5lLmRpc2FibGVkLC5yYWRpby1pbmxpbmUuZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveC1pbmxpbmUsZmllbGRzZXRbZGlzYWJsZWRdIC5yYWRpby1pbmxpbmV7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jaGVja2JveC5kaXNhYmxlZCBsYWJlbCwucmFkaW8uZGlzYWJsZWQgbGFiZWwsZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveCBsYWJlbCxmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uZm9ybS1jb250cm9sLXN0YXRpY3ttaW4taGVpZ2h0OjM0cHg7cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDttYXJnaW4tYm90dG9tOjB9LmZvcm0tY29udHJvbC1zdGF0aWMuaW5wdXQtbGcsLmZvcm0tY29udHJvbC1zdGF0aWMuaW5wdXQtc217cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5pbnB1dC1zbXtoZWlnaHQ6MzBweDtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH1zZWxlY3QuaW5wdXQtc217aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweH1zZWxlY3RbbXVsdGlwbGVdLmlucHV0LXNtLHRleHRhcmVhLmlucHV0LXNte2hlaWdodDphdXRvfS5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjMwcHg7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmZvcm0tZ3JvdXAtc20gc2VsZWN0LmZvcm0tY29udHJvbHtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fS5mb3JtLWdyb3VwLXNtIHNlbGVjdFttdWx0aXBsZV0uZm9ybS1jb250cm9sLC5mb3JtLWdyb3VwLXNtIHRleHRhcmVhLmZvcm0tY29udHJvbHtoZWlnaHQ6YXV0b30uZm9ybS1ncm91cC1zbSAuZm9ybS1jb250cm9sLXN0YXRpY3toZWlnaHQ6MzBweDttaW4taGVpZ2h0OjMycHg7cGFkZGluZzo2cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LmlucHV0LWxne2hlaWdodDo0NnB4O3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzMzMzMzMztib3JkZXItcmFkaXVzOjZweH1zZWxlY3QuaW5wdXQtbGd7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH1zZWxlY3RbbXVsdGlwbGVdLmlucHV0LWxnLHRleHRhcmVhLmlucHV0LWxne2hlaWdodDphdXRvfS5mb3JtLWdyb3VwLWxnIC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjQ2cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMzMzMzMzO2JvcmRlci1yYWRpdXM6NnB4fS5mb3JtLWdyb3VwLWxnIHNlbGVjdC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH0uZm9ybS1ncm91cC1sZyBzZWxlY3RbbXVsdGlwbGVdLmZvcm0tY29udHJvbCwuZm9ybS1ncm91cC1sZyB0ZXh0YXJlYS5mb3JtLWNvbnRyb2x7aGVpZ2h0OmF1dG99LmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbC1zdGF0aWN7aGVpZ2h0OjQ2cHg7bWluLWhlaWdodDozOHB4O3BhZGRpbmc6MTFweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzMzMzMzM30uaGFzLWZlZWRiYWNre3Bvc2l0aW9uOnJlbGF0aXZlfS5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbHtwYWRkaW5nLXJpZ2h0OjQyLjVweH0uZm9ybS1jb250cm9sLWZlZWRiYWNre3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7ei1pbmRleDoyO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO3BvaW50ZXItZXZlbnRzOm5vbmV9LmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sLWZlZWRiYWNrLC5pbnB1dC1ncm91cC1sZysuZm9ybS1jb250cm9sLWZlZWRiYWNrLC5pbnB1dC1sZysuZm9ybS1jb250cm9sLWZlZWRiYWNre3dpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH0uZm9ybS1ncm91cC1zbSAuZm9ybS1jb250cm9sKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssLmlucHV0LWdyb3VwLXNtKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssLmlucHV0LXNtKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fS5oYXMtc3VjY2VzcyAuY2hlY2tib3gsLmhhcy1zdWNjZXNzIC5jaGVja2JveC1pbmxpbmUsLmhhcy1zdWNjZXNzIC5jb250cm9sLWxhYmVsLC5oYXMtc3VjY2VzcyAuaGVscC1ibG9jaywuaGFzLXN1Y2Nlc3MgLnJhZGlvLC5oYXMtc3VjY2VzcyAucmFkaW8taW5saW5lLC5oYXMtc3VjY2Vzcy5jaGVja2JveCBsYWJlbCwuaGFzLXN1Y2Nlc3MuY2hlY2tib3gtaW5saW5lIGxhYmVsLC5oYXMtc3VjY2Vzcy5yYWRpbyBsYWJlbCwuaGFzLXN1Y2Nlc3MucmFkaW8taW5saW5lIGxhYmVse2NvbG9yOiMzYzc2M2R9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiMzYzc2M2Q7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMyYjU0MmM7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2ODtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2OH0uaGFzLXN1Y2Nlc3MgLmlucHV0LWdyb3VwLWFkZG9ue2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojM2M3NjNkfS5oYXMtc3VjY2VzcyAuZm9ybS1jb250cm9sLWZlZWRiYWNre2NvbG9yOiMzYzc2M2R9Lmhhcy13YXJuaW5nIC5jaGVja2JveCwuaGFzLXdhcm5pbmcgLmNoZWNrYm94LWlubGluZSwuaGFzLXdhcm5pbmcgLmNvbnRyb2wtbGFiZWwsLmhhcy13YXJuaW5nIC5oZWxwLWJsb2NrLC5oYXMtd2FybmluZyAucmFkaW8sLmhhcy13YXJuaW5nIC5yYWRpby1pbmxpbmUsLmhhcy13YXJuaW5nLmNoZWNrYm94IGxhYmVsLC5oYXMtd2FybmluZy5jaGVja2JveC1pbmxpbmUgbGFiZWwsLmhhcy13YXJuaW5nLnJhZGlvIGxhYmVsLC5oYXMtd2FybmluZy5yYWRpby1pbmxpbmUgbGFiZWx7Y29sb3I6IzhhNmQzYn0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6IzhhNmQzYjstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2NTEyYzstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZiO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZifS5oYXMtd2FybmluZyAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiM4YTZkM2J9Lmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7Y29sb3I6IzhhNmQzYn0uaGFzLWVycm9yIC5jaGVja2JveCwuaGFzLWVycm9yIC5jaGVja2JveC1pbmxpbmUsLmhhcy1lcnJvciAuY29udHJvbC1sYWJlbCwuaGFzLWVycm9yIC5oZWxwLWJsb2NrLC5oYXMtZXJyb3IgLnJhZGlvLC5oYXMtZXJyb3IgLnJhZGlvLWlubGluZSwuaGFzLWVycm9yLmNoZWNrYm94IGxhYmVsLC5oYXMtZXJyb3IuY2hlY2tib3gtaW5saW5lIGxhYmVsLC5oYXMtZXJyb3IucmFkaW8gbGFiZWwsLmhhcy1lcnJvci5yYWRpby1pbmxpbmUgbGFiZWx7Y29sb3I6I2E5NDQ0Mn0uaGFzLWVycm9yIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiNhOTQ0NDI7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9Lmhhcy1lcnJvciAuZm9ybS1jb250cm9sOmZvY3Vze2JvcmRlci1jb2xvcjojODQzNTM0Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjZTg0ODM7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjZTg0ODN9Lmhhcy1lcnJvciAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGU7Ym9yZGVyLWNvbG9yOiNhOTQ0NDJ9Lmhhcy1lcnJvciAuZm9ybS1jb250cm9sLWZlZWRiYWNre2NvbG9yOiNhOTQ0NDJ9Lmhhcy1mZWVkYmFjayBsYWJlbH4uZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDoyNXB4fS5oYXMtZmVlZGJhY2sgbGFiZWwuc3Itb25seX4uZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowfS5oZWxwLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHg7bWFyZ2luLWJvdHRvbToxMHB4O2NvbG9yOiM3MzczNzN9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWlubGluZSAuZm9ybS1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuZm9ybS1jb250cm9se2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOmF1dG87dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXN0YXRpY3tkaXNwbGF5OmlubGluZS1ibG9ja30uZm9ybS1pbmxpbmUgLmlucHV0LWdyb3Vwe2Rpc3BsYXk6aW5saW5lLXRhYmxlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wsLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYWRkb24sLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYnRue3dpZHRoOmF1dG99LmZvcm0taW5saW5lIC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9se3dpZHRoOjEwMCV9LmZvcm0taW5saW5lIC5jb250cm9sLWxhYmVse21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5jaGVja2JveCwuZm9ybS1pbmxpbmUgLnJhZGlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuY2hlY2tib3ggbGFiZWwsLmZvcm0taW5saW5lIC5yYWRpbyBsYWJlbHtwYWRkaW5nLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLC5mb3JtLWlubGluZSAucmFkaW8gaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowfX0uZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwuZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmUsLmZvcm0taG9yaXpvbnRhbCAucmFkaW8sLmZvcm0taG9yaXpvbnRhbCAucmFkaW8taW5saW5le3BhZGRpbmctdG9wOjdweDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94LC5mb3JtLWhvcml6b250YWwgLnJhZGlve21pbi1oZWlnaHQ6MjdweH0uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3Vwe21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tbGVmdDotMTVweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1sYWJlbHtwYWRkaW5nLXRvcDo3cHg7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246cmlnaHR9fS5mb3JtLWhvcml6b250YWwgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3JpZ2h0OjE1cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgLmNvbnRyb2wtbGFiZWx7cGFkZGluZy10b3A6MTFweDtmb250LXNpemU6MThweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gLmNvbnRyb2wtbGFiZWx7cGFkZGluZy10b3A6NnB4O2ZvbnQtc2l6ZToxMnB4fX0uYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NnB4IDEycHg7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LW1zLXRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHh9LmJ0bi5hY3RpdmUuZm9jdXMsLmJ0bi5hY3RpdmU6Zm9jdXMsLmJ0bi5mb2N1cywuYnRuOmFjdGl2ZS5mb2N1cywuYnRuOmFjdGl2ZTpmb2N1cywuYnRuOmZvY3Vze291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHh9LmJ0bi5mb2N1cywuYnRuOmZvY3VzLC5idG46aG92ZXJ7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuLmFjdGl2ZSwuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KTtib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpfS5idG4uZGlzYWJsZWQsLmJ0bltkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG57Y3Vyc29yOm5vdC1hbGxvd2VkO2ZpbHRlcjphbHBoYShvcGFjaXR5PTY1KTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7b3BhY2l0eTouNjV9YS5idG4uZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIGEuYnRue3BvaW50ZXItZXZlbnRzOm5vbmV9LmJ0bi1kZWZhdWx0e2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojY2NjfS5idG4tZGVmYXVsdC5mb2N1cywuYnRuLWRlZmF1bHQ6Zm9jdXN7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiM4YzhjOGN9LmJ0bi1kZWZhdWx0OmhvdmVye2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5idG4tZGVmYXVsdC5hY3RpdmUsLmJ0bi1kZWZhdWx0OmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0e2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5idG4tZGVmYXVsdC5hY3RpdmUuZm9jdXMsLmJ0bi1kZWZhdWx0LmFjdGl2ZTpmb2N1cywuYnRuLWRlZmF1bHQuYWN0aXZlOmhvdmVyLC5idG4tZGVmYXVsdDphY3RpdmUuZm9jdXMsLmJ0bi1kZWZhdWx0OmFjdGl2ZTpmb2N1cywuYnRuLWRlZmF1bHQ6YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHQuZm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdDpmb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0OmhvdmVye2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZDRkNGQ0O2JvcmRlci1jb2xvcjojOGM4YzhjfS5idG4tZGVmYXVsdC5hY3RpdmUsLmJ0bi1kZWZhdWx0OmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0e2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWRlZmF1bHQuZGlzYWJsZWQuZm9jdXMsLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmZvY3VzLC5idG4tZGVmYXVsdC5kaXNhYmxlZDpob3ZlciwuYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmZvY3VzLC5idG4tZGVmYXVsdFtkaXNhYmxlZF06Zm9jdXMsLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjY2N9LmJ0bi1kZWZhdWx0IC5iYWRnZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzM30uYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzdhYjc7Ym9yZGVyLWNvbG9yOiMyZTZkYTR9LmJ0bi1wcmltYXJ5LmZvY3VzLC5idG4tcHJpbWFyeTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzI4NjA5MDtib3JkZXItY29sb3I6IzEyMmI0MH0uYnRuLXByaW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyODYwOTA7Ym9yZGVyLWNvbG9yOiMyMDRkNzR9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnk6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyODYwOTA7Ym9yZGVyLWNvbG9yOiMyMDRkNzR9LmJ0bi1wcmltYXJ5LmFjdGl2ZS5mb2N1cywuYnRuLXByaW1hcnkuYWN0aXZlOmZvY3VzLC5idG4tcHJpbWFyeS5hY3RpdmU6aG92ZXIsLmJ0bi1wcmltYXJ5OmFjdGl2ZS5mb2N1cywuYnRuLXByaW1hcnk6YWN0aXZlOmZvY3VzLC5idG4tcHJpbWFyeTphY3RpdmU6aG92ZXIsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeS5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5OmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyMDRkNzQ7Ym9yZGVyLWNvbG9yOiMxMjJiNDB9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnk6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnl7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4tcHJpbWFyeS5kaXNhYmxlZC5mb2N1cywuYnRuLXByaW1hcnkuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmhvdmVyLC5idG4tcHJpbWFyeVtkaXNhYmxlZF0uZm9jdXMsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpmb2N1cywuYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnkuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzMzN2FiNztib3JkZXItY29sb3I6IzJlNmRhNH0uYnRuLXByaW1hcnkgLmJhZGdle2NvbG9yOiMzMzdhYjc7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzVjYjg1Yztib3JkZXItY29sb3I6IzRjYWU0Y30uYnRuLXN1Y2Nlc3MuZm9jdXMsLmJ0bi1zdWNjZXNzOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDQ5ZDQ0O2JvcmRlci1jb2xvcjojMjU1NjI1fS5idG4tc3VjY2Vzczpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQ0OWQ0NDtib3JkZXItY29sb3I6IzM5ODQzOX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLC5idG4tc3VjY2VzczphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQ0OWQ0NDtib3JkZXItY29sb3I6IzM5ODQzOX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLmZvY3VzLC5idG4tc3VjY2Vzcy5hY3RpdmU6Zm9jdXMsLmJ0bi1zdWNjZXNzLmFjdGl2ZTpob3ZlciwuYnRuLXN1Y2Nlc3M6YWN0aXZlLmZvY3VzLC5idG4tc3VjY2VzczphY3RpdmU6Zm9jdXMsLmJ0bi1zdWNjZXNzOmFjdGl2ZTpob3Zlciwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNzLmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3M6Zm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzczpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzM5ODQzOTtib3JkZXItY29sb3I6IzI1NTYyNX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLC5idG4tc3VjY2VzczphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi1zdWNjZXNzLmRpc2FibGVkLmZvY3VzLC5idG4tc3VjY2Vzcy5kaXNhYmxlZDpmb2N1cywuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXS5mb2N1cywuYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmZvY3VzLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzcy5mb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNWNiODVjO2JvcmRlci1jb2xvcjojNGNhZTRjfS5idG4tc3VjY2VzcyAuYmFkZ2V7Y29sb3I6IzVjYjg1YztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJ0bi1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNWJjMGRlO2JvcmRlci1jb2xvcjojNDZiOGRhfS5idG4taW5mby5mb2N1cywuYnRuLWluZm86Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMWIwZDU7Ym9yZGVyLWNvbG9yOiMxYjZkODV9LmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzFiMGQ1O2JvcmRlci1jb2xvcjojMjY5YWJjfS5idG4taW5mby5hY3RpdmUsLmJ0bi1pbmZvOmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzFiMGQ1O2JvcmRlci1jb2xvcjojMjY5YWJjfS5idG4taW5mby5hY3RpdmUuZm9jdXMsLmJ0bi1pbmZvLmFjdGl2ZTpmb2N1cywuYnRuLWluZm8uYWN0aXZlOmhvdmVyLC5idG4taW5mbzphY3RpdmUuZm9jdXMsLmJ0bi1pbmZvOmFjdGl2ZTpmb2N1cywuYnRuLWluZm86YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWluZm8uZm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mbzpmb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjY5YWJjO2JvcmRlci1jb2xvcjojMWI2ZDg1fS5idG4taW5mby5hY3RpdmUsLmJ0bi1pbmZvOmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZve2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWluZm8uZGlzYWJsZWQuZm9jdXMsLmJ0bi1pbmZvLmRpc2FibGVkOmZvY3VzLC5idG4taW5mby5kaXNhYmxlZDpob3ZlciwuYnRuLWluZm9bZGlzYWJsZWRdLmZvY3VzLC5idG4taW5mb1tkaXNhYmxlZF06Zm9jdXMsLmJ0bi1pbmZvW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1YmMwZGU7Ym9yZGVyLWNvbG9yOiM0NmI4ZGF9LmJ0bi1pbmZvIC5iYWRnZXtjb2xvcjojNWJjMGRlO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYnRuLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmMGFkNGU7Ym9yZGVyLWNvbG9yOiNlZWEyMzZ9LmJ0bi13YXJuaW5nLmZvY3VzLC5idG4td2FybmluZzpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2VjOTcxZjtib3JkZXItY29sb3I6Izk4NWYwZH0uYnRuLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlYzk3MWY7Ym9yZGVyLWNvbG9yOiNkNTg1MTJ9LmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLXdhcm5pbmc6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlYzk3MWY7Ym9yZGVyLWNvbG9yOiNkNTg1MTJ9LmJ0bi13YXJuaW5nLmFjdGl2ZS5mb2N1cywuYnRuLXdhcm5pbmcuYWN0aXZlOmZvY3VzLC5idG4td2FybmluZy5hY3RpdmU6aG92ZXIsLmJ0bi13YXJuaW5nOmFjdGl2ZS5mb2N1cywuYnRuLXdhcm5pbmc6YWN0aXZlOmZvY3VzLC5idG4td2FybmluZzphY3RpdmU6aG92ZXIsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZy5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi13YXJuaW5nOmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkNTg1MTI7Ym9yZGVyLWNvbG9yOiM5ODVmMGR9LmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLXdhcm5pbmc6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4td2FybmluZy5kaXNhYmxlZC5mb2N1cywuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5idG4td2FybmluZ1tkaXNhYmxlZF0uZm9jdXMsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTpmb2N1cywuYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZTtib3JkZXItY29sb3I6I2VlYTIzNn0uYnRuLXdhcm5pbmcgLmJhZGdle2NvbG9yOiNmMGFkNGU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmO2JvcmRlci1jb2xvcjojZDQzZjNhfS5idG4tZGFuZ2VyLmZvY3VzLC5idG4tZGFuZ2VyOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojNzYxYzE5fS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojYWMyOTI1fS5idG4tZGFuZ2VyLmFjdGl2ZSwuYnRuLWRhbmdlcjphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojYWMyOTI1fS5idG4tZGFuZ2VyLmFjdGl2ZS5mb2N1cywuYnRuLWRhbmdlci5hY3RpdmU6Zm9jdXMsLmJ0bi1kYW5nZXIuYWN0aXZlOmhvdmVyLC5idG4tZGFuZ2VyOmFjdGl2ZS5mb2N1cywuYnRuLWRhbmdlcjphY3RpdmU6Zm9jdXMsLmJ0bi1kYW5nZXI6YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWRhbmdlci5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kYW5nZXI6Zm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYWMyOTI1O2JvcmRlci1jb2xvcjojNzYxYzE5fS5idG4tZGFuZ2VyLmFjdGl2ZSwuYnRuLWRhbmdlcjphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWRhbmdlci5kaXNhYmxlZC5mb2N1cywuYnRuLWRhbmdlci5kaXNhYmxlZDpmb2N1cywuYnRuLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuYnRuLWRhbmdlcltkaXNhYmxlZF0uZm9jdXMsLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLC5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGY7Ym9yZGVyLWNvbG9yOiNkNDNmM2F9LmJ0bi1kYW5nZXIgLmJhZGdle2NvbG9yOiNkOTUzNGY7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tbGlua3tmb250LXdlaWdodDo0MDA7Y29sb3I6IzMzN2FiNztib3JkZXItcmFkaXVzOjB9LmJ0bi1saW5rLC5idG4tbGluay5hY3RpdmUsLmJ0bi1saW5rOmFjdGl2ZSwuYnRuLWxpbmtbZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWxpbmt7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LmJ0bi1saW5rLC5idG4tbGluazphY3RpdmUsLmJ0bi1saW5rOmZvY3VzLC5idG4tbGluazpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1saW5rOmZvY3VzLC5idG4tbGluazpob3Zlcntjb2xvcjojMjM1MjdjO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLC5idG4tbGlua1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rOmhvdmVye2NvbG9yOiM3Nzc7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJ0bi1ncm91cC1sZz4uYnRuLC5idG4tbGd7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMzMzMzMzO2JvcmRlci1yYWRpdXM6NnB4fS5idG4tZ3JvdXAtc20+LmJ0biwuYnRuLXNte3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6M3B4fS5idG4tZ3JvdXAteHM+LmJ0biwuYnRuLXhze3BhZGRpbmc6MXB4IDVweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmJ0bi1ibG9ja3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmJ0bi1ibG9jaysuYnRuLWJsb2Nre21hcmdpbi10b3A6NXB4fWlucHV0W3R5cGU9YnV0dG9uXS5idG4tYmxvY2ssaW5wdXRbdHlwZT1yZXNldF0uYnRuLWJsb2NrLGlucHV0W3R5cGU9c3VibWl0XS5idG4tYmxvY2t7d2lkdGg6MTAwJX0uZmFkZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXI7LW8tdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0uZmFkZS5pbntvcGFjaXR5OjF9LmNvbGxhcHNle2Rpc3BsYXk6bm9uZX0uY29sbGFwc2UuaW57ZGlzcGxheTpibG9ja310ci5jb2xsYXBzZS5pbntkaXNwbGF5OnRhYmxlLXJvd310Ym9keS5jb2xsYXBzZS5pbntkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH0uY29sbGFwc2luZ3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlOy1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2U7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZTstd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246LjM1czstby10cmFuc2l0aW9uLWR1cmF0aW9uOi4zNXM7dHJhbnNpdGlvbi1kdXJhdGlvbjouMzVzOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpoZWlnaHQsdmlzaWJpbGl0eTstby10cmFuc2l0aW9uLXByb3BlcnR5OmhlaWdodCx2aXNpYmlsaXR5O3RyYW5zaXRpb24tcHJvcGVydHk6aGVpZ2h0LHZpc2liaWxpdHl9LmNhcmV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLWxlZnQ6MnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXItdG9wOjRweCBkYXNoZWQ7Ym9yZGVyLXRvcDo0cHggc29saWRcOTtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcGRvd24sLmRyb3B1cHtwb3NpdGlvbjpyZWxhdGl2ZX0uZHJvcGRvd24tdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0uZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7ei1pbmRleDoxMDAwO2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O21pbi13aWR0aDoxNjBweDtwYWRkaW5nOjVweCAwO21hcmdpbjoycHggMCAwO2ZvbnQtc2l6ZToxNHB4O3RleHQtYWxpZ246bGVmdDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmOy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTtib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KX0uZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wZG93bi1tZW51IC5kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9LmRyb3Bkb3duLW1lbnU+bGk+YXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDIwcHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojMzMzO3doaXRlLXNwYWNlOm5vd3JhcH0uZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXJ7Y29sb3I6IzI2MjYyNjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9LmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1cywuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMzMzdhYjc7b3V0bGluZTowfS5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM3Nzd9LmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9Lm9wZW4+LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9ja30ub3Blbj5he291dGxpbmU6MH0uZHJvcGRvd24tbWVudS1yaWdodHtyaWdodDowO2xlZnQ6YXV0b30uZHJvcGRvd24tbWVudS1sZWZ0e3JpZ2h0OmF1dG87bGVmdDowfS5kcm9wZG93bi1oZWFkZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweCAyMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6Izc3Nzt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6OTkwfS5wdWxsLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wdXAgLmNhcmV0LC5uYXZiYXItZml4ZWQtYm90dG9tIC5kcm9wZG93biAuY2FyZXR7Y29udGVudDoiIjtib3JkZXItdG9wOjA7Ym9yZGVyLWJvdHRvbTo0cHggZGFzaGVkO2JvcmRlci1ib3R0b206NHB4IHNvbGlkXDl9LmRyb3B1cCAuZHJvcGRvd24tbWVudSwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCU7bWFyZ2luLWJvdHRvbToycHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99Lm5hdmJhci1yaWdodCAuZHJvcGRvd24tbWVudS1sZWZ0e3JpZ2h0OmF1dG87bGVmdDowfX0uYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwPi5idG57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4uYWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZvY3VzLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG4uYWN0aXZlLC5idG4tZ3JvdXA+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cD4uYnRuOmZvY3VzLC5idG4tZ3JvdXA+LmJ0bjpob3Zlcnt6LWluZGV4OjJ9LmJ0bi1ncm91cCAuYnRuKy5idG4sLmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLWxlZnQ6LTFweH0uYnRuLXRvb2xiYXJ7bWFyZ2luLWxlZnQ6LTVweH0uYnRuLXRvb2xiYXIgLmJ0biwuYnRuLXRvb2xiYXIgLmJ0bi1ncm91cCwuYnRuLXRvb2xiYXIgLmlucHV0LWdyb3Vwe2Zsb2F0OmxlZnR9LmJ0bi10b29sYmFyPi5idG4sLmJ0bi10b29sYmFyPi5idG4tZ3JvdXAsLmJ0bi10b29sYmFyPi5pbnB1dC1ncm91cHttYXJnaW4tbGVmdDo1cHh9LmJ0bi1ncm91cD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXA+LmRyb3Bkb3duLXRvZ2dsZTpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cHtmbG9hdDpsZWZ0fS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwuYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZXtvdXRsaW5lOjB9LmJ0bi1ncm91cD4uYnRuKy5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjhweH0uYnRuLWdyb3VwPi5idG4tbGcrLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nLXJpZ2h0OjEycHg7cGFkZGluZy1sZWZ0OjEycHh9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSl9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmt7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4gLmNhcmV0e21hcmdpbi1sZWZ0OjB9LmJ0bi1sZyAuY2FyZXR7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItYm90dG9tLXdpZHRoOjB9LmRyb3B1cCAuYnRuLWxnIC5jYXJldHtib3JkZXItd2lkdGg6MCA1cHggNXB4fS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZmxvYXQ6bm9uZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0bi1ncm91cCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0bi1ncm91cHttYXJnaW4tdG9wOi0xcHg7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYnRue2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYnRuOmxhc3QtY2hpbGQsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk+LmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAtanVzdGlmaWVke2Rpc3BsYXk6dGFibGU7d2lkdGg6MTAwJTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlfS5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4sLmJ0bi1ncm91cC1qdXN0aWZpZWQ+LmJ0bi1ncm91cHtkaXNwbGF5OnRhYmxlLWNlbGw7ZmxvYXQ6bm9uZTt3aWR0aDoxJX0uYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3VwIC5idG57d2lkdGg6MTAwJX0uYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51e2xlZnQ6YXV0b31bZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XSxbZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0biBpbnB1dFt0eXBlPXJhZGlvXSxbZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0bi1ncm91cD4uYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdLFtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuLWdyb3VwPi5idG4gaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAsMCwwLDApO3BvaW50ZXItZXZlbnRzOm5vbmV9LmlucHV0LWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlfS5pbnB1dC1ncm91cFtjbGFzcyo9Y29sLV17ZmxvYXQ6bm9uZTtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2x7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXN7ei1pbmRleDozfS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6NDZweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzMzMzMzM7Ym9yZGVyLXJhZGl1czo2cHh9c2VsZWN0LmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsc2VsZWN0LmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hZGRvbixzZWxlY3QuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDo0NnB4O2xpbmUtaGVpZ2h0OjQ2cHh9c2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uYnRuLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6YXV0b30uaW5wdXQtZ3JvdXAtc20+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OjMwcHg7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9c2VsZWN0LmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsc2VsZWN0LmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbixzZWxlY3QuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHh9c2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRuLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6YXV0b30uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWJ0bntkaXNwbGF5OnRhYmxlLWNlbGx9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5pbnB1dC1ncm91cC1hZGRvbiwuaW5wdXQtZ3JvdXAtYnRue3dpZHRoOjElO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmlucHV0LWdyb3VwLWFkZG9ue3BhZGRpbmc6NnB4IDEycHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6IzU1NTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4fS5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1zbXtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6M3B4fS5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1sZ3twYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtib3JkZXItcmFkaXVzOjZweH0uaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT1jaGVja2JveF0sLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9cmFkaW9de21hcmdpbi10b3A6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwuaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpsYXN0LWNoaWxkLC5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxkLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0uaW5wdXQtZ3JvdXAtYnRue3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTowO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXQtZ3JvdXAtYnRuPi5idG57cG9zaXRpb246cmVsYXRpdmV9LmlucHV0LWdyb3VwLWJ0bj4uYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0uaW5wdXQtZ3JvdXAtYnRuPi5idG46YWN0aXZlLC5pbnB1dC1ncm91cC1idG4+LmJ0bjpmb2N1cywuaW5wdXQtZ3JvdXAtYnRuPi5idG46aG92ZXJ7ei1pbmRleDoyfS5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4tZ3JvdXB7bWFyZ2luLXJpZ2h0Oi0xcHh9LmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4tZ3JvdXB7ei1pbmRleDoyO21hcmdpbi1sZWZ0Oi0xcHh9Lm5hdntwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXY+bGl7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9ja30ubmF2PmxpPmF7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTVweH0ubmF2PmxpPmE6Zm9jdXMsLm5hdj5saT5hOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubmF2PmxpLmRpc2FibGVkPmF7Y29sb3I6Izc3N30ubmF2PmxpLmRpc2FibGVkPmE6Zm9jdXMsLm5hdj5saS5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM3Nzc7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdiAub3Blbj5hLC5uYXYgLm9wZW4+YTpmb2N1cywubmF2IC5vcGVuPmE6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlci1jb2xvcjojMzM3YWI3fS5uYXYgLm5hdi1kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9Lm5hdj5saT5hPmltZ3ttYXgtd2lkdGg6bm9uZX0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ubmF2LXRhYnM+bGl7ZmxvYXQ6bGVmdDttYXJnaW4tYm90dG9tOi0xcHh9Lm5hdi10YWJzPmxpPmF7bWFyZ2luLXJpZ2h0OjJweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH0ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZSAjZWVlICNkZGR9Lm5hdi10YWJzPmxpLmFjdGl2ZT5hLC5uYXYtdGFicz5saS5hY3RpdmU+YTpmb2N1cywubmF2LXRhYnM+bGkuYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzU1NTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWR7d2lkdGg6MTAwJTtib3JkZXItYm90dG9tOjB9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGl7ZmxvYXQ6bm9uZX0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he21hcmdpbi1ib3R0b206NXB4O3RleHQtYWxpZ246Y2VudGVyfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5kcm9wZG93biAuZHJvcGRvd24tbWVudXt0b3A6YXV0bztsZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpe2Rpc3BsYXk6dGFibGUtY2VsbDt3aWR0aDoxJX0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he21hcmdpbi1ib3R0b206MH19Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tcmlnaHQ6MDtib3JkZXItcmFkaXVzOjRweH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmZvY3VzLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICNkZGR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmF7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YSwubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVye2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn19Lm5hdi1waWxscz5saXtmbG9hdDpsZWZ0fS5uYXYtcGlsbHM+bGk+YXtib3JkZXItcmFkaXVzOjRweH0ubmF2LXBpbGxzPmxpK2xpe21hcmdpbi1sZWZ0OjJweH0ubmF2LXBpbGxzPmxpLmFjdGl2ZT5hLC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXMsLm5hdi1waWxscz5saS5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzN2FiN30ubmF2LXN0YWNrZWQ+bGl7ZmxvYXQ6bm9uZX0ubmF2LXN0YWNrZWQ+bGkrbGl7bWFyZ2luLXRvcDoycHg7bWFyZ2luLWxlZnQ6MH0ubmF2LWp1c3RpZmllZHt3aWR0aDoxMDAlfS5uYXYtanVzdGlmaWVkPmxpe2Zsb2F0Om5vbmV9Lm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjVweDt0ZXh0LWFsaWduOmNlbnRlcn0ubmF2LWp1c3RpZmllZD4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87bGVmdDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LWp1c3RpZmllZD5saXtkaXNwbGF5OnRhYmxlLWNlbGw7d2lkdGg6MSV9Lm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjB9fS5uYXYtdGFicy1qdXN0aWZpZWR7Ym9yZGVyLWJvdHRvbTowfS5uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tcmlnaHQ6MDtib3JkZXItcmFkaXVzOjRweH0ubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YSwubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpmb2N1cywubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICNkZGR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDB9Lm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6aG92ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfX0udGFiLWNvbnRlbnQ+LnRhYi1wYW5le2Rpc3BsYXk6bm9uZX0udGFiLWNvbnRlbnQ+LmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS5uYXYtdGFicyAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOi0xcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lm5hdmJhcntwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjUwcHg7bWFyZ2luLWJvdHRvbToyMHB4O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXJ7Ym9yZGVyLXJhZGl1czo0cHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWhlYWRlcntmbG9hdDpsZWZ0fX0ubmF2YmFyLWNvbGxhcHNle3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDtvdmVyZmxvdy14OnZpc2libGU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7Ym9yZGVyLXRvcDoxcHggc29saWQgdHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpfS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWNvbGxhcHNle3dpZHRoOmF1dG87Ym9yZGVyLXRvcDowOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLWNvbGxhcHNlLmNvbGxhcHNle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowO292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTp2aXNpYmxlfS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLXN0YXRpYy10b3AgLm5hdmJhci1jb2xsYXBzZXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9fS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjM0MHB4fUBtZWRpYSAobWF4LWRldmljZS13aWR0aDo0ODBweCkgYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjIwMHB4fX0uY29udGFpbmVyLWZsdWlkPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lcj4ubmF2YmFyLWhlYWRlcnttYXJnaW4tcmlnaHQ6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXItZmx1aWQ+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItaGVhZGVyLC5jb250YWluZXI+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyPi5uYXZiYXItaGVhZGVye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9fS5uYXZiYXItc3RhdGljLXRvcHt6LWluZGV4OjEwMDA7Ym9yZGVyLXdpZHRoOjAgMCAxcHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItc3RhdGljLXRvcHtib3JkZXItcmFkaXVzOjB9fS5uYXZiYXItZml4ZWQtYm90dG9tLC5uYXZiYXItZml4ZWQtdG9we3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTAzMH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1maXhlZC1ib3R0b20sLm5hdmJhci1maXhlZC10b3B7Ym9yZGVyLXJhZGl1czowfX0ubmF2YmFyLWZpeGVkLXRvcHt0b3A6MDtib3JkZXItd2lkdGg6MCAwIDFweH0ubmF2YmFyLWZpeGVkLWJvdHRvbXtib3R0b206MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXdpZHRoOjFweCAwIDB9Lm5hdmJhci1icmFuZHtmbG9hdDpsZWZ0O2hlaWdodDo1MHB4O3BhZGRpbmc6MTVweCAxNXB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHh9Lm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWJyYW5kOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXZiYXItYnJhbmQ+aW1ne2Rpc3BsYXk6YmxvY2t9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXI+LmNvbnRhaW5lciAubmF2YmFyLWJyYW5kLC5uYXZiYXI+LmNvbnRhaW5lci1mbHVpZCAubmF2YmFyLWJyYW5ke21hcmdpbi1sZWZ0Oi0xNXB4fX0ubmF2YmFyLXRvZ2dsZXtwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpyaWdodDtwYWRkaW5nOjlweCAxMHB4O21hcmdpbi10b3A6OHB4O21hcmdpbi1yaWdodDoxNXB4O21hcmdpbi1ib3R0b206OHB4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdmJhci10b2dnbGU6Zm9jdXN7b3V0bGluZTowfS5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntkaXNwbGF5OmJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDtib3JkZXItcmFkaXVzOjFweH0ubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXIrLmljb24tYmFye21hcmdpbi10b3A6NHB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRvZ2dsZXtkaXNwbGF5Om5vbmV9fS5uYXZiYXItbmF2e21hcmdpbjo3LjVweCAtMTVweH0ubmF2YmFyLW5hdj5saT5he3BhZGRpbmctdG9wOjEwcHg7cGFkZGluZy1ib3R0b206MTBweDtsaW5lLWhlaWdodDoyMHB4fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjpzdGF0aWM7ZmxvYXQ6bm9uZTt3aWR0aDphdXRvO21hcmdpbi10b3A6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVyLC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmF7cGFkZGluZzo1cHggMTVweCA1cHggMjVweH0ubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5he2xpbmUtaGVpZ2h0OjIwcHh9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVye2JhY2tncm91bmQtaW1hZ2U6bm9uZX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItbmF2e2Zsb2F0OmxlZnQ7bWFyZ2luOjB9Lm5hdmJhci1uYXY+bGl7ZmxvYXQ6bGVmdH0ubmF2YmFyLW5hdj5saT5he3BhZGRpbmctdG9wOjE1cHg7cGFkZGluZy1ib3R0b206MTVweH19Lm5hdmJhci1mb3Jte3BhZGRpbmc6MTBweCAxNXB4O21hcmdpbi10b3A6OHB4O21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tYm90dG9tOjhweDttYXJnaW4tbGVmdDotMTVweDtib3JkZXItdG9wOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKSwwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKSwwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbC1zdGF0aWN7ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cHtkaXNwbGF5OmlubGluZS10YWJsZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sLC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWFkZG9uLC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ0bnt3aWR0aDphdXRvfS5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbHt3aWR0aDoxMDAlfS5uYXZiYXItZm9ybSAuY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuY2hlY2tib3gsLm5hdmJhci1mb3JtIC5yYWRpb3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmNoZWNrYm94IGxhYmVsLC5uYXZiYXItZm9ybSAucmFkaW8gbGFiZWx7cGFkZGluZy1sZWZ0OjB9Lm5hdmJhci1mb3JtIC5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwubmF2YmFyLWZvcm0gLnJhZGlvIGlucHV0W3R5cGU9cmFkaW9de3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1sZWZ0OjB9Lm5hdmJhci1mb3JtIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFja3t0b3A6MH19QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey5uYXZiYXItZm9ybSAuZm9ybS1ncm91cHttYXJnaW4tYm90dG9tOjVweH0ubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXA6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm17d2lkdGg6YXV0bztwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDtib3JkZXI6MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9fS5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLW5hdj5saT4uZHJvcGRvd24tbWVudXttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5uYXZiYXItYnRue21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206OHB4fS5uYXZiYXItYnRuLmJ0bi1zbXttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fS5uYXZiYXItYnRuLmJ0bi14c3ttYXJnaW4tdG9wOjE0cHg7bWFyZ2luLWJvdHRvbToxNHB4fS5uYXZiYXItdGV4dHttYXJnaW4tdG9wOjE1cHg7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRleHR7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MTVweDttYXJnaW4tbGVmdDoxNXB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5uYXZiYXItcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50O21hcmdpbi1yaWdodDotMTVweH0ubmF2YmFyLXJpZ2h0fi5uYXZiYXItcmlnaHR7bWFyZ2luLXJpZ2h0OjB9fS5uYXZiYXItZGVmYXVsdHtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Ym9yZGVyLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmR7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjojNWU1ZTVlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdGV4dHtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj5saT5he2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmE6aG92ZXJ7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uYWN0aXZlPmEsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZTdlN2U3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGV7Ym9yZGVyLWNvbG9yOiNkZGR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkZGR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiM4ODh9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybXtib3JkZXItY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3Zlcntjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2U3ZTdlN31AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmF7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpob3Zlcntjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXJ7Y29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fX0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5re2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluazpob3Zlcntjb2xvcjojMzMzfS5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbmt7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbms6aG92ZXJ7Y29sb3I6IzMzM30ubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpob3Zlcntjb2xvcjojY2NjfS5uYXZiYXItaW52ZXJzZXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7Ym9yZGVyLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmR7Y29sb3I6IzlkOWQ5ZH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdGV4dHtjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj5saT5he2NvbG9yOiM5ZDlkOWR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmE6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uYWN0aXZlPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM0NDQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGV7Ym9yZGVyLWNvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItZm9ybXtib3JkZXItY29sb3I6IzEwMTAxMH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kcm9wZG93bi1oZWFkZXJ7Ym9yZGVyLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IC5kaXZpZGVye2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3Zlcntjb2xvcjojNDQ0O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbmt7Y29sb3I6IzlkOWQ5ZH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5idG4tbGlua3tjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5idG4tbGluazpob3Zlcntjb2xvcjojZmZmfS5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmhvdmVye2NvbG9yOiM0NDR9LmJyZWFkY3J1bWJ7cGFkZGluZzo4cHggMTVweDttYXJnaW4tYm90dG9tOjIwcHg7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjRweH0uYnJlYWRjcnVtYj5saXtkaXNwbGF5OmlubGluZS1ibG9ja30uYnJlYWRjcnVtYj5saStsaTpiZWZvcmV7cGFkZGluZzowIDVweDtjb2xvcjojY2NjO2NvbnRlbnQ6Ii9cMDBhMCJ9LmJyZWFkY3J1bWI+LmFjdGl2ZXtjb2xvcjojNzc3fS5wYWdpbmF0aW9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDowO21hcmdpbjoyMHB4IDA7Ym9yZGVyLXJhZGl1czo0cHh9LnBhZ2luYXRpb24+bGl7ZGlzcGxheTppbmxpbmV9LnBhZ2luYXRpb24+bGk+YSwucGFnaW5hdGlvbj5saT5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7cGFkZGluZzo2cHggMTJweDttYXJnaW4tbGVmdDotMXB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMzN2FiNzt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24+bGk6Zmlyc3QtY2hpbGQ+c3BhbnttYXJnaW4tbGVmdDowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5wYWdpbmF0aW9uPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0ucGFnaW5hdGlvbj5saT5hOmZvY3VzLC5wYWdpbmF0aW9uPmxpPmE6aG92ZXIsLnBhZ2luYXRpb24+bGk+c3Bhbjpmb2N1cywucGFnaW5hdGlvbj5saT5zcGFuOmhvdmVye3otaW5kZXg6Mjtjb2xvcjojMjM1MjdjO2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXItY29sb3I6I2RkZH0ucGFnaW5hdGlvbj4uYWN0aXZlPmEsLnBhZ2luYXRpb24+LmFjdGl2ZT5hOmZvY3VzLC5wYWdpbmF0aW9uPi5hY3RpdmU+YTpob3ZlciwucGFnaW5hdGlvbj4uYWN0aXZlPnNwYW4sLnBhZ2luYXRpb24+LmFjdGl2ZT5zcGFuOmZvY3VzLC5wYWdpbmF0aW9uPi5hY3RpdmU+c3Bhbjpob3Zlcnt6LWluZGV4OjM7Y29sb3I6I2ZmZjtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiMzMzdhYjc7Ym9yZGVyLWNvbG9yOiMzMzdhYjd9LnBhZ2luYXRpb24+LmRpc2FibGVkPmEsLnBhZ2luYXRpb24+LmRpc2FibGVkPmE6Zm9jdXMsLnBhZ2luYXRpb24+LmRpc2FibGVkPmE6aG92ZXIsLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW4sLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW46Zm9jdXMsLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW46aG92ZXJ7Y29sb3I6Izc3NztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZGRkfS5wYWdpbmF0aW9uLWxnPmxpPmEsLnBhZ2luYXRpb24tbGc+bGk+c3BhbntwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzMzMzMzN9LnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4fS5wYWdpbmF0aW9uLWxnPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweH0ucGFnaW5hdGlvbi1zbT5saT5hLC5wYWdpbmF0aW9uLXNtPmxpPnNwYW57cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LnBhZ2luYXRpb24tc20+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYWdpbmF0aW9uLXNtPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0ucGFnZXJ7cGFkZGluZy1sZWZ0OjA7bWFyZ2luOjIwcHggMDt0ZXh0LWFsaWduOmNlbnRlcjtsaXN0LXN0eWxlOm5vbmV9LnBhZ2VyIGxpe2Rpc3BsYXk6aW5saW5lfS5wYWdlciBsaT5hLC5wYWdlciBsaT5zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NXB4IDE0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjE1cHh9LnBhZ2VyIGxpPmE6Zm9jdXMsLnBhZ2VyIGxpPmE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5wYWdlciAubmV4dD5hLC5wYWdlciAubmV4dD5zcGFue2Zsb2F0OnJpZ2h0fS5wYWdlciAucHJldmlvdXM+YSwucGFnZXIgLnByZXZpb3VzPnNwYW57ZmxvYXQ6bGVmdH0ucGFnZXIgLmRpc2FibGVkPmEsLnBhZ2VyIC5kaXNhYmxlZD5hOmZvY3VzLC5wYWdlciAuZGlzYWJsZWQ+YTpob3ZlciwucGFnZXIgLmRpc2FibGVkPnNwYW57Y29sb3I6Izc3NztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5sYWJlbHtkaXNwbGF5OmlubGluZTtwYWRkaW5nOi4yZW0gLjZlbSAuM2VtO2ZvbnQtc2l6ZTo3NSU7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Ym9yZGVyLXJhZGl1czouMjVlbX1hLmxhYmVsOmZvY3VzLGEubGFiZWw6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0ubGFiZWw6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5sYWJlbC1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6Izc3N30ubGFiZWwtZGVmYXVsdFtocmVmXTpmb2N1cywubGFiZWwtZGVmYXVsdFtocmVmXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWV9LmxhYmVsLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojMzM3YWI3fS5sYWJlbC1wcmltYXJ5W2hyZWZdOmZvY3VzLC5sYWJlbC1wcmltYXJ5W2hyZWZdOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzI4NjA5MH0ubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1Y2I4NWN9LmxhYmVsLXN1Y2Nlc3NbaHJlZl06Zm9jdXMsLmxhYmVsLXN1Y2Nlc3NbaHJlZl06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNDQ5ZDQ0fS5sYWJlbC1pbmZve2JhY2tncm91bmQtY29sb3I6IzViYzBkZX0ubGFiZWwtaW5mb1tocmVmXTpmb2N1cywubGFiZWwtaW5mb1tocmVmXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMWIwZDV9LmxhYmVsLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlfS5sYWJlbC13YXJuaW5nW2hyZWZdOmZvY3VzLC5sYWJlbC13YXJuaW5nW2hyZWZdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjOTcxZn0ubGFiZWwtZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2Q5NTM0Zn0ubGFiZWwtZGFuZ2VyW2hyZWZdOmZvY3VzLC5sYWJlbC1kYW5nZXJbaHJlZl06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjfS5iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MTBweDtwYWRkaW5nOjNweCA3cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtY29sb3I6Izc3Nztib3JkZXItcmFkaXVzOjEwcHh9LmJhZGdlOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYnRuIC5iYWRnZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0uYnRuLWdyb3VwLXhzPi5idG4gLmJhZGdlLC5idG4teHMgLmJhZGdle3RvcDowO3BhZGRpbmc6MXB4IDVweH1hLmJhZGdlOmZvY3VzLGEuYmFkZ2U6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0ubGlzdC1ncm91cC1pdGVtLmFjdGl2ZT4uYmFkZ2UsLm5hdi1waWxscz4uYWN0aXZlPmE+LmJhZGdle2NvbG9yOiMzMzdhYjc7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdle2Zsb2F0OnJpZ2h0fS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdlKy5iYWRnZXttYXJnaW4tcmlnaHQ6NXB4fS5uYXYtcGlsbHM+bGk+YT4uYmFkZ2V7bWFyZ2luLWxlZnQ6M3B4fS5qdW1ib3Ryb257cGFkZGluZy10b3A6MzBweDtwYWRkaW5nLWJvdHRvbTozMHB4O21hcmdpbi1ib3R0b206MzBweDtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6I2VlZX0uanVtYm90cm9uIC5oMSwuanVtYm90cm9uIGgxe2NvbG9yOmluaGVyaXR9Lmp1bWJvdHJvbiBwe21hcmdpbi1ib3R0b206MTVweDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDoyMDB9Lmp1bWJvdHJvbj5ocntib3JkZXItdG9wLWNvbG9yOiNkNWQ1ZDV9LmNvbnRhaW5lciAuanVtYm90cm9uLC5jb250YWluZXItZmx1aWQgLmp1bWJvdHJvbntwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyLXJhZGl1czo2cHh9Lmp1bWJvdHJvbiAuY29udGFpbmVye21heC13aWR0aDoxMDAlfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey5qdW1ib3Ryb257cGFkZGluZy10b3A6NDhweDtwYWRkaW5nLWJvdHRvbTo0OHB4fS5jb250YWluZXIgLmp1bWJvdHJvbiwuY29udGFpbmVyLWZsdWlkIC5qdW1ib3Ryb257cGFkZGluZy1yaWdodDo2MHB4O3BhZGRpbmctbGVmdDo2MHB4fS5qdW1ib3Ryb24gLmgxLC5qdW1ib3Ryb24gaDF7Zm9udC1zaXplOjYzcHh9fS50aHVtYm5haWx7ZGlzcGxheTpibG9jaztwYWRkaW5nOjRweDttYXJnaW4tYm90dG9tOjIwcHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0MztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UtaW4tb3V0Oy1vLXRyYW5zaXRpb246Ym9yZGVyIC4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJvcmRlciAuMnMgZWFzZS1pbi1vdXR9LnRodW1ibmFpbCBhPmltZywudGh1bWJuYWlsPmltZ3ttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfWEudGh1bWJuYWlsLmFjdGl2ZSxhLnRodW1ibmFpbDpmb2N1cyxhLnRodW1ibmFpbDpob3Zlcntib3JkZXItY29sb3I6IzMzN2FiN30udGh1bWJuYWlsIC5jYXB0aW9ue3BhZGRpbmc6OXB4O2NvbG9yOiMzMzN9LmFsZXJ0e3BhZGRpbmc6MTVweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweH0uYWxlcnQgaDR7bWFyZ2luLXRvcDowO2NvbG9yOmluaGVyaXR9LmFsZXJ0IC5hbGVydC1saW5re2ZvbnQtd2VpZ2h0OjcwMH0uYWxlcnQ+cCwuYWxlcnQ+dWx7bWFyZ2luLWJvdHRvbTowfS5hbGVydD5wK3B7bWFyZ2luLXRvcDo1cHh9LmFsZXJ0LWRpc21pc3NhYmxlLC5hbGVydC1kaXNtaXNzaWJsZXtwYWRkaW5nLXJpZ2h0OjM1cHh9LmFsZXJ0LWRpc21pc3NhYmxlIC5jbG9zZSwuYWxlcnQtZGlzbWlzc2libGUgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2NvbG9yOmluaGVyaXR9LmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzNjNzYzZDtiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiNkNmU5YzZ9LmFsZXJ0LXN1Y2Nlc3MgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYzllMmIzfS5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5re2NvbG9yOiMyYjU0MmN9LmFsZXJ0LWluZm97Y29sb3I6IzMxNzA4ZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiNiY2U4ZjF9LmFsZXJ0LWluZm8gaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYTZlMWVjfS5hbGVydC1pbmZvIC5hbGVydC1saW5re2NvbG9yOiMyNDUyNjl9LmFsZXJ0LXdhcm5pbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LmFsZXJ0LXdhcm5pbmcgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojZjdlMWI1fS5hbGVydC13YXJuaW5nIC5hbGVydC1saW5re2NvbG9yOiM2NjUxMmN9LmFsZXJ0LWRhbmdlcntjb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2ViY2NkMX0uYWxlcnQtZGFuZ2VyIGhye2JvcmRlci10b3AtY29sb3I6I2U0YjljMH0uYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5re2NvbG9yOiM4NDM1MzR9QC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9fUAtby1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwfXRve2JhY2tncm91bmQtcG9zaXRpb246MCAwfX0ucHJvZ3Jlc3N7aGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbToyMHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKX0ucHJvZ3Jlc3MtYmFye2Zsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MTAwJTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMzM3YWI3Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4xNSk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4xNSk7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlOy1vLXRyYW5zaXRpb246d2lkdGggLjZzIGVhc2U7dHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZX0ucHJvZ3Jlc3MtYmFyLXN0cmlwZWQsLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpOy13ZWJraXQtYmFja2dyb3VuZC1zaXplOjQwcHggNDBweDtiYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4fS5wcm9ncmVzcy1iYXIuYWN0aXZlLC5wcm9ncmVzcy5hY3RpdmUgLnByb2dyZXNzLWJhcnstd2Via2l0LWFuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7LW8tYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlfS5wcm9ncmVzcy1iYXItc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1Y2I4NWN9LnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCl9LnByb2dyZXNzLWJhci1pbmZve2JhY2tncm91bmQtY29sb3I6IzViYzBkZX0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWluZm97YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MtYmFyLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlfS5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy1iYXItZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2Q5NTM0Zn0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWRhbmdlcntiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5tZWRpYXttYXJnaW4tdG9wOjE1cHh9Lm1lZGlhOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubWVkaWEsLm1lZGlhLWJvZHl7b3ZlcmZsb3c6aGlkZGVuO3pvb206MX0ubWVkaWEtYm9keXt3aWR0aDoxMDAwMHB4fS5tZWRpYS1vYmplY3R7ZGlzcGxheTpibG9ja30ubWVkaWEtb2JqZWN0LmltZy10aHVtYm5haWx7bWF4LXdpZHRoOm5vbmV9Lm1lZGlhLXJpZ2h0LC5tZWRpYT4ucHVsbC1yaWdodHtwYWRkaW5nLWxlZnQ6MTBweH0ubWVkaWEtbGVmdCwubWVkaWE+LnB1bGwtbGVmdHtwYWRkaW5nLXJpZ2h0OjEwcHh9Lm1lZGlhLWJvZHksLm1lZGlhLWxlZnQsLm1lZGlhLXJpZ2h0e2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1lZGlhLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1lZGlhLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b219Lm1lZGlhLWhlYWRpbmd7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206NXB4fS5tZWRpYS1saXN0e3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1ncm91cHtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjIwcHh9Lmxpc3QtZ3JvdXAtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweCAxNXB4O21hcmdpbi1ib3R0b206LTFweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fWEubGlzdC1ncm91cC1pdGVtLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW17Y29sb3I6IzU1NX1hLmxpc3QtZ3JvdXAtaXRlbSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6IzMzM31hLmxpc3QtZ3JvdXAtaXRlbTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbTpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW06aG92ZXJ7Y29sb3I6IzU1NTt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9YnV0dG9uLmxpc3QtZ3JvdXAtaXRlbXt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdH0ubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkLC5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpob3Zlcntjb2xvcjojNzc3O2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH0ubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dHtjb2xvcjojNzc3fS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVye3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzN2FiNztib3JkZXItY29sb3I6IzMzN2FiN30ubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5zbWFsbCwubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz4uc21hbGwsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPnNtYWxsLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+LnNtYWxsLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz5zbWFsbHtjb2xvcjppbmhlcml0fS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLXRleHQsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0e2NvbG9yOiNjN2RkZWZ9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVye2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZDBlOWM2fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlLGEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmZvY3VzLGEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmUsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpmb2N1cyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojM2M3NjNkO2JvcmRlci1jb2xvcjojM2M3NjNkfS5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmN31hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMzE3MDhmfWEubGlzdC1ncm91cC1pdGVtLWluZm8gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mbyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLGEubGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mbzpob3Zlcntjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM31hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmU6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMxNzA4Zjtib3JkZXItY29sb3I6IzMxNzA4Zn0ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmd7Y29sb3I6IzhhNmQzYn1hLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne2NvbG9yOmluaGVyaXR9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWYyY2N9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXIsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM4YTZkM2I7Ym9yZGVyLWNvbG9yOiM4YTZkM2J9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXJ7Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2Vye2NvbG9yOiNhOTQ0NDJ9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLWRhbmdlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmhvdmVye2NvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZWJjY2NjfWEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZSxidXR0b24ubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmU6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYTk0NDQyO2JvcmRlci1jb2xvcjojYTk0NDQyfS5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3ttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTo1cHh9Lmxpc3QtZ3JvdXAtaXRlbS10ZXh0e21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjN9LnBhbmVse21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LnBhbmVsLWJvZHl7cGFkZGluZzoxNXB4fS5wYW5lbC1oZWFkaW5ne3BhZGRpbmc6MTBweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0ucGFuZWwtaGVhZGluZz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjppbmhlcml0fS5wYW5lbC10aXRsZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNnB4O2NvbG9yOmluaGVyaXR9LnBhbmVsLXRpdGxlPi5zbWFsbCwucGFuZWwtdGl0bGU+LnNtYWxsPmEsLnBhbmVsLXRpdGxlPmEsLnBhbmVsLXRpdGxlPnNtYWxsLC5wYW5lbC10aXRsZT5zbWFsbD5he2NvbG9yOmluaGVyaXR9LnBhbmVsLWZvb3RlcntwYWRkaW5nOjEwcHggMTVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi5saXN0LWdyb3VwLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXB7bWFyZ2luLWJvdHRvbTowfS5wYW5lbD4ubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItd2lkdGg6MXB4IDA7Ym9yZGVyLXJhZGl1czowfS5wYW5lbD4ubGlzdC1ncm91cDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4ubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCwucGFuZWw+LnBhbmVsLWNvbGxhcHNlPi5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5wYW5lbC1oZWFkaW5nKy5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowfS5saXN0LWdyb3VwKy5wYW5lbC1mb290ZXJ7Ym9yZGVyLXRvcC13aWR0aDowfS5wYW5lbD4ucGFuZWwtY29sbGFwc2U+LnRhYmxlLC5wYW5lbD4udGFibGUsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZXttYXJnaW4tYm90dG9tOjB9LnBhbmVsPi5wYW5lbC1jb2xsYXBzZT4udGFibGUgY2FwdGlvbiwucGFuZWw+LnRhYmxlIGNhcHRpb24sLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZSBjYXB0aW9ue3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUsLnBhbmVsPi5wYW5lbC1ib2R5Ky50YWJsZS1yZXNwb25zaXZlLC5wYW5lbD4udGFibGUrLnBhbmVsLWJvZHksLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlKy5wYW5lbC1ib2R5e2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZCwucGFuZWw+LnRhYmxlPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoe2JvcmRlci10b3A6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZXttYXJnaW4tYm90dG9tOjA7Ym9yZGVyOjB9LnBhbmVsLWdyb3Vwe21hcmdpbi1ib3R0b206MjBweH0ucGFuZWwtZ3JvdXAgLnBhbmVse21hcmdpbi1ib3R0b206MDtib3JkZXItcmFkaXVzOjRweH0ucGFuZWwtZ3JvdXAgLnBhbmVsKy5wYW5lbHttYXJnaW4tdG9wOjVweH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmd7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbC1ncm91cCAucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXAsLnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5wYW5lbC1ncm91cCAucGFuZWwtZm9vdGVye2JvcmRlci10b3A6MH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucGFuZWwtZGVmYXVsdHtib3JkZXItY29sb3I6I2RkZH0ucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZ3tjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItY29sb3I6I2RkZH0ucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLXRvcC1jb2xvcjojZGRkfS5wYW5lbC1kZWZhdWx0Pi5wYW5lbC1oZWFkaW5nIC5iYWRnZXtjb2xvcjojZjVmNWY1O2JhY2tncm91bmQtY29sb3I6IzMzM30ucGFuZWwtZGVmYXVsdD4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNkZGR9LnBhbmVsLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiMzMzdhYjd9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzdhYjc7Ym9yZGVyLWNvbG9yOiMzMzdhYjd9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6IzMzN2FiN30ucGFuZWwtcHJpbWFyeT4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6IzMzN2FiNztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzM3YWI3fS5wYW5lbC1zdWNjZXNze2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmcgLmJhZGdle2NvbG9yOiNkZmYwZDg7YmFja2dyb3VuZC1jb2xvcjojM2M3NjNkfS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci1ib3R0b20tY29sb3I6I2Q2ZTljNn0ucGFuZWwtaW5mb3tib3JkZXItY29sb3I6I2JjZThmMX0ucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZ3tjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmNztib3JkZXItY29sb3I6I2JjZThmMX0ucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLXRvcC1jb2xvcjojYmNlOGYxfS5wYW5lbC1pbmZvPi5wYW5lbC1oZWFkaW5nIC5iYWRnZXtjb2xvcjojZDllZGY3O2JhY2tncm91bmQtY29sb3I6IzMxNzA4Zn0ucGFuZWwtaW5mbz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2ZhZWJjY30ucGFuZWwtd2FybmluZz4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6I2ZjZjhlMztiYWNrZ3JvdW5kLWNvbG9yOiM4YTZkM2J9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmFlYmNjfS5wYW5lbC1kYW5nZXJ7Ym9yZGVyLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZ3tjb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2ViY2NkMX0ucGFuZWwtZGFuZ2VyPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6I2YyZGVkZTtiYWNrZ3JvdW5kLWNvbG9yOiNhOTQ0NDJ9LnBhbmVsLWRhbmdlcj4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNlYmNjZDF9LmVtYmVkLXJlc3BvbnNpdmV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufS5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsLmVtYmVkLXJlc3BvbnNpdmUgaWZyYW1lLC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwuZW1iZWQtcmVzcG9uc2l2ZSB2aWRlb3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MH0uZW1iZWQtcmVzcG9uc2l2ZS0xNmJ5OXtwYWRkaW5nLWJvdHRvbTo1Ni4yNSV9LmVtYmVkLXJlc3BvbnNpdmUtNGJ5M3twYWRkaW5nLWJvdHRvbTo3NSV9LndlbGx7bWluLWhlaWdodDoyMHB4O3BhZGRpbmc6MTlweDttYXJnaW4tYm90dG9tOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2UzZTNlMztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTUpfS53ZWxsLWxne3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjZweH0ud2VsbC1zbXtwYWRkaW5nOjlweDtib3JkZXItcmFkaXVzOjNweH0uY2xvc2V7ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6IzAwMDt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjApO29wYWNpdHk6LjJ9LmNsb3NlOmZvY3VzLC5jbG9zZTpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTtvcGFjaXR5Oi41fWJ1dHRvbi5jbG9zZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9Lm1vZGFsLW9wZW57b3ZlcmZsb3c6aGlkZGVufS5tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNTA7ZGlzcGxheTpub25lO292ZXJmbG93OmhpZGRlbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtvdXRsaW5lOjB9Lm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZ3std2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246LW8tdHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTstby10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpfS5tb2RhbC5pbiAubW9kYWwtZGlhbG9ney13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0ubW9kYWwtb3BlbiAubW9kYWx7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvfS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6YXV0bzttYXJnaW46MTBweH0ubW9kYWwtY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4O291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpfS5tb2RhbC1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNDA7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tb2RhbC1iYWNrZHJvcC5mYWRle2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO29wYWNpdHk6MH0ubW9kYWwtYmFja2Ryb3AuaW57ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApO29wYWNpdHk6LjV9Lm1vZGFsLWhlYWRlcntwYWRkaW5nOjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0ubW9kYWwtaGVhZGVyIC5jbG9zZXttYXJnaW4tdG9wOi0ycHh9Lm1vZGFsLXRpdGxle21hcmdpbjowO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDN9Lm1vZGFsLWJvZHl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxNXB4fS5tb2RhbC1mb290ZXJ7cGFkZGluZzoxNXB4O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0ubW9kYWwtZm9vdGVyIC5idG4rLmJ0bnttYXJnaW4tYm90dG9tOjA7bWFyZ2luLWxlZnQ6NXB4fS5tb2RhbC1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0ubW9kYWwtZm9vdGVyIC5idG4tYmxvY2srLmJ0bi1ibG9ja3ttYXJnaW4tbGVmdDowfS5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTk5OTlweDt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OnNjcm9sbH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm1vZGFsLWRpYWxvZ3t3aWR0aDo2MDBweDttYXJnaW46MzBweCBhdXRvfS5tb2RhbC1jb250ZW50ey13ZWJraXQtYm94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC41KX0ubW9kYWwtc217d2lkdGg6MzAwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsubW9kYWwtbGd7d2lkdGg6OTAwcHh9fS50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MDtkaXNwbGF5OmJsb2NrO2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lO2xldHRlci1zcGFjaW5nOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbDt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO29wYWNpdHk6MDtsaW5lLWJyZWFrOmF1dG99LnRvb2x0aXAuaW57ZmlsdGVyOmFscGhhKG9wYWNpdHk9OTApO29wYWNpdHk6Ljl9LnRvb2x0aXAudG9we3BhZGRpbmc6NXB4IDA7bWFyZ2luLXRvcDotM3B4fS50b29sdGlwLnJpZ2h0e3BhZGRpbmc6MCA1cHg7bWFyZ2luLWxlZnQ6M3B4fS50b29sdGlwLmJvdHRvbXtwYWRkaW5nOjVweCAwO21hcmdpbi10b3A6M3B4fS50b29sdGlwLmxlZnR7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDotM3B4fS50b29sdGlwLWlubmVye21heC13aWR0aDoyMDBweDtwYWRkaW5nOjNweCA4cHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czo0cHh9LnRvb2x0aXAtYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvd3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci13aWR0aDo1cHggNXB4IDA7Ym9yZGVyLXRvcC1jb2xvcjojMDAwfS50b29sdGlwLnRvcC1sZWZ0IC50b29sdGlwLWFycm93e3JpZ2h0OjVweDtib3R0b206MDttYXJnaW4tYm90dG9tOi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItdG9wLWNvbG9yOiMwMDB9LnRvb2x0aXAudG9wLXJpZ2h0IC50b29sdGlwLWFycm93e2JvdHRvbTowO2xlZnQ6NXB4O21hcmdpbi1ib3R0b206LTVweDtib3JkZXItd2lkdGg6NXB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0udG9vbHRpcC5yaWdodCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO2xlZnQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggNXB4IDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMwMDB9LnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci13aWR0aDo1cHggMCA1cHggNXB4O2JvcmRlci1sZWZ0LWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tIC50b29sdGlwLWFycm93e3RvcDowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXdpZHRoOjAgNXB4IDVweDtib3JkZXItYm90dG9tLWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tLWxlZnQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7cmlnaHQ6NXB4O21hcmdpbi10b3A6LTVweDtib3JkZXItd2lkdGg6MCA1cHggNXB4O2JvcmRlci1ib3R0b20tY29sb3I6IzAwMH0udG9vbHRpcC5ib3R0b20tcmlnaHQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7bGVmdDo1cHg7bWFyZ2luLXRvcDotNXB4O2JvcmRlci13aWR0aDowIDVweCA1cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwfS5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwNjA7ZGlzcGxheTpub25lO21heC13aWR0aDoyNzZweDtwYWRkaW5nOjFweDtmb250LWZhbWlseToiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3RleHQtYWxpZ246bGVmdDt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTtsZXR0ZXItc3BhY2luZzpub3JtYWw7d29yZC1icmVhazpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3b3JkLXdyYXA6bm9ybWFsO3doaXRlLXNwYWNlOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpO2JveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTtsaW5lLWJyZWFrOmF1dG99LnBvcG92ZXIudG9we21hcmdpbi10b3A6LTEwcHh9LnBvcG92ZXIucmlnaHR7bWFyZ2luLWxlZnQ6MTBweH0ucG9wb3Zlci5ib3R0b217bWFyZ2luLXRvcDoxMHB4fS5wb3BvdmVyLmxlZnR7bWFyZ2luLWxlZnQ6LTEwcHh9LnBvcG92ZXItdGl0bGV7cGFkZGluZzo4cHggMTRweDttYXJnaW46MDtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwfS5wb3BvdmVyLWNvbnRlbnR7cGFkZGluZzo5cHggMTRweH0ucG9wb3Zlcj4uYXJyb3csLnBvcG92ZXI+LmFycm93OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5wb3BvdmVyPi5hcnJvd3tib3JkZXItd2lkdGg6MTFweH0ucG9wb3Zlcj4uYXJyb3c6YWZ0ZXJ7Y29udGVudDoiIjtib3JkZXItd2lkdGg6MTBweH0ucG9wb3Zlci50b3A+LmFycm93e2JvdHRvbTotMTFweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTFweDtib3JkZXItdG9wLWNvbG9yOiM5OTk7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4yNSk7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5wb3BvdmVyLnRvcD4uYXJyb3c6YWZ0ZXJ7Ym90dG9tOjFweDttYXJnaW4tbGVmdDotMTBweDtjb250ZW50OiIgIjtib3JkZXItdG9wLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5wb3BvdmVyLnJpZ2h0Pi5hcnJvd3t0b3A6NTAlO2xlZnQ6LTExcHg7bWFyZ2luLXRvcDotMTFweDtib3JkZXItcmlnaHQtY29sb3I6Izk5OTtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMjUpO2JvcmRlci1sZWZ0LXdpZHRoOjB9LnBvcG92ZXIucmlnaHQ+LmFycm93OmFmdGVye2JvdHRvbTotMTBweDtsZWZ0OjFweDtjb250ZW50OiIgIjtib3JkZXItcmlnaHQtY29sb3I6I2ZmZjtib3JkZXItbGVmdC13aWR0aDowfS5wb3BvdmVyLmJvdHRvbT4uYXJyb3d7dG9wOi0xMXB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xMXB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiM5OTk7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4yNSl9LnBvcG92ZXIuYm90dG9tPi5hcnJvdzphZnRlcnt0b3A6MXB4O21hcmdpbi1sZWZ0Oi0xMHB4O2NvbnRlbnQ6IiAiO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnBvcG92ZXIubGVmdD4uYXJyb3d7dG9wOjUwJTtyaWdodDotMTFweDttYXJnaW4tdG9wOi0xMXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiM5OTk7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5wb3BvdmVyLmxlZnQ+LmFycm93OmFmdGVye3JpZ2h0OjFweDtib3R0b206LTEwcHg7Y29udGVudDoiICI7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0uY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmV9LmNhcm91c2VsLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5jYXJvdXNlbC1pbm5lcj4uaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7LXdlYmtpdC10cmFuc2l0aW9uOi42cyBlYXNlLWluLW91dCBsZWZ0Oy1vLXRyYW5zaXRpb246LjZzIGVhc2UtaW4tb3V0IGxlZnQ7dHJhbnNpdGlvbjouNnMgZWFzZS1pbi1vdXQgbGVmdH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+YT5pbWcsLmNhcm91c2VsLWlubmVyPi5pdGVtPmltZ3tsaW5lLWhlaWdodDoxfUBtZWRpYSBhbGwgYW5kICh0cmFuc2Zvcm0tM2QpLCgtd2Via2l0LXRyYW5zZm9ybS0zZCl7LmNhcm91c2VsLWlubmVyPi5pdGVtey13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7LW8tdHJhbnNpdGlvbjotby10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlLWluLW91dDstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtcGVyc3BlY3RpdmU6MTAwMHB4O3BlcnNwZWN0aXZlOjEwMDBweH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0uYWN0aXZlLnJpZ2h0LC5jYXJvdXNlbC1pbm5lcj4uaXRlbS5uZXh0e2xlZnQ6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKX0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0uYWN0aXZlLmxlZnQsLmNhcm91c2VsLWlubmVyPi5pdGVtLnByZXZ7bGVmdDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9LmNhcm91c2VsLWlubmVyPi5pdGVtLmFjdGl2ZSwuY2Fyb3VzZWwtaW5uZXI+Lml0ZW0ubmV4dC5sZWZ0LC5jYXJvdXNlbC1pbm5lcj4uaXRlbS5wcmV2LnJpZ2h0e2xlZnQ6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19LmNhcm91c2VsLWlubmVyPi5hY3RpdmUsLmNhcm91c2VsLWlubmVyPi5uZXh0LC5jYXJvdXNlbC1pbm5lcj4ucHJldntkaXNwbGF5OmJsb2NrfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZle2xlZnQ6MH0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQsLmNhcm91c2VsLWlubmVyPi5wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LmNhcm91c2VsLWlubmVyPi5uZXh0e2xlZnQ6MTAwJX0uY2Fyb3VzZWwtaW5uZXI+LnByZXZ7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQubGVmdCwuY2Fyb3VzZWwtaW5uZXI+LnByZXYucmlnaHR7bGVmdDowfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLmxlZnR7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZS5yaWdodHtsZWZ0OjEwMCV9LmNhcm91c2VsLWNvbnRyb2x7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjE1JTtmb250LXNpemU6MjBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC42KTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApO29wYWNpdHk6LjV9LmNhcm91c2VsLWNvbnRyb2wubGVmdHtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQscmdiYSgwLDAsMCwuNSkgMCxyZ2JhKDAsMCwwLC4wMDAxKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMCwwLDAsLjUpIDAscmdiYSgwLDAsMCwuMDAwMSkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbShyZ2JhKDAsMCwwLC41KSksdG8ocmdiYSgwLDAsMCwuMDAwMSkpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC41KSAwLHJnYmEoMCwwLDAsLjAwMDEpIDEwMCUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzgwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyMwMDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0uY2Fyb3VzZWwtY29udHJvbC5yaWdodHtyaWdodDowO2xlZnQ6YXV0bztiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQscmdiYSgwLDAsMCwuMDAwMSkgMCxyZ2JhKDAsMCwwLC41KSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMCwwLDAsLjAwMDEpIDAscmdiYSgwLDAsMCwuNSkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbShyZ2JhKDAsMCwwLC4wMDAxKSksdG8ocmdiYSgwLDAsMCwuNSkpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC4wMDAxKSAwLHJnYmEoMCwwLDAsLjUpIDEwMCUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyM4MDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0uY2Fyb3VzZWwtY29udHJvbDpmb2N1cywuY2Fyb3VzZWwtY29udHJvbDpob3Zlcntjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2ZpbHRlcjphbHBoYShvcGFjaXR5PTkwKTtvdXRsaW5lOjA7b3BhY2l0eTouOX0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ei1pbmRleDo1O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6LTEwcHh9LmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldntsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTBweH0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dHtyaWdodDo1MCU7bWFyZ2luLXJpZ2h0Oi0xMHB4fS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldnt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2ZvbnQtZmFtaWx5OnNlcmlmO2xpbmUtaGVpZ2h0OjF9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldjpiZWZvcmV7Y29udGVudDonXDIwMzknfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3Jle2NvbnRlbnQ6J1wyMDNhJ30uY2Fyb3VzZWwtaW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTBweDtsZWZ0OjUwJTt6LWluZGV4OjE1O3dpZHRoOjYwJTtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tbGVmdDotMzAlO3RleHQtYWxpZ246Y2VudGVyO2xpc3Qtc3R5bGU6bm9uZX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O21hcmdpbjoxcHg7dGV4dC1pbmRlbnQ6LTk5OXB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6IzAwMFw5O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czoxMHB4fS5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmV7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmNhcm91c2VsLWNhcHRpb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTUlO2JvdHRvbToyMHB4O2xlZnQ6MTUlO3otaW5kZXg6MTA7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjYpfS5jYXJvdXNlbC1jYXB0aW9uIC5idG57dGV4dC1zaGFkb3c6bm9uZX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7bWFyZ2luLXRvcDotMTBweDtmb250LXNpemU6MzBweH0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e21hcmdpbi1sZWZ0Oi0xMHB4fS5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0e21hcmdpbi1yaWdodDotMTBweH0uY2Fyb3VzZWwtY2FwdGlvbntyaWdodDoyMCU7bGVmdDoyMCU7cGFkZGluZy1ib3R0b206MzBweH0uY2Fyb3VzZWwtaW5kaWNhdG9yc3tib3R0b206MjBweH19LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmFmdGVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpiZWZvcmUsLmJ0bi10b29sYmFyOmFmdGVyLC5idG4tdG9vbGJhcjpiZWZvcmUsLmNsZWFyZml4OmFmdGVyLC5jbGVhcmZpeDpiZWZvcmUsLmNvbnRhaW5lci1mbHVpZDphZnRlciwuY29udGFpbmVyLWZsdWlkOmJlZm9yZSwuY29udGFpbmVyOmFmdGVyLC5jb250YWluZXI6YmVmb3JlLC5kbC1ob3Jpem9udGFsIGRkOmFmdGVyLC5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YmVmb3JlLC5tb2RhbC1mb290ZXI6YWZ0ZXIsLm1vZGFsLWZvb3RlcjpiZWZvcmUsLm1vZGFsLWhlYWRlcjphZnRlciwubW9kYWwtaGVhZGVyOmJlZm9yZSwubmF2OmFmdGVyLC5uYXY6YmVmb3JlLC5uYXZiYXItY29sbGFwc2U6YWZ0ZXIsLm5hdmJhci1jb2xsYXBzZTpiZWZvcmUsLm5hdmJhci1oZWFkZXI6YWZ0ZXIsLm5hdmJhci1oZWFkZXI6YmVmb3JlLC5uYXZiYXI6YWZ0ZXIsLm5hdmJhcjpiZWZvcmUsLnBhZ2VyOmFmdGVyLC5wYWdlcjpiZWZvcmUsLnBhbmVsLWJvZHk6YWZ0ZXIsLnBhbmVsLWJvZHk6YmVmb3JlLC5yb3c6YWZ0ZXIsLnJvdzpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIgIn0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6YWZ0ZXIsLmJ0bi10b29sYmFyOmFmdGVyLC5jbGVhcmZpeDphZnRlciwuY29udGFpbmVyLWZsdWlkOmFmdGVyLC5jb250YWluZXI6YWZ0ZXIsLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIsLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciwubW9kYWwtZm9vdGVyOmFmdGVyLC5tb2RhbC1oZWFkZXI6YWZ0ZXIsLm5hdjphZnRlciwubmF2YmFyLWNvbGxhcHNlOmFmdGVyLC5uYXZiYXItaGVhZGVyOmFmdGVyLC5uYXZiYXI6YWZ0ZXIsLnBhZ2VyOmFmdGVyLC5wYW5lbC1ib2R5OmFmdGVyLC5yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aH0uY2VudGVyLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b30ucHVsbC1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LnB1bGwtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uaGlkZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5zaG93e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LnRleHQtaGlkZXtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmFmZml4e3Bvc2l0aW9uOmZpeGVkfUAtbXMtdmlld3BvcnR7d2lkdGg6ZGV2aWNlLXdpZHRofS52aXNpYmxlLWxnLC52aXNpYmxlLW1kLC52aXNpYmxlLXNtLC52aXNpYmxlLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnZpc2libGUtbGctYmxvY2ssLnZpc2libGUtbGctaW5saW5lLC52aXNpYmxlLWxnLWlubGluZS1ibG9jaywudmlzaWJsZS1tZC1ibG9jaywudmlzaWJsZS1tZC1pbmxpbmUsLnZpc2libGUtbWQtaW5saW5lLWJsb2NrLC52aXNpYmxlLXNtLWJsb2NrLC52aXNpYmxlLXNtLWlubGluZSwudmlzaWJsZS1zbS1pbmxpbmUtYmxvY2ssLnZpc2libGUteHMtYmxvY2ssLnZpc2libGUteHMtaW5saW5lLC52aXNpYmxlLXhzLWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsudmlzaWJsZS14c3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXhze2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUteHMsdGgudmlzaWJsZS14c3tkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUteHMtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsudmlzaWJsZS14cy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUteHMtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KXsudmlzaWJsZS1zbXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXNte2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUtc217ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUtc20sdGgudmlzaWJsZS1zbXtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpey52aXNpYmxlLXNtLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpey52aXNpYmxlLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LnZpc2libGUtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCl7LnZpc2libGUtbWR7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9dGFibGUudmlzaWJsZS1tZHtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH10ci52aXNpYmxlLW1ke2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10ZC52aXNpYmxlLW1kLHRoLnZpc2libGUtbWR7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCl7LnZpc2libGUtbWQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpey52aXNpYmxlLW1kLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpey52aXNpYmxlLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnZpc2libGUtbGd7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9dGFibGUudmlzaWJsZS1sZ3tkaXNwbGF5OnRhYmxlIWltcG9ydGFudH10ci52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10ZC52aXNpYmxlLWxnLHRoLnZpc2libGUtbGd7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZy1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey52aXNpYmxlLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuaGlkZGVuLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LmhpZGRlbi1zbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KXsuaGlkZGVuLW1ke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmhpZGRlbi1sZ3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUtcHJpbnR7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUtcHJpbnQsdGgudmlzaWJsZS1wcmludHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19LnZpc2libGUtcHJpbnQtaW5saW5le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey52aXNpYmxlLXByaW50LWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fS52aXNpYmxlLXByaW50LWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fX1AbWVkaWEgcHJpbnR7LmhpZGRlbi1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0KLyojIHNvdXJjZU1hcHBpbmdVUkw9Ym9vdHN0cmFwLm1pbi5jc3MubWFwICov"
const bootstrap_min_js = "LyohCiAqIEJvb3RzdHJhcCB2My4zLjcgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE2IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MXx8YlswXT4zKXRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkgdmVyc2lvbiAxLjkuMSBvciBoaWdoZXIsIGJ1dCBsb3dlciB0aGFuIHZlcnNpb24gNCIpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvb3RzdHJhcCIpLGI9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O2Zvcih2YXIgYyBpbiBiKWlmKHZvaWQgMCE9PWEuc3R5bGVbY10pcmV0dXJue2VuZDpiW2NdfTtyZXR1cm4hMX1hLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGIpe3ZhciBjPSExLGQ9dGhpczthKHRoaXMpLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2M9ITB9KTt2YXIgZT1mdW5jdGlvbigpe2N8fGEoZCkudHJpZ2dlcihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpfTtyZXR1cm4gc2V0VGltZW91dChlLGIpLHRoaXN9LGEoZnVuY3Rpb24oKXthLnN1cHBvcnQudHJhbnNpdGlvbj1iKCksYS5zdXBwb3J0LnRyYW5zaXRpb24mJihhLmV2ZW50LnNwZWNpYWwuYnNUcmFuc2l0aW9uRW5kPXtiaW5kVHlwZTphLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZGVsZWdhdGVUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxoYW5kbGU6ZnVuY3Rpb24oYil7aWYoYShiLnRhcmdldCkuaXModGhpcykpcmV0dXJuIGIuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjciLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YSgiIyI9PT1mP1tdOmYpO2ImJmIucHJldmVudERlZmF1bHQoKSxnLmxlbmd0aHx8KGc9ZS5jbG9zZXN0KCIuYWxlcnQiKSksZy50cmlnZ2VyKGI9YS5FdmVudCgiY2xvc2UuYnMuYWxlcnQiKSksYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGcucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJmcuaGFzQ2xhc3MoImZhZGUiKT9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixjKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmMoKSl9O3ZhciBlPWEuZm4uYWxlcnQ7YS5mbi5hbGVydD1iLGEuZm4uYWxlcnQuQ29uc3RydWN0b3I9ZCxhLmZuLmFsZXJ0Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5hbGVydD1lLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5hbGVydC5kYXRhLWFwaSIsYyxkLnByb3RvdHlwZS5jbG9zZSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5idXR0b24iKSxmPSJvYmplY3QiPT10eXBlb2YgYiYmYjtlfHxkLmRhdGEoImJzLmJ1dHRvbiIsZT1uZXcgYyh0aGlzLGYpKSwidG9nZ2xlIj09Yj9lLnRvZ2dsZSgpOmImJmUuc2V0U3RhdGUoYil9KX12YXIgYz1mdW5jdGlvbihiLGQpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxkKSx0aGlzLmlzTG9hZGluZz0hMX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5ERUZBVUxUUz17bG9hZGluZ1RleHQ6ImxvYWRpbmcuLi4ifSxjLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihiKXt2YXIgYz0iZGlzYWJsZWQiLGQ9dGhpcy4kZWxlbWVudCxlPWQuaXMoImlucHV0Iik/InZhbCI6Imh0bWwiLGY9ZC5kYXRhKCk7Yis9IlRleHQiLG51bGw9PWYucmVzZXRUZXh0JiZkLmRhdGEoInJlc2V0VGV4dCIsZFtlXSgpKSxzZXRUaW1lb3V0KGEucHJveHkoZnVuY3Rpb24oKXtkW2VdKG51bGw9PWZbYl0/dGhpcy5vcHRpb25zW2JdOmZbYl0pLCJsb2FkaW5nVGV4dCI9PWI/KHRoaXMuaXNMb2FkaW5nPSEwLGQuYWRkQ2xhc3MoYykuYXR0cihjLGMpLnByb3AoYywhMCkpOnRoaXMuaXNMb2FkaW5nJiYodGhpcy5pc0xvYWRpbmc9ITEsZC5yZW1vdmVDbGFzcyhjKS5yZW1vdmVBdHRyKGMpLnByb3AoYywhMSkpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIik7Yi5jYWxsKGQsInRvZ2dsZSIpLGEoYy50YXJnZXQpLmlzKCdpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdJyl8fChjLnByZXZlbnREZWZhdWx0KCksZC5pcygiaW5wdXQsYnV0dG9uIik/ZC50cmlnZ2VyKCJmb2N1cyIpOmQuZmluZCgiaW5wdXQ6dmlzaWJsZSxidXR0b246dmlzaWJsZSIpLmZpcnN0KCkudHJpZ2dlcigiZm9jdXMiKSl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjciLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO2lmKCEoYT50aGlzLiRpdGVtcy5sZW5ndGgtMXx8YTwwKSlyZXR1cm4gdGhpcy5zbGlkaW5nP3RoaXMuJGVsZW1lbnQub25lKCJzbGlkLmJzLmNhcm91c2VsIixmdW5jdGlvbigpe2IudG8oYSl9KTpjPT1hP3RoaXMucGF1c2UoKS5jeWNsZSgpOnRoaXMuc2xpZGUoYT5jPyJuZXh0IjoicHJldiIsdGhpcy4kaXRlbXMuZXEoYSkpfSxjLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSEwKSx0aGlzLiRlbGVtZW50LmZpbmQoIi5uZXh0LCAucHJldiIpLmxlbmd0aCYmYS5zdXBwb3J0LnRyYW5zaXRpb24mJih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSx0aGlzLmN5Y2xlKCEwKSksdGhpcy5pbnRlcnZhbD1jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXN9LGMucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZighdGhpcy5zbGlkaW5nKXJldHVybiB0aGlzLnNsaWRlKCJuZXh0Iil9LGMucHJvdG90eXBlLnByZXY9ZnVuY3Rpb24oKXtpZighdGhpcy5zbGlkaW5nKXJldHVybiB0aGlzLnNsaWRlKCJwcmV2Iil9LGMucHJvdG90eXBlLnNsaWRlPWZ1bmN0aW9uKGIsZCl7dmFyIGU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSxmPWR8fHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbihiLGUpLGc9dGhpcy5pbnRlcnZhbCxoPSJuZXh0Ij09Yj8ibGVmdCI6InJpZ2h0IixpPXRoaXM7aWYoZi5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuIHRoaXMuc2xpZGluZz0hMTt2YXIgaj1mWzBdLGs9YS5FdmVudCgic2xpZGUuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmosZGlyZWN0aW9uOmh9KTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoayksIWsuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKHRoaXMuc2xpZGluZz0hMCxnJiZ0aGlzLnBhdXNlKCksdGhpcy4kaW5kaWNhdG9ycy5sZW5ndGgpe3RoaXMuJGluZGljYXRvcnMuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgbD1hKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleChmKV0pO2wmJmwuYWRkQ2xhc3MoImFjdGl2ZSIpfXZhciBtPWEuRXZlbnQoInNsaWQuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmosZGlyZWN0aW9uOmh9KTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoInNsaWRlIik/KGYuYWRkQ2xhc3MoYiksZlswXS5vZmZzZXRXaWR0aCxlLmFkZENsYXNzKGgpLGYuYWRkQ2xhc3MoaCksZS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtmLnJlbW92ZUNsYXNzKFtiLGhdLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGUucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGhdLmpvaW4oIiAiKSksaS5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLiRlbGVtZW50LnRyaWdnZXIobSl9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKSk6KGUucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGYuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuc2xpZGluZz0hMSx0aGlzLiRlbGVtZW50LnRyaWdnZXIobSkpLGcmJnRoaXMuY3ljbGUoKSx0aGlzfX07dmFyIGQ9YS5mbi5jYXJvdXNlbDthLmZuLmNhcm91c2VsPWIsYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3Rvcj1jLGEuZm4uY2Fyb3VzZWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNhcm91c2VsPWQsdGhpc307dmFyIGU9ZnVuY3Rpb24oYyl7dmFyIGQsZT1hKHRoaXMpLGY9YShlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWUuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKTtpZihmLmhhc0NsYXNzKCJjYXJvdXNlbCIpKXt2YXIgZz1hLmV4dGVuZCh7fSxmLmRhdGEoKSxlLmRhdGEoKSksaD1lLmF0dHIoImRhdGEtc2xpZGUtdG8iKTtoJiYoZy5pbnRlcnZhbD0hMSksYi5jYWxsKGYsZyksaCYmZi5kYXRhKCJicy5jYXJvdXNlbCIpLnRvKGgpLGMucHJldmVudERlZmF1bHQoKX19O2EoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSIsZSkub24oImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwiW2RhdGEtc2xpZGUtdG9dIixlKSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpO2IuY2FsbChjLGMuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjLGQ9Yi5hdHRyKCJkYXRhLXRhcmdldCIpfHwoYz1iLmF0dHIoImhyZWYiKSkmJmMucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKTtyZXR1cm4gYShkKX1mdW5jdGlvbiBjKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5jb2xsYXBzZSIpLGY9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpOyFlJiZmLnRvZ2dsZSYmL3Nob3d8aGlkZS8udGVzdChiKSYmKGYudG9nZ2xlPSExKSxlfHxjLmRhdGEoImJzLmNvbGxhcHNlIixlPW5ldyBkKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpfSl9dmFyIGQ9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYyksdGhpcy4kdHJpZ2dlcj1hKCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1baHJlZj0iIycrYi5pZCsnIl0sW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtdGFyZ2V0PSIjJytiLmlkKyciXScpLHRoaXMudHJhbnNpdGlvbmluZz1udWxsLHRoaXMub3B0aW9ucy5wYXJlbnQ/dGhpcy4kcGFyZW50PXRoaXMuZ2V0UGFyZW50KCk6dGhpcy5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy4kZWxlbWVudCx0aGlzLiR0cmlnZ2VyKSx0aGlzLm9wdGlvbnMudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfTtkLlZFUlNJT049IjMuMy43IixkLlRSQU5TSVRJT05fRFVSQVRJT049MzUwLGQuREVGQVVMVFM9e3RvZ2dsZTohMH0sZC5wcm90b3R5cGUuZGltZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudC5oYXNDbGFzcygid2lkdGgiKTtyZXR1cm4gYT8id2lkdGgiOiJoZWlnaHQifSxkLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiLGU9dGhpcy4kcGFyZW50JiZ0aGlzLiRwYXJlbnQuY2hpbGRyZW4oIi5wYW5lbCIpLmNoaWxkcmVuKCIuaW4sIC5jb2xsYXBzaW5nIik7aWYoIShlJiZlLmxlbmd0aCYmKGI9ZS5kYXRhKCJicy5jb2xsYXBzZSIpLGImJmIudHJhbnNpdGlvbmluZykpKXt2YXIgZj1hLkV2ZW50KCJzaG93LmJzLmNvbGxhcHNlIik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGYpLCFmLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtlJiZlLmxlbmd0aCYmKGMuY2FsbChlLCJoaWRlIiksYnx8ZS5kYXRhKCJicy5jb2xsYXBzZSIsbnVsbCkpO3ZhciBnPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2UiKS5hZGRDbGFzcygiY29sbGFwc2luZyIpW2ddKDApLmF0dHIoImFyaWEtZXhwYW5kZWQiLCEwKSx0aGlzLiR0cmlnZ2VyLnJlbW92ZUNsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy50cmFuc2l0aW9uaW5nPTE7dmFyIGg9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIGluIilbZ10oIiIpLHRoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuY29sbGFwc2UiKX07aWYoIWEuc3VwcG9ydC50cmFuc2l0aW9uKXJldHVybiBoLmNhbGwodGhpcyk7dmFyIGk9YS5jYW1lbENhc2UoWyJzY3JvbGwiLGddLmpvaW4oIi0iKSk7dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShoLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pW2ddKHRoaXMuJGVsZW1lbnRbMF1baV0pfX19fSxkLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSl7dmFyIGI9YS5FdmVudCgiaGlkZS5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSwhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGM9dGhpcy5kaW1lbnNpb24oKTt0aGlzLiRlbGVtZW50W2NdKHRoaXMuJGVsZW1lbnRbY10oKSlbMF0ub2Zmc2V0SGVpZ2h0LHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoImNvbGxhcHNpbmciKS5yZW1vdmVDbGFzcygiY29sbGFwc2UgaW4iKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSksdGhpcy4kdHJpZ2dlci5hZGRDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBlPWZ1bmN0aW9uKCl7dGhpcy50cmFuc2l0aW9uaW5nPTAsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSIpLnRyaWdnZXIoImhpZGRlbi5icy5jb2xsYXBzZSIpfTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24/dm9pZCB0aGlzLiRlbGVtZW50W2NdKDApLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixhLnByb3h5KGUsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTik6ZS5jYWxsKHRoaXMpfX19LGQucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3RoaXNbdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKT8iaGlkZSI6InNob3ciXSgpfSxkLnByb3RvdHlwZS5nZXRQYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLm9wdGlvbnMucGFyZW50KS5maW5kKCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1bZGF0YS1wYXJlbnQ9IicrdGhpcy5vcHRpb25zLnBhcmVudCsnIl0nKS5lYWNoKGEucHJveHkoZnVuY3Rpb24oYyxkKXt2YXIgZT1hKGQpO3RoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKGIoZSksZSl9LHRoaXMpKS5lbmQoKX0sZC5wcm90b3R5cGUuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5oYXNDbGFzcygiaW4iKTthLmF0dHIoImFyaWEtZXhwYW5kZWQiLGMpLGIudG9nZ2xlQ2xhc3MoImNvbGxhcHNlZCIsIWMpLmF0dHIoImFyaWEtZXhwYW5kZWQiLGMpfTt2YXIgZT1hLmZuLmNvbGxhcHNlO2EuZm4uY29sbGFwc2U9YyxhLmZuLmNvbGxhcHNlLkNvbnN0cnVjdG9yPWQsYS5mbi5jb2xsYXBzZS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uY29sbGFwc2U9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY29sbGFwc2UuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl0nLGZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7ZS5hdHRyKCJkYXRhLXRhcmdldCIpfHxkLnByZXZlbnREZWZhdWx0KCk7dmFyIGY9YihlKSxnPWYuZGF0YSgiYnMuY29sbGFwc2UiKSxoPWc/InRvZ2dsZSI6ZS5kYXRhKCk7Yy5jYWxsKGYsaCl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7dmFyIGM9Yi5hdHRyKCJkYXRhLXRhcmdldCIpO2N8fChjPWIuYXR0cigiaHJlZiIpLGM9YyYmLyNbQS1aYS16XS8udGVzdChjKSYmYy5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKTt2YXIgZD1jJiZhKGMpO3JldHVybiBkJiZkLmxlbmd0aD9kOmIucGFyZW50KCl9ZnVuY3Rpb24gYyhjKXtjJiYzPT09Yy53aGljaHx8KGEoZSkucmVtb3ZlKCksYShmKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWIoZCksZj17cmVsYXRlZFRhcmdldDp0aGlzfTtlLmhhc0NsYXNzKCJvcGVuIikmJihjJiYiY2xpY2siPT1jLnR5cGUmJi9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoYy50YXJnZXQudGFnTmFtZSkmJmEuY29udGFpbnMoZVswXSxjLnRhcmdldCl8fChlLnRyaWdnZXIoYz1hLkV2ZW50KCJoaWRlLmJzLmRyb3Bkb3duIixmKSksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGQuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIiksZS5yZW1vdmVDbGFzcygib3BlbiIpLnRyaWdnZXIoYS5FdmVudCgiaGlkZGVuLmJzLmRyb3Bkb3duIixmKSkpKSl9KSl9ZnVuY3Rpb24gZChiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxkPWMuZGF0YSgiYnMuZHJvcGRvd24iKTtkfHxjLmRhdGEoImJzLmRyb3Bkb3duIixkPW5ldyBnKHRoaXMpKSwic3RyaW5nIj09dHlwZW9mIGImJmRbYl0uY2FsbChjKX0pfXZhciBlPSIuZHJvcGRvd24tYmFja2Ryb3AiLGY9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsZz1mdW5jdGlvbihiKXthKGIpLm9uKCJjbGljay5icy5kcm9wZG93biIsdGhpcy50b2dnbGUpfTtnLlZFUlNJT049IjMuMy43IixnLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oZCl7dmFyIGU9YSh0aGlzKTtpZighZS5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGY9YihlKSxnPWYuaGFzQ2xhc3MoIm9wZW4iKTtpZihjKCksIWcpeyJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYhZi5jbG9zZXN0KCIubmF2YmFyLW5hdiIpLmxlbmd0aCYmYShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuYWRkQ2xhc3MoImRyb3Bkb3duLWJhY2tkcm9wIikuaW5zZXJ0QWZ0ZXIoYSh0aGlzKSkub24oImNsaWNrIixjKTt2YXIgaD17cmVsYXRlZFRhcmdldDp0aGlzfTtpZihmLnRyaWdnZXIoZD1hLkV2ZW50KCJzaG93LmJzLmRyb3Bkb3duIixoKSksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47ZS50cmlnZ2VyKCJmb2N1cyIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIiksZi50b2dnbGVDbGFzcygib3BlbiIpLnRyaWdnZXIoYS5FdmVudCgic2hvd24uYnMuZHJvcGRvd24iLGgpKX1yZXR1cm4hMX19LGcucHJvdG90eXBlLmtleWRvd249ZnVuY3Rpb24oYyl7aWYoLygzOHw0MHwyN3wzMikvLnRlc3QoYy53aGljaCkmJiEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpKXt2YXIgZD1hKHRoaXMpO2lmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpLCFkLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXt2YXIgZT1iKGQpLGc9ZS5oYXNDbGFzcygib3BlbiIpO2lmKCFnJiYyNyE9Yy53aGljaHx8ZyYmMjc9PWMud2hpY2gpcmV0dXJuIDI3PT1jLndoaWNoJiZlLmZpbmQoZikudHJpZ2dlcigiZm9jdXMiKSxkLnRyaWdnZXIoImNsaWNrIik7dmFyIGg9IiBsaTpub3QoLmRpc2FibGVkKTp2aXNpYmxlIGEiLGk9ZS5maW5kKCIuZHJvcGRvd24tbWVudSIraCk7aWYoaS5sZW5ndGgpe3ZhciBqPWkuaW5kZXgoYy50YXJnZXQpOzM4PT1jLndoaWNoJiZqPjAmJmotLSw0MD09Yy53aGljaCYmajxpLmxlbmd0aC0xJiZqKyssfmp8fChqPTApLGkuZXEoaikudHJpZ2dlcigiZm9jdXMiKX19fX07dmFyIGg9YS5mbi5kcm9wZG93bjthLmZuLmRyb3Bkb3duPWQsYS5mbi5kcm9wZG93bi5Db25zdHJ1Y3Rvcj1nLGEuZm4uZHJvcGRvd24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmRyb3Bkb3duPWgsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIixjKS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLCIuZHJvcGRvd24gZm9ybSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS50b2dnbGUpLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIixmLGcucHJvdG90eXBlLmtleWRvd24pLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duLW1lbnUiLGcucHJvdG90eXBlLmtleWRvd24pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiLGQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1hKHRoaXMpLGY9ZS5kYXRhKCJicy5tb2RhbCIpLGc9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxlLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpO2Z8fGUuZGF0YSgiYnMubW9kYWwiLGY9bmV3IGModGhpcyxnKSksInN0cmluZyI9PXR5cGVvZiBiP2ZbYl0oZCk6Zy5zaG93JiZmLnNob3coZCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMub3B0aW9ucz1jLHRoaXMuJGJvZHk9YShkb2N1bWVudC5ib2R5KSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy4kZGlhbG9nPXRoaXMuJGVsZW1lbnQuZmluZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGJhY2tkcm9wPW51bGwsdGhpcy5pc1Nob3duPW51bGwsdGhpcy5vcmlnaW5hbEJvZHlQYWQ9bnVsbCx0aGlzLnNjcm9sbGJhcldpZHRoPTAsdGhpcy5pZ25vcmVCYWNrZHJvcENsaWNrPSExLHRoaXMub3B0aW9ucy5yZW1vdGUmJnRoaXMuJGVsZW1lbnQuZmluZCgiLm1vZGFsLWNvbnRlbnQiKS5sb2FkKHRoaXMub3B0aW9ucy5yZW1vdGUsYS5wcm94eShmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQudHJpZ2dlcigibG9hZGVkLmJzLm1vZGFsIil9LHRoaXMpKX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTMwMCxjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLHNob3c6ITB9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nob3duP3RoaXMuaGlkZSgpOnRoaXMuc2hvdyhhKX0sYy5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbihiKXt2YXIgZD10aGlzLGU9YS5FdmVudCgic2hvdy5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihlKSx0aGlzLmlzU2hvd258fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLmlzU2hvd249ITAsdGhpcy5jaGVja1Njcm9sbGJhcigpLHRoaXMuc2V0U2Nyb2xsYmFyKCksdGhpcy4kYm9keS5hZGRDbGFzcygibW9kYWwtb3BlbiIpLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIiwnW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsYS5wcm94eSh0aGlzLmhpZGUsdGhpcykpLHRoaXMuJGRpYWxvZy5vbigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC4kZWxlbWVudC5vbmUoIm1vdXNldXAuZGlzbWlzcy5icy5tb2RhbCIsZnVuY3Rpb24oYil7YShiLnRhcmdldCkuaXMoZC4kZWxlbWVudCkmJihkLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITApfSl9KSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7dmFyIGU9YS5zdXBwb3J0LnRyYW5zaXRpb24mJmQuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKTtkLiRlbGVtZW50LnBhcmVudCgpLmxlbmd0aHx8ZC4kZWxlbWVudC5hcHBlbmRUbyhkLiRib2R5KSxkLiRlbGVtZW50LnNob3coKS5zY3JvbGxUb3AoMCksZC5hZGp1c3REaWFsb2coKSxlJiZkLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoLGQuJGVsZW1lbnQuYWRkQ2xhc3MoImluIiksZC5lbmZvcmNlRm9jdXMoKTt2YXIgZj1hLkV2ZW50KCJzaG93bi5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO2U/ZC4kZGlhbG9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2QuJGVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKGYpfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pKX0sYy5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbihiKXtiJiZiLnByZXZlbnREZWZhdWx0KCksYj1hLkV2ZW50KCJoaWRlLmJzLm1vZGFsIiksdGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLHRoaXMuaXNTaG93biYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJih0aGlzLmlzU2hvd249ITEsdGhpcy5lc2NhcGUoKSx0aGlzLnJlc2l6ZSgpLGEoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImluIikub2ZmKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIikub2ZmKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiKSx0aGlzLiRkaWFsb2cub2ZmKCJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eSh0aGlzLmhpZGVNb2RhbCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTp0aGlzLmhpZGVNb2RhbCgpKX0sYy5wcm90b3R5cGUuZW5mb3JjZUZvY3VzPWZ1bmN0aW9uKCl7YShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIikub24oImZvY3VzaW4uYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7ZG9jdW1lbnQ9PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudFswXT09PWEudGFyZ2V0fHx0aGlzLiRlbGVtZW50LmhhcyhhLnRhcmdldCkubGVuZ3RofHx0aGlzLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIil9LHRoaXMpKX0sYy5wcm90b3R5cGUuZXNjYXBlPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMua2V5Ym9hcmQ/dGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpezI3PT1hLndoaWNoJiZ0aGlzLmhpZGUoKX0sdGhpcykpOnRoaXMuaXNTaG93bnx8dGhpcy4kZWxlbWVudC5vZmYoImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24/YSh3aW5kb3cpLm9uKCJyZXNpemUuYnMubW9kYWwiLGEucHJveHkodGhpcy5oYW5kbGVVcGRhdGUsdGhpcykpOmEod2luZG93KS5vZmYoInJlc2l6ZS5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuJGVsZW1lbnQuaGlkZSgpLHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKXthLiRib2R5LnJlbW92ZUNsYXNzKCJtb2RhbC1vcGVuIiksYS5yZXNldEFkanVzdG1lbnRzKCksYS5yZXNldFNjcm9sbGJhcigpLGEuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLm1vZGFsIil9KX0sYy5wcm90b3R5cGUucmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLiRiYWNrZHJvcCYmdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH0sYy5wcm90b3R5cGUuYmFja2Ryb3A9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBmPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZlO2lmKHRoaXMuJGJhY2tkcm9wPWEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJtb2RhbC1iYWNrZHJvcCAiK2UpLmFwcGVuZFRvKHRoaXMuJGJvZHkpLHRoaXMuJGVsZW1lbnQub24oImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz92b2lkKHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSk6dm9pZChhLnRhcmdldD09PWEuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/dGhpcy4kZWxlbWVudFswXS5mb2N1cygpOnRoaXMuaGlkZSgpKSl9LHRoaXMpKSxmJiZ0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCx0aGlzLiRiYWNrZHJvcC5hZGRDbGFzcygiaW4iKSwhYilyZXR1cm47Zj90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYikuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpiKCl9ZWxzZSBpZighdGhpcy5pc1Nob3duJiZ0aGlzLiRiYWNrZHJvcCl7dGhpcy4kYmFja2Ryb3AucmVtb3ZlQ2xhc3MoImluIik7dmFyIGc9ZnVuY3Rpb24oKXtkLnJlbW92ZUJhY2tkcm9wKCksYiYmYigpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGJhY2tkcm9wLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixnKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT04pOmcoKX1lbHNlIGImJmIoKX0sYy5wcm90b3R5cGUuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5hZGp1c3REaWFsb2coKX0sYy5wcm90b3R5cGUuYWRqdXN0RGlhbG9nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDt0aGlzLiRlbGVtZW50LmNzcyh7cGFkZGluZ0xlZnQ6IXRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJmE/dGhpcy5zY3JvbGxiYXJXaWR0aDoiIixwYWRkaW5nUmlnaHQ6dGhpcy5ib2R5SXNPdmVyZmxvd2luZyYmIWE/dGhpcy5zY3JvbGxiYXJXaWR0aDoiIn0pfSxjLnByb3RvdHlwZS5yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiIiLHBhZGRpbmdSaWdodDoiIn0pfSxjLnByb3RvdHlwZS5jaGVja1Njcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5pbm5lcldpZHRoO2lmKCFhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1iLnJpZ2h0LU1hdGguYWJzKGIubGVmdCl9dGhpcy5ib2R5SXNPdmVyZmxvd2luZz1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoPGEsdGhpcy5zY3JvbGxiYXJXaWR0aD10aGlzLm1lYXN1cmVTY3JvbGxiYXIoKX0sYy5wcm90b3R5cGUuc2V0U2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9cGFyc2VJbnQodGhpcy4kYm9keS5jc3MoInBhZGRpbmctcmlnaHQiKXx8MCwxMCk7dGhpcy5vcmlnaW5hbEJvZHlQYWQ9ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHR8fCIiLHRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJnRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IixhK3RoaXMuc2Nyb2xsYmFyV2lkdGgpfSxjLnByb3RvdHlwZS5yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3RoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iix0aGlzLm9yaWdpbmFsQm9keVBhZCl9LGMucHJvdG90eXBlLm1lYXN1cmVTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLHRoaXMuJGJvZHkuYXBwZW5kKGEpO3ZhciBiPWEub2Zmc2V0V2lkdGgtYS5jbGllbnRXaWR0aDtyZXR1cm4gdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChhKSxifTt2YXIgZD1hLmZuLm1vZGFsO2EuZm4ubW9kYWw9YixhLmZuLm1vZGFsLkNvbnN0cnVjdG9yPWMsYS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ubW9kYWw9ZCx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKGMpe3ZhciBkPWEodGhpcyksZT1kLmF0dHIoImhyZWYiKSxmPWEoZC5hdHRyKCJkYXRhLXRhcmdldCIpfHxlJiZlLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGc9Zi5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KGUpJiZlfSxmLmRhdGEoKSxkLmRhdGEoKSk7ZC5pcygiYSIpJiZjLnByZXZlbnREZWZhdWx0KCksZi5vbmUoInNob3cuYnMubW9kYWwiLGZ1bmN0aW9uKGEpe2EuaXNEZWZhdWx0UHJldmVudGVkKCl8fGYub25lKCJoaWRkZW4uYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC5pcygiOnZpc2libGUiKSYmZC50cmlnZ2VyKCJmb2N1cyIpfSl9KSxiLmNhbGwoZixnLHRoaXMpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50b29sdGlwIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7IWUmJi9kZXN0cm95fGhpZGUvLnRlc3QoYil8fChlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy43IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO2lmKGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c291dCI9PWIudHlwZT8iZm9jdXMiOiJob3ZlciJdPSExKSwhYy5pc0luU3RhdGVUcnVlKCkpcmV0dXJuIGNsZWFyVGltZW91dChjLnRpbWVvdXQpLGMuaG92ZXJTdGF0ZT0ib3V0IixjLm9wdGlvbnMuZGVsYXkmJmMub3B0aW9ucy5kZWxheS5oaWRlP3ZvaWQoYy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsib3V0Ij09Yy5ob3ZlclN0YXRlJiZjLmhpZGUoKX0sYy5vcHRpb25zLmRlbGF5LmhpZGUpKTpjLmhpZGUoKX0sYy5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3ZhciBiPWEuRXZlbnQoInNob3cuYnMuIit0aGlzLnR5cGUpO2lmKHRoaXMuaGFzQ29udGVudCgpJiZ0aGlzLmVuYWJsZWQpe3RoaXMuJGVsZW1lbnQudHJpZ2dlcihiKTt2YXIgZD1hLmNvbnRhaW5zKHRoaXMuJGVsZW1lbnRbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy4kZWxlbWVudFswXSk7aWYoYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8IWQpcmV0dXJuO3ZhciBlPXRoaXMsZj10aGlzLnRpcCgpLGc9dGhpcy5nZXRVSUQodGhpcy50eXBlKTt0aGlzLnNldENvbnRlbnQoKSxmLmF0dHIoImlkIixnKSx0aGlzLiRlbGVtZW50LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGcpLHRoaXMub3B0aW9ucy5hbmltYXRpb24mJmYuYWRkQ2xhc3MoImZhZGUiKTt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudD90aGlzLm9wdGlvbnMucGxhY2VtZW50LmNhbGwodGhpcyxmWzBdLHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMub3B0aW9ucy5wbGFjZW1lbnQsaT0vXHM/YXV0bz9ccz8vaSxqPWkudGVzdChoKTtqJiYoaD1oLnJlcGxhY2UoaSwiIil8fCJ0b3AiKSxmLmRldGFjaCgpLmNzcyh7dG9wOjAsbGVmdDowLGRpc3BsYXk6ImJsb2NrIn0pLmFkZENsYXNzKGgpLmRhdGEoImJzLiIrdGhpcy50eXBlLHRoaXMpLHRoaXMub3B0aW9ucy5jb250YWluZXI/Zi5hcHBlbmRUbyh0aGlzLm9wdGlvbnMuY29udGFpbmVyKTpmLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5zZXJ0ZWQuYnMuIit0aGlzLnR5cGUpO3ZhciBrPXRoaXMuZ2V0UG9zaXRpb24oKSxsPWZbMF0ub2Zmc2V0V2lkdGgsbT1mWzBdLm9mZnNldEhlaWdodDtpZihqKXt2YXIgbj1oLG89dGhpcy5nZXRQb3NpdGlvbih0aGlzLiR2aWV3cG9ydCk7aD0iYm90dG9tIj09aCYmay5ib3R0b20rbT5vLmJvdHRvbT8idG9wIjoidG9wIj09aCYmay50b3AtbTxvLnRvcD8iYm90dG9tIjoicmlnaHQiPT1oJiZrLnJpZ2h0K2w+by53aWR0aD8ibGVmdCI6ImxlZnQiPT1oJiZrLmxlZnQtbDxvLmxlZnQ/InJpZ2h0IjpoLGYucmVtb3ZlQ2xhc3MobikuYWRkQ2xhc3MoaCl9dmFyIHA9dGhpcy5nZXRDYWxjdWxhdGVkT2Zmc2V0KGgsayxsLG0pO3RoaXMuYXBwbHlQbGFjZW1lbnQocCxoKTt2YXIgcT1mdW5jdGlvbigpe3ZhciBhPWUuaG92ZXJTdGF0ZTtlLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLiIrZS50eXBlKSxlLmhvdmVyU3RhdGU9bnVsbCwib3V0Ij09YSYmZS5sZWF2ZShlKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJHRpcC5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLHEpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6cSgpfX0sYy5wcm90b3R5cGUuYXBwbHlQbGFjZW1lbnQ9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnRpcCgpLGU9ZFswXS5vZmZzZXRXaWR0aCxmPWRbMF0ub2Zmc2V0SGVpZ2h0LGc9cGFyc2VJbnQoZC5jc3MoIm1hcmdpbi10b3AiKSwxMCksaD1wYXJzZUludChkLmNzcygibWFyZ2luLWxlZnQiKSwxMCk7aXNOYU4oZykmJihnPTApLGlzTmFOKGgpJiYoaD0wKSxiLnRvcCs9ZyxiLmxlZnQrPWgsYS5vZmZzZXQuc2V0T2Zmc2V0KGRbMF0sYS5leHRlbmQoe3VzaW5nOmZ1bmN0aW9uKGEpe2QuY3NzKHt0b3A6TWF0aC5yb3VuZChhLnRvcCksbGVmdDpNYXRoLnJvdW5kKGEubGVmdCl9KX19LGIpLDApLGQuYWRkQ2xhc3MoImluIik7dmFyIGk9ZFswXS5vZmZzZXRXaWR0aCxqPWRbMF0ub2Zmc2V0SGVpZ2h0OyJ0b3AiPT1jJiZqIT1mJiYoYi50b3A9Yi50b3ArZi1qKTt2YXIgaz10aGlzLmdldFZpZXdwb3J0QWRqdXN0ZWREZWx0YShjLGIsaSxqKTtrLmxlZnQ/Yi5sZWZ0Kz1rLmxlZnQ6Yi50b3ArPWsudG9wO3ZhciBsPS90b3B8Ym90dG9tLy50ZXN0KGMpLG09bD8yKmsubGVmdC1lK2k6MiprLnRvcC1mK2osbj1sPyJvZmZzZXRXaWR0aCI6Im9mZnNldEhlaWdodCI7ZC5vZmZzZXQoYiksdGhpcy5yZXBsYWNlQXJyb3cobSxkWzBdW25dLGwpfSxjLnByb3RvdHlwZS5yZXBsYWNlQXJyb3c9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYXJyb3coKS5jc3MoYz8ibGVmdCI6InRvcCIsNTAqKDEtYS9iKSsiJSIpLmNzcyhjPyJ0b3AiOiJsZWZ0IiwiIil9LGMucHJvdG90eXBlLnNldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRpcCgpLGI9dGhpcy5nZXRUaXRsZSgpO2EuZmluZCgiLnRvb2x0aXAtaW5uZXIiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLnJlbW92ZUNsYXNzKCJmYWRlIGluIHRvcCBib3R0b20gbGVmdCByaWdodCIpfSxjLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoKXsiaW4iIT1lLmhvdmVyU3RhdGUmJmYuZGV0YWNoKCksZS4kZWxlbWVudCYmZS4kZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IikudHJpZ2dlcigiaGlkZGVuLmJzLiIrZS50eXBlKSxiJiZiKCl9dmFyIGU9dGhpcyxmPWEodGhpcy4kdGlwKSxnPWEuRXZlbnQoImhpZGUuYnMuIit0aGlzLnR5cGUpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSwhZy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4gZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXN9LGMucHJvdG90eXBlLmZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudDsoYS5hdHRyKCJ0aXRsZSIpfHwic3RyaW5nIiE9dHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpKSYmYS5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIixhLmF0dHIoInRpdGxlIil8fCIiKS5hdHRyKCJ0aXRsZSIsIiIpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKX0sYy5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oYil7Yj1ifHx0aGlzLiRlbGVtZW50O3ZhciBjPWJbMF0sZD0iQk9EWSI9PWMudGFnTmFtZSxlPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bnVsbD09ZS53aWR0aCYmKGU9YS5leHRlbmQoe30sZSx7d2lkdGg6ZS5yaWdodC1lLmxlZnQsaGVpZ2h0OmUuYm90dG9tLWUudG9wfSkpO3ZhciBmPXdpbmRvdy5TVkdFbGVtZW50JiZjIGluc3RhbmNlb2Ygd2luZG93LlNWR0VsZW1lbnQsZz1kP3t0b3A6MCxsZWZ0OjB9OmY/bnVsbDpiLm9mZnNldCgpLGg9e3Njcm9sbDpkP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOmIuc2Nyb2xsVG9wKCl9LGk9ZD97d2lkdGg6YSh3aW5kb3cpLndpZHRoKCksaGVpZ2h0OmEod2luZG93KS5oZWlnaHQoKX06bnVsbDtyZXR1cm4gYS5leHRlbmQoe30sZSxoLGksZyl9LGMucHJvdG90eXBlLmdldENhbGN1bGF0ZWRPZmZzZXQ9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuImJvdHRvbSI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToidG9wIj09YT97dG9wOmIudG9wLWQsbGVmdDpiLmxlZnQrYi53aWR0aC8yLWMvMn06ImxlZnQiPT1hP3t0b3A6Yi50b3ArYi5oZWlnaHQvMi1kLzIsbGVmdDpiLmxlZnQtY306e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdCtiLndpZHRofX0sYy5wcm90b3R5cGUuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXt0b3A6MCxsZWZ0OjB9O2lmKCF0aGlzLiR2aWV3cG9ydClyZXR1cm4gZTt2YXIgZj10aGlzLm9wdGlvbnMudmlld3BvcnQmJnRoaXMub3B0aW9ucy52aWV3cG9ydC5wYWRkaW5nfHwwLGc9dGhpcy5nZXRQb3NpdGlvbih0aGlzLiR2aWV3cG9ydCk7aWYoL3JpZ2h0fGxlZnQvLnRlc3QoYSkpe3ZhciBoPWIudG9wLWYtZy5zY3JvbGwsaT1iLnRvcCtmLWcuc2Nyb2xsK2Q7aDxnLnRvcD9lLnRvcD1nLnRvcC1oOmk+Zy50b3ArZy5oZWlnaHQmJihlLnRvcD1nLnRvcCtnLmhlaWdodC1pKX1lbHNle3ZhciBqPWIubGVmdC1mLGs9Yi5sZWZ0K2YrYztqPGcubGVmdD9lLmxlZnQ9Zy5sZWZ0LWo6az5nLnJpZ2h0JiYoZS5sZWZ0PWcubGVmdCtnLndpZHRoLWspfXJldHVybiBlfSxjLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kZWxlbWVudCxjPXRoaXMub3B0aW9ucztyZXR1cm4gYT1iLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRpdGxlP2MudGl0bGUuY2FsbChiWzBdKTpjLnRpdGxlKX0sYy5wcm90b3R5cGUuZ2V0VUlEPWZ1bmN0aW9uKGEpe2RvIGErPX5+KDFlNipNYXRoLnJhbmRvbSgpKTt3aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSk7cmV0dXJuIGF9LGMucHJvdG90eXBlLnRpcD1mdW5jdGlvbigpe2lmKCF0aGlzLiR0aXAmJih0aGlzLiR0aXA9YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpLDEhPXRoaXMuJHRpcC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiBgdGVtcGxhdGVgIG9wdGlvbiBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseSAxIHRvcC1sZXZlbCBlbGVtZW50ISIpO3JldHVybiB0aGlzLiR0aXB9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi50b29sdGlwLWFycm93Iil9LGMucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMH0sYy5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMX0sYy5wcm90b3R5cGUudG9nZ2xlRW5hYmxlZD1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hdGhpcy5lbmFibGVkfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcztiJiYoYz1hKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpLGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpKSxiPyhjLmluU3RhdGUuY2xpY2s9IWMuaW5TdGF0ZS5jbGljayxjLmlzSW5TdGF0ZVRydWUoKT9jLmVudGVyKGMpOmMubGVhdmUoYykpOmMudGlwKCkuaGFzQ2xhc3MoImluIik/Yy5sZWF2ZShjKTpjLmVudGVyKGMpfSxjLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLmhpZGUoZnVuY3Rpb24oKXthLiRlbGVtZW50Lm9mZigiLiIrYS50eXBlKS5yZW1vdmVEYXRhKCJicy4iK2EudHlwZSksYS4kdGlwJiZhLiR0aXAuZGV0YWNoKCksYS4kdGlwPW51bGwsYS4kYXJyb3c9bnVsbCxhLiR2aWV3cG9ydD1udWxsLGEuJGVsZW1lbnQ9bnVsbH0pfTt2YXIgZD1hLmZuLnRvb2x0aXA7YS5mbi50b29sdGlwPWIsYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yPWMsYS5mbi50b29sdGlwLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi50b29sdGlwPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5wb3BvdmVyIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7IWUmJi9kZXN0cm95fGhpZGUvLnRlc3QoYil8fChlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy43IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNyIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpewp0aGlzLmFjdGl2ZVRhcmdldD1iLHRoaXMuY2xlYXIoKTt2YXIgYz10aGlzLnNlbGVjdG9yKydbZGF0YS10YXJnZXQ9IicrYisnIl0sJyt0aGlzLnNlbGVjdG9yKydbaHJlZj0iJytiKyciXScsZD1hKGMpLnBhcmVudHMoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpO2QucGFyZW50KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCYmKGQ9ZC5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSksZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjciLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gZTxjJiYidG9wIjtpZigiYm90dG9tIj09dGhpcy5hZmZpeGVkKXJldHVybiBudWxsIT1jPyEoZSt0aGlzLnVucGluPD1mLnRvcCkmJiJib3R0b20iOiEoZStnPD1hLWQpJiYiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmZTw9Yz8idG9wIjpudWxsIT1kJiZpK2o+PWEtZCYmImJvdHRvbSJ9LGMucHJvdG90eXBlLmdldFBpbm5lZE9mZnNldD1mdW5jdGlvbigpe2lmKHRoaXMucGlubmVkT2Zmc2V0KXJldHVybiB0aGlzLnBpbm5lZE9mZnNldDt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKGMuUkVTRVQpLmFkZENsYXNzKCJhZmZpeCIpO3ZhciBhPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxiPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCk7cmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0PWIudG9wLWF9LGMucHJvdG90eXBlLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wPWZ1bmN0aW9uKCl7c2V0VGltZW91dChhLnByb3h5KHRoaXMuY2hlY2tQb3NpdGlvbix0aGlzKSwxKX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuJGVsZW1lbnQuaXMoIjp2aXNpYmxlIikpe3ZhciBiPXRoaXMuJGVsZW1lbnQuaGVpZ2h0KCksZD10aGlzLm9wdGlvbnMub2Zmc2V0LGU9ZC50b3AsZj1kLmJvdHRvbSxnPU1hdGgubWF4KGEoZG9jdW1lbnQpLmhlaWdodCgpLGEoZG9jdW1lbnQuYm9keSkuaGVpZ2h0KCkpOyJvYmplY3QiIT10eXBlb2YgZCYmKGY9ZT1kKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmKGU9ZC50b3AodGhpcy4kZWxlbWVudCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoZj1kLmJvdHRvbSh0aGlzLiRlbGVtZW50KSk7dmFyIGg9dGhpcy5nZXRTdGF0ZShnLGIsZSxmKTtpZih0aGlzLmFmZml4ZWQhPWgpe251bGwhPXRoaXMudW5waW4mJnRoaXMuJGVsZW1lbnQuY3NzKCJ0b3AiLCIiKTt2YXIgaT0iYWZmaXgiKyhoPyItIitoOiIiKSxqPWEuRXZlbnQoaSsiLmJzLmFmZml4Iik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGopLGouaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO3RoaXMuYWZmaXhlZD1oLHRoaXMudW5waW49ImJvdHRvbSI9PWg/dGhpcy5nZXRQaW5uZWRPZmZzZXQoKTpudWxsLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoaSkudHJpZ2dlcihpLnJlcGxhY2UoImFmZml4IiwiYWZmaXhlZCIpKyIuYnMuYWZmaXgiKX0iYm90dG9tIj09aCYmdGhpcy4kZWxlbWVudC5vZmZzZXQoe3RvcDpnLWItZn0pfX07dmFyIGQ9YS5mbi5hZmZpeDthLmZuLmFmZml4PWIsYS5mbi5hZmZpeC5Db25zdHJ1Y3Rvcj1jLGEuZm4uYWZmaXgubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmFmZml4PWQsdGhpc30sYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXNweT0iYWZmaXgiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGQ9Yy5kYXRhKCk7ZC5vZmZzZXQ9ZC5vZmZzZXR8fHt9LG51bGwhPWQub2Zmc2V0Qm90dG9tJiYoZC5vZmZzZXQuYm90dG9tPWQub2Zmc2V0Qm90dG9tKSxudWxsIT1kLm9mZnNldFRvcCYmKGQub2Zmc2V0LnRvcD1kLm9mZnNldFRvcCksYi5jYWxsKGMsZCl9KX0pfShqUXVlcnkpOw=="
const jquery_min_js = "LyohIGpRdWVyeSB2My4yLjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1jLmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3duUHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEsYil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFkLmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMi4xIixyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVyeTpxLGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTwwP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPXIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxifSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmM8Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LHIuZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxyLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZkJiYoci5pc1BsYWluT2JqZWN0KGQpfHwoZT1BcnJheS5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZBcnJheS5pc0FycmF5KGMpP2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1tiXT1yLmV4dGVuZChqLGYsZCkpOnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1lKGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9uIj09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9qW2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3AoYSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxhY2UodSx2KX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtpZih3KGEpKXtmb3IoYz1hLmxlbmd0aDtkPGM7ZCsrKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVha31lbHNlIGZvcihkIGluIGEpaWYoYi5jYWxsKGFbZF0sZCxhW2RdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKHMsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHcoT2JqZWN0KGEpKT9yLm1lcmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpoLmNhbGwoYyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6aS5jYWxsKGIsYSxjKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO2Q8YztkKyspYVtlKytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztmPGc7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj0wLGg9W107aWYodyhhKSlmb3IoZD1hLmxlbmd0aDtmPGQ7ZisrKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO2Vsc2UgZm9yKGYgaW4gYSllPWIoYVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChlKTtyZXR1cm4gZy5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGQ9Zi5jYWxsKGFyZ3VtZW50cywyKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxkLmNvbmNhdChmLmNhbGwoYXJndW1lbnRzKSkpfSxlLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8ci5ndWlkKyssZX0sbm93OkRhdGUubm93LHN1cHBvcnQ6b30pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tTeW1ib2wuaXRlcmF0b3JdKSxyLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7alsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iIT09YyYmIXIuaXNXaW5kb3coYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYSl9dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPXt9Lmhhc093blByb3BlcnR5LEQ9W10sRT1ELnBvcCxGPUQucHVzaCxHPUQucHVzaCxIPUQuc2xpY2UsST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLEs9IltcXHgyMFxcdFxcclxcblxcZl0iLEw9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixNPSJcXFsiK0srIiooIitMKyIpKD86IitLKyIqKFsqXiR8IX5dPz0pIitLKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTCsiKSl8KSIrSysiKlxcXSIsTj0iOigiK0wrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK00rIikqKXwuKilcXCl8KSIsTz1uZXcgUmVnRXhwKEsrIisiLCJnIiksUD1uZXcgUmVnRXhwKCJeIitLKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK0srIiskIiwiZyIpLFE9bmV3IFJlZ0V4cCgiXiIrSysiKiwiK0srIioiKSxSPW5ldyBSZWdFeHAoIl4iK0srIiooWz4rfl18IitLKyIpIitLKyIqIiksUz1uZXcgUmVnRXhwKCI9IitLKyIqKFteXFxdJ1wiXSo/KSIrSysiKlxcXSIsImciKSxUPW5ldyBSZWdFeHAoTiksVT1uZXcgUmVnRXhwKCJeIitMKyIkIiksVj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitMKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK0wrInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitNKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTiksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitLKyI/fCgiK0srIil8LikiLCJpZyIpLGFhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6ZDwwP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfSxiYT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJcMCI9PT1hPyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2F9LGRhPWZ1bmN0aW9uKCl7bSgpfSxlYT10YShmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwJiYoImZvcm0iaW4gYXx8ImxhYmVsImluIGEpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0cuYXBwbHkoRD1ILmNhbGwodi5jaGlsZE5vZGVzKSx2LmNoaWxkTm9kZXMpLERbdi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZmEpe0c9e2FwcGx5OkQubGVuZ3RoP2Z1bmN0aW9uKGEsYil7Ri5hcHBseShhLEguY2FsbChiKSl9OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgsZD0wO3doaWxlKGFbYysrXT1iW2QrK10pO2EubGVuZ3RoPWMtMX19fWZ1bmN0aW9uIGdhKGEsYixkLGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9YiYmYi5vd25lckRvY3VtZW50LHc9Yj9iLm5vZGVUeXBlOjk7aWYoZD1kfHxbXSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09dyYmOSE9PXcmJjExIT09dylyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXcmJihsPVouZXhlYyhhKSkpaWYoZj1sWzFdKXtpZig5PT09dyl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHMmJihqPXMuZ2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKGxbMl0pcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPWxbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYSsiICJdJiYoIXF8fCFxLnRlc3QoYSkpKXtpZigxIT09dylzPWIscj1hO2Vsc2UgaWYoIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9rPWsucmVwbGFjZShiYSxjYSk6Yi5zZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89ZyhhKSxoPW8ubGVuZ3RoO3doaWxlKGgtLSlvW2hdPSIjIitrKyIgIitzYShvW2hdKTtyPW8uam9pbigiLCIpLHM9JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxifWlmKHIpdHJ5e3JldHVybiBHLmFwcGx5KGQscy5xdWVyeVNlbGVjdG9yQWxsKHIpKSxkfWNhdGNoKHgpe31maW5hbGx5e2s9PT11JiZiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShQLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBoYSgpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaWEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiZhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuImZvcm0iaW4gYj9iLnBhcmVudE5vZGUmJmIuZGlzYWJsZWQ9PT0hMT8ibGFiZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJlbnROb2RlP2IucGFyZW50Tm9kZS5kaXNhYmxlZD09PWE6Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2FibGVkPT09YXx8Yi5pc0Rpc2FibGVkIT09IWEmJmVhKGIpPT09YTpiLmRpc2FibGVkPT09YToibGFiZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhYiYmIkhUTUwiIT09Yi5ub2RlTmFtZX0sbT1nYS5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlLGc9YT9hLm93bmVyRG9jdW1lbnR8fGE6djtyZXR1cm4gZyE9PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRvY3VtZW50RWxlbWVudD8obj1nLG89bi5kb2N1bWVudEVsZW1lbnQscD0hZihuKSx2IT09biYmKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVkudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSk6KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVudEJ5SWQoYSk7aWYoZil7aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdO2U9Yi5nZXRFbGVtZW50c0J5TmFtZShhKSxkPTA7d2hpbGUoZj1lW2QrK10paWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJldHVybltdfX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnApcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKX0scj1bXSxxPVtdLChjLnFzYT1ZLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLG8uYXBwZW5kQ2hpbGQoYSkuZGlzYWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVkudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmamEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixOKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9WS50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09bnx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0koayxhKS1JKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsZz1bYV0saD1bYl07aWYoIWV8fCFmKXJldHVybiBhPT09bj8tMTpiPT09bj8xOmU/LTE6Zj8xOms/SShrLGEpLUkoayxiKTowO2lmKGU9PT1mKXJldHVybiBsYShhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSlnLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTt3aGlsZShnW2RdPT09aFtkXSlkKys7cmV0dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2RdPT09dj8tMTpoW2RdPT09dj8xOjB9LG4pOm59LGdhLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2EoYSxudWxsLG51bGwsYil9LGdhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShTLCI9JyQxJ10iKSxjLm1hdGNoZXNTZWxlY3RvciYmcCYmIUFbYisiICJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBnYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxnYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGdhLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZDLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxnYS5lc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoYmEsY2EpfSxnYS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1nYS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aWEsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKF8sYWEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKF8sYWEpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxnYS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZnYS5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZULnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK0srIikiK2ErIigiK0srInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWdhLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjohYnx8KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iJiYoZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuW2M8MD9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7YjxjO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUpO3JldHVybiExfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiB1YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB2YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dmEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6d2EocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj13YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6Ry5hcHBseShnLHIpfSl9ZnVuY3Rpb24geWEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10YShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIEkoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2k8ZjtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bdGEodWEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7ZTxmO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+MSYmdWEobSksaT4xJiZzYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxpPGUmJnlhKGEuc2xpY2UoaSxlKSksZTxmJiZ5YShhPWEuc2xpY2UoZSkpLGU8ZiYmc2EoYSkpfW0ucHVzaChjKX1yZXR1cm4gdWEobSl9ZnVuY3Rpb24gemEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPSIwIix0PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYmZC5maW5kLlRBRygiKiIsaykseT13Kz1udWxsPT12PzE6TWF0aC5yYW5kb20oKXx8LjEsej14Lmxlbmd0aDtmb3IoayYmKGo9Zz09PW58fGd8fGspO3MhPT16JiZudWxsIT0obD14W3NdKTtzKyspe2lmKGUmJmwpe289MCxnfHxsLm93bmVyRG9jdW1lbnQ9PT1ufHwobShsKSxoPSFwKTt3aGlsZShxPWFbbysrXSlpZihxKGwsZ3x8bixoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXkpfWMmJigobD0hcSYmbCkmJnItLSxmJiZ0LnB1c2gobCkpfWlmKHIrPXMsYyYmcyE9PXIpe289MDt3aGlsZShxPWJbbysrXSlxKHQsdSxnLGgpO2lmKGYpe2lmKHI+MCl3aGlsZShzLS0pdFtzXXx8dVtzXXx8KHVbc109RS5jYWxsKGkpKTt1PXdhKHUpfUcuYXBwbHkoaSx1KSxrJiYhZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz15LGo9diksdH07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eWEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHphKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsaSxqLGssbCxtPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG49IWUmJmcoYT1tLnNlbGVjdG9yfHxhKTtpZihjPWN8fFtdLDE9PT1uLmxlbmd0aCl7aWYoaT1uWzBdPW5bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBjO20mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGkuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWY9Vi5uZWVkc0NvbnRleHQudGVzdChhKT8wOmkubGVuZ3RoO3doaWxlKGYtLSl7aWYoaj1pW2ZdLGQucmVsYXRpdmVbaz1qLnR5cGVdKWJyZWFrO2lmKChsPWQuZmluZFtrXSkmJihlPWwoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksJC50ZXN0KGlbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoaS5zcGxpY2UoZiwxKSxhPWUubGVuZ3RoJiZzYShpKSwhYSlyZXR1cm4gRy5hcHBseShjLGUpLGM7YnJlYWt9fX1yZXR1cm4obXx8aChhLG4pKShlLGIsIXAsYywhYnx8JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxiKSxjfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtpZighYylyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7aWYoIWMmJiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEosZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFjKXJldHVybiBhW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTtyLmZpbmQ9eCxyLmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBzZXVkb3Msci51bmlxdWVTb3J0PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0LHIuaXNYTUxEb2M9eC5pc1hNTCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rvcj14LmVzY2FwZTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LEE9ci5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBCKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX12YXIgQz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxEPS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gRShhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30pOkQudGVzdChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7YjxkO2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRixHPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sSD1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxGLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkcuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQy50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0gucHJvdG90eXBlPXIuZm4sRj1yKGQpO3ZhciBJPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEo9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGM7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBLKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBLKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEsoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBCKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50OihCKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksci5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ci5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKEpbYV18fHIudW5pcXVlU29ydChlKSxJLnRlc3QoYSkmJmUucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgTD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVvZiBhP00oYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5jdGlvbigpe2ZvcihlPWV8fGEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hpbGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlJiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNoKGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMpP2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIudHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUoKGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBOKGEpe3JldHVybiBhfWZ1bmN0aW9uIE8oYSl7dGhyb3cgYX1mdW5jdGlvbiBQKGEsYixjLGQpe3ZhciBlO3RyeXthJiZyLmlzRnVuY3Rpb24oZT1hLnByb21pc2UpP2UuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGU9YS50aGVuKT9lLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShkKSl9Y2F0Y2goYSl7Yy5hcHBseSh2b2lkIDAsW2FdKX19ci5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNrcygibWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUudGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1bmN0aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFswXSsiV2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZighKGI8Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChhLGcoZixjLE4sZSksZyhmLGMsTyxlKSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxOLGUpLGcoZixjLE8sZSksZyhmLGMsTixjLm5vdGlmeVdpdGgpKSk6KGQhPT1OJiYoaD12b2lkIDAsaT1bYV0pLChlfHxjLnJlc29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXtyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3RhY2tUcmFjZSksYisxPj1mJiYoZCE9PU8mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgsaSkpfX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk4sYS5ub3RpZnlXaXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TikpLGNbMl1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk8pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVhY2goYyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQoYlszXS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIuRGVmZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdpdGgoZCxlKX19O2lmKGI8PTEmJihQKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTt3aGlsZShjLS0pUChlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgUT0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNvbnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZRLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0pfTt2YXIgUj1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUi50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8Ui5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1SLnRoZW47ZnVuY3Rpb24gUygpe2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksCmEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsUyksci5yZWFkeSgpfSJjb21wbGV0ZSI9PT1kLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PWQucmVhZHlTdGF0ZSYmIWQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2Euc2V0VGltZW91dChyLnJlYWR5KTooZC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixTKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLFMpKTt2YXIgVD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09ci50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpVChhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxyLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwocihhKSxjKX0pKSxiKSlmb3IoO2g8aTtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxVPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07ZnVuY3Rpb24gVigpe3RoaXMuZXhwYW5kbz1yLmV4cGFuZG8rVi51aWQrK31WLnVpZD0xLFYucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIGJ8fChiPXt9LFUoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYillW3IuY2FtZWxDYXNlKGIpXT1jO2Vsc2UgZm9yKGQgaW4gYillW3IuY2FtZWxDYXNlKGQpXT1iW2RdO3JldHVybiBlfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW3IuY2FtZWxDYXNlKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT1jP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWQpe2lmKHZvaWQgMCE9PWIpe0FycmF5LmlzQXJyYXkoYik/Yj1iLm1hcChyLmNhbWVsQ2FzZSk6KGI9ci5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIubWF0Y2goTCl8fFtdKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkZWxldGUgZFtiW2NdXX0odm9pZCAwPT09Ynx8ci5pc0VtcHR5T2JqZWN0KGQpKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1iJiYhci5pc0VtcHR5T2JqZWN0KGIpfX07dmFyIFc9bmV3IFYsWD1uZXcgVixZPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sWj0vW0EtWl0vZztmdW5jdGlvbiAkKGEpe3JldHVybiJ0cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYoIm51bGwiPT09YT9udWxsOmE9PT0rYSsiIj8rYTpZLnRlc3QoYSk/SlNPTi5wYXJzZShhKTphKX1mdW5jdGlvbiBfKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKFosIi0kJiIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSQoYyl9Y2F0Y2goZSl7fVguc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBYLmhhc0RhdGEoYSl8fFcuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFguYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1gucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gVy5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1YLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVcuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLF8oZixkLGVbZF0pKSk7Vy5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSl9KTpUKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1YLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1fKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtYLnJlbW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGQ9Vy5nZXQoYSxiKSxjJiYoIWR8fEFycmF5LmlzQXJyYXkoYyk/ZD1XLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ci5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiksZz1mdW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBXLmdldChhLGMpfHxXLmFjY2VzcyhhLGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1cucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0tKWM9Vy5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIGFhPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGJhPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIithYSsiKShbYS16JV0qKSQiLCJpIiksY2E9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxkYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09YS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSkmJiJub25lIj09PXIuY3NzKGEsImRpc3BsYXkiKX0sZWE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O2Z1bmN0aW9uIGZhKGEsYixjLGQpe3ZhciBlLGY9MSxnPTIwLGg9ZD9mdW5jdGlvbigpe3JldHVybiBkLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiByLmNzcyhhLGIsIiIpfSxpPWgoKSxqPWMmJmNbM118fChyLmNzc051bWJlcltiXT8iIjoicHgiKSxrPShyLmNzc051bWJlcltiXXx8InB4IiE9PWomJitpKSYmYmEuZXhlYyhyLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixyLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBnYT17fTtmdW5jdGlvbiBoYShhKXt2YXIgYixjPWEub3duZXJEb2N1bWVudCxkPWEubm9kZU5hbWUsZT1nYVtkXTtyZXR1cm4gZT9lOihiPWMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLGU9ci5jc3MoYiwiZGlzcGxheSIpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSwibm9uZSI9PT1lJiYoZT0iYmxvY2siKSxnYVtkXT1lLGUpfWZ1bmN0aW9uIGlhKGEsYil7Zm9yKHZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWQ9YVtmXSxkLnN0eWxlJiYoYz1kLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKGVbZl09Vy5nZXQoZCwiZGlzcGxheSIpfHxudWxsLGVbZl18fChkLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmZGEoZCkmJihlW2ZdPWhhKGQpKSk6Im5vbmUiIT09YyYmKGVbZl09Im5vbmUiLFcuc2V0KGQsImRpc3BsYXkiLGMpKSk7Zm9yKGY9MDtmPGc7ZisrKW51bGwhPWVbZl0mJihhW2ZdLnN0eWxlLmRpc3BsYXk9ZVtmXSk7cmV0dXJuIGF9ci5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGEodGhpcyk/cih0aGlzKS5zaG93KCk6cih0aGlzKS5oaWRlKCl9KX19KTt2YXIgamE9L14oPzpjaGVja2JveHxyYWRpbykkL2ksa2E9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ksbGE9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLG1hPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07bWEub3B0Z3JvdXA9bWEub3B0aW9uLG1hLnRib2R5PW1hLnRmb290PW1hLmNvbGdyb3VwPW1hLmNhcHRpb249bWEudGhlYWQsbWEudGg9bWEudGQ7ZnVuY3Rpb24gbmEoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJkIoYSxiKT9yLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG9hKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKVcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxXLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfXZhciBwYT0vPHwmIz9cdys7LztmdW5jdGlvbiBxYShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgsaSxqLGssbD1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248bztuKyspaWYoZj1hW25dLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2UobSxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKHBhLnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxoPShrYS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGk9bWFbaF18fG1hLl9kZWZhdWx0LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJlZmlsdGVyKGYpK2lbMl0saz1pWzBdO3doaWxlKGstLSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxnLmNoaWxkTm9kZXMpLGc9bC5maXJzdENoaWxkLGcudGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7bC50ZXh0Q29udGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10paWYoZCYmci5pbkFycmF5KGYsZCk+LTEpZSYmZS5wdXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxnPW5hKGwuYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm9hKGcpLGMpe2s9MDt3aGlsZShmPWdbaysrXSlsYS50ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9cmV0dXJuIGx9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLG8uY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciByYT1kLmRvY3VtZW50RWxlbWVudCxzYT0vXmtleS8sdGE9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHVhPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB2YSgpe3JldHVybiEwfWZ1bmN0aW9uIHdhKCl7cmV0dXJuITF9ZnVuY3Rpb24geGEoKXt0cnl7cmV0dXJuIGQuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHlhKGEsYixjLGQsZSxmKXt2YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYil7InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxjLGM9dm9pZCAwKTtmb3IoaCBpbiBiKXlhKGEsaCxjLGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxsPT1kJiZudWxsPT1lPyhlPWMsZD1jPXZvaWQgMCk6bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2YgYz8oZT1kLGQ9dm9pZCAwKTooZT1kLGQ9YyxjPXZvaWQgMCkpLGU9PT0hMSllPXdhO2Vsc2UgaWYoIWUpcmV0dXJuIGE7cmV0dXJuIDE9PT1mJiYoZz1lLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1XLmdldChhKTtpZihxKXtjLmhhbmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1mLnNlbGVjdG9yKSxlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHJhLGUpLGMuZ3VpZHx8KGMuZ3VpZD1yLmd1aWQrKyksKGk9cS5ldmVudHMpfHwoaT1xLmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwoZz1xLmhhbmRsZT1mdW5jdGlvbihiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP3IuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmci5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZykpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxyLmV2ZW50Lmdsb2JhbFtuXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5oYXNEYXRhKGEpJiZXLmdldChhKTtpZihxJiYoaT1xLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuKXtsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8bixtPWlbbl18fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtyLmlzRW1wdHlPYmplY3QoaSkmJlcucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiPXIuZXZlbnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGo9KFcuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50eXBlXXx8W10saz1yLmV2ZW50LnNwZWNpYWxbYi50eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKylpW2NdPWFyZ3VtZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9ci5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYixqKSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yi5jdXJyZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUoKGc9Zi5oYW5kbGVyc1tkKytdKSYmIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSliLnJuYW1lc3BhY2UmJiFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9iaj1nLGIuZGF0YT1nLmRhdGEsZT0oKHIuZXZlbnQuc3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zy5oYW5kbGVyKS5hcHBseShmLmVsZW0saSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUpPT09ITEmJihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQsaj1hLnRhcmdldDtpZihpJiZqLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9uPj0xKSlmb3IoO2ohPT10aGlzO2o9ai5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ai5kaXNhYmxlZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7YzxpO2MrKylkPWJbY10sZT1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5lZWRzQ29udGV4dD9yKGUsdGhpcykuaW5kZXgoaik+LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSkubGVuZ3RoKSxnW2VdJiZmLnB1c2goZCk7Zi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmZ9KX1yZXR1cm4gaj10aGlzLGk8Yi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIuc2xpY2UoaSl9KSxofSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcgci5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PXhhKCkmJnRoaXMuZm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXM9PT14YSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRoaXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrJiZCKHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwhMX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fSxyLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiByLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT92YTp3YSx0aGlzLnRhcmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4cGFuZG9dPSEwKSk6bmV3IHIuRXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnIuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOndhLGlzUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sci5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS53aGljaCYmc2EudGVzdChhLnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtleUNvZGU6IWEud2hpY2gmJnZvaWQgMCE9PWImJnRhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0JmI/MjowOmEud2hpY2h9fSxyLmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIuY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4geWEodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB5YSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9d2EpLHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHphPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxBYT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxCYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxDYT0vXnRydWVcLyguKikvLERhPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBFYShhLGIpe3JldHVybiBCKGEsInRhYmxlIikmJkIoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP3IoIj50Ym9keSIsYSlbMF18fGE6YX1mdW5jdGlvbiBGYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIEdhKGEpe3ZhciBiPUNhLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihXLmhhc0RhdGEoYSkmJihmPVcuYWNjZXNzKGEpLGc9Vy5zZXQoYixmKSxqPWYuZXZlbnRzKSl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGluIGopZm9yKGM9MCxkPWpbZV0ubGVuZ3RoO2M8ZDtjKyspci5ldmVudC5hZGQoYixlLGpbZV1bY10pfVguaGFzRGF0YShhKSYmKGg9WC5hY2Nlc3MoYSksaT1yLmV4dGVuZCh7fSxoKSxYLnNldChiLGkpKX19ZnVuY3Rpb24gSWEoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJmphLnRlc3QoYS50eXBlKT9iLmNoZWNrZWQ9YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBKYShhLGIsYyxkKXtiPWcuYXBwbHkoW10sYik7dmFyIGUsZixoLGksaixrLGw9MCxtPWEubGVuZ3RoLG49bS0xLHE9YlswXSxzPXIuaXNGdW5jdGlvbihxKTtpZihzfHxtPjEmJiJzdHJpbmciPT10eXBlb2YgcSYmIW8uY2hlY2tDbG9uZSYmQmEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7cyYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLEphKGYsYixjLGQpfSk7aWYobSYmKGU9cWEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxmPWUuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG5hKGUsInNjcmlwdCIpLEZhKSxpPWgubGVuZ3RoO2w8bTtsKyspaj1lLGwhPT1uJiYoaj1yLmNsb25lKGosITAsITApLGkmJnIubWVyZ2UoaCxuYShqLCJzY3JpcHQiKSkpLGMuY2FsbChhW2xdLGosbCk7aWYoaSlmb3Ioaz1oW2gubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsci5tYXAoaCxHYSksbD0wO2w8aTtsKyspaj1oW2xdLGxhLnRlc3Qoai50eXBlfHwiIikmJiFXLmFjY2VzcyhqLCJnbG9iYWxFdmFsIikmJnIuY29udGFpbnMoayxqKSYmKGouc3JjP3IuX2V2YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMpOnAoai50ZXh0Q29udGVudC5yZXBsYWNlKERhLCIiKSxrKSl9cmV0dXJuIGF9ZnVuY3Rpb24gS2EoYSxiLGMpe2Zvcih2YXIgZCxlPWI/ci5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oZD1lW2ZdKTtmKyspY3x8MSE9PWQubm9kZVR5cGV8fHIuY2xlYW5EYXRhKG5hKGQpKSxkLnBhcmVudE5vZGUmJihjJiZyLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudCxkKSYmb2EobmEoZCwic2NyaXB0IikpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh6YSwiPCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPXIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoby5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ci5pc1hNTERvYyhhKSkpZm9yKGc9bmEoaCksZj1uYShhKSxkPTAsZT1mLmxlbmd0aDtkPGU7ZCsrKUlhKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG5hKGEpLGc9Z3x8bmEoaCksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2Vsc2UgSGEoYSxoKTtyZXR1cm4gZz1uYShoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZvYShnLCFpJiZuYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZT1yLmV2ZW50LnNwZWNpYWwsZj0wO3ZvaWQgMCE9PShjPWFbZl0pO2YrKylpZihVKGMpKXtpZihiPWNbVy5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQpOnIucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtjW1cuZXhwYW5kb109dm9pZCAwfWNbWC5leHBhbmRvXSYmKGNbWC5leHBhbmRvXT12b2lkIDApfX19KSxyLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBLYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEthKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9yLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUVhKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9RWEodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoci5jbGVhbkRhdGEobmEoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIUFhLnRlc3QoYSkmJiFtYVsoa2EuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIEphKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobmEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgTGE9L15tYXJnaW4vLE1hPW5ldyBSZWdFeHAoIl4oIithYSsiKSg/IXB4KVthLXolXSskIiwiaSIpLE5hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHlsZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRNTD0iIixyYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUiIT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHJhLnJlbW92ZUNoaWxkKGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkpLHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE9hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8TmEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4ZWxNYXJnaW5SaWdodCgpJiZNYS50ZXN0KGcpJiZMYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2crIiI6Z31mdW5jdGlvbiBQYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12YXIgUWE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFJhPS9eLS0vLFNhPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sVWE9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFZhPWQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gV2EoYSl7aWYoYSBpbiBWYSlyZXR1cm4gYTt2YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVVhLmxlbmd0aDt3aGlsZShjLS0paWYoYT1VYVtjXStiLGEgaW4gVmEpcmV0dXJuIGF9ZnVuY3Rpb24gWGEoYSl7dmFyIGI9ci5jc3NQcm9wc1thXTtyZXR1cm4gYnx8KGI9ci5jc3NQcm9wc1thXT1XYShhKXx8YSksYn1mdW5jdGlvbiBZYShhLGIsYyl7dmFyIGQ9YmEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMl0tKGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBaYShhLGIsYyxkLGUpe3ZhciBmLGc9MDtmb3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MDtmPDQ7Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrY2FbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09ci5jc3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBhZGRpbmciK2NhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2NhW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiAkYShhLGIsYyl7dmFyIGQsZT1OYShhKSxmPU9hKGEsYixlKSxnPSJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZSk7cmV0dXJuIE1hLnRlc3QoZik/ZjooZD1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxmPT09YS5zdHlsZVtiXSksImF1dG8iPT09ZiYmKGY9YVsib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKV0pLGY9cGFyc2VGbG9hdChmKXx8MCxmK1phKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZSkrInB4Iil9ci5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1PYShhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpjfX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOiJjc3NGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpLGo9YS5zdHlsZTtyZXR1cm4gaXx8KGI9WGEoaCkpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTpqW2JdOihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9YmEuZXhlYyhjKSkmJmVbMV0mJihjPWZhKGEsYixlKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNzc051bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaltiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGk/ai5zZXRQcm9wZXJ0eShiLGMpOmpbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpO3JldHVybiBpfHwoYj1YYShoKSksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9T2EoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4gVGEmJihlPVRhW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fGlzRmluaXRlKGYpP2Z8fDA6ZSk6ZX19KSxyLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiFRYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/JGEoYSxiLGQpOmVhKGEsU2EsZnVuY3Rpb24oKXtyZXR1cm4gJGEoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZj1kJiZOYShhKSxnPWQmJlphKGEsYixkLCJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZiksZik7cmV0dXJuIGcmJihlPWJhLmV4ZWMoYykpJiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksWWEoYSxjLGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9UGEoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KE9hKGEsIm1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1lYShhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksci5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ZDw0O2QrKyllW2ErY2FbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sTGEudGVzdChhKXx8KHIuY3NzSG9va3NbYStiXS5zZXQ9WWEpfSksci5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGQ9TmEoYSksZT1iLmxlbmd0aDtnPGU7ZysrKWZbYltnXV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP3Iuc3R5bGUoYSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0pO2Z1bmN0aW9uIF9hKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBfYS5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfXIuVHdlZW49X2EsX2EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfYSxpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHxyLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8KHIuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1fYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6X2EucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9X2EucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz1iPXIuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpfYS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxfYS5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9X2EucHJvdG90eXBlLF9hLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPXIuY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKX0sc2V0OmZ1bmN0aW9uKGEpe3IuZnguc3RlcFthLnByb3BdP3IuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGw9PWEuZWxlbS5zdHlsZVtyLmNzc1Byb3BzW2EucHJvcF1dJiYhci5jc3NIb29rc1thLnByb3BdP2EuZWxlbVthLnByb3BdPWEubm93OnIuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19LF9hLnByb3BIb29rcy5zY3JvbGxUb3A9X2EucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sci5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxyLmZ4PV9hLnByb3RvdHlwZS5pbml0LHIuZnguc3RlcD17fTt2YXIgYWIsYmIsY2I9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGRiPS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gZWIoKXtiYiYmKGQuaGlkZGVuPT09ITEmJmEucmVxdWVzdEFuaW1hdGlvbkZyYW1lP2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGViKTphLnNldFRpbWVvdXQoZWIsci5meC5pbnRlcnZhbCksci5meC50aWNrKCkpfWZ1bmN0aW9uIGZiKCl7cmV0dXJuIGEuc2V0VGltZW91dChmdW5jdGlvbigpe2FiPXZvaWQgMH0pLGFiPXIubm93KCl9ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxkPTAsZT17aGVpZ2h0OmF9O2ZvcihiPWI/MTowO2Q8NDtkKz0yLWIpYz1jYVtkXSxlWyJtYXJnaW4iK2NdPWVbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIGhiKGEsYixjKXtmb3IodmFyIGQsZT0oa2IudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoa2IudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gaWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD0id2lkdGgiaW4gYnx8ImhlaWdodCJpbiBiLG09dGhpcyxuPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJmRhKGEpLHE9Vy5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGc9ci5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWcudW5xdWV1ZWQmJihnLnVucXVldWVkPTAsaD1nLmVtcHR5LmZpcmUsZy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7Zy51bnF1ZXVlZHx8aCgpfSksZy51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtnLnVucXVldWVkLS0sci5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8Zy5lbXB0eS5maXJlKCl9KX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxjYi50ZXN0KGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bltkXT1xJiZxW2RdfHxyLnN0eWxlKGEsZCl9aWYoaT0hci5pc0VtcHR5T2JqZWN0KGIpLGl8fCFyLmlzRW1wdHlPYmplY3Qobikpe2wmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bby5vdmVyZmxvdyxvLm92ZXJmbG93WCxvLm92ZXJmbG93WV0saj1xJiZxLmRpc3BsYXksbnVsbD09aiYmKGo9Vy5nZXQoYSwiZGlzcGxheSIpKSxrPXIuY3NzKGEsImRpc3BsYXkiKSwibm9uZSI9PT1rJiYoaj9rPWo6KGlhKFthXSwhMCksaj1hLnN0eWxlLmRpc3BsYXl8fGosaz1yLmNzcyhhLCJkaXNwbGF5IiksaWEoW2FdKSkpLCgiaW5saW5lIj09PWt8fCJpbmxpbmUtYmxvY2siPT09ayYmbnVsbCE9aikmJiJub25lIj09PXIuY3NzKGEsImZsb2F0IikmJihpfHwobS5kb25lKGZ1bmN0aW9uKCl7by5kaXNwbGF5PWp9KSxudWxsPT1qJiYoaz1vLmRpc3BsYXksaj0ibm9uZSI9PT1rPyIiOmspKSxvLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoby5vdmVyZmxvdz0iaGlkZGVuIixtLmFsd2F5cyhmdW5jdGlvbigpe28ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxvLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG8ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksaT0hMTtmb3IoZCBpbiBuKWl8fChxPyJoaWRkZW4iaW4gcSYmKHA9cS5oaWRkZW4pOnE9Vy5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpqfSksZiYmKHEuaGlkZGVuPSFwKSxwJiZpYShbYV0sITApLG0uZG9uZShmdW5jdGlvbigpe3B8fGlhKFthXSksVy5yZW1vdmUoYSwiZnhzaG93Iik7Zm9yKGQgaW4gbilyLnN0eWxlKGEsZCxuW2RdKX0pKSxpPWhiKHA/cVtkXTowLGQsbSksZCBpbiBxfHwocVtkXT1pLnN0YXJ0LHAmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9MCkpfX1mdW5jdGlvbiBqYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPXIuY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sQXJyYXkuaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9ci5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBrYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1rYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPXIuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPWFifHxmYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtnPGk7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksZjwxJiZpP2M6KGl8fGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpyLmV4dGVuZCh7fSxiKSxvcHRzOnIuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpyLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmFifHxmYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9ci5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihqYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmPGc7ZisrKWlmKGQ9a2IucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIHIuaXNGdW5jdGlvbihkLnN0b3ApJiYoci5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPXIucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiByLm1hcChrLGhiLGopLHIuaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpLHIuZngudGltZXIoci5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksan1yLkFuaW1hdGlvbj1yLmV4dGVuZChrYix7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIGZhKGMuZWxlbSxhLGJhLmV4ZWMoYiksYyksY31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7ci5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLm1hdGNoKEwpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWM9YVtkXSxrYi50d2VlbmVyc1tjXT1rYi50d2VlbmVyc1tjXXx8W10sa2IudHdlZW5lcnNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyczpbaWJdLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/a2IucHJlZmlsdGVycy51bnNoaWZ0KGEpOmtiLnByZWZpbHRlcnMucHVzaChhKX19KSxyLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/ci5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxyLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXIuaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIHIuZngub2ZmP2QuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIGQuZHVyYXRpb24mJihkLmR1cmF0aW9uIGluIHIuZnguc3BlZWRzP2QuZHVyYXRpb249ci5meC5zcGVlZHNbZC5kdXJhdGlvbl06ZC5kdXJhdGlvbj1yLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxyLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihkYSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsci5leHRlbmQoe30sYSksZik7KGV8fFcuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1XLmdldCh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZkYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1XLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2I8ZztiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGdiKGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpnYigic2hvdyIpLHNsaWRlVXA6Z2IoImhpZGUiKSxzbGlkZVRvZ2dsZTpnYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ci50aW1lcnM7Zm9yKGFiPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksYWI9dm9pZCAwfSxyLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksci5meC5zdGFydCgpfSxyLmZ4LmludGVydmFsPTEzLHIuZnguc3RhcnQ9ZnVuY3Rpb24oKXtiYnx8KGJiPSEwLGViKCkpfSxyLmZ4LnN0b3A9ZnVuY3Rpb24oKXtiYj1udWxsfSxyLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxyLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9ci5meD9yLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixvLmNoZWNrT249IiIhPT1hLnZhbHVlLG8ub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxhPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJhZGlvIixvLnJhZGlvVmFsdWU9InQiPT09YS52YWx1ZX0oKTt2YXIgbGIsbWI9ci5leHByLmF0dHJIYW5kbGU7ci5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLHIuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxyLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP3IucHJvcChhLGIsYyk6KDE9PT1mJiZyLmlzWE1MRG9jKGEpfHwoZT1yLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoci5leHByLm1hdGNoLmJvb2wudGVzdChiKT9sYjp2b2lkIDApKSx2b2lkIDAhPT1jP251bGw9PT1jP3ZvaWQgci5yZW1vdmVBdHRyKGEsYik6ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDooZD1yLmZpbmQuYXR0cihhLGIpLApudWxsPT1kP3ZvaWQgMDpkKSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIW8ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJkIoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTAsZT1iJiZiLm1hdGNoKEwpO2lmKGUmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZVtkKytdKWEucmVtb3ZlQXR0cmlidXRlKGMpfX0pLGxiPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/ci5yZW1vdmVBdHRyKGEsYyk6YS5zZXRBdHRyaWJ1dGUoYyxjKSxjfX0sci5lYWNoKHIuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9bWJbYl18fHIuZmluZC5hdHRyO21iW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmLGc9Yi50b0xvd2VyQ2FzZSgpO3JldHVybiBkfHwoZj1tYltnXSxtYltnXT1lLGU9bnVsbCE9YyhhLGIsZCk/ZzpudWxsLG1iW2ddPWYpLGV9fSk7dmFyIG5iPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksb2I9L14oPzphfGFyZWEpJC9pO3IuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFQodGhpcyxyLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3IucHJvcEZpeFthXXx8YV19KX19KSxyLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gMT09PWYmJnIuaXNYTUxEb2MoYSl8fChiPXIucHJvcEZpeFtiXXx8YixlPXIucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYj1yLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOm5iLnRlc3QoYS5ub2RlTmFtZSl8fG9iLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLG8ub3B0U2VsZWN0ZWR8fChyLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksci5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtyLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZnVuY3Rpb24gcGIoYSl7dmFyIGI9YS5tYXRjaChMKXx8W107cmV0dXJuIGIuam9pbigiICIpfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifXIuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHFiKHRoaXMpKSl9KTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pZC5pbmRleE9mKCIgIitmKyIgIik8MCYmKGQrPWYrIiAiKTtoPXBiKGQpLGUhPT1oJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYixxYih0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pd2hpbGUoZC5pbmRleE9mKCIgIitmKyIgIik+LTEpZD1kLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1wYihkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYiYmInN0cmluZyI9PT1jP2I/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOnIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHFiKHRoaXMpLGIpLGIpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsZCxlLGY7aWYoInN0cmluZyI9PT1jKXtkPTAsZT1yKHRoaXMpLGY9YS5tYXRjaChMKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1jfHwoYj1xYih0aGlzKSxiJiZXLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixiKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixifHxhPT09ITE/IiI6Vy5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wO2I9IiAiK2ErIiAiO3doaWxlKGM9dGhpc1tkKytdKWlmKDE9PT1jLm5vZGVUeXBlJiYoIiAiK3BiKHFiKGMpKSsiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHJiPS9cci9nO3IuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1yLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMscih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOkFycmF5LmlzQXJyYXkoZSkmJihlPXIubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPXIudmFsSG9va3NbdGhpcy50eXBlXXx8ci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPXIudmFsSG9va3NbZS50eXBlXXx8ci52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UocmIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLHIuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOnBiKHIudGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLm9wdGlvbnMsZj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10saT1nP2YrMTplLmxlbmd0aDtmb3IoZD1mPDA/aTpnP2Y6MDtkPGk7ZCsrKWlmKGM9ZVtkXSwoYy5zZWxlY3RlZHx8ZD09PWYpJiYhYy5kaXNhYmxlZCYmKCFjLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFCKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9cihjKS52YWwoKSxnKXJldHVybiBiO2gucHVzaChiKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPXIubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWQ9ZVtnXSwoZC5zZWxlY3RlZD1yLmluQXJyYXkoci52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPi0xKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksci5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ci52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPXIuaW5BcnJheShyKGEpLnZhbCgpLGIpPi0xfX0sby5jaGVja09ufHwoci52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBzYj0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87ci5leHRlbmQoci5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihiLGMsZSxmKXt2YXIgZyxoLGksaixrLG0sbixvPVtlfHxkXSxwPWwuY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1sLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWk9ZT1lfHxkLDMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmIXNiLnRlc3QocCtyLmV2ZW50LnRyaWdnZXJlZCkmJihwLmluZGV4T2YoIi4iKT4tMSYmKHE9cC5zcGxpdCgiLiIpLHA9cS5zaGlmdCgpLHEuc29ydCgpKSxrPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbci5leHBhbmRvXT9iOm5ldyByLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1mPzI6MyxiLm5hbWVzcGFjZT1xLmpvaW4oIi4iKSxiLnJuYW1lc3BhY2U9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWUpLGM9bnVsbD09Yz9bYl06ci5tYWtlQXJyYXkoYyxbYl0pLG49ci5ldmVudC5zcGVjaWFsW3BdfHx7fSxmfHwhbi50cmlnZ2VyfHxuLnRyaWdnZXIuYXBwbHkoZSxjKSE9PSExKSl7aWYoIWYmJiFuLm5vQnViYmxlJiYhci5pc1dpbmRvdyhlKSl7Zm9yKGo9bi5kZWxlZ2F0ZVR5cGV8fHAsc2IudGVzdChqK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGk9aDtpPT09KGUub3duZXJEb2N1bWVudHx8ZCkmJm8ucHVzaChpLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvd3x8YSl9Zz0wO3doaWxlKChoPW9bZysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPWc+MT9qOm4uYmluZFR5cGV8fHAsbT0oVy5nZXQoaCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZXLmdldChoLCJoYW5kbGUiKSxtJiZtLmFwcGx5KGgsYyksbT1rJiZoW2tdLG0mJm0uYXBwbHkmJlUoaCkmJihiLnJlc3VsdD1tLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXAsZnx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bi5fZGVmYXVsdCYmbi5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpIT09ITF8fCFVKGUpfHxrJiZyLmlzRnVuY3Rpb24oZVtwXSkmJiFyLmlzV2luZG93KGUpJiYoaT1lW2tdLGkmJihlW2tdPW51bGwpLHIuZXZlbnQudHJpZ2dlcmVkPXAsZVtwXSgpLHIuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxpJiYoZVtrXT1pKSksYi5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ci5leHRlbmQobmV3IHIuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwfSk7ci5ldmVudC50cmlnZ2VyKGQsbnVsbCxiKX19KSxyLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtpZihjKXJldHVybiByLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pLHIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3IuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLHIuZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KSxvLmZvY3VzaW49Im9uZm9jdXNpbiJpbiBhLG8uZm9jdXNpbnx8ci5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe3IuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxyLmV2ZW50LmZpeChhKSl9O3IuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1XLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLFcuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vy5hY2Nlc3MoZCxiKS0xO2U/Vy5hY2Nlc3MoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxXLnJlbW92ZShkLGIpKX19fSk7dmFyIHRiPWEubG9jYXRpb24sdWI9ci5ub3coKSx2Yj0vXD8vO3IucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGM7aWYoIWJ8fCJzdHJpbmciIT10eXBlb2YgYilyZXR1cm4gbnVsbDt0cnl7Yz0obmV3IGEuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKX1jYXRjaChkKXtjPXZvaWQgMH1yZXR1cm4gYyYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxyLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgd2I9L1xbXF0kLyx4Yj0vXHI/XG4vZyx5Yj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksemI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEFiKGEsYixjLGQpe3ZhciBlO2lmKEFycmF5LmlzQXJyYXkoYikpci5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHx3Yi50ZXN0KGEpP2QoYSxlKTpBYihhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09ci50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpQWIoYSsiWyIrZSsiXSIsYltlXSxjLGQpfXIucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmlzRnVuY3Rpb24oYik/YigpOmI7ZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09Yz8iIjpjKX07aWYoQXJyYXkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFyLmlzUGxhaW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlBYihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIil9LHIuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3IubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ6Yi50ZXN0KHRoaXMubm9kZU5hbWUpJiYheWIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWphLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOkFycmF5LmlzQXJyYXkoYyk/ci5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHhiLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZSh4YiwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBCYj0vJTIwL2csQ2I9LyMuKiQvLERiPS8oWz8mXSlfPVteJl0qLyxFYj0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLEZiPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLEdiPS9eKD86R0VUfEhFQUQpJC8sSGI9L15cL1wvLyxJYj17fSxKYj17fSxLYj0iKi8iLmNvbmNhdCgiKiIpLExiPWQuY3JlYXRlRWxlbWVudCgiYSIpO0xiLmhyZWY9dGIuaHJlZjtmdW5jdGlvbiBNYihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWIsYj0iKiIpO3ZhciBkLGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8W107aWYoci5pc0Z1bmN0aW9uKGMpKXdoaWxlKGQ9ZltlKytdKSIrIj09PWRbMF0/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTmIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxyLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBPYihhLGIpe3ZhciBjLGQsZT1yLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17fSkpW2NdPWJbY10pO3JldHVybiBkJiZyLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gUGIoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWQmJihkPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihkKWZvcihlIGluIGgpaWYoaFtlXSYmaFtlXS50ZXN0KGQpKXtpLnVuc2hpZnQoZSk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGUgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tlKyIgIitpWzBdXSl7Zj1lO2JyZWFrfWd8fChnPWUpfWY9Znx8Z31pZihmKXJldHVybiBmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl19ZnVuY3Rpb24gUWIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1yLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6dGIuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6RmIudGVzdCh0Yi5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpLYix0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6ci5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/T2IoT2IoYSxyLmFqYXhTZXR0aW5ncyksYik6T2Ioci5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6TWIoSWIpLGFqYXhUcmFuc3BvcnQ6TWIoSmIpLGFqYXg6ZnVuY3Rpb24oYixjKXsib2JqZWN0Ij09dHlwZW9mIGImJihjPWIsYj12b2lkIDApLGM9Y3x8e307dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbz1yLmFqYXhTZXR1cCh7fSxjKSxwPW8uY29udGV4dHx8byxxPW8uY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT9yKHApOnIuZXZlbnQscz1yLkRlZmVycmVkKCksdD1yLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx1PW8uc3RhdHVzQ29kZXx8e30sdj17fSx3PXt9LHg9ImNhbmNlbGVkIix5PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoayl7aWYoIWgpe2g9e307d2hpbGUoYj1FYi5leGVjKGcpKWhbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9aFthLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGs/ZzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWsmJihhPXdbYS50b0xvd2VyQ2FzZSgpXT13W2EudG9Mb3dlckNhc2UoKV18fGEsdlthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1rJiYoby5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoayl5LmFsd2F5cyhhW3kuc3RhdHVzXSk7ZWxzZSBmb3IoYiBpbiBhKXVbYl09W3VbYl0sYVtiXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHg7cmV0dXJuIGUmJmUuYWJvcnQoYiksQSgwLGIpLHRoaXN9fTtpZihzLnByb21pc2UoeSksby51cmw9KChifHxvLnVybHx8dGIuaHJlZikrIiIpLnJlcGxhY2UoSGIsdGIucHJvdG9jb2wrIi8vIiksby50eXBlPWMubWV0aG9kfHxjLnR5cGV8fG8ubWV0aG9kfHxvLnR5cGUsby5kYXRhVHlwZXM9KG8uZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8WyIiXSxudWxsPT1vLmNyb3NzRG9tYWluKXtqPWQuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtqLmhyZWY9by51cmwsai5ocmVmPWouaHJlZixvLmNyb3NzRG9tYWluPUxiLnByb3RvY29sKyIvLyIrTGIuaG9zdCE9ai5wcm90b2NvbCsiLy8iK2ouaG9zdH1jYXRjaCh6KXtvLmNyb3NzRG9tYWluPSEwfX1pZihvLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygby5kYXRhJiYoby5kYXRhPXIucGFyYW0oby5kYXRhLG8udHJhZGl0aW9uYWwpKSxOYihJYixvLGMseSksaylyZXR1cm4geTtsPXIuZXZlbnQmJm8uZ2xvYmFsLGwmJjA9PT1yLmFjdGl2ZSsrJiZyLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLG8udHlwZT1vLnR5cGUudG9VcHBlckNhc2UoKSxvLmhhc0NvbnRlbnQ9IUdiLnRlc3Qoby50eXBlKSxmPW8udXJsLnJlcGxhY2UoQ2IsIiIpLG8uaGFzQ29udGVudD9vLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJjA9PT0oby5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoby5kYXRhPW8uZGF0YS5yZXBsYWNlKEJiLCIrIikpOihuPW8udXJsLnNsaWNlKGYubGVuZ3RoKSxvLmRhdGEmJihmKz0odmIudGVzdChmKT8iJiI6Ij8iKStvLmRhdGEsZGVsZXRlIG8uZGF0YSksby5jYWNoZT09PSExJiYoZj1mLnJlcGxhY2UoRGIsIiQxIiksbj0odmIudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3ViKysgK24pLG8udXJsPWYrbiksby5pZk1vZGlmaWVkJiYoci5sYXN0TW9kaWZpZWRbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHIubGFzdE1vZGlmaWVkW2ZdKSxyLmV0YWdbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsci5ldGFnW2ZdKSksKG8uZGF0YSYmby5oYXNDb250ZW50JiZvLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ5LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsby5jb250ZW50VHlwZSkseS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLG8uZGF0YVR5cGVzWzBdJiZvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1dP28uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0rKCIqIiE9PW8uZGF0YVR5cGVzWzBdPyIsICIrS2IrIjsgcT0wLjAxIjoiIik6by5hY2NlcHRzWyIqIl0pO2ZvcihtIGluIG8uaGVhZGVycyl5LnNldFJlcXVlc3RIZWFkZXIobSxvLmhlYWRlcnNbbV0pO2lmKG8uYmVmb3JlU2VuZCYmKG8uYmVmb3JlU2VuZC5jYWxsKHAseSxvKT09PSExfHxrKSlyZXR1cm4geS5hYm9ydCgpO2lmKHg9ImFib3J0Iix0LmFkZChvLmNvbXBsZXRlKSx5LmRvbmUoby5zdWNjZXNzKSx5LmZhaWwoby5lcnJvciksZT1OYihKYixvLGMseSkpe2lmKHkucmVhZHlTdGF0ZT0xLGwmJnEudHJpZ2dlcigiYWpheFNlbmQiLFt5LG9dKSxrKXJldHVybiB5O28uYXN5bmMmJm8udGltZW91dD4wJiYoaT1hLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmFib3J0KCJ0aW1lb3V0Iil9LG8udGltZW91dCkpO3RyeXtrPSExLGUuc2VuZCh2LEEpfWNhdGNoKHope2lmKGspdGhyb3cgejtBKC0xLHopfX1lbHNlIEEoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIEEoYixjLGQsaCl7dmFyIGosbSxuLHYsdyx4PWM7a3x8KGs9ITAsaSYmYS5jbGVhclRpbWVvdXQoaSksZT12b2lkIDAsZz1ofHwiIix5LnJlYWR5U3RhdGU9Yj4wPzQ6MCxqPWI+PTIwMCYmYjwzMDB8fDMwND09PWIsZCYmKHY9UGIobyx5LGQpKSx2PVFiKG8sdix5LGopLGo/KG8uaWZNb2RpZmllZCYmKHc9eS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihyLmxhc3RNb2RpZmllZFtmXT13KSx3PXkuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYoci5ldGFnW2ZdPXcpKSwyMDQ9PT1ifHwiSEVBRCI9PT1vLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1iP3g9Im5vdG1vZGlmaWVkIjooeD12LnN0YXRlLG09di5kYXRhLG49di5lcnJvcixqPSFuKSk6KG49eCwhYiYmeHx8KHg9ImVycm9yIixiPDAmJihiPTApKSkseS5zdGF0dXM9Yix5LnN0YXR1c1RleHQ9KGN8fHgpKyIiLGo/cy5yZXNvbHZlV2l0aChwLFttLHgseV0pOnMucmVqZWN0V2l0aChwLFt5LHgsbl0pLHkuc3RhdHVzQ29kZSh1KSx1PXZvaWQgMCxsJiZxLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt5LG8saj9tOm5dKSx0LmZpcmVXaXRoKHAsW3kseF0pLGwmJihxLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3ksb10pLC0tci5hY3RpdmV8fHIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB5fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gci5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHIuZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLHIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe3JbYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIHIuaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLHIuYWpheChyLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sci5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksci5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gci5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxyLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gdGhpc1swXSYmKHIuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPXIoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiByLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXIodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9ci5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7cih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxyLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9LHIuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxyLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319O3ZhciBSYj17MDoyMDAsMTIyMzoyMDR9LFNiPXIuYWpheFNldHRpbmdzLnhocigpO28uY29ycz0hIVNiJiYid2l0aENyZWRlbnRpYWxzImluIFNiLG8uYWpheD1TYj0hIVNiLHIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXt2YXIgYyxkO2lmKG8uY29yc3x8U2ImJiFiLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1iLnhocigpO2lmKGgub3BlbihiLnR5cGUsYi51cmwsYi5hc3luYyxiLnVzZXJuYW1lLGIucGFzc3dvcmQpLGIueGhyRmllbGRzKWZvcihnIGluIGIueGhyRmllbGRzKWhbZ109Yi54aHJGaWVsZHNbZ107Yi5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYi5taW1lVHlwZSksYi5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO2ZvcihnIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtjJiYoYz1kPWgub25sb2FkPWgub25lcnJvcj1oLm9uYWJvcnQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09YT9oLmFib3J0KCk6ImVycm9yIj09PWE/Im51bWJlciIhPXR5cGVvZiBoLnN0YXR1cz9mKDAsImVycm9yIik6ZihoLnN0YXR1cyxoLnN0YXR1c1RleHQpOmYoUmJbaC5zdGF0dXNdfHxoLnN0YXR1cyxoLnN0YXR1c1RleHQsInRleHQiIT09KGgucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIGgucmVzcG9uc2VUZXh0P3tiaW5hcnk6aC5yZXNwb25zZX06e3RleHQ6aC5yZXNwb25zZVRleHR9LGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LGgub25sb2FkPWMoKSxkPWgub25lcnJvcj1jKCJlcnJvciIpLHZvaWQgMCE9PWgub25hYm9ydD9oLm9uYWJvcnQ9ZDpoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1oLnJlYWR5U3RhdGUmJmEuc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmQoKX0pfSxjPWMoImFib3J0Iik7dHJ5e2guc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCl9Y2F0Y2goaSl7aWYoYyl0aHJvdyBpfX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pLHIuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEpfSksci5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ2xvYmFsRXZhbChhKSxhfX19KSxyLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksci5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXtiPXIoIjxzY3JpcHQ+IikucHJvcCh7Y2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7Yi5yZW1vdmUoKSxjPW51bGwsYSYmZigiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0pLGQuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2YXIgVGI9W10sVWI9Lyg9KVw/KD89JnwkKXxcP1w/LztyLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9VGIucG9wKCl8fHIuZXhwYW5kbysiXyIrdWIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLHIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKFViLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmVWIudGVzdChiLmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1iLmpzb25wQ2FsbGJhY2s9ci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/YltoXT1iW2hdLnJlcGxhY2UoVWIsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHZiLnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxyLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY/cihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNvbnBDYWxsYmFjayxUYi5wdXNoKGUpKSxnJiZyLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZvaWQgMH0pLCJzY3JpcHQifSksby5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT1kLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTtyZXR1cm4gYS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09YS5jaGlsZE5vZGVzLmxlbmd0aH0oKSxyLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybltdOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSk7dmFyIGUsZixnO3JldHVybiBifHwoby5jcmVhdGVIVE1MRG9jdW1lbnQ/KGI9ZC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGU9Yi5jcmVhdGVFbGVtZW50KCJiYXNlIiksZS5ocmVmPWQubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9ZCksZj1DLmV4ZWMoYSksZz0hYyYmW10sZj9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1xYShbYV0sYixnKSxnJiZnLmxlbmd0aCYmcihnKS5yZW1vdmUoKSxyLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpfSxyLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD4tMSYmKGQ9cGIoYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLHIuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmci5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP3IoIjxkaXY+IikuYXBwZW5kKHIucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sci5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksci5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ3JlcChyLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0sci5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1yLmNzcyhhLCJwb3NpdGlvbiIpLGw9cihhKSxtPXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY9ci5jc3MoYSwidG9wIiksaT1yLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT1rKSYmKGYraSkuaW5kZXhPZigiYXV0byIpPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxvYXQoZil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxyLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsci5leHRlbmQoe30saCkpKSxudWxsIT1iLnRvcCYmKG0udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG0ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG0pOmwuY3NzKG0pfX0sci5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3Iub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQsZSxmPXRoaXNbMF07aWYoZilyZXR1cm4gZi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGI9Zi5vd25lckRvY3VtZW50LGM9Yi5kb2N1bWVudEVsZW1lbnQsZT1iLmRlZmF1bHRWaWV3LHt0b3A6ZC50b3ArZS5wYWdlWU9mZnNldC1jLmNsaWVudFRvcCxsZWZ0OmQubGVmdCtlLnBhZ2VYT2Zmc2V0LWMuY2xpZW50TGVmdH0pOnt0b3A6MCxsZWZ0OjB9fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PXIuY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLEIoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkPXt0b3A6ZC50b3Arci5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxsZWZ0OmQubGVmdCtyLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKX0pLHt0b3A6Yi50b3AtZC50b3Atci5jc3MoYywibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtZC5sZWZ0LXIuY3NzKGMsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYic3RhdGljIj09PXIuY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8cmF9KX19KSxyLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlPZmZzZXQiPT09YjtyLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmO3JldHVybiByLmlzV2luZG93KGEpP2Y9YTo5PT09YS5ub2RlVHlwZSYmKGY9YS5kZWZhdWx0Vmlldyksdm9pZCAwPT09ZT9mP2ZbYl06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNldCk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09UGEoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7aWYoYylyZXR1cm4gYz1PYShhLGIpLE1hLnRlc3QoYyk/cihhKS5wb3NpdGlvbigpW2JdKyJweCI6Y30pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5kb3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5jc3MoYixjLGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLHIuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KSxyLmhvbGRSZWFkeT1mdW5jdGlvbihhKXthP3IucmVhZHlXYWl0Kys6ci5yZWFkeSghMCl9LHIuaXNBcnJheT1BcnJheS5pc0FycmF5LHIucGFyc2VKU09OPUpTT04ucGFyc2Usci5ub2RlTmFtZT1CLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiByfSk7dmFyIFZiPWEualF1ZXJ5LFdiPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPVdiKSxiJiZhLmpRdWVyeT09PXImJihhLmpRdWVyeT1WYikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7Cg=="
const flv_min_js = "IWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsdmpzPWUoKX19KGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGZ1bmN0aW9uIGUodCxuLGkpe2Z1bmN0aW9uIHIoYSxvKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFvJiZ1KXJldHVybiB1KGEsITApO2lmKHMpcmV0dXJuIHMoYSwhMCk7dmFyIGw9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IGwuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsbH12YXIgZD1uW2FdPXtleHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwoZC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1bMV1bZV07cmV0dXJuIHIobj9uOmUpfSxkLGQuZXhwb3J0cyxlLHQsbixpKX1yZXR1cm4gblthXS5leHBvcnRzfWZvcih2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxhPTA7YTxpLmxlbmd0aDthKyspcihpW2FdKTtyZXR1cm4gcn0oezE6W2Z1bmN0aW9uKHQsbixpKXsoZnVuY3Rpb24ocixzKXshZnVuY3Rpb24odCxyKXsib2JqZWN0Ij09dHlwZW9mIGkmJnZvaWQgMCE9PW4/bi5leHBvcnRzPXIoKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5hbWQ/ZShyKTp0LkVTNlByb21pc2U9cigpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV9ZnVuY3Rpb24gbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiBpKGUpe3E9ZX1mdW5jdGlvbiBhKGUpe0s9ZX1mdW5jdGlvbiBvKCl7cmV0dXJuIHZvaWQgMCE9PUg/ZnVuY3Rpb24oKXtIKGwpfTp1KCl9ZnVuY3Rpb24gdSgpe3ZhciBlPXNldFRpbWVvdXQ7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUobCwxKX19ZnVuY3Rpb24gbCgpe2Zvcih2YXIgZT0wO2U8ejtlKz0yKXsoMCxKW2VdKShKW2UrMV0pLEpbZV09dm9pZCAwLEpbZSsxXT12b2lkIDB9ej0wfWZ1bmN0aW9uIGQoZSx0KXt2YXIgbj1hcmd1bWVudHMsaT10aGlzLHI9bmV3IHRoaXMuY29uc3RydWN0b3IoZik7dm9pZCAwPT09cltlZV0mJkMocik7dmFyIHM9aS5fc3RhdGU7cmV0dXJuIHM/ZnVuY3Rpb24oKXt2YXIgZT1uW3MtMV07SyhmdW5jdGlvbigpe3JldHVybiBPKHMscixlLGkuX3Jlc3VsdCl9KX0oKTpMKGkscixlLHQpLHJ9ZnVuY3Rpb24gaChlKXt2YXIgdD10aGlzO2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIGU7dmFyIG49bmV3IHQoZik7cmV0dXJuIEUobixlKSxufWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gYygpe3JldHVybiBuZXcgVHlwZUVycm9yKCJZb3UgY2Fubm90IHJlc29sdmUgYSBwcm9taXNlIHdpdGggaXRzZWxmIil9ZnVuY3Rpb24gXygpe3JldHVybiBuZXcgVHlwZUVycm9yKCJBIHByb21pc2VzIGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuIil9ZnVuY3Rpb24gbShlKXt0cnl7cmV0dXJuIGUudGhlbn1jYXRjaChlKXtyZXR1cm4gcmUuZXJyb3I9ZSxyZX19ZnVuY3Rpb24gcChlLHQsbixpKXt0cnl7ZS5jYWxsKHQsbixpKX1jYXRjaChlKXtyZXR1cm4gZX19ZnVuY3Rpb24gdihlLHQsbil7SyhmdW5jdGlvbihlKXt2YXIgaT0hMSxyPXAobix0LGZ1bmN0aW9uKG4pe2l8fChpPSEwLHQhPT1uP0UoZSxuKTpTKGUsbikpfSxmdW5jdGlvbih0KXtpfHwoaT0hMCxrKGUsdCkpfSwiU2V0dGxlOiAiKyhlLl9sYWJlbHx8IiB1bmtub3duIHByb21pc2UiKSk7IWkmJnImJihpPSEwLGsoZSxyKSl9LGUpfWZ1bmN0aW9uIGcoZSx0KXt0Ll9zdGF0ZT09PW5lP1MoZSx0Ll9yZXN1bHQpOnQuX3N0YXRlPT09aWU/ayhlLHQuX3Jlc3VsdCk6TCh0LHZvaWQgMCxmdW5jdGlvbih0KXtyZXR1cm4gRShlLHQpfSxmdW5jdGlvbih0KXtyZXR1cm4gayhlLHQpfSl9ZnVuY3Rpb24geShlLHQsaSl7dC5jb25zdHJ1Y3Rvcj09PWUuY29uc3RydWN0b3ImJmk9PT1kJiZ0LmNvbnN0cnVjdG9yLnJlc29sdmU9PT1oP2coZSx0KTppPT09cmU/KGsoZSxyZS5lcnJvcikscmUuZXJyb3I9bnVsbCk6dm9pZCAwPT09aT9TKGUsdCk6bihpKT92KGUsdCxpKTpTKGUsdCl9ZnVuY3Rpb24gRSh0LG4pe3Q9PT1uP2sodCxjKCkpOmUobik/eSh0LG4sbShuKSk6Uyh0LG4pfWZ1bmN0aW9uIGIoZSl7ZS5fb25lcnJvciYmZS5fb25lcnJvcihlLl9yZXN1bHQpLHcoZSl9ZnVuY3Rpb24gUyhlLHQpe2UuX3N0YXRlPT09dGUmJihlLl9yZXN1bHQ9dCxlLl9zdGF0ZT1uZSwwIT09ZS5fc3Vic2NyaWJlcnMubGVuZ3RoJiZLKHcsZSkpfWZ1bmN0aW9uIGsoZSx0KXtlLl9zdGF0ZT09PXRlJiYoZS5fc3RhdGU9aWUsZS5fcmVzdWx0PXQsSyhiLGUpKX1mdW5jdGlvbiBMKGUsdCxuLGkpe3ZhciByPWUuX3N1YnNjcmliZXJzLHM9ci5sZW5ndGg7ZS5fb25lcnJvcj1udWxsLHJbc109dCxyW3MrbmVdPW4scltzK2llXT1pLDA9PT1zJiZlLl9zdGF0ZSYmSyh3LGUpfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9ZS5fc3Vic2NyaWJlcnMsbj1lLl9zdGF0ZTtpZigwIT09dC5sZW5ndGgpe2Zvcih2YXIgaT12b2lkIDAscj12b2lkIDAscz1lLl9yZXN1bHQsYT0wO2E8dC5sZW5ndGg7YSs9MylpPXRbYV0scj10W2Erbl0saT9PKG4saSxyLHMpOnIocyk7ZS5fc3Vic2NyaWJlcnMubGVuZ3RoPTB9fWZ1bmN0aW9uIFIoKXt0aGlzLmVycm9yPW51bGx9ZnVuY3Rpb24gQShlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChlKXtyZXR1cm4gc2UuZXJyb3I9ZSxzZX19ZnVuY3Rpb24gTyhlLHQsaSxyKXt2YXIgcz1uKGkpLGE9dm9pZCAwLG89dm9pZCAwLHU9dm9pZCAwLGw9dm9pZCAwO2lmKHMpe2lmKGE9QShpLHIpLGE9PT1zZT8obD0hMCxvPWEuZXJyb3IsYS5lcnJvcj1udWxsKTp1PSEwLHQ9PT1hKXJldHVybiB2b2lkIGsodCxfKCkpfWVsc2UgYT1yLHU9ITA7dC5fc3RhdGUhPT10ZXx8KHMmJnU/RSh0LGEpOmw/ayh0LG8pOmU9PT1uZT9TKHQsYSk6ZT09PWllJiZrKHQsYSkpfWZ1bmN0aW9uIFQoZSx0KXt0cnl7dChmdW5jdGlvbih0KXtFKGUsdCl9LGZ1bmN0aW9uKHQpe2soZSx0KX0pfWNhdGNoKHQpe2soZSx0KX19ZnVuY3Rpb24gSSgpe3JldHVybiBhZSsrfWZ1bmN0aW9uIEMoZSl7ZVtlZV09YWUrKyxlLl9zdGF0ZT12b2lkIDAsZS5fcmVzdWx0PXZvaWQgMCxlLl9zdWJzY3JpYmVycz1bXX1mdW5jdGlvbiB4KGUsdCl7dGhpcy5faW5zdGFuY2VDb25zdHJ1Y3Rvcj1lLHRoaXMucHJvbWlzZT1uZXcgZShmKSx0aGlzLnByb21pc2VbZWVdfHxDKHRoaXMucHJvbWlzZSksVih0KT8odGhpcy5faW5wdXQ9dCx0aGlzLmxlbmd0aD10Lmxlbmd0aCx0aGlzLl9yZW1haW5pbmc9dC5sZW5ndGgsdGhpcy5fcmVzdWx0PW5ldyBBcnJheSh0aGlzLmxlbmd0aCksMD09PXRoaXMubGVuZ3RoP1ModGhpcy5wcm9taXNlLHRoaXMuX3Jlc3VsdCk6KHRoaXMubGVuZ3RoPXRoaXMubGVuZ3RofHwwLHRoaXMuX2VudW1lcmF0ZSgpLDA9PT10aGlzLl9yZW1haW5pbmcmJlModGhpcy5wcm9taXNlLHRoaXMuX3Jlc3VsdCkpKTprKHRoaXMucHJvbWlzZSxNKCkpfWZ1bmN0aW9uIE0oKXtyZXR1cm4gbmV3IEVycm9yKCJBcnJheSBNZXRob2RzIG11c3QgYmUgcHJvdmlkZWQgYW4gQXJyYXkiKX1mdW5jdGlvbiBEKGUpe3JldHVybiBuZXcgeCh0aGlzLGUpLnByb21pc2V9ZnVuY3Rpb24gaihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgdChWKGUpP2Z1bmN0aW9uKG4saSl7Zm9yKHZhciByPWUubGVuZ3RoLHM9MDtzPHI7cysrKXQucmVzb2x2ZShlW3NdKS50aGVuKG4saSl9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQobmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLiIpKX0pfWZ1bmN0aW9uIFAoZSl7dmFyIHQ9dGhpcyxuPW5ldyB0KGYpO3JldHVybiBrKG4sZSksbn1mdW5jdGlvbiBCKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhIHJlc29sdmVyIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvciIpfWZ1bmN0aW9uIFUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0ICdQcm9taXNlJzogUGxlYXNlIHVzZSB0aGUgJ25ldycgb3BlcmF0b3IsIHRoaXMgb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKX1mdW5jdGlvbiBOKGUpe3RoaXNbZWVdPUkoKSx0aGlzLl9yZXN1bHQ9dGhpcy5fc3RhdGU9dm9pZCAwLHRoaXMuX3N1YnNjcmliZXJzPVtdLGYhPT1lJiYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJkIoKSx0aGlzIGluc3RhbmNlb2YgTj9UKHRoaXMsZSk6VSgpKX1mdW5jdGlvbiBGKCl7dmFyIGU9dm9pZCAwO2lmKHZvaWQgMCE9PXMpZT1zO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmKWU9c2VsZjtlbHNlIHRyeXtlPUZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCJwb2x5ZmlsbCBmYWlsZWQgYmVjYXVzZSBnbG9iYWwgb2JqZWN0IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQiKX12YXIgdD1lLlByb21pc2U7aWYodCl7dmFyIG49bnVsbDt0cnl7bj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodC5yZXNvbHZlKCkpfWNhdGNoKGUpe31pZigiW29iamVjdCBQcm9taXNlXSI9PT1uJiYhdC5jYXN0KXJldHVybn1lLlByb21pc2U9Tn12YXIgRz12b2lkIDA7Rz1BcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07dmFyIFY9Ryx6PTAsSD12b2lkIDAscT12b2lkIDAsSz1mdW5jdGlvbihlLHQpe0pbel09ZSxKW3orMV09dCwyPT09KHorPTIpJiYocT9xKGwpOiQoKSl9LFc9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxYPVd8fHt9LFk9WC5NdXRhdGlvbk9ic2VydmVyfHxYLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsWj0idW5kZWZpbmVkIj09dHlwZW9mIHNlbGYmJnZvaWQgMCE9PXImJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwociksUT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIGltcG9ydFNjcmlwdHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwsSj1uZXcgQXJyYXkoMWUzKSwkPXZvaWQgMDskPVo/ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5uZXh0VGljayhsKX19KCk6WT9mdW5jdGlvbigpe3ZhciBlPTAsdD1uZXcgWShsKSxuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1cm4gdC5vYnNlcnZlKG4se2NoYXJhY3RlckRhdGE6ITB9KSxmdW5jdGlvbigpe24uZGF0YT1lPSsrZSUyfX0oKTpRP2Z1bmN0aW9uKCl7dmFyIGU9bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBlLnBvcnQxLm9ubWVzc2FnZT1sLGZ1bmN0aW9uKCl7cmV0dXJuIGUucG9ydDIucG9zdE1lc3NhZ2UoMCl9fSgpOnZvaWQgMD09PVcmJiJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKCl7dHJ5e3ZhciBlPXQsbj1lKCJ2ZXJ0eCIpO3JldHVybiBIPW4ucnVuT25Mb29wfHxuLnJ1bk9uQ29udGV4dCxvKCl9Y2F0Y2goZSl7cmV0dXJuIHUoKX19KCk6dSgpO3ZhciBlZT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMTYpLHRlPXZvaWQgMCxuZT0xLGllPTIscmU9bmV3IFIsc2U9bmV3IFIsYWU9MDtyZXR1cm4geC5wcm90b3R5cGUuX2VudW1lcmF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmxlbmd0aCx0PXRoaXMuX2lucHV0LG49MDt0aGlzLl9zdGF0ZT09PXRlJiZuPGU7bisrKXRoaXMuX2VhY2hFbnRyeSh0W25dLG4pfSx4LnByb3RvdHlwZS5fZWFjaEVudHJ5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2VDb25zdHJ1Y3RvcixpPW4ucmVzb2x2ZTtpZihpPT09aCl7dmFyIHI9bShlKTtpZihyPT09ZCYmZS5fc3RhdGUhPT10ZSl0aGlzLl9zZXR0bGVkQXQoZS5fc3RhdGUsdCxlLl9yZXN1bHQpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhpcy5fcmVtYWluaW5nLS0sdGhpcy5fcmVzdWx0W3RdPWU7ZWxzZSBpZihuPT09Til7dmFyIHM9bmV3IG4oZik7eShzLGUsciksdGhpcy5fd2lsbFNldHRsZUF0KHMsdCl9ZWxzZSB0aGlzLl93aWxsU2V0dGxlQXQobmV3IG4oZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KSx0KX1lbHNlIHRoaXMuX3dpbGxTZXR0bGVBdChpKGUpLHQpfSx4LnByb3RvdHlwZS5fc2V0dGxlZEF0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzLnByb21pc2U7aS5fc3RhdGU9PT10ZSYmKHRoaXMuX3JlbWFpbmluZy0tLGU9PT1pZT9rKGksbik6dGhpcy5fcmVzdWx0W3RdPW4pLDA9PT10aGlzLl9yZW1haW5pbmcmJlMoaSx0aGlzLl9yZXN1bHQpfSx4LnByb3RvdHlwZS5fd2lsbFNldHRsZUF0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztMKGUsdm9pZCAwLGZ1bmN0aW9uKGUpe3JldHVybiBuLl9zZXR0bGVkQXQobmUsdCxlKX0sZnVuY3Rpb24oZSl7cmV0dXJuIG4uX3NldHRsZWRBdChpZSx0LGUpfSl9LE4uYWxsPUQsTi5yYWNlPWosTi5yZXNvbHZlPWgsTi5yZWplY3Q9UCxOLl9zZXRTY2hlZHVsZXI9aSxOLl9zZXRBc2FwPWEsTi5fYXNhcD1LLE4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpOLHRoZW46ZCxjYXRjaDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9fSxOLnBvbHlmaWxsPUYsTi5Qcm9taXNlPU4sTn0pfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIiksInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHtfcHJvY2VzczozfV0sMjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGkoKXt0aGlzLl9ldmVudHM9dGhpcy5fZXZlbnRzfHx7fSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9ZnVuY3Rpb24gcihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiBzKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBhKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwPT09ZX10LmV4cG9ydHM9aSxpLkV2ZW50RW1pdHRlcj1pLGkucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLGkucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwLGkuZGVmYXVsdE1heExpc3RlbmVycz0xMCxpLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7aWYoIXMoZSl8fGU8MHx8aXNOYU4oZSkpdGhyb3cgVHlwZUVycm9yKCJuIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPWUsdGhpc30saS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt2YXIgdCxuLGkscyx1LGw7aWYodGhpcy5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPXt9KSwiZXJyb3IiPT09ZSYmKCF0aGlzLl9ldmVudHMuZXJyb3J8fGEodGhpcy5fZXZlbnRzLmVycm9yKSYmIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKXtpZigodD1hcmd1bWVudHNbMV0paW5zdGFuY2VvZiBFcnJvcil0aHJvdyB0O3ZhciBkPW5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkICJlcnJvciIgZXZlbnQuICgnK3QrIikiKTt0aHJvdyBkLmNvbnRleHQ9dCxkfWlmKG49dGhpcy5fZXZlbnRzW2VdLG8obikpcmV0dXJuITE7aWYocihuKSlzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOm4uY2FsbCh0aGlzKTticmVhaztjYXNlIDI6bi5jYWxsKHRoaXMsYXJndW1lbnRzWzFdKTticmVhaztjYXNlIDM6bi5jYWxsKHRoaXMsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7YnJlYWs7ZGVmYXVsdDpzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuLmFwcGx5KHRoaXMscyl9ZWxzZSBpZihhKG4pKWZvcihzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxsPW4uc2xpY2UoKSxpPWwubGVuZ3RoLHU9MDt1PGk7dSsrKWxbdV0uYXBwbHkodGhpcyxzKTtyZXR1cm4hMH0saS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZighcih0KSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3JldHVybiB0aGlzLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9e30pLHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lciYmdGhpcy5lbWl0KCJuZXdMaXN0ZW5lciIsZSxyKHQubGlzdGVuZXIpP3QubGlzdGVuZXI6dCksdGhpcy5fZXZlbnRzW2VdP2EodGhpcy5fZXZlbnRzW2VdKT90aGlzLl9ldmVudHNbZV0ucHVzaCh0KTp0aGlzLl9ldmVudHNbZV09W3RoaXMuX2V2ZW50c1tlXSx0XTp0aGlzLl9ldmVudHNbZV09dCxhKHRoaXMuX2V2ZW50c1tlXSkmJiF0aGlzLl9ldmVudHNbZV0ud2FybmVkJiYobj1vKHRoaXMuX21heExpc3RlbmVycyk/aS5kZWZhdWx0TWF4TGlzdGVuZXJzOnRoaXMuX21heExpc3RlbmVycykmJm4+MCYmdGhpcy5fZXZlbnRzW2VdLmxlbmd0aD5uJiYodGhpcy5fZXZlbnRzW2VdLndhcm5lZD0hMCxjb25zb2xlLmVycm9yKCIobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LiIsdGhpcy5fZXZlbnRzW2VdLmxlbmd0aCksImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUudHJhY2UmJmNvbnNvbGUudHJhY2UoKSksdGhpc30saS5wcm90b3R5cGUub249aS5wcm90b3R5cGUuYWRkTGlzdGVuZXIsaS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXt0aGlzLnJlbW92ZUxpc3RlbmVyKGUsbiksaXx8KGk9ITAsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfWlmKCFyKHQpKXRocm93IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dmFyIGk9ITE7cmV0dXJuIG4ubGlzdGVuZXI9dCx0aGlzLm9uKGUsbiksdGhpc30saS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHMsbztpZighcih0KSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO2lmKCF0aGlzLl9ldmVudHN8fCF0aGlzLl9ldmVudHNbZV0pcmV0dXJuIHRoaXM7aWYobj10aGlzLl9ldmVudHNbZV0scz1uLmxlbmd0aCxpPS0xLG49PT10fHxyKG4ubGlzdGVuZXIpJiZuLmxpc3RlbmVyPT09dClkZWxldGUgdGhpcy5fZXZlbnRzW2VdLHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsZSx0KTtlbHNlIGlmKGEobikpe2ZvcihvPXM7by0tID4wOylpZihuW29dPT09dHx8bltvXS5saXN0ZW5lciYmbltvXS5saXN0ZW5lcj09PXQpe2k9bzticmVha31pZihpPDApcmV0dXJuIHRoaXM7MT09PW4ubGVuZ3RoPyhuLmxlbmd0aD0wLGRlbGV0ZSB0aGlzLl9ldmVudHNbZV0pOm4uc3BsaWNlKGksMSksdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixlLHQpfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighdGhpcy5fZXZlbnRzKXJldHVybiB0aGlzO2lmKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX2V2ZW50cz17fTp0aGlzLl9ldmVudHNbZV0mJmRlbGV0ZSB0aGlzLl9ldmVudHNbZV0sdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHQgaW4gdGhpcy5fZXZlbnRzKSJyZW1vdmVMaXN0ZW5lciIhPT10JiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyh0KTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPXt9LHRoaXN9aWYobj10aGlzLl9ldmVudHNbZV0scihuKSl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsbik7ZWxzZSBpZihuKWZvcig7bi5sZW5ndGg7KXRoaXMucmVtb3ZlTGlzdGVuZXIoZSxuW24ubGVuZ3RoLTFdKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2V2ZW50c1tlXSx0aGlzfSxpLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW2VdP3IodGhpcy5fZXZlbnRzW2VdKT9bdGhpcy5fZXZlbnRzW2VdXTp0aGlzLl9ldmVudHNbZV0uc2xpY2UoKTpbXX0saS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlKXtpZih0aGlzLl9ldmVudHMpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZihyKHQpKXJldHVybiAxO2lmKHQpcmV0dXJuIHQubGVuZ3RofXJldHVybiAwfSxpLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5saXN0ZW5lckNvdW50KHQpfX0se31dLDM6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcyhlKXtpZihoPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChoPT09aXx8IWgpJiZzZXRUaW1lb3V0KXJldHVybiBoPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gaChlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gaC5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gaC5jYWxsKHRoaXMsZSwwKX19fWZ1bmN0aW9uIGEoZSl7aWYoZj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChmPT09cnx8IWYpJiZjbGVhclRpbWVvdXQpcmV0dXJuIGY9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIGYoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBmLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gZi5jYWxsKHRoaXMsZSl9fX1mdW5jdGlvbiBvKCl7cCYmXyYmKHA9ITEsXy5sZW5ndGg/bT1fLmNvbmNhdChtKTp2PS0xLG0ubGVuZ3RoJiZ1KCkpfWZ1bmN0aW9uIHUoKXtpZighcCl7dmFyIGU9cyhvKTtwPSEwO2Zvcih2YXIgdD1tLmxlbmd0aDt0Oyl7Zm9yKF89bSxtPVtdOysrdjx0OylfJiZfW3ZdLnJ1bigpO3Y9LTEsdD1tLmxlbmd0aH1fPW51bGwscD0hMSxhKGUpfX1mdW5jdGlvbiBsKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gZCgpe312YXIgaCxmLGM9dC5leHBvcnRzPXt9OyFmdW5jdGlvbigpe3RyeXtoPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6aX1jYXRjaChlKXtoPWl9dHJ5e2Y9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6cn1jYXRjaChlKXtmPXJ9fSgpO3ZhciBfLG09W10scD0hMSx2PS0xO2MubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTttLnB1c2gobmV3IGwoZSx0KSksMSE9PW0ubGVuZ3RofHxwfHxzKHUpfSxsLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxjLnRpdGxlPSJicm93c2VyIixjLmJyb3dzZXI9ITAsYy5lbnY9e30sYy5hcmd2PVtdLGMudmVyc2lvbj0iIixjLnZlcnNpb25zPXt9LGMub249ZCxjLmFkZExpc3RlbmVyPWQsYy5vbmNlPWQsYy5vZmY9ZCxjLnJlbW92ZUxpc3RlbmVyPWQsYy5yZW1vdmVBbGxMaXN0ZW5lcnM9ZCxjLmVtaXQ9ZCxjLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sYy5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxjLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWFyZ3VtZW50c1szXSxyPWFyZ3VtZW50c1s0XSxzPWFyZ3VtZW50c1s1XSxhPUpTT04uc3RyaW5naWZ5O3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cFtlXT0hMDtmb3IodmFyIHQgaW4gcltlXVsxXSl7dmFyIGk9cltlXVsxXVt0XTtwW2ldfHxuKGkpfX1mb3IodmFyIG8sdT1PYmplY3Qua2V5cyhzKSxsPTAsZD11Lmxlbmd0aDtsPGQ7bCsrKXt2YXIgaD11W2xdLGY9c1toXS5leHBvcnRzO2lmKGY9PT1lfHxmJiZmLmRlZmF1bHQ9PT1lKXtvPWg7YnJlYWt9fWlmKCFvKXtvPU1hdGguZmxvb3IoTWF0aC5wb3coMTYsOCkqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpO2Zvcih2YXIgYz17fSxsPTAsZD11Lmxlbmd0aDtsPGQ7bCsrKXt2YXIgaD11W2xdO2NbaF09aH1yW29dPVtGdW5jdGlvbihbInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIigiK2UrIikoc2VsZikiKSxjXX12YXIgXz1NYXRoLmZsb29yKE1hdGgucG93KDE2LDgpKk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KSxtPXt9O21bb109byxyW19dPVtGdW5jdGlvbihbInJlcXVpcmUiXSwidmFyIGYgPSByZXF1aXJlKCIrYShvKSsiKTsoZi5kZWZhdWx0ID8gZi5kZWZhdWx0IDogZikoc2VsZik7IiksbV07dmFyIHA9e307bihfKTt2YXIgdj0iKCIraSsiKSh7IitPYmplY3Qua2V5cyhwKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSkrIjpbIityW2VdWzBdKyIsIithKHJbZV1bMV0pKyJdIn0pLmpvaW4oIiwiKSsifSx7fSxbIithKF8pKyJdKSIsZz13aW5kb3cuVVJMfHx3aW5kb3cud2Via2l0VVJMfHx3aW5kb3cubW96VVJMfHx3aW5kb3cubXNVUkwseT1uZXcgQmxvYihbdl0se3R5cGU6InRleHQvamF2YXNjcmlwdCJ9KTtpZih0JiZ0LmJhcmUpcmV0dXJuIHk7dmFyIEU9Zy5jcmVhdGVPYmplY3RVUkwoeSksYj1uZXcgV29ya2VyKEUpO3JldHVybiBiLm9iamVjdFVSTD1FLGJ9fSx7fV0sNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30scil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uY3JlYXRlRGVmYXVsdENvbmZpZz1pO3ZhciByPW4uZGVmYXVsdENvbmZpZz17ZW5hYmxlV29ya2VyOiExLGVuYWJsZVN0YXNoQnVmZmVyOiEwLHN0YXNoSW5pdGlhbFNpemU6dm9pZCAwLGlzTGl2ZTohMSxsYXp5TG9hZDohMCxsYXp5TG9hZE1heER1cmF0aW9uOjE4MCxsYXp5TG9hZFJlY292ZXJEdXJhdGlvbjozMCxkZWZlckxvYWRBZnRlclNvdXJjZU9wZW46ITAsc3RhdGlzdGljc0luZm9SZXBvcnRJbnRlcnZhbDo2MDAsYWNjdXJhdGVTZWVrOiExLHNlZWtUeXBlOiJyYW5nZSIsc2Vla1BhcmFtU3RhcnQ6ImJzdGFydCIsc2Vla1BhcmFtRW5kOiJiZW5kIixyYW5nZUxvYWRaZXJvU3RhcnQ6ITEsY3VzdG9tU2Vla0hhbmRsZXI6dm9pZCAwLHJldXNlUmVkaXJlY3RlZFVSTDohMX19LHt9XSw2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCkscz1lKCIuLi9pby9pby1jb250cm9sbGVyLmpzIiksYT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KHMpLG89ZSgiLi4vY29uZmlnLmpzIiksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSl9cmV0dXJuIHIoZSxudWxsLFt7a2V5OiJzdXBwb3J0TVNFSDI2NFBsYXliYWNrIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuTWVkaWFTb3VyY2UmJndpbmRvdy5NZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSxtcDRhLjQwLjIiJyl9fSx7a2V5OiJzdXBwb3J0TmV0d29ya1N0cmVhbUlPIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyBhLmRlZmF1bHQoe30sKDAsby5jcmVhdGVEZWZhdWx0Q29uZmlnKSgpKSx0PWUubG9hZGVyVHlwZTtyZXR1cm4gZS5kZXN0cm95KCksImZldGNoLXN0cmVhbS1sb2FkZXIiPT10fHwieGhyLW1vei1jaHVua2VkLWxvYWRlciI9PXR9fSx7a2V5OiJnZXROZXR3b3JrTG9hZGVyVHlwZU5hbWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IGEuZGVmYXVsdCh7fSwoMCxvLmNyZWF0ZURlZmF1bHRDb25maWcpKCkpLHQ9ZS5sb2FkZXJUeXBlO3JldHVybiBlLmRlc3Ryb3koKSx0fX0se2tleToic3VwcG9ydE5hdGl2ZU1lZGlhUGxheWJhY2siLHZhbHVlOmZ1bmN0aW9uKHQpe3ZvaWQgMD09ZS52aWRlb0VsZW1lbnQmJihlLnZpZGVvRWxlbWVudD13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKSk7dmFyIG49ZS52aWRlb0VsZW1lbnQuY2FuUGxheVR5cGUodCk7cmV0dXJuInByb2JhYmx5Ij09PW58fCJtYXliZSI9PW59fSx7a2V5OiJnZXRGZWF0dXJlTGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD17bXNlRmx2UGxheWJhY2s6ITEsbXNlTGl2ZUZsdlBsYXliYWNrOiExLG5ldHdvcmtTdHJlYW1JTzohMSxuZXR3b3JrTG9hZGVyTmFtZToiIixuYXRpdmVNUDRIMjY0UGxheWJhY2s6ITEsbmF0aXZlV2VibVZQOFBsYXliYWNrOiExLG5hdGl2ZVdlYm1WUDlQbGF5YmFjazohMX07cmV0dXJuIHQubXNlRmx2UGxheWJhY2s9ZS5zdXBwb3J0TVNFSDI2NFBsYXliYWNrKCksdC5uZXR3b3JrU3RyZWFtSU89ZS5zdXBwb3J0TmV0d29ya1N0cmVhbUlPKCksdC5uZXR3b3JrTG9hZGVyTmFtZT1lLmdldE5ldHdvcmtMb2FkZXJUeXBlTmFtZSgpLHQubXNlTGl2ZUZsdlBsYXliYWNrPXQubXNlRmx2UGxheWJhY2smJnQubmV0d29ya1N0cmVhbUlPLHQubmF0aXZlTVA0SDI2NFBsYXliYWNrPWUuc3VwcG9ydE5hdGl2ZU1lZGlhUGxheWJhY2soJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyMDAxRSwgbXA0YS40MC4yIicpLHQubmF0aXZlV2VibVZQOFBsYXliYWNrPWUuc3VwcG9ydE5hdGl2ZU1lZGlhUGxheWJhY2soJ3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4LjAsIHZvcmJpcyInKSx0Lm5hdGl2ZVdlYm1WUDlQbGF5YmFjaz1lLnN1cHBvcnROYXRpdmVNZWRpYVBsYXliYWNrKCd2aWRlby93ZWJtOyBjb2RlY3M9InZwOSInKSx0fX1dKSxlfSgpO24uZGVmYXVsdD11fSx7Ii4uL2NvbmZpZy5qcyI6NSwiLi4vaW8vaW8tY29udHJvbGxlci5qcyI6MjN9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5taW1lVHlwZT1udWxsLHRoaXMuZHVyYXRpb249bnVsbCx0aGlzLmhhc0F1ZGlvPW51bGwsdGhpcy5oYXNWaWRlbz1udWxsLHRoaXMuYXVkaW9Db2RlYz1udWxsLHRoaXMudmlkZW9Db2RlYz1udWxsLHRoaXMuYXVkaW9EYXRhUmF0ZT1udWxsLHRoaXMudmlkZW9EYXRhUmF0ZT1udWxsLHRoaXMuYXVkaW9TYW1wbGVSYXRlPW51bGwsdGhpcy5hdWRpb0NoYW5uZWxDb3VudD1udWxsLHRoaXMud2lkdGg9bnVsbCx0aGlzLmhlaWdodD1udWxsLHRoaXMuZnBzPW51bGwsdGhpcy5wcm9maWxlPW51bGwsdGhpcy5sZXZlbD1udWxsLHRoaXMuY2hyb21hRm9ybWF0PW51bGwsdGhpcy5zYXJOdW09bnVsbCx0aGlzLnNhckRlbj1udWxsLHRoaXMubWV0YWRhdGE9bnVsbCx0aGlzLnNlZ21lbnRzPW51bGwsdGhpcy5zZWdtZW50Q291bnQ9bnVsbCx0aGlzLmhhc0tleWZyYW1lc0luZGV4PW51bGwsdGhpcy5rZXlmcmFtZXNJbmRleD1udWxsfXJldHVybiByKGUsW3trZXk6ImlzQ29tcGxldGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oYXNBdWRpbz09PSExfHx0aGlzLmhhc0F1ZGlvPT09ITAmJm51bGwhPXRoaXMuYXVkaW9Db2RlYyYmbnVsbCE9dGhpcy5hdWRpb1NhbXBsZVJhdGUmJm51bGwhPXRoaXMuYXVkaW9DaGFubmVsQ291bnQsdD10aGlzLmhhc1ZpZGVvPT09ITF8fHRoaXMuaGFzVmlkZW89PT0hMCYmbnVsbCE9dGhpcy52aWRlb0NvZGVjJiZudWxsIT10aGlzLndpZHRoJiZudWxsIT10aGlzLmhlaWdodCYmbnVsbCE9dGhpcy5mcHMmJm51bGwhPXRoaXMucHJvZmlsZSYmbnVsbCE9dGhpcy5sZXZlbCYmbnVsbCE9dGhpcy5jaHJvbWFGb3JtYXQmJm51bGwhPXRoaXMuc2FyTnVtJiZudWxsIT10aGlzLnNhckRlbjtyZXR1cm4gbnVsbCE9dGhpcy5taW1lVHlwZSYmbnVsbCE9dGhpcy5kdXJhdGlvbiYmbnVsbCE9dGhpcy5tZXRhZGF0YSYmbnVsbCE9dGhpcy5oYXNLZXlmcmFtZXNJbmRleCYmZSYmdH19LHtrZXk6ImlzU2Vla2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzS2V5ZnJhbWVzSW5kZXg9PT0hMH19LHtrZXk6ImdldE5lYXJlc3RLZXlmcmFtZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYobnVsbD09dGhpcy5rZXlmcmFtZXNJbmRleClyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmtleWZyYW1lc0luZGV4LG49dGhpcy5fc2VhcmNoKHQudGltZXMsZSk7cmV0dXJue2luZGV4Om4sbWlsbGlzZWNvbmRzOnQudGltZXNbbl0sZmlsZXBvc2l0aW9uOnQuZmlsZXBvc2l0aW9uc1tuXX19fSx7a2V5OiJfc2VhcmNoIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPTAsaT1lLmxlbmd0aC0xLHI9MCxzPTAsYT1pO2Zvcih0PGVbMF0mJihuPTAscz1hKzEpO3M8PWE7KXtpZigocj1zK01hdGguZmxvb3IoKGEtcykvMikpPT09aXx8dD49ZVtyXSYmdDxlW3IrMV0pe249cjticmVha31lW3JdPHQ/cz1yKzE6YT1yLTF9cmV0dXJuIG59fV0pLGV9KCk7bi5kZWZhdWx0PXN9LHt9XSw4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCk7bi5TYW1wbGVJbmZvPWZ1bmN0aW9uIGUodCxuLHIscyxhKXtpKHRoaXMsZSksdGhpcy5kdHM9dCx0aGlzLnB0cz1uLHRoaXMuZHVyYXRpb249cix0aGlzLm9yaWdpbmFsRHRzPXMsdGhpcy5pc1N5bmNQb2ludD1hLHRoaXMuZmlsZXBvc2l0aW9uPW51bGx9LG4uTWVkaWFTZWdtZW50SW5mbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5iZWdpbkR0cz0wLHRoaXMuZW5kRHRzPTAsdGhpcy5iZWdpblB0cz0wLHRoaXMuZW5kUHRzPTAsdGhpcy5vcmlnaW5hbEJlZ2luRHRzPTAsdGhpcy5vcmlnaW5hbEVuZER0cz0wLHRoaXMuc3luY1BvaW50cz1bXSx0aGlzLmZpcnN0U2FtcGxlPW51bGwsdGhpcy5sYXN0U2FtcGxlPW51bGx9cmV0dXJuIHIoZSxbe2tleToiYXBwZW5kU3luY1BvaW50Iix2YWx1ZTpmdW5jdGlvbihlKXtlLmlzU3luY1BvaW50PSEwLHRoaXMuc3luY1BvaW50cy5wdXNoKGUpfX1dKSxlfSgpLG4uSURSU2FtcGxlTGlzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5fbGlzdD1bXX1yZXR1cm4gcihlLFt7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9saXN0PVtdfX0se2tleToiYXBwZW5kQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xpc3Q7MCE9PWUubGVuZ3RoJiYodC5sZW5ndGg+MCYmZVswXS5vcmlnaW5hbER0czx0W3QubGVuZ3RoLTFdLm9yaWdpbmFsRHRzJiZ0aGlzLmNsZWFyKCksQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodCxlKSl9fSx7a2V5OiJnZXRMYXN0U3luY1BvaW50QmVmb3JlRHRzIix2YWx1ZTpmdW5jdGlvbihlKXtpZigwPT10aGlzLl9saXN0Lmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD10aGlzLl9saXN0LG49MCxpPXQubGVuZ3RoLTEscj0wLHM9MCxhPWk7Zm9yKGU8dFswXS5kdHMmJihuPTAscz1hKzEpO3M8PWE7KXtpZigocj1zK01hdGguZmxvb3IoKGEtcykvMikpPT09aXx8ZT49dFtyXS5kdHMmJmU8dFtyKzFdLmR0cyl7bj1yO2JyZWFrfXRbcl0uZHRzPGU/cz1yKzE6YT1yLTF9cmV0dXJuIHRoaXMuX2xpc3Rbbl19fV0pLGV9KCksbi5NZWRpYVNlZ21lbnRJbmZvTGlzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aSh0aGlzLGUpLHRoaXMuX3R5cGU9dCx0aGlzLl9saXN0PVtdLHRoaXMuX2xhc3RBcHBlbmRMb2NhdGlvbj0tMX1yZXR1cm4gcihlLFt7a2V5OiJpc0VtcHR5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fbGlzdC5sZW5ndGh9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9saXN0PVtdLHRoaXMuX2xhc3RBcHBlbmRMb2NhdGlvbj0tMX19LHtrZXk6Il9zZWFyY2hOZWFyZXN0U2VnbWVudEJlZm9yZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbGlzdDtpZigwPT09dC5sZW5ndGgpcmV0dXJuLTI7dmFyIG49dC5sZW5ndGgtMSxpPTAscj0wLHM9bixhPTA7aWYoZTx0WzBdLm9yaWdpbmFsQmVnaW5EdHMpcmV0dXJuIGE9LTE7Zm9yKDtyPD1zOyl7aWYoKGk9citNYXRoLmZsb29yKChzLXIpLzIpKT09PW58fGU+dFtpXS5sYXN0U2FtcGxlLm9yaWdpbmFsRHRzJiZlPHRbaSsxXS5vcmlnaW5hbEJlZ2luRHRzKXthPWk7YnJlYWt9dFtpXS5vcmlnaW5hbEJlZ2luRHRzPGU/cj1pKzE6cz1pLTF9cmV0dXJuIGF9fSx7a2V5OiJfc2VhcmNoTmVhcmVzdFNlZ21lbnRBZnRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3NlYXJjaE5lYXJlc3RTZWdtZW50QmVmb3JlKGUpKzF9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xpc3Qsbj1lLGk9dGhpcy5fbGFzdEFwcGVuZExvY2F0aW9uLHI9MDtpIT09LTEmJmk8dC5sZW5ndGgmJm4ub3JpZ2luYWxCZWdpbkR0cz49dFtpXS5sYXN0U2FtcGxlLm9yaWdpbmFsRHRzJiYoaT09PXQubGVuZ3RoLTF8fGk8dC5sZW5ndGgtMSYmbi5vcmlnaW5hbEJlZ2luRHRzPHRbaSsxXS5vcmlnaW5hbEJlZ2luRHRzKT9yPWkrMTp0Lmxlbmd0aD4wJiYocj10aGlzLl9zZWFyY2hOZWFyZXN0U2VnbWVudEJlZm9yZShuLm9yaWdpbmFsQmVnaW5EdHMpKzEpLHRoaXMuX2xhc3RBcHBlbmRMb2NhdGlvbj1yLHRoaXMuX2xpc3Quc3BsaWNlKHIsMCxuKX19LHtrZXk6ImdldExhc3RTZWdtZW50QmVmb3JlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9zZWFyY2hOZWFyZXN0U2VnbWVudEJlZm9yZShlKTtyZXR1cm4gdD49MD90aGlzLl9saXN0W3RdOm51bGx9fSx7a2V5OiJnZXRMYXN0U2FtcGxlQmVmb3JlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExhc3RTZWdtZW50QmVmb3JlKGUpO3JldHVybiBudWxsIT10P3QubGFzdFNhbXBsZTpudWxsfX0se2tleToiZ2V0TGFzdFN5bmNQb2ludEJlZm9yZSIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX3NlYXJjaE5lYXJlc3RTZWdtZW50QmVmb3JlKGUpLG49dGhpcy5fbGlzdFt0XS5zeW5jUG9pbnRzOzA9PT1uLmxlbmd0aCYmdD4wOyl0LS0sbj10aGlzLl9saXN0W3RdLnN5bmNQb2ludHM7cmV0dXJuIG4ubGVuZ3RoPjA/bltuLmxlbmd0aC0xXTpudWxsfX0se2tleToidHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5cGV9fSx7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0Lmxlbmd0aH19XSksZX0oKX0se31dLDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxhPWUoImV2ZW50cyIpLG89aShhKSx1PWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLGw9aSh1KSxkPWUoIi4uL3V0aWxzL2Jyb3dzZXIuanMiKSxoPWkoZCksZj1lKCIuL21zZS1ldmVudHMuanMiKSxjPWkoZiksXz1lKCIuL21lZGlhLXNlZ21lbnQtaW5mby5qcyIpLG09ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIikscD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyKHRoaXMsZSksdGhpcy5UQUc9Ik1TRUNvbnRyb2xsZXIiLHRoaXMuX2VtaXR0ZXI9bmV3IG8uZGVmYXVsdCx0aGlzLmU9e29uU291cmNlT3Blbjp0aGlzLl9vblNvdXJjZU9wZW4uYmluZCh0aGlzKSxvblNvdXJjZUVuZGVkOnRoaXMuX29uU291cmNlRW5kZWQuYmluZCh0aGlzKSxvblNvdXJjZUNsb3NlOnRoaXMuX29uU291cmNlQ2xvc2UuYmluZCh0aGlzKSxvblNvdXJjZUJ1ZmZlckVycm9yOnRoaXMuX29uU291cmNlQnVmZmVyRXJyb3IuYmluZCh0aGlzKSxvblNvdXJjZUJ1ZmZlclVwZGF0ZUVuZDp0aGlzLl9vblNvdXJjZUJ1ZmZlclVwZGF0ZUVuZC5iaW5kKHRoaXMpfSx0aGlzLl9tZWRpYVNvdXJjZT1udWxsLHRoaXMuX21lZGlhU291cmNlT2JqZWN0VVJMPW51bGwsdGhpcy5fbWVkaWFFbGVtZW50PW51bGwsdGhpcy5faXNCdWZmZXJGdWxsPSExLHRoaXMuX2hhc1BlbmRpbmdFb3M9ITEsdGhpcy5fcmVxdWlyZVNldE1lZGlhRHVyYXRpb249ITEsdGhpcy5fcGVuZGluZ01lZGlhRHVyYXRpb249MCx0aGlzLl9wZW5kaW5nU291cmNlQnVmZmVySW5pdD1bXSx0aGlzLl9taW1lVHlwZXM9e3ZpZGVvOm51bGwsYXVkaW86bnVsbH0sdGhpcy5fc291cmNlQnVmZmVycz17dmlkZW86bnVsbCxhdWRpbzpudWxsfSx0aGlzLl9sYXN0SW5pdFNlZ21lbnRzPXt2aWRlbzpudWxsLGF1ZGlvOm51bGx9LHRoaXMuX3BlbmRpbmdTZWdtZW50cz17dmlkZW86W10sYXVkaW86W119LHRoaXMuX3BlbmRpbmdSZW1vdmVSYW5nZXM9e3ZpZGVvOltdLGF1ZGlvOltdfSx0aGlzLl9pZHJMaXN0PW5ldyBfLklEUlNhbXBsZUxpc3R9cmV0dXJuIHMoZSxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXsodGhpcy5fbWVkaWFFbGVtZW50fHx0aGlzLl9tZWRpYVNvdXJjZSkmJnRoaXMuZGV0YWNoTWVkaWFFbGVtZW50KCksdGhpcy5lPW51bGwsdGhpcy5fZW1pdHRlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLl9lbWl0dGVyPW51bGx9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLmFkZExpc3RlbmVyKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihlLHQpfX0se2tleToiYXR0YWNoTWVkaWFFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9tZWRpYVNvdXJjZSl0aHJvdyBuZXcgbS5JbGxlZ2FsU3RhdGVFeGNlcHRpb24oIk1lZGlhU291cmNlIGhhcyBiZWVuIGF0dGFjaGVkIHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQhIik7dmFyIHQ9dGhpcy5fbWVkaWFTb3VyY2U9bmV3IHdpbmRvdy5NZWRpYVNvdXJjZTt0LmFkZEV2ZW50TGlzdGVuZXIoInNvdXJjZW9wZW4iLHRoaXMuZS5vblNvdXJjZU9wZW4pLHQuYWRkRXZlbnRMaXN0ZW5lcigic291cmNlZW5kZWQiLHRoaXMuZS5vblNvdXJjZUVuZGVkKSx0LmFkZEV2ZW50TGlzdGVuZXIoInNvdXJjZWNsb3NlIix0aGlzLmUub25Tb3VyY2VDbG9zZSksdGhpcy5fbWVkaWFFbGVtZW50PWUsdGhpcy5fbWVkaWFTb3VyY2VPYmplY3RVUkw9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5fbWVkaWFTb3VyY2UpLGUuc3JjPXRoaXMuX21lZGlhU291cmNlT2JqZWN0VVJMfX0se2tleToiZGV0YWNoTWVkaWFFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21lZGlhU291cmNlKXt2YXIgZT10aGlzLl9tZWRpYVNvdXJjZTtmb3IodmFyIHQgaW4gdGhpcy5fc291cmNlQnVmZmVycyl7dmFyIG49dGhpcy5fcGVuZGluZ1NlZ21lbnRzW3RdO24uc3BsaWNlKDAsbi5sZW5ndGgpLHRoaXMuX3BlbmRpbmdTZWdtZW50c1t0XT1udWxsLHRoaXMuX3BlbmRpbmdSZW1vdmVSYW5nZXNbdF09bnVsbCx0aGlzLl9sYXN0SW5pdFNlZ21lbnRzW3RdPW51bGw7dmFyIGk9dGhpcy5fc291cmNlQnVmZmVyc1t0XTtpJiYoImNsb3NlZCIhPT1lLnJlYWR5U3RhdGUmJihlLnJlbW92ZVNvdXJjZUJ1ZmZlcihpKSxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIix0aGlzLmUub25Tb3VyY2VCdWZmZXJFcnJvciksaS5yZW1vdmVFdmVudExpc3RlbmVyKCJ1cGRhdGVlbmQiLHRoaXMuZS5vblNvdXJjZUJ1ZmZlclVwZGF0ZUVuZCkpLHRoaXMuX21pbWVUeXBlc1t0XT1udWxsLHRoaXMuX3NvdXJjZUJ1ZmZlcnNbdF09bnVsbCl9aWYoIm9wZW4iPT09ZS5yZWFkeVN0YXRlKXRyeXtlLmVuZE9mU3RyZWFtKCl9Y2F0Y2goZSl7bC5kZWZhdWx0LmUodGhpcy5UQUcsZS5tZXNzYWdlKX1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvdXJjZW9wZW4iLHRoaXMuZS5vblNvdXJjZU9wZW4pLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigic291cmNlZW5kZWQiLHRoaXMuZS5vblNvdXJjZUVuZGVkKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvdXJjZWNsb3NlIix0aGlzLmUub25Tb3VyY2VDbG9zZSksdGhpcy5fcGVuZGluZ1NvdXJjZUJ1ZmZlckluaXQ9W10sdGhpcy5faXNCdWZmZXJGdWxsPSExLHRoaXMuX2lkckxpc3QuY2xlYXIoKSx0aGlzLl9tZWRpYVNvdXJjZT1udWxsfXRoaXMuX21lZGlhRWxlbWVudCYmKHRoaXMuX21lZGlhRWxlbWVudC5zcmM9IiIsdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3JjIiksdGhpcy5fbWVkaWFFbGVtZW50PW51bGwpLHRoaXMuX21lZGlhU291cmNlT2JqZWN0VVJMJiYod2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5fbWVkaWFTb3VyY2VPYmplY3RVUkwpLHRoaXMuX21lZGlhU291cmNlT2JqZWN0VVJMPW51bGwpfX0se2tleToiYXBwZW5kSW5pdFNlZ21lbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX21lZGlhU291cmNlfHwib3BlbiIhPT10aGlzLl9tZWRpYVNvdXJjZS5yZWFkeVN0YXRlKXJldHVybiB0aGlzLl9wZW5kaW5nU291cmNlQnVmZmVySW5pdC5wdXNoKGUpLHZvaWQgdGhpcy5fcGVuZGluZ1NlZ21lbnRzW2UudHlwZV0ucHVzaChlKTt2YXIgbj1lLGk9IiIrbi5jb250YWluZXI7bi5jb2RlYyYmbi5jb2RlYy5sZW5ndGg+MCYmKGkrPSI7Y29kZWNzPSIrbi5jb2RlYyk7dmFyIHI9ITE7aWYobC5kZWZhdWx0LnYodGhpcy5UQUcsIlJlY2VpdmVkIEluaXRpYWxpemF0aW9uIFNlZ21lbnQsIG1pbWVUeXBlOiAiK2kpLHRoaXMuX2xhc3RJbml0U2VnbWVudHNbbi50eXBlXT1uLGkhPT10aGlzLl9taW1lVHlwZXNbbi50eXBlXSl7aWYodGhpcy5fbWltZVR5cGVzW24udHlwZV0pbC5kZWZhdWx0LnYodGhpcy5UQUcsIk5vdGljZTogIituLnR5cGUrIiBtaW1lVHlwZSBjaGFuZ2VkLCBvcmlnaW46ICIrdGhpcy5fbWltZVR5cGVzW24udHlwZV0rIiwgdGFyZ2V0OiAiK2kpO2Vsc2V7cj0hMDt0cnl7dmFyIHM9dGhpcy5fc291cmNlQnVmZmVyc1tuLnR5cGVdPXRoaXMuX21lZGlhU291cmNlLmFkZFNvdXJjZUJ1ZmZlcihpKTtzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIix0aGlzLmUub25Tb3VyY2VCdWZmZXJFcnJvcikscy5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVlbmQiLHRoaXMuZS5vblNvdXJjZUJ1ZmZlclVwZGF0ZUVuZCl9Y2F0Y2goZSl7cmV0dXJuIGwuZGVmYXVsdC5lKHRoaXMuVEFHLGUubWVzc2FnZSksdm9pZCB0aGlzLl9lbWl0dGVyLmVtaXQoYy5kZWZhdWx0LkVSUk9SLHtjb2RlOmUuY29kZSxtc2c6ZS5tZXNzYWdlfSl9fXRoaXMuX21pbWVUeXBlc1tuLnR5cGVdPWl9dHx8dGhpcy5fcGVuZGluZ1NlZ21lbnRzW24udHlwZV0ucHVzaChuKSxyfHx0aGlzLl9zb3VyY2VCdWZmZXJzW24udHlwZV0mJiF0aGlzLl9zb3VyY2VCdWZmZXJzW24udHlwZV0udXBkYXRpbmcmJnRoaXMuX2RvQXBwZW5kU2VnbWVudHMoKSxoLmRlZmF1bHQuc2FmYXJpJiYiYXVkaW8vbXBlZyI9PT1uLmNvbnRhaW5lciYmbi5tZWRpYUR1cmF0aW9uPjAmJih0aGlzLl9yZXF1aXJlU2V0TWVkaWFEdXJhdGlvbj0hMCx0aGlzLl9wZW5kaW5nTWVkaWFEdXJhdGlvbj1uLm1lZGlhRHVyYXRpb24vMWUzLHRoaXMuX3VwZGF0ZU1lZGlhU291cmNlRHVyYXRpb24oKSl9fSx7a2V5OiJhcHBlbmRNZWRpYVNlZ21lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWU7dGhpcy5fcGVuZGluZ1NlZ21lbnRzW3QudHlwZV0ucHVzaCh0KTt2YXIgbj10aGlzLl9zb3VyY2VCdWZmZXJzW3QudHlwZV07IW58fG4udXBkYXRpbmd8fHRoaXMuX2hhc1BlbmRpbmdSZW1vdmVSYW5nZXMoKXx8dGhpcy5fZG9BcHBlbmRTZWdtZW50cygpfX0se2tleToic2VlayIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMuX3NvdXJjZUJ1ZmZlcnMpaWYodGhpcy5fc291cmNlQnVmZmVyc1t0XSl7dmFyIG49dGhpcy5fc291cmNlQnVmZmVyc1t0XTtpZigib3BlbiI9PT10aGlzLl9tZWRpYVNvdXJjZS5yZWFkeVN0YXRlKXRyeXtuLmFib3J0KCl9Y2F0Y2goZSl7bC5kZWZhdWx0LmUodGhpcy5UQUcsZS5tZXNzYWdlKX10aGlzLl9pZHJMaXN0LmNsZWFyKCk7dmFyIGk9dGhpcy5fcGVuZGluZ1NlZ21lbnRzW3RdO2lmKGkuc3BsaWNlKDAsaS5sZW5ndGgpLCJjbG9zZWQiIT09dGhpcy5fbWVkaWFTb3VyY2UucmVhZHlTdGF0ZSl7Zm9yKHZhciByPTA7cjxuLmJ1ZmZlcmVkLmxlbmd0aDtyKyspe3ZhciBzPW4uYnVmZmVyZWQuc3RhcnQociksYT1uLmJ1ZmZlcmVkLmVuZChyKTt0aGlzLl9wZW5kaW5nUmVtb3ZlUmFuZ2VzW3RdLnB1c2goe3N0YXJ0OnMsZW5kOmF9KX1pZihuLnVwZGF0aW5nfHx0aGlzLl9kb1JlbW92ZVJhbmdlcygpLGguZGVmYXVsdC5zYWZhcmkpe3ZhciBvPXRoaXMuX2xhc3RJbml0U2VnbWVudHNbdF07byYmKHRoaXMuX3BlbmRpbmdTZWdtZW50c1t0XS5wdXNoKG8pLG4udXBkYXRpbmd8fHRoaXMuX2RvQXBwZW5kU2VnbWVudHMoKSl9fX19fSx7a2V5OiJlbmRPZlN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9tZWRpYVNvdXJjZSx0PXRoaXMuX3NvdXJjZUJ1ZmZlcnM7aWYoIWV8fCJvcGVuIiE9PWUucmVhZHlTdGF0ZSlyZXR1cm4gdm9pZChlJiYiY2xvc2VkIj09PWUucmVhZHlTdGF0ZSYmdGhpcy5faGFzUGVuZGluZ1NlZ21lbnRzKCkmJih0aGlzLl9oYXNQZW5kaW5nRW9zPSEwKSk7dC52aWRlbyYmdC52aWRlby51cGRhdGluZ3x8dC5hdWRpbyYmdC5hdWRpby51cGRhdGluZz90aGlzLl9oYXNQZW5kaW5nRW9zPSEwOih0aGlzLl9oYXNQZW5kaW5nRW9zPSExLGUuZW5kT2ZTdHJlYW0oKSl9fSx7a2V5OiJnZXROZWFyZXN0S2V5ZnJhbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pZHJMaXN0LmdldExhc3RTeW5jUG9pbnRCZWZvcmVEdHMoZSl9fSx7a2V5OiJfdXBkYXRlTWVkaWFTb3VyY2VEdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9zb3VyY2VCdWZmZXJzO2lmKDAhPT10aGlzLl9tZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSYmIm9wZW4iPT09dGhpcy5fbWVkaWFTb3VyY2UucmVhZHlTdGF0ZSYmIShlLnZpZGVvJiZlLnZpZGVvLnVwZGF0aW5nfHxlLmF1ZGlvJiZlLmF1ZGlvLnVwZGF0aW5nKSl7dmFyIHQ9dGhpcy5fbWVkaWFTb3VyY2UuZHVyYXRpb24sbj10aGlzLl9wZW5kaW5nTWVkaWFEdXJhdGlvbjtuPjAmJihpc05hTih0KXx8bj50KSYmKGwuZGVmYXVsdC52KHRoaXMuVEFHLCJVcGRhdGUgTWVkaWFTb3VyY2UgZHVyYXRpb24gZnJvbSAiK3QrIiB0byAiK24pLHRoaXMuX21lZGlhU291cmNlLmR1cmF0aW9uPW4pLHRoaXMuX3JlcXVpcmVTZXRNZWRpYUR1cmF0aW9uPSExLHRoaXMuX3BlbmRpbmdNZWRpYUR1cmF0aW9uPTB9fX0se2tleToiX2RvUmVtb3ZlUmFuZ2VzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLl9wZW5kaW5nUmVtb3ZlUmFuZ2VzKWlmKHRoaXMuX3NvdXJjZUJ1ZmZlcnNbZV0mJiF0aGlzLl9zb3VyY2VCdWZmZXJzW2VdLnVwZGF0aW5nKWZvcih2YXIgdD10aGlzLl9zb3VyY2VCdWZmZXJzW2VdLG49dGhpcy5fcGVuZGluZ1JlbW92ZVJhbmdlc1tlXTtuLmxlbmd0aCYmIXQudXBkYXRpbmc7KXt2YXIgaT1uLnNoaWZ0KCk7dC5yZW1vdmUoaS5zdGFydCxpLmVuZCl9fX0se2tleToiX2RvQXBwZW5kU2VnbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcGVuZGluZ1NlZ21lbnRzO2Zvcih2YXIgdCBpbiBlKWlmKHRoaXMuX3NvdXJjZUJ1ZmZlcnNbdF0mJiF0aGlzLl9zb3VyY2VCdWZmZXJzW3RdLnVwZGF0aW5nJiZlW3RdLmxlbmd0aD4wKXt2YXIgbj1lW3RdLnNoaWZ0KCk7aWYobi50aW1lc3RhbXBPZmZzZXQpe3ZhciBpPXRoaXMuX3NvdXJjZUJ1ZmZlcnNbdF0udGltZXN0YW1wT2Zmc2V0LHI9bi50aW1lc3RhbXBPZmZzZXQvMWUzLHM9TWF0aC5hYnMoaS1yKTtzPi4xJiYobC5kZWZhdWx0LnYodGhpcy5UQUcsIlVwZGF0ZSBNUEVHIGF1ZGlvIHRpbWVzdGFtcE9mZnNldCBmcm9tICIraSsiIHRvICIrciksdGhpcy5fc291cmNlQnVmZmVyc1t0XS50aW1lc3RhbXBPZmZzZXQ9ciksZGVsZXRlIG4udGltZXN0YW1wT2Zmc2V0fWlmKCFuLmRhdGF8fDA9PT1uLmRhdGEuYnl0ZUxlbmd0aCljb250aW51ZTt0cnl7dGhpcy5fc291cmNlQnVmZmVyc1t0XS5hcHBlbmRCdWZmZXIobi5kYXRhKSx0aGlzLl9pc0J1ZmZlckZ1bGw9ITEsInZpZGVvIj09PXQmJm4uaGFzT3duUHJvcGVydHkoImluZm8iKSYmdGhpcy5faWRyTGlzdC5hcHBlbmRBcnJheShuLmluZm8uc3luY1BvaW50cyl9Y2F0Y2goZSl7dGhpcy5fcGVuZGluZ1NlZ21lbnRzW3RdLnVuc2hpZnQobiksMjI9PT1lLmNvZGU/KHRoaXMuX2lzQnVmZmVyRnVsbHx8dGhpcy5fZW1pdHRlci5lbWl0KGMuZGVmYXVsdC5CVUZGRVJfRlVMTCksdGhpcy5faXNCdWZmZXJGdWxsPSEwKToobC5kZWZhdWx0LmUodGhpcy5UQUcsZS5tZXNzYWdlKSx0aGlzLl9lbWl0dGVyLmVtaXQoYy5kZWZhdWx0LkVSUk9SLHtjb2RlOmUuY29kZSxtc2c6ZS5tZXNzYWdlfSkpfX19fSx7a2V5OiJfb25Tb3VyY2VPcGVuIix2YWx1ZTpmdW5jdGlvbigpe2lmKGwuZGVmYXVsdC52KHRoaXMuVEFHLCJNZWRpYVNvdXJjZSBvblNvdXJjZU9wZW4iKSx0aGlzLl9tZWRpYVNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzb3VyY2VvcGVuIix0aGlzLmUub25Tb3VyY2VPcGVuKSx0aGlzLl9wZW5kaW5nU291cmNlQnVmZmVySW5pdC5sZW5ndGg+MClmb3IodmFyIGU9dGhpcy5fcGVuZGluZ1NvdXJjZUJ1ZmZlckluaXQ7ZS5sZW5ndGg7KXt2YXIgdD1lLnNoaWZ0KCk7dGhpcy5hcHBlbmRJbml0U2VnbWVudCh0LCEwKX10aGlzLl9oYXNQZW5kaW5nU2VnbWVudHMoKSYmdGhpcy5fZG9BcHBlbmRTZWdtZW50cygpLHRoaXMuX2VtaXR0ZXIuZW1pdChjLmRlZmF1bHQuU09VUkNFX09QRU4pfX0se2tleToiX29uU291cmNlRW5kZWQiLHZhbHVlOmZ1bmN0aW9uKCl7bC5kZWZhdWx0LnYodGhpcy5UQUcsIk1lZGlhU291cmNlIG9uU291cmNlRW5kZWQiKX19LHtrZXk6Il9vblNvdXJjZUNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe2wuZGVmYXVsdC52KHRoaXMuVEFHLCJNZWRpYVNvdXJjZSBvblNvdXJjZUNsb3NlIiksdGhpcy5fbWVkaWFTb3VyY2UmJm51bGwhPXRoaXMuZSYmKHRoaXMuX21lZGlhU291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvdXJjZW9wZW4iLHRoaXMuZS5vblNvdXJjZU9wZW4pLHRoaXMuX21lZGlhU291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvdXJjZWVuZGVkIix0aGlzLmUub25Tb3VyY2VFbmRlZCksdGhpcy5fbWVkaWFTb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigic291cmNlY2xvc2UiLHRoaXMuZS5vblNvdXJjZUNsb3NlKSl9fSx7a2V5OiJfaGFzUGVuZGluZ1NlZ21lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BlbmRpbmdTZWdtZW50cztyZXR1cm4gZS52aWRlby5sZW5ndGg+MHx8ZS5hdWRpby5sZW5ndGg+MH19LHtrZXk6Il9oYXNQZW5kaW5nUmVtb3ZlUmFuZ2VzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BlbmRpbmdSZW1vdmVSYW5nZXM7cmV0dXJuIGUudmlkZW8ubGVuZ3RoPjB8fGUuYXVkaW8ubGVuZ3RoPjB9fSx7a2V5OiJfb25Tb3VyY2VCdWZmZXJVcGRhdGVFbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWlyZVNldE1lZGlhRHVyYXRpb24/dGhpcy5fdXBkYXRlTWVkaWFTb3VyY2VEdXJhdGlvbigpOnRoaXMuX2hhc1BlbmRpbmdSZW1vdmVSYW5nZXMoKT90aGlzLl9kb1JlbW92ZVJhbmdlcygpOnRoaXMuX2hhc1BlbmRpbmdTZWdtZW50cygpP3RoaXMuX2RvQXBwZW5kU2VnbWVudHMoKTp0aGlzLl9oYXNQZW5kaW5nRW9zJiZ0aGlzLmVuZE9mU3RyZWFtKCksdGhpcy5fZW1pdHRlci5lbWl0KGMuZGVmYXVsdC5VUERBVEVfRU5EKX19LHtrZXk6Il9vblNvdXJjZUJ1ZmZlckVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXtsLmRlZmF1bHQuZSh0aGlzLlRBRywiU291cmNlQnVmZmVyIEVycm9yOiAiK2UpfX1dKSxlfSgpO24uZGVmYXVsdD1wfSx7Ii4uL3V0aWxzL2Jyb3dzZXIuanMiOjM5LCIuLi91dGlscy9leGNlcHRpb24uanMiOjQwLCIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuL21lZGlhLXNlZ21lbnQtaW5mby5qcyI6OCwiLi9tc2UtZXZlbnRzLmpzIjoxMCxldmVudHM6Mn1dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT17RVJST1I6ImVycm9yIixTT1VSQ0VfT1BFTjoic291cmNlX29wZW4iLFVQREFURV9FTkQ6InVwZGF0ZV9lbmQiLEJVRkZFUl9GVUxMOiJidWZmZXJfZnVsbCJ9O24uZGVmYXVsdD1pfSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxhPWUoImV2ZW50cyIpLG89aShhKSx1PWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLGw9aSh1KSxkPWUoIi4uL3V0aWxzL2xvZ2dpbmctY29udHJvbC5qcyIpLGg9aShkKSxmPWUoIi4vdHJhbnNtdXhpbmctY29udHJvbGxlci5qcyIpLGM9aShmKSxfPWUoIi4vdHJhbnNtdXhpbmctZXZlbnRzLmpzIiksbT1pKF8pLHA9ZSgiLi90cmFuc211eGluZy13b3JrZXIuanMiKSx2PWkocCksZz1lKCIuL21lZGlhLWluZm8uanMiKSx5PWkoZyksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQobixpKXtpZihyKHRoaXMsdCksdGhpcy5UQUc9IlRyYW5zbXV4ZXIiLHRoaXMuX2VtaXR0ZXI9bmV3IG8uZGVmYXVsdCxpLmVuYWJsZVdvcmtlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIpdHJ5e3ZhciBzPWUoIndlYndvcmtpZnkiKTt0aGlzLl93b3JrZXI9cyh2LmRlZmF1bHQpLHRoaXMuX3dvcmtlckRlc3Ryb3lpbmc9ITEsdGhpcy5fd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uV29ya2VyTWVzc2FnZS5iaW5kKHRoaXMpKSx0aGlzLl93b3JrZXIucG9zdE1lc3NhZ2Uoe2NtZDoiaW5pdCIscGFyYW06W24saV19KSx0aGlzLmU9e29uTG9nZ2luZ0NvbmZpZ0NoYW5nZWQ6dGhpcy5fb25Mb2dnaW5nQ29uZmlnQ2hhbmdlZC5iaW5kKHRoaXMpfSxoLmRlZmF1bHQucmVnaXN0ZXJMaXN0ZW5lcih0aGlzLmUub25Mb2dnaW5nQ29uZmlnQ2hhbmdlZCksdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKHtjbWQ6ImxvZ2dpbmdfY29uZmlnIixwYXJhbTpoLmRlZmF1bHQuZ2V0Q29uZmlnKCl9KX1jYXRjaChlKXtsLmRlZmF1bHQuZSh0aGlzLlRBRywiRXJyb3Igd2hpbGUgaW5pdGlhbGl6ZSB0cmFuc211eGluZyB3b3JrZXIsIGZhbGxiYWNrIHRvIGlubGluZSB0cmFuc211eGluZyIpLHRoaXMuX3dvcmtlcj1udWxsLHRoaXMuX2NvbnRyb2xsZXI9bmV3IGMuZGVmYXVsdChuLGkpfWVsc2UgdGhpcy5fY29udHJvbGxlcj1uZXcgYy5kZWZhdWx0KG4saSk7aWYodGhpcy5fY29udHJvbGxlcil7dmFyIGE9dGhpcy5fY29udHJvbGxlcjthLm9uKG0uZGVmYXVsdC5JT19FUlJPUix0aGlzLl9vbklPRXJyb3IuYmluZCh0aGlzKSksYS5vbihtLmRlZmF1bHQuREVNVVhfRVJST1IsdGhpcy5fb25EZW11eEVycm9yLmJpbmQodGhpcykpLGEub24obS5kZWZhdWx0LklOSVRfU0VHTUVOVCx0aGlzLl9vbkluaXRTZWdtZW50LmJpbmQodGhpcykpLGEub24obS5kZWZhdWx0Lk1FRElBX1NFR01FTlQsdGhpcy5fb25NZWRpYVNlZ21lbnQuYmluZCh0aGlzKSksYS5vbihtLmRlZmF1bHQuTE9BRElOR19DT01QTEVURSx0aGlzLl9vbkxvYWRpbmdDb21wbGV0ZS5iaW5kKHRoaXMpKSwKYS5vbihtLmRlZmF1bHQuUkVDT1ZFUkVEX0VBUkxZX0VPRix0aGlzLl9vblJlY292ZXJlZEVhcmx5RW9mLmJpbmQodGhpcykpLGEub24obS5kZWZhdWx0Lk1FRElBX0lORk8sdGhpcy5fb25NZWRpYUluZm8uYmluZCh0aGlzKSksYS5vbihtLmRlZmF1bHQuU1RBVElTVElDU19JTkZPLHRoaXMuX29uU3RhdGlzdGljc0luZm8uYmluZCh0aGlzKSksYS5vbihtLmRlZmF1bHQuUkVDT01NRU5EX1NFRUtQT0lOVCx0aGlzLl9vblJlY29tbWVuZFNlZWtwb2ludC5iaW5kKHRoaXMpKX19cmV0dXJuIHModCxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl93b3JrZXI/dGhpcy5fd29ya2VyRGVzdHJveWluZ3x8KHRoaXMuX3dvcmtlckRlc3Ryb3lpbmc9ITAsdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKHtjbWQ6ImRlc3Ryb3kifSksaC5kZWZhdWx0LnJlbW92ZUxpc3RlbmVyKHRoaXMuZS5vbkxvZ2dpbmdDb25maWdDaGFuZ2VkKSx0aGlzLmU9bnVsbCk6KHRoaXMuX2NvbnRyb2xsZXIuZGVzdHJveSgpLHRoaXMuX2NvbnRyb2xsZXI9bnVsbCksdGhpcy5fZW1pdHRlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLl9lbWl0dGVyPW51bGx9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLmFkZExpc3RlbmVyKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihlLHQpfX0se2tleToiaGFzV29ya2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl93b3JrZXJ9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3dvcmtlcj90aGlzLl93b3JrZXIucG9zdE1lc3NhZ2Uoe2NtZDoic3RhcnQifSk6dGhpcy5fY29udHJvbGxlci5zdGFydCgpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fd29ya2VyP3RoaXMuX3dvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiJzdG9wIn0pOnRoaXMuX2NvbnRyb2xsZXIuc3RvcCgpfX0se2tleToic2VlayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fd29ya2VyP3RoaXMuX3dvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiJzZWVrIixwYXJhbTplfSk6dGhpcy5fY29udHJvbGxlci5zZWVrKGUpfX0se2tleToicGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fd29ya2VyP3RoaXMuX3dvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiJwYXVzZSJ9KTp0aGlzLl9jb250cm9sbGVyLnBhdXNlKCl9fSx7a2V5OiJyZXN1bWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fd29ya2VyP3RoaXMuX3dvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiJyZXN1bWUifSk6dGhpcy5fY29udHJvbGxlci5yZXN1bWUoKX19LHtrZXk6Il9vbkluaXRTZWdtZW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe24uX2VtaXR0ZXIuZW1pdChtLmRlZmF1bHQuSU5JVF9TRUdNRU5ULGUsdCl9KX19LHtrZXk6Il9vbk1lZGlhU2VnbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtuLl9lbWl0dGVyLmVtaXQobS5kZWZhdWx0Lk1FRElBX1NFR01FTlQsZSx0KX0pfX0se2tleToiX29uTG9hZGluZ0NvbXBsZXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2UuX2VtaXR0ZXIuZW1pdChtLmRlZmF1bHQuTE9BRElOR19DT01QTEVURSl9KX19LHtrZXk6Il9vblJlY292ZXJlZEVhcmx5RW9mIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2UuX2VtaXR0ZXIuZW1pdChtLmRlZmF1bHQuUkVDT1ZFUkVEX0VBUkxZX0VPRil9KX19LHtrZXk6Il9vbk1lZGlhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7dC5fZW1pdHRlci5lbWl0KG0uZGVmYXVsdC5NRURJQV9JTkZPLGUpfSl9fSx7a2V5OiJfb25TdGF0aXN0aWNzSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7dC5fZW1pdHRlci5lbWl0KG0uZGVmYXVsdC5TVEFUSVNUSUNTX0lORk8sZSl9KX19LHtrZXk6Il9vbklPRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7bi5fZW1pdHRlci5lbWl0KG0uZGVmYXVsdC5JT19FUlJPUixlLHQpfSl9fSx7a2V5OiJfb25EZW11eEVycm9yIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe24uX2VtaXR0ZXIuZW1pdChtLmRlZmF1bHQuREVNVVhfRVJST1IsZSx0KX0pfX0se2tleToiX29uUmVjb21tZW5kU2Vla3BvaW50Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXt0Ll9lbWl0dGVyLmVtaXQobS5kZWZhdWx0LlJFQ09NTUVORF9TRUVLUE9JTlQsZSl9KX19LHtrZXk6Il9vbkxvZ2dpbmdDb25maWdDaGFuZ2VkIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl93b3JrZXImJnRoaXMuX3dvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiJsb2dnaW5nX2NvbmZpZyIscGFyYW06ZX0pfX0se2tleToiX29uV29ya2VyTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49dC5kYXRhO2lmKCJkZXN0cm95ZWQiPT09dC5tc2d8fHRoaXMuX3dvcmtlckRlc3Ryb3lpbmcpcmV0dXJuIHRoaXMuX3dvcmtlckRlc3Ryb3lpbmc9ITEsdGhpcy5fd29ya2VyLnRlcm1pbmF0ZSgpLHZvaWQodGhpcy5fd29ya2VyPW51bGwpO3N3aXRjaCh0Lm1zZyl7Y2FzZSBtLmRlZmF1bHQuSU5JVF9TRUdNRU5UOmNhc2UgbS5kZWZhdWx0Lk1FRElBX1NFR01FTlQ6dGhpcy5fZW1pdHRlci5lbWl0KHQubXNnLG4udHlwZSxuLmRhdGEpO2JyZWFrO2Nhc2UgbS5kZWZhdWx0LkxPQURJTkdfQ09NUExFVEU6Y2FzZSBtLmRlZmF1bHQuUkVDT1ZFUkVEX0VBUkxZX0VPRjp0aGlzLl9lbWl0dGVyLmVtaXQodC5tc2cpO2JyZWFrO2Nhc2UgbS5kZWZhdWx0Lk1FRElBX0lORk86T2JqZWN0LnNldFByb3RvdHlwZU9mKG4seS5kZWZhdWx0LnByb3RvdHlwZSksdGhpcy5fZW1pdHRlci5lbWl0KHQubXNnLG4pO2JyZWFrO2Nhc2UgbS5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTzp0aGlzLl9lbWl0dGVyLmVtaXQodC5tc2csbik7YnJlYWs7Y2FzZSBtLmRlZmF1bHQuSU9fRVJST1I6Y2FzZSBtLmRlZmF1bHQuREVNVVhfRVJST1I6dGhpcy5fZW1pdHRlci5lbWl0KHQubXNnLG4udHlwZSxuLmluZm8pO2JyZWFrO2Nhc2UgbS5kZWZhdWx0LlJFQ09NTUVORF9TRUVLUE9JTlQ6dGhpcy5fZW1pdHRlci5lbWl0KHQubXNnLG4pfX19XSksdH0oKTtuLmRlZmF1bHQ9RX0seyIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuLi91dGlscy9sb2dnaW5nLWNvbnRyb2wuanMiOjQyLCIuL21lZGlhLWluZm8uanMiOjcsIi4vdHJhbnNtdXhpbmctY29udHJvbGxlci5qcyI6MTIsIi4vdHJhbnNtdXhpbmctZXZlbnRzLmpzIjoxMywiLi90cmFuc211eGluZy13b3JrZXIuanMiOjE0LGV2ZW50czoyLHdlYndvcmtpZnk6NH1dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksYT1lKCJldmVudHMiKSxvPWkoYSksdT1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxsPWkodSksZD1lKCIuLi91dGlscy9icm93c2VyLmpzIiksaD1pKGQpLGY9ZSgiLi9tZWRpYS1pbmZvLmpzIiksYz1pKGYpLF89ZSgiLi4vZGVtdXgvZmx2LWRlbXV4ZXIuanMiKSxtPWkoXykscD1lKCIuLi9yZW11eC9tcDQtcmVtdXhlci5qcyIpLHY9aShwKSxnPWUoIi4uL2RlbXV4L2RlbXV4LWVycm9ycy5qcyIpLHk9aShnKSxFPWUoIi4uL2lvL2lvLWNvbnRyb2xsZXIuanMiKSxiPWkoRSksUz1lKCIuL3RyYW5zbXV4aW5nLWV2ZW50cy5qcyIpLGs9aShTKSxMPShlKCIuLi9pby9sb2FkZXIuanMiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXtyKHRoaXMsZSksdGhpcy5UQUc9IlRyYW5zbXV4aW5nQ29udHJvbGxlciIsdGhpcy5fZW1pdHRlcj1uZXcgby5kZWZhdWx0LHRoaXMuX2NvbmZpZz1uLHQuc2VnbWVudHN8fCh0LnNlZ21lbnRzPVt7ZHVyYXRpb246dC5kdXJhdGlvbixmaWxlc2l6ZTp0LmZpbGVzaXplLHVybDp0LnVybH1dKSwiYm9vbGVhbiIhPXR5cGVvZiB0LmNvcnMmJih0LmNvcnM9ITApLCJib29sZWFuIiE9dHlwZW9mIHQud2l0aENyZWRlbnRpYWxzJiYodC53aXRoQ3JlZGVudGlhbHM9ITEpLHRoaXMuX21lZGlhRGF0YVNvdXJjZT10LHRoaXMuX2N1cnJlbnRTZWdtZW50SW5kZXg9MDt2YXIgaT0wO3RoaXMuX21lZGlhRGF0YVNvdXJjZS5zZWdtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudGltZXN0YW1wQmFzZT1pLGkrPWUuZHVyYXRpb24sZS5jb3JzPXQuY29ycyxlLndpdGhDcmVkZW50aWFscz10LndpdGhDcmVkZW50aWFsc30pLGlzTmFOKGkpfHx0aGlzLl9tZWRpYURhdGFTb3VyY2UuZHVyYXRpb249PT1pfHwodGhpcy5fbWVkaWFEYXRhU291cmNlLmR1cmF0aW9uPWkpLHRoaXMuX21lZGlhSW5mbz1udWxsLHRoaXMuX2RlbXV4ZXI9bnVsbCx0aGlzLl9yZW11eGVyPW51bGwsdGhpcy5faW9jdGw9bnVsbCx0aGlzLl9wZW5kaW5nU2Vla1RpbWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVzb2x2ZVNlZWtQb2ludD1udWxsLHRoaXMuX3N0YXRpc3RpY3NSZXBvcnRlcj1udWxsfXJldHVybiBzKGUsW3trZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbWVkaWFJbmZvPW51bGwsdGhpcy5fbWVkaWFEYXRhU291cmNlPW51bGwsdGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyJiZ0aGlzLl9kaXNhYmxlU3RhdGlzdGljc1JlcG9ydGVyKCksdGhpcy5faW9jdGwmJih0aGlzLl9pb2N0bC5kZXN0cm95KCksdGhpcy5faW9jdGw9bnVsbCksdGhpcy5fZGVtdXhlciYmKHRoaXMuX2RlbXV4ZXIuZGVzdHJveSgpLHRoaXMuX2RlbXV4ZXI9bnVsbCksdGhpcy5fcmVtdXhlciYmKHRoaXMuX3JlbXV4ZXIuZGVzdHJveSgpLHRoaXMuX3JlbXV4ZXI9bnVsbCksdGhpcy5fZW1pdHRlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLl9lbWl0dGVyPW51bGx9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLmFkZExpc3RlbmVyKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihlLHQpfX0se2tleToic3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZFNlZ21lbnQoMCksdGhpcy5fZW5hYmxlU3RhdGlzdGljc1JlcG9ydGVyKCl9fSx7a2V5OiJfbG9hZFNlZ21lbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY3VycmVudFNlZ21lbnRJbmRleD1lO3ZhciBuPXRoaXMuX21lZGlhRGF0YVNvdXJjZS5zZWdtZW50c1tlXSxpPXRoaXMuX2lvY3RsPW5ldyBiLmRlZmF1bHQobix0aGlzLl9jb25maWcsZSk7aS5vbkVycm9yPXRoaXMuX29uSU9FeGNlcHRpb24uYmluZCh0aGlzKSxpLm9uU2Vla2VkPXRoaXMuX29uSU9TZWVrZWQuYmluZCh0aGlzKSxpLm9uQ29tcGxldGU9dGhpcy5fb25JT0NvbXBsZXRlLmJpbmQodGhpcyksaS5vblJlZGlyZWN0PXRoaXMuX29uSU9SZWRpcmVjdC5iaW5kKHRoaXMpLGkub25SZWNvdmVyZWRFYXJseUVvZj10aGlzLl9vbklPUmVjb3ZlcmVkRWFybHlFb2YuYmluZCh0aGlzKSx0P3RoaXMuX2RlbXV4ZXIuYmluZERhdGFTb3VyY2UodGhpcy5faW9jdGwpOmkub25EYXRhQXJyaXZhbD10aGlzLl9vbkluaXRDaHVua0Fycml2YWwuYmluZCh0aGlzKSxpLm9wZW4odCl9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2ludGVybmFsQWJvcnQoKSx0aGlzLl9kaXNhYmxlU3RhdGlzdGljc1JlcG9ydGVyKCl9fSx7a2V5OiJfaW50ZXJuYWxBYm9ydCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pb2N0bCYmKHRoaXMuX2lvY3RsLmRlc3Ryb3koKSx0aGlzLl9pb2N0bD1udWxsKX19LHtrZXk6InBhdXNlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2lvY3RsJiZ0aGlzLl9pb2N0bC5pc1dvcmtpbmcoKSYmKHRoaXMuX2lvY3RsLnBhdXNlKCksdGhpcy5fZGlzYWJsZVN0YXRpc3RpY3NSZXBvcnRlcigpKX19LHtrZXk6InJlc3VtZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pb2N0bCYmdGhpcy5faW9jdGwuaXNQYXVzZWQoKSYmKHRoaXMuX2lvY3RsLnJlc3VtZSgpLHRoaXMuX2VuYWJsZVN0YXRpc3RpY3NSZXBvcnRlcigpKX19LHtrZXk6InNlZWsiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKG51bGwhPXRoaXMuX21lZGlhSW5mbyYmdGhpcy5fbWVkaWFJbmZvLmlzU2Vla2FibGUoKSl7dmFyIHQ9dGhpcy5fc2VhcmNoU2VnbWVudEluZGV4Q29udGFpbnMoZSk7aWYodD09PXRoaXMuX2N1cnJlbnRTZWdtZW50SW5kZXgpe3ZhciBuPXRoaXMuX21lZGlhSW5mby5zZWdtZW50c1t0XTtpZih2b2lkIDA9PW4pdGhpcy5fcGVuZGluZ1NlZWtUaW1lPWU7ZWxzZXt2YXIgaT1uLmdldE5lYXJlc3RLZXlmcmFtZShlKTt0aGlzLl9yZW11eGVyLnNlZWsoaS5taWxsaXNlY29uZHMpLHRoaXMuX2lvY3RsLnNlZWsoaS5maWxlcG9zaXRpb24pLHRoaXMuX3BlbmRpbmdSZXNvbHZlU2Vla1BvaW50PWkubWlsbGlzZWNvbmRzfX1lbHNle3ZhciByPXRoaXMuX21lZGlhSW5mby5zZWdtZW50c1t0XTtpZih2b2lkIDA9PXIpdGhpcy5fcGVuZGluZ1NlZWtUaW1lPWUsdGhpcy5faW50ZXJuYWxBYm9ydCgpLHRoaXMuX3JlbXV4ZXIuc2VlaygpLHRoaXMuX3JlbXV4ZXIuaW5zZXJ0RGlzY29udGludWl0eSgpLHRoaXMuX2xvYWRTZWdtZW50KHQpO2Vsc2V7dmFyIHM9ci5nZXROZWFyZXN0S2V5ZnJhbWUoZSk7dGhpcy5faW50ZXJuYWxBYm9ydCgpLHRoaXMuX3JlbXV4ZXIuc2VlayhlKSx0aGlzLl9yZW11eGVyLmluc2VydERpc2NvbnRpbnVpdHkoKSx0aGlzLl9kZW11eGVyLnJlc2V0TWVkaWFJbmZvKCksdGhpcy5fZGVtdXhlci50aW1lc3RhbXBCYXNlPXRoaXMuX21lZGlhRGF0YVNvdXJjZS5zZWdtZW50c1t0XS50aW1lc3RhbXBCYXNlLHRoaXMuX2xvYWRTZWdtZW50KHQscy5maWxlcG9zaXRpb24pLHRoaXMuX3BlbmRpbmdSZXNvbHZlU2Vla1BvaW50PXMubWlsbGlzZWNvbmRzLHRoaXMuX3JlcG9ydFNlZ21lbnRNZWRpYUluZm8odCl9fXRoaXMuX2VuYWJsZVN0YXRpc3RpY3NSZXBvcnRlcigpfX19LHtrZXk6Il9zZWFyY2hTZWdtZW50SW5kZXhDb250YWlucyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX21lZGlhRGF0YVNvdXJjZS5zZWdtZW50cyxuPXQubGVuZ3RoLTEsaT0wO2k8dC5sZW5ndGg7aSsrKWlmKGU8dFtpXS50aW1lc3RhbXBCYXNlKXtuPWktMTticmVha31yZXR1cm4gbn19LHtrZXk6Il9vbkluaXRDaHVua0Fycml2YWwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxpPW51bGwscj0wO2lmKHQ+MCl0aGlzLl9kZW11eGVyLmJpbmREYXRhU291cmNlKHRoaXMuX2lvY3RsKSx0aGlzLl9kZW11eGVyLnRpbWVzdGFtcEJhc2U9dGhpcy5fbWVkaWFEYXRhU291cmNlLnNlZ21lbnRzW3RoaXMuX2N1cnJlbnRTZWdtZW50SW5kZXhdLnRpbWVzdGFtcEJhc2Uscj10aGlzLl9kZW11eGVyLnBhcnNlQ2h1bmtzKGUsdCk7ZWxzZSBpZigoaT1tLmRlZmF1bHQucHJvYmUoZSkpLm1hdGNoKXt0aGlzLl9kZW11eGVyPW5ldyBtLmRlZmF1bHQoaSx0aGlzLl9jb25maWcpLHRoaXMuX3JlbXV4ZXJ8fCh0aGlzLl9yZW11eGVyPW5ldyB2LmRlZmF1bHQodGhpcy5fY29uZmlnKSk7dmFyIHM9dGhpcy5fbWVkaWFEYXRhU291cmNlO3ZvaWQgMD09cy5kdXJhdGlvbnx8aXNOYU4ocy5kdXJhdGlvbil8fCh0aGlzLl9kZW11eGVyLm92ZXJyaWRlZER1cmF0aW9uPXMuZHVyYXRpb24pLHRoaXMuX2RlbXV4ZXIudGltZXN0YW1wQmFzZT1zLnNlZ21lbnRzW3RoaXMuX2N1cnJlbnRTZWdtZW50SW5kZXhdLnRpbWVzdGFtcEJhc2UsdGhpcy5fZGVtdXhlci5vbkVycm9yPXRoaXMuX29uRGVtdXhFeGNlcHRpb24uYmluZCh0aGlzKSx0aGlzLl9kZW11eGVyLm9uTWVkaWFJbmZvPXRoaXMuX29uTWVkaWFJbmZvLmJpbmQodGhpcyksdGhpcy5fcmVtdXhlci5iaW5kRGF0YVNvdXJjZSh0aGlzLl9kZW11eGVyLmJpbmREYXRhU291cmNlKHRoaXMuX2lvY3RsKSksdGhpcy5fcmVtdXhlci5vbkluaXRTZWdtZW50PXRoaXMuX29uUmVtdXhlckluaXRTZWdtZW50QXJyaXZhbC5iaW5kKHRoaXMpLHRoaXMuX3JlbXV4ZXIub25NZWRpYVNlZ21lbnQ9dGhpcy5fb25SZW11eGVyTWVkaWFTZWdtZW50QXJyaXZhbC5iaW5kKHRoaXMpLHI9dGhpcy5fZGVtdXhlci5wYXJzZUNodW5rcyhlLHQpfWVsc2UgaT1udWxsLGwuZGVmYXVsdC5lKHRoaXMuVEFHLCJOb24tRkxWLCBVbnN1cHBvcnRlZCBtZWRpYSB0eXBlISIpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtuLl9pbnRlcm5hbEFib3J0KCl9KSx0aGlzLl9lbWl0dGVyLmVtaXQoay5kZWZhdWx0LkRFTVVYX0VSUk9SLHkuZGVmYXVsdC5GT1JNQVRfVU5TVVBQT1JURUQsIk5vbi1GTFYsIFVuc3VwcG9ydGVkIG1lZGlhIHR5cGUiKSxyPTA7cmV0dXJuIHJ9fSx7a2V5OiJfb25NZWRpYUluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7bnVsbD09dGhpcy5fbWVkaWFJbmZvJiYodGhpcy5fbWVkaWFJbmZvPU9iamVjdC5hc3NpZ24oe30sZSksdGhpcy5fbWVkaWFJbmZvLmtleWZyYW1lc0luZGV4PW51bGwsdGhpcy5fbWVkaWFJbmZvLnNlZ21lbnRzPVtdLHRoaXMuX21lZGlhSW5mby5zZWdtZW50Q291bnQ9dGhpcy5fbWVkaWFEYXRhU291cmNlLnNlZ21lbnRzLmxlbmd0aCxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5fbWVkaWFJbmZvLGMuZGVmYXVsdC5wcm90b3R5cGUpKTt2YXIgbj1PYmplY3QuYXNzaWduKHt9LGUpO09iamVjdC5zZXRQcm90b3R5cGVPZihuLGMuZGVmYXVsdC5wcm90b3R5cGUpLHRoaXMuX21lZGlhSW5mby5zZWdtZW50c1t0aGlzLl9jdXJyZW50U2VnbWVudEluZGV4XT1uLHRoaXMuX3JlcG9ydFNlZ21lbnRNZWRpYUluZm8odGhpcy5fY3VycmVudFNlZ21lbnRJbmRleCksbnVsbCE9dGhpcy5fcGVuZGluZ1NlZWtUaW1lJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGU9dC5fcGVuZGluZ1NlZWtUaW1lO3QuX3BlbmRpbmdTZWVrVGltZT1udWxsLHQuc2VlayhlKX0pfX0se2tleToiX29uSU9TZWVrZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcmVtdXhlci5pbnNlcnREaXNjb250aW51aXR5KCl9fSx7a2V5OiJfb25JT0NvbXBsZXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLG49dCsxO248dGhpcy5fbWVkaWFEYXRhU291cmNlLnNlZ21lbnRzLmxlbmd0aD8odGhpcy5faW50ZXJuYWxBYm9ydCgpLHRoaXMuX2xvYWRTZWdtZW50KG4pKToodGhpcy5fZW1pdHRlci5lbWl0KGsuZGVmYXVsdC5MT0FESU5HX0NPTVBMRVRFKSx0aGlzLl9kaXNhYmxlU3RhdGlzdGljc1JlcG9ydGVyKCkpfX0se2tleToiX29uSU9SZWRpcmVjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW9jdGwuZXh0cmFEYXRhO3RoaXMuX21lZGlhRGF0YVNvdXJjZS5zZWdtZW50c1t0XS5yZWRpcmVjdGVkVVJMPWV9fSx7a2V5OiJfb25JT1JlY292ZXJlZEVhcmx5RW9mIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIuZW1pdChrLmRlZmF1bHQuUkVDT1ZFUkVEX0VBUkxZX0VPRil9fSx7a2V5OiJfb25JT0V4Y2VwdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtsLmRlZmF1bHQuZSh0aGlzLlRBRywiSU9FeGNlcHRpb246IHR5cGUgPSAiK2UrIiwgY29kZSA9ICIrdC5jb2RlKyIsIG1zZyA9ICIrdC5tc2cpLHRoaXMuX2VtaXR0ZXIuZW1pdChrLmRlZmF1bHQuSU9fRVJST1IsZSx0KSx0aGlzLl9kaXNhYmxlU3RhdGlzdGljc1JlcG9ydGVyKCl9fSx7a2V5OiJfb25EZW11eEV4Y2VwdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtsLmRlZmF1bHQuZSh0aGlzLlRBRywiRGVtdXhFeGNlcHRpb246IHR5cGUgPSAiK2UrIiwgaW5mbyA9ICIrdCksdGhpcy5fZW1pdHRlci5lbWl0KGsuZGVmYXVsdC5ERU1VWF9FUlJPUixlLHQpfX0se2tleToiX29uUmVtdXhlckluaXRTZWdtZW50QXJyaXZhbCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLmVtaXQoay5kZWZhdWx0LklOSVRfU0VHTUVOVCxlLHQpfX0se2tleToiX29uUmVtdXhlck1lZGlhU2VnbWVudEFycml2YWwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09dGhpcy5fcGVuZGluZ1NlZWtUaW1lJiYodGhpcy5fZW1pdHRlci5lbWl0KGsuZGVmYXVsdC5NRURJQV9TRUdNRU5ULGUsdCksbnVsbCE9dGhpcy5fcGVuZGluZ1Jlc29sdmVTZWVrUG9pbnQmJiJ2aWRlbyI9PT1lKSl7dmFyIG49dC5pbmZvLnN5bmNQb2ludHMsaT10aGlzLl9wZW5kaW5nUmVzb2x2ZVNlZWtQb2ludDt0aGlzLl9wZW5kaW5nUmVzb2x2ZVNlZWtQb2ludD1udWxsLGguZGVmYXVsdC5zYWZhcmkmJm4ubGVuZ3RoPjAmJm5bMF0ub3JpZ2luYWxEdHM9PT1pJiYoaT1uWzBdLnB0cyksdGhpcy5fZW1pdHRlci5lbWl0KGsuZGVmYXVsdC5SRUNPTU1FTkRfU0VFS1BPSU5ULGkpfX19LHtrZXk6Il9lbmFibGVTdGF0aXN0aWNzUmVwb3J0ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyJiYodGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyPXNlbGYuc2V0SW50ZXJ2YWwodGhpcy5fcmVwb3J0U3RhdGlzdGljc0luZm8uYmluZCh0aGlzKSx0aGlzLl9jb25maWcuc3RhdGlzdGljc0luZm9SZXBvcnRJbnRlcnZhbCkpfX0se2tleToiX2Rpc2FibGVTdGF0aXN0aWNzUmVwb3J0ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyJiYoc2VsZi5jbGVhckludGVydmFsKHRoaXMuX3N0YXRpc3RpY3NSZXBvcnRlciksdGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyPW51bGwpfX0se2tleToiX3JlcG9ydFNlZ21lbnRNZWRpYUluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21lZGlhSW5mby5zZWdtZW50c1tlXSxuPU9iamVjdC5hc3NpZ24oe30sdCk7bi5kdXJhdGlvbj10aGlzLl9tZWRpYUluZm8uZHVyYXRpb24sbi5zZWdtZW50Q291bnQ9dGhpcy5fbWVkaWFJbmZvLnNlZ21lbnRDb3VudCxkZWxldGUgbi5zZWdtZW50cyxkZWxldGUgbi5rZXlmcmFtZXNJbmRleCx0aGlzLl9lbWl0dGVyLmVtaXQoay5kZWZhdWx0Lk1FRElBX0lORk8sbil9fSx7a2V5OiJfcmVwb3J0U3RhdGlzdGljc0luZm8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9e307ZS51cmw9dGhpcy5faW9jdGwuY3VycmVudFVSTCxlLmhhc1JlZGlyZWN0PXRoaXMuX2lvY3RsLmhhc1JlZGlyZWN0LGUuaGFzUmVkaXJlY3QmJihlLnJlZGlyZWN0ZWRVUkw9dGhpcy5faW9jdGwuY3VycmVudFJlZGlyZWN0ZWRVUkwpLGUuc3BlZWQ9dGhpcy5faW9jdGwuY3VycmVudFNwZWVkLGUubG9hZGVyVHlwZT10aGlzLl9pb2N0bC5sb2FkZXJUeXBlLGUuY3VycmVudFNlZ21lbnRJbmRleD10aGlzLl9jdXJyZW50U2VnbWVudEluZGV4LGUudG90YWxTZWdtZW50Q291bnQ9dGhpcy5fbWVkaWFEYXRhU291cmNlLnNlZ21lbnRzLmxlbmd0aCx0aGlzLl9lbWl0dGVyLmVtaXQoay5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyxlKX19XSksZX0oKSk7bi5kZWZhdWx0PUx9LHsiLi4vZGVtdXgvZGVtdXgtZXJyb3JzLmpzIjoxNiwiLi4vZGVtdXgvZmx2LWRlbXV4ZXIuanMiOjE4LCIuLi9pby9pby1jb250cm9sbGVyLmpzIjoyMywiLi4vaW8vbG9hZGVyLmpzIjoyNCwiLi4vcmVtdXgvbXA0LXJlbXV4ZXIuanMiOjM4LCIuLi91dGlscy9icm93c2VyLmpzIjozOSwiLi4vdXRpbHMvbG9nZ2VyLmpzIjo0MSwiLi9tZWRpYS1pbmZvLmpzIjo3LCIuL3RyYW5zbXV4aW5nLWV2ZW50cy5qcyI6MTMsZXZlbnRzOjJ9XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9e0lPX0VSUk9SOiJpb19lcnJvciIsREVNVVhfRVJST1I6ImRlbXV4X2Vycm9yIixJTklUX1NFR01FTlQ6ImluaXRfc2VnbWVudCIsTUVESUFfU0VHTUVOVDoibWVkaWFfc2VnbWVudCIsTE9BRElOR19DT01QTEVURToibG9hZGluZ19jb21wbGV0ZSIsUkVDT1ZFUkVEX0VBUkxZX0VPRjoicmVjb3ZlcmVkX2Vhcmx5X2VvZiIsTUVESUFfSU5GTzoibWVkaWFfaW5mbyIsU1RBVElTVElDU19JTkZPOiJzdGF0aXN0aWNzX2luZm8iLFJFQ09NTUVORF9TRUVLUE9JTlQ6InJlY29tbWVuZF9zZWVrcG9pbnQifTtuLmRlZmF1bHQ9aX0se31dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxzPShpKHIpLGUoIi4uL3V0aWxzL2xvZ2dpbmctY29udHJvbC5qcyIpKSxhPWkocyksbz1lKCIuLi91dGlscy9wb2x5ZmlsbC5qcyIpLHU9aShvKSxsPWUoIi4vdHJhbnNtdXhpbmctY29udHJvbGxlci5qcyIpLGQ9aShsKSxoPWUoIi4vdHJhbnNtdXhpbmctZXZlbnRzLmpzIiksZj1pKGgpLGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciBpPXttc2c6Zi5kZWZhdWx0LklOSVRfU0VHTUVOVCxkYXRhOnt0eXBlOnQsZGF0YTpufX07ZS5wb3N0TWVzc2FnZShpLFtuLmRhdGFdKX1mdW5jdGlvbiBuKHQsbil7dmFyIGk9e21zZzpmLmRlZmF1bHQuTUVESUFfU0VHTUVOVCxkYXRhOnt0eXBlOnQsZGF0YTpufX07ZS5wb3N0TWVzc2FnZShpLFtuLmRhdGFdKX1mdW5jdGlvbiBpKCl7dmFyIHQ9e21zZzpmLmRlZmF1bHQuTE9BRElOR19DT01QTEVURX07ZS5wb3N0TWVzc2FnZSh0KX1mdW5jdGlvbiByKCl7dmFyIHQ9e21zZzpmLmRlZmF1bHQuUkVDT1ZFUkVEX0VBUkxZX0VPRn07ZS5wb3N0TWVzc2FnZSh0KX1mdW5jdGlvbiBzKHQpe3ZhciBuPXttc2c6Zi5kZWZhdWx0Lk1FRElBX0lORk8sZGF0YTp0fTtlLnBvc3RNZXNzYWdlKG4pfWZ1bmN0aW9uIG8odCl7dmFyIG49e21zZzpmLmRlZmF1bHQuU1RBVElTVElDU19JTkZPLGRhdGE6dH07ZS5wb3N0TWVzc2FnZShuKX1mdW5jdGlvbiBsKHQsbil7ZS5wb3N0TWVzc2FnZSh7bXNnOmYuZGVmYXVsdC5JT19FUlJPUixkYXRhOnt0eXBlOnQsaW5mbzpufX0pfWZ1bmN0aW9uIGgodCxuKXtlLnBvc3RNZXNzYWdlKHttc2c6Zi5kZWZhdWx0LkRFTVVYX0VSUk9SLGRhdGE6e3R5cGU6dCxpbmZvOm59fSl9ZnVuY3Rpb24gYyh0KXtlLnBvc3RNZXNzYWdlKHttc2c6Zi5kZWZhdWx0LlJFQ09NTUVORF9TRUVLUE9JTlQsZGF0YTp0fSl9dmFyIF89bnVsbDt1LmRlZmF1bHQuaW5zdGFsbCgpLGUuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24odSl7c3dpdGNoKHUuZGF0YS5jbWQpe2Nhc2UiaW5pdCI6Xz1uZXcgZC5kZWZhdWx0KHUuZGF0YS5wYXJhbVswXSx1LmRhdGEucGFyYW1bMV0pLF8ub24oZi5kZWZhdWx0LklPX0VSUk9SLGwuYmluZCh0aGlzKSksXy5vbihmLmRlZmF1bHQuREVNVVhfRVJST1IsaC5iaW5kKHRoaXMpKSxfLm9uKGYuZGVmYXVsdC5JTklUX1NFR01FTlQsdC5iaW5kKHRoaXMpKSxfLm9uKGYuZGVmYXVsdC5NRURJQV9TRUdNRU5ULG4uYmluZCh0aGlzKSksXy5vbihmLmRlZmF1bHQuTE9BRElOR19DT01QTEVURSxpLmJpbmQodGhpcykpLF8ub24oZi5kZWZhdWx0LlJFQ09WRVJFRF9FQVJMWV9FT0Ysci5iaW5kKHRoaXMpKSxfLm9uKGYuZGVmYXVsdC5NRURJQV9JTkZPLHMuYmluZCh0aGlzKSksXy5vbihmLmRlZmF1bHQuU1RBVElTVElDU19JTkZPLG8uYmluZCh0aGlzKSksXy5vbihmLmRlZmF1bHQuUkVDT01NRU5EX1NFRUtQT0lOVCxjLmJpbmQodGhpcykpO2JyZWFrO2Nhc2UiZGVzdHJveSI6XyYmKF8uZGVzdHJveSgpLF89bnVsbCksZS5wb3N0TWVzc2FnZSh7bXNnOiJkZXN0cm95ZWQifSk7YnJlYWs7Y2FzZSJzdGFydCI6Xy5zdGFydCgpO2JyZWFrO2Nhc2Uic3RvcCI6Xy5zdG9wKCk7YnJlYWs7Y2FzZSJzZWVrIjpfLnNlZWsodS5kYXRhLnBhcmFtKTticmVhaztjYXNlInBhdXNlIjpfLnBhdXNlKCk7YnJlYWs7Y2FzZSJyZXN1bWUiOl8ucmVzdW1lKCk7YnJlYWs7Y2FzZSJsb2dnaW5nX2NvbmZpZyI6YS5kZWZhdWx0LmFwcGx5Q29uZmlnKHUuZGF0YS5wYXJhbSl9fSl9O24uZGVmYXVsdD1jfSx7Ii4uL3V0aWxzL2xvZ2dlci5qcyI6NDEsIi4uL3V0aWxzL2xvZ2dpbmctY29udHJvbC5qcyI6NDIsIi4uL3V0aWxzL3BvbHlmaWxsLmpzIjo0MywiLi90cmFuc211eGluZy1jb250cm9sbGVyLmpzIjoxMiwiLi90cmFuc211eGluZy1ldmVudHMuanMiOjEzfV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxhPWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLG89aShhKSx1PWUoIi4uL3V0aWxzL3V0ZjgtY29udi5qcyIpLGw9aSh1KSxkPWUoIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyIpLGg9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgQXJyYXlCdWZmZXIoMik7cmV0dXJuIG5ldyBEYXRhVmlldyhlKS5zZXRJbnQxNigwLDI1NiwhMCksMjU2PT09bmV3IEludDE2QXJyYXkoZSlbMF19KCksZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJwYXJzZVNjcmlwdERhdGEiLHZhbHVlOmZ1bmN0aW9uKHQsbixpKXt2YXIgcj17fTt0cnl7dmFyIHM9ZS5wYXJzZVZhbHVlKHQsbixpKSxhPWUucGFyc2VWYWx1ZSh0LG4rcy5zaXplLGktcy5zaXplKTtyW3MuZGF0YV09YS5kYXRhfWNhdGNoKGUpe28uZGVmYXVsdC5lKCJBTUYiLGUudG9TdHJpbmcoKSl9cmV0dXJuIHJ9fSx7a2V5OiJwYXJzZU9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCxuLGkpe2lmKGk8Myl0aHJvdyBuZXcgZC5JbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkRhdGEgbm90IGVub3VnaCB3aGVuIHBhcnNlIFNjcmlwdERhdGFPYmplY3QiKTt2YXIgcj1lLnBhcnNlU3RyaW5nKHQsbixpKSxzPWUucGFyc2VWYWx1ZSh0LG4rci5zaXplLGktci5zaXplKSxhPXMub2JqZWN0RW5kO3JldHVybntkYXRhOntuYW1lOnIuZGF0YSx2YWx1ZTpzLmRhdGF9LHNpemU6ci5zaXplK3Muc2l6ZSxvYmplY3RFbmQ6YX19fSx7a2V5OiJwYXJzZVZhcmlhYmxlIix2YWx1ZTpmdW5jdGlvbih0LG4saSl7cmV0dXJuIGUucGFyc2VPYmplY3QodCxuLGkpfX0se2tleToicGFyc2VTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtpZihuPDIpdGhyb3cgbmV3IGQuSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJEYXRhIG5vdCBlbm91Z2ggd2hlbiBwYXJzZSBTdHJpbmciKTt2YXIgaT1uZXcgRGF0YVZpZXcoZSx0LG4pLHI9aS5nZXRVaW50MTYoMCwhaCkscz12b2lkIDA7cmV0dXJuIHM9cj4wPygwLGwuZGVmYXVsdCkobmV3IFVpbnQ4QXJyYXkoZSx0KzIscikpOiIiLHtkYXRhOnMsc2l6ZToyK3J9fX0se2tleToicGFyc2VMb25nU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7aWYobjw0KXRocm93IG5ldyBkLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRGF0YSBub3QgZW5vdWdoIHdoZW4gcGFyc2UgTG9uZ1N0cmluZyIpO3ZhciBpPW5ldyBEYXRhVmlldyhlLHQsbikscj1pLmdldFVpbnQzMigwLCFoKSxzPXZvaWQgMDtyZXR1cm4gcz1yPjA/KDAsbC5kZWZhdWx0KShuZXcgVWludDhBcnJheShlLHQrNCxyKSk6IiIse2RhdGE6cyxzaXplOjQrcn19fSx7a2V5OiJwYXJzZURhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtpZihuPDEwKXRocm93IG5ldyBkLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRGF0YSBzaXplIGludmFsaWQgd2hlbiBwYXJzZSBEYXRlIik7dmFyIGk9bmV3IERhdGFWaWV3KGUsdCxuKSxyPWkuZ2V0RmxvYXQ2NCgwLCFoKTtyZXR1cm4gcis9NjAqaS5nZXRJbnQxNig4LCFoKSoxZTMse2RhdGE6bmV3IERhdGUociksc2l6ZToxMH19fSx7a2V5OiJwYXJzZVZhbHVlIix2YWx1ZTpmdW5jdGlvbih0LG4saSl7aWYoaTwxKXRocm93IG5ldyBkLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRGF0YSBub3QgZW5vdWdoIHdoZW4gcGFyc2UgVmFsdWUiKTt2YXIgcj1uZXcgRGF0YVZpZXcodCxuLGkpLHM9MSxhPXIuZ2V0VWludDgoMCksdT12b2lkIDAsbD0hMTt0cnl7c3dpdGNoKGEpe2Nhc2UgMDp1PXIuZ2V0RmxvYXQ2NCgxLCFoKSxzKz04O2JyZWFrO2Nhc2UgMTp1PSEhci5nZXRVaW50OCgxKSxzKz0xO2JyZWFrO2Nhc2UgMjp2YXIgZj1lLnBhcnNlU3RyaW5nKHQsbisxLGktMSk7dT1mLmRhdGEscys9Zi5zaXplO2JyZWFrO2Nhc2UgMzp1PXt9O3ZhciBjPTA7Zm9yKDk9PSgxNjc3NzIxNSZyLmdldFVpbnQzMihpLTQsIWgpKSYmKGM9Myk7czxpLTQ7KXt2YXIgXz1lLnBhcnNlT2JqZWN0KHQsbitzLGktcy1jKTtpZihfLm9iamVjdEVuZClicmVhazt1W18uZGF0YS5uYW1lXT1fLmRhdGEudmFsdWUscys9Xy5zaXplfWlmKHM8PWktMyl7OT09PSgxNjc3NzIxNSZyLmdldFVpbnQzMihzLTEsIWgpKSYmKHMrPTMpfWJyZWFrO2Nhc2UgODp1PXt9LHMrPTQ7dmFyIG09MDtmb3IoOT09KDE2Nzc3MjE1JnIuZ2V0VWludDMyKGktNCwhaCkpJiYobT0zKTtzPGktODspe3ZhciBwPWUucGFyc2VWYXJpYWJsZSh0LG4rcyxpLXMtbSk7aWYocC5vYmplY3RFbmQpYnJlYWs7dVtwLmRhdGEubmFtZV09cC5kYXRhLnZhbHVlLHMrPXAuc2l6ZX1pZihzPD1pLTMpezk9PT0oMTY3NzcyMTUmci5nZXRVaW50MzIocy0xLCFoKSkmJihzKz0zKX1icmVhaztjYXNlIDk6dT12b2lkIDAscz0xLGw9ITA7YnJlYWs7Y2FzZSAxMDp1PVtdO3ZhciB2PXIuZ2V0VWludDMyKDEsIWgpO3MrPTQ7Zm9yKHZhciBnPTA7Zzx2O2crKyl7dmFyIHk9ZS5wYXJzZVZhbHVlKHQsbitzLGktcyk7dS5wdXNoKHkuZGF0YSkscys9eS5zaXplfWJyZWFrO2Nhc2UgMTE6dmFyIEU9ZS5wYXJzZURhdGUodCxuKzEsaS0xKTt1PUUuZGF0YSxzKz1FLnNpemU7YnJlYWs7Y2FzZSAxMjp2YXIgYj1lLnBhcnNlU3RyaW5nKHQsbisxLGktMSk7dT1iLmRhdGEscys9Yi5zaXplO2JyZWFrO2RlZmF1bHQ6cz1pLG8uZGVmYXVsdC53KCJBTUYiLCJVbnN1cHBvcnRlZCBBTUYgdmFsdWUgdHlwZSAiK2EpfX1jYXRjaChlKXtvLmRlZmF1bHQuZSgiQU1GIixlLnRvU3RyaW5nKCkpfXJldHVybntkYXRhOnUsc2l6ZTpzLG9iamVjdEVuZDpsfX19XSksZX0oKTtuLmRlZmF1bHQ9Zn0seyIuLi91dGlscy9leGNlcHRpb24uanMiOjQwLCIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuLi91dGlscy91dGY4LWNvbnYuanMiOjQ0fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXtPSzoiT0siLEZPUk1BVF9FUlJPUjoiRm9ybWF0RXJyb3IiLEZPUk1BVF9VTlNVUFBPUlRFRDoiRm9ybWF0VW5zdXBwb3J0ZWQiLENPREVDX1VOU1VQUE9SVEVEOiJDb2RlY1Vuc3VwcG9ydGVkIn07bi5kZWZhdWx0PWl9LHt9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aSh0aGlzLGUpLHRoaXMuVEFHPSJFeHBHb2xvbWIiLHRoaXMuX2J1ZmZlcj10LHRoaXMuX2J1ZmZlcl9pbmRleD0wLHRoaXMuX3RvdGFsX2J5dGVzPXQuYnl0ZUxlbmd0aCx0aGlzLl90b3RhbF9iaXRzPTgqdC5ieXRlTGVuZ3RoLHRoaXMuX2N1cnJlbnRfd29yZD0wLHRoaXMuX2N1cnJlbnRfd29yZF9iaXRzX2xlZnQ9MH1yZXR1cm4gcihlLFt7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2J1ZmZlcj1udWxsfX0se2tleToiX2ZpbGxDdXJyZW50V29yZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b3RhbF9ieXRlcy10aGlzLl9idWZmZXJfaW5kZXg7aWYoZTw9MCl0aHJvdyBuZXcgcy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkV4cEdvbG9tYjogX2ZpbGxDdXJyZW50V29yZCgpIGJ1dCBubyBieXRlcyBhdmFpbGFibGUiKTt2YXIgdD1NYXRoLm1pbig0LGUpLG49bmV3IFVpbnQ4QXJyYXkoNCk7bi5zZXQodGhpcy5fYnVmZmVyLnN1YmFycmF5KHRoaXMuX2J1ZmZlcl9pbmRleCx0aGlzLl9idWZmZXJfaW5kZXgrdCkpLHRoaXMuX2N1cnJlbnRfd29yZD1uZXcgRGF0YVZpZXcobi5idWZmZXIpLmdldFVpbnQzMigwLCExKSx0aGlzLl9idWZmZXJfaW5kZXgrPXQsdGhpcy5fY3VycmVudF93b3JkX2JpdHNfbGVmdD04KnR9fSx7a2V5OiJyZWFkQml0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZT4zMil0aHJvdyBuZXcgcy5JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkV4cEdvbG9tYjogcmVhZEJpdHMoKSBiaXRzIGV4Y2VlZGVkIG1heCAzMmJpdHMhIik7aWYoZTw9dGhpcy5fY3VycmVudF93b3JkX2JpdHNfbGVmdCl7dmFyIHQ9dGhpcy5fY3VycmVudF93b3JkPj4+MzItZTtyZXR1cm4gdGhpcy5fY3VycmVudF93b3JkPDw9ZSx0aGlzLl9jdXJyZW50X3dvcmRfYml0c19sZWZ0LT1lLHR9dmFyIG49dGhpcy5fY3VycmVudF93b3JkX2JpdHNfbGVmdD90aGlzLl9jdXJyZW50X3dvcmQ6MDtuPj4+PTMyLXRoaXMuX2N1cnJlbnRfd29yZF9iaXRzX2xlZnQ7dmFyIGk9ZS10aGlzLl9jdXJyZW50X3dvcmRfYml0c19sZWZ0O3RoaXMuX2ZpbGxDdXJyZW50V29yZCgpO3ZhciByPU1hdGgubWluKGksdGhpcy5fY3VycmVudF93b3JkX2JpdHNfbGVmdCksYT10aGlzLl9jdXJyZW50X3dvcmQ+Pj4zMi1yO3JldHVybiB0aGlzLl9jdXJyZW50X3dvcmQ8PD1yLHRoaXMuX2N1cnJlbnRfd29yZF9iaXRzX2xlZnQtPXIsbj1uPDxyfGF9fSx7a2V5OiJyZWFkQm9vbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMucmVhZEJpdHMoMSl9fSx7a2V5OiJyZWFkQnl0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQml0cyg4KX19LHtrZXk6Il9za2lwTGVhZGluZ1plcm8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwO2ZvcihlPTA7ZTx0aGlzLl9jdXJyZW50X3dvcmRfYml0c19sZWZ0O2UrKylpZigwIT0odGhpcy5fY3VycmVudF93b3JkJjIxNDc0ODM2NDg+Pj5lKSlyZXR1cm4gdGhpcy5fY3VycmVudF93b3JkPDw9ZSx0aGlzLl9jdXJyZW50X3dvcmRfYml0c19sZWZ0LT1lLGU7cmV0dXJuIHRoaXMuX2ZpbGxDdXJyZW50V29yZCgpLGUrdGhpcy5fc2tpcExlYWRpbmdaZXJvKCl9fSx7a2V5OiJyZWFkVUVHIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3NraXBMZWFkaW5nWmVybygpO3JldHVybiB0aGlzLnJlYWRCaXRzKGUrMSktMX19LHtrZXk6InJlYWRTRUciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWFkVUVHKCk7cmV0dXJuIDEmZT9lKzE+Pj4xOi0xKihlPj4+MSl9fV0pLGV9KCk7bi5kZWZhdWx0PWF9LHsiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIjo0MH1dLDE4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksdT1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxsPWkodSksZD1lKCIuL2FtZi1wYXJzZXIuanMiKSxoPWkoZCksZj1lKCIuL3Nwcy1wYXJzZXIuanMiKSxjPWkoZiksXz1lKCIuL2RlbXV4LWVycm9ycy5qcyIpLG09aShfKSxwPWUoIi4uL2NvcmUvbWVkaWEtaW5mby5qcyIpLHY9aShwKSxnPWUoIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyIpLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7cih0aGlzLGUpLHRoaXMuVEFHPSJGTFZEZW11eGVyIix0aGlzLl9jb25maWc9bix0aGlzLl9vbkVycm9yPW51bGwsdGhpcy5fb25NZWRpYUluZm89bnVsbCx0aGlzLl9vblRyYWNrTWV0YWRhdGE9bnVsbCx0aGlzLl9vbkRhdGFBdmFpbGFibGU9bnVsbCx0aGlzLl9kYXRhT2Zmc2V0PXQuZGF0YU9mZnNldCx0aGlzLl9maXJzdFBhcnNlPSEwLHRoaXMuX2Rpc3BhdGNoPSExLHRoaXMuX2hhc0F1ZGlvPXQuaGFzQXVkaW9UcmFjayx0aGlzLl9oYXNWaWRlbz10Lmhhc1ZpZGVvVHJhY2ssdGhpcy5fYXVkaW9Jbml0aWFsTWV0YWRhdGFEaXNwYXRjaGVkPSExLHRoaXMuX3ZpZGVvSW5pdGlhbE1ldGFkYXRhRGlzcGF0Y2hlZD0hMSx0aGlzLl9tZWRpYUluZm89bmV3IHYuZGVmYXVsdCx0aGlzLl9tZWRpYUluZm8uaGFzQXVkaW89dGhpcy5faGFzQXVkaW8sdGhpcy5fbWVkaWFJbmZvLmhhc1ZpZGVvPXRoaXMuX2hhc1ZpZGVvLHRoaXMuX21ldGFkYXRhPW51bGwsdGhpcy5fYXVkaW9NZXRhZGF0YT1udWxsLHRoaXMuX3ZpZGVvTWV0YWRhdGE9bnVsbCx0aGlzLl9uYWx1TGVuZ3RoU2l6ZT00LHRoaXMuX3RpbWVzdGFtcEJhc2U9MCx0aGlzLl90aW1lc2NhbGU9MWUzLHRoaXMuX2R1cmF0aW9uPTAsdGhpcy5fZHVyYXRpb25PdmVycmlkZWQ9ITEsdGhpcy5fcmVmZXJlbmNlRnJhbWVSYXRlPXtmaXhlZDohMCxmcHM6MjMuOTc2LGZwc19udW06MjM5NzYsZnBzX2RlbjoxZTN9LHRoaXMuX2ZsdlNvdW5kUmF0ZVRhYmxlPVs1NTAwLDExMDI1LDIyMDUwLDQ0MTAwLDQ4ZTNdLHRoaXMuX21wZWdTYW1wbGluZ1JhdGVzPVs5NmUzLDg4MjAwLDY0ZTMsNDhlMyw0NDEwMCwzMmUzLDI0ZTMsMjIwNTAsMTZlMywxMmUzLDExMDI1LDhlMyw3MzUwXSx0aGlzLl9tcGVnQXVkaW9WMTBTYW1wbGVSYXRlVGFibGU9WzQ0MTAwLDQ4ZTMsMzJlMywwXSx0aGlzLl9tcGVnQXVkaW9WMjBTYW1wbGVSYXRlVGFibGU9WzIyMDUwLDI0ZTMsMTZlMywwXSx0aGlzLl9tcGVnQXVkaW9WMjVTYW1wbGVSYXRlVGFibGU9WzExMDI1LDEyZTMsOGUzLDBdLHRoaXMuX21wZWdBdWRpb0wxQml0UmF0ZVRhYmxlPVswLDMyLDY0LDk2LDEyOCwxNjAsMTkyLDIyNCwyNTYsMjg4LDMyMCwzNTIsMzg0LDQxNiw0NDgsLTFdLHRoaXMuX21wZWdBdWRpb0wyQml0UmF0ZVRhYmxlPVswLDMyLDQ4LDU2LDY0LDgwLDk2LDExMiwxMjgsMTYwLDE5MiwyMjQsMjU2LDMyMCwzODQsLTFdLHRoaXMuX21wZWdBdWRpb0wzQml0UmF0ZVRhYmxlPVswLDMyLDQwLDQ4LDU2LDY0LDgwLDk2LDExMiwxMjgsMTYwLDE5MiwyMjQsMjU2LDMyMCwtMV0sdGhpcy5fdmlkZW9UcmFjaz17dHlwZToidmlkZW8iLGlkOjEsc2VxdWVuY2VOdW1iZXI6MCxzYW1wbGVzOltdLGxlbmd0aDowfSx0aGlzLl9hdWRpb1RyYWNrPXt0eXBlOiJhdWRpbyIsaWQ6MixzZXF1ZW5jZU51bWJlcjowLHNhbXBsZXM6W10sbGVuZ3RoOjB9LHRoaXMuX2xpdHRsZUVuZGlhbj1mdW5jdGlvbigpe3ZhciBlPW5ldyBBcnJheUJ1ZmZlcigyKTtyZXR1cm4gbmV3IERhdGFWaWV3KGUpLnNldEludDE2KDAsMjU2LCEwKSwyNTY9PT1uZXcgSW50MTZBcnJheShlKVswXX0oKX1yZXR1cm4gbyhlLFt7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX21lZGlhSW5mbz1udWxsLHRoaXMuX21ldGFkYXRhPW51bGwsdGhpcy5fYXVkaW9NZXRhZGF0YT1udWxsLHRoaXMuX3ZpZGVvTWV0YWRhdGE9bnVsbCx0aGlzLl92aWRlb1RyYWNrPW51bGwsdGhpcy5fYXVkaW9UcmFjaz1udWxsLHRoaXMuX29uRXJyb3I9bnVsbCx0aGlzLl9vbk1lZGlhSW5mbz1udWxsLHRoaXMuX29uVHJhY2tNZXRhZGF0YT1udWxsLHRoaXMuX29uRGF0YUF2YWlsYWJsZT1udWxsfX0se2tleToiYmluZERhdGFTb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLm9uRGF0YUFycml2YWw9dGhpcy5wYXJzZUNodW5rcy5iaW5kKHRoaXMpLHRoaXN9fSx7a2V5OiJyZXNldE1lZGlhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tZWRpYUluZm89bmV3IHYuZGVmYXVsdH19LHtrZXk6Il9pc0luaXRpYWxNZXRhZGF0YURpc3BhdGNoZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc0F1ZGlvJiZ0aGlzLl9oYXNWaWRlbz90aGlzLl9hdWRpb0luaXRpYWxNZXRhZGF0YURpc3BhdGNoZWQmJnRoaXMuX3ZpZGVvSW5pdGlhbE1ldGFkYXRhRGlzcGF0Y2hlZDp0aGlzLl9oYXNBdWRpbyYmIXRoaXMuX2hhc1ZpZGVvP3RoaXMuX2F1ZGlvSW5pdGlhbE1ldGFkYXRhRGlzcGF0Y2hlZDohKHRoaXMuX2hhc0F1ZGlvfHwhdGhpcy5faGFzVmlkZW8pJiZ0aGlzLl92aWRlb0luaXRpYWxNZXRhZGF0YURpc3BhdGNoZWR9fSx7a2V5OiJwYXJzZUNodW5rcyIsdmFsdWU6ZnVuY3Rpb24odCxuKXtpZighKHRoaXMuX29uRXJyb3ImJnRoaXMuX29uTWVkaWFJbmZvJiZ0aGlzLl9vblRyYWNrTWV0YWRhdGEmJnRoaXMuX29uRGF0YUF2YWlsYWJsZSkpdGhyb3cgbmV3IGcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJGbHY6IG9uRXJyb3IgJiBvbk1lZGlhSW5mbyAmIG9uVHJhY2tNZXRhZGF0YSAmIG9uRGF0YUF2YWlsYWJsZSBjYWxsYmFjayBtdXN0IGJlIHNwZWNpZmllZCIpO3ZhciBpPTAscj10aGlzLl9saXR0bGVFbmRpYW47aWYoMD09PW4pe2lmKCEodC5ieXRlTGVuZ3RoPjEzKSlyZXR1cm4gMDt2YXIgcz1lLnByb2JlKHQpO2k9cy5kYXRhT2Zmc2V0LG49cy5kYXRhT2Zmc2V0fWlmKHRoaXMuX2ZpcnN0UGFyc2Upe3RoaXMuX2ZpcnN0UGFyc2U9ITEsbiE9PXRoaXMuX2RhdGFPZmZzZXQmJmwuZGVmYXVsdC53KHRoaXMuVEFHLCJGaXJzdCB0aW1lIHBhcnNpbmcgYnV0IGNodW5rIGJ5dGVTdGFydCBpbnZhbGlkISIpOzAhPT1uZXcgRGF0YVZpZXcodCxpKS5nZXRVaW50MzIoMCwhcikmJmwuZGVmYXVsdC53KHRoaXMuVEFHLCJQcmV2VGFnU2l6ZTAgIT09IDAgISEhIiksaSs9NH1mb3IoO2k8dC5ieXRlTGVuZ3RoOyl7dGhpcy5fZGlzcGF0Y2g9ITA7dmFyIGE9bmV3IERhdGFWaWV3KHQsaSk7aWYoaSsxMSs0PnQuYnl0ZUxlbmd0aClicmVhazt2YXIgbz1hLmdldFVpbnQ4KDApLHU9MTY3NzcyMTUmYS5nZXRVaW50MzIoMCwhcik7aWYoaSsxMSt1KzQ+dC5ieXRlTGVuZ3RoKWJyZWFrO2lmKDg9PT1vfHw5PT09b3x8MTg9PT1vKXt2YXIgZD1hLmdldFVpbnQ4KDQpLGg9YS5nZXRVaW50OCg1KSxmPWEuZ2V0VWludDgoNiksYz1hLmdldFVpbnQ4KDcpLF89ZnxoPDw4fGQ8PDE2fGM8PDI0OzAhPT0oMTY3NzcyMTUmYS5nZXRVaW50MzIoNywhcikpJiZsLmRlZmF1bHQudyh0aGlzLlRBRywiTWVldCB0YWcgd2hpY2ggaGFzIFN0cmVhbUlEICE9IDAhIik7dmFyIG09aSsxMTtzd2l0Y2gobyl7Y2FzZSA4OnRoaXMuX3BhcnNlQXVkaW9EYXRhKHQsbSx1LF8pO2JyZWFrO2Nhc2UgOTp0aGlzLl9wYXJzZVZpZGVvRGF0YSh0LG0sdSxfLG4raSk7YnJlYWs7Y2FzZSAxODp0aGlzLl9wYXJzZVNjcmlwdERhdGEodCxtLHUpfXZhciBwPWEuZ2V0VWludDMyKDExK3UsIXIpO3AhPT0xMSt1JiZsLmRlZmF1bHQudyh0aGlzLlRBRywiSW52YWxpZCBQcmV2VGFnU2l6ZSAiK3ApLGkrPTExK3UrNH1lbHNlIGwuZGVmYXVsdC53KHRoaXMuVEFHLCJVbnN1cHBvcnRlZCB0YWcgdHlwZSAiK28rIiwgc2tpcHBlZCIpLGkrPTExK3UrNH1yZXR1cm4gdGhpcy5faXNJbml0aWFsTWV0YWRhdGFEaXNwYXRjaGVkKCkmJnRoaXMuX2Rpc3BhdGNoJiYodGhpcy5fYXVkaW9UcmFjay5sZW5ndGh8fHRoaXMuX3ZpZGVvVHJhY2subGVuZ3RoKSYmdGhpcy5fb25EYXRhQXZhaWxhYmxlKHRoaXMuX2F1ZGlvVHJhY2ssdGhpcy5fdmlkZW9UcmFjayksaX19LHtrZXk6Il9wYXJzZVNjcmlwdERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1oLmRlZmF1bHQucGFyc2VTY3JpcHREYXRhKGUsdCxuKTtpZihpLmhhc093blByb3BlcnR5KCJvbk1ldGFEYXRhIikpe3RoaXMuX21ldGFkYXRhJiZsLmRlZmF1bHQudyh0aGlzLlRBRywiRm91bmQgYW5vdGhlciBvbk1ldGFEYXRhIHRhZyEiKSx0aGlzLl9tZXRhZGF0YT1pO3ZhciByPXRoaXMuX21ldGFkYXRhLm9uTWV0YURhdGE7aWYoImJvb2xlYW4iPT10eXBlb2Ygci5oYXNBdWRpbyYmKHRoaXMuX2hhc0F1ZGlvPXIuaGFzQXVkaW8sdGhpcy5fbWVkaWFJbmZvLmhhc0F1ZGlvPXRoaXMuX2hhc0F1ZGlvKSwiYm9vbGVhbiI9PXR5cGVvZiByLmhhc1ZpZGVvJiYodGhpcy5faGFzVmlkZW89ci5oYXNWaWRlbyx0aGlzLl9tZWRpYUluZm8uaGFzVmlkZW89dGhpcy5faGFzVmlkZW8pLCJudW1iZXIiPT10eXBlb2Ygci5hdWRpb2RhdGFyYXRlJiYodGhpcy5fbWVkaWFJbmZvLmF1ZGlvRGF0YVJhdGU9ci5hdWRpb2RhdGFyYXRlKSwibnVtYmVyIj09dHlwZW9mIHIudmlkZW9kYXRhcmF0ZSYmKHRoaXMuX21lZGlhSW5mby52aWRlb0RhdGFSYXRlPXIudmlkZW9kYXRhcmF0ZSksIm51bWJlciI9PXR5cGVvZiByLndpZHRoJiYodGhpcy5fbWVkaWFJbmZvLndpZHRoPXIud2lkdGgpLCJudW1iZXIiPT10eXBlb2Ygci5oZWlnaHQmJih0aGlzLl9tZWRpYUluZm8uaGVpZ2h0PXIuaGVpZ2h0KSwibnVtYmVyIj09dHlwZW9mIHIuZHVyYXRpb24pe2lmKCF0aGlzLl9kdXJhdGlvbk92ZXJyaWRlZCl7dmFyIHM9TWF0aC5mbG9vcihyLmR1cmF0aW9uKnRoaXMuX3RpbWVzY2FsZSk7dGhpcy5fZHVyYXRpb249cyx0aGlzLl9tZWRpYUluZm8uZHVyYXRpb249c319ZWxzZSB0aGlzLl9tZWRpYUluZm8uZHVyYXRpb249MDtpZigibnVtYmVyIj09dHlwZW9mIHIuZnJhbWVyYXRlKXt2YXIgbz1NYXRoLmZsb29yKDFlMypyLmZyYW1lcmF0ZSk7aWYobz4wKXt2YXIgdT1vLzFlMzt0aGlzLl9yZWZlcmVuY2VGcmFtZVJhdGUuZml4ZWQ9ITAsdGhpcy5fcmVmZXJlbmNlRnJhbWVSYXRlLmZwcz11LHRoaXMuX3JlZmVyZW5jZUZyYW1lUmF0ZS5mcHNfbnVtPW8sdGhpcy5fcmVmZXJlbmNlRnJhbWVSYXRlLmZwc19kZW49MWUzLHRoaXMuX21lZGlhSW5mby5mcHM9dX19aWYoIm9iamVjdCI9PT1hKHIua2V5ZnJhbWVzKSl7dGhpcy5fbWVkaWFJbmZvLmhhc0tleWZyYW1lc0luZGV4PSEwO3ZhciBkPXIua2V5ZnJhbWVzO3RoaXMuX21lZGlhSW5mby5rZXlmcmFtZXNJbmRleD10aGlzLl9wYXJzZUtleWZyYW1lc0luZGV4KGQpLHIua2V5ZnJhbWVzPW51bGx9ZWxzZSB0aGlzLl9tZWRpYUluZm8uaGFzS2V5ZnJhbWVzSW5kZXg9ITE7dGhpcy5fZGlzcGF0Y2g9ITEsdGhpcy5fbWVkaWFJbmZvLm1ldGFkYXRhPXIsbC5kZWZhdWx0LnYodGhpcy5UQUcsIlBhcnNlZCBvbk1ldGFEYXRhIiksdGhpcy5fbWVkaWFJbmZvLmlzQ29tcGxldGUoKSYmdGhpcy5fb25NZWRpYUluZm8odGhpcy5fbWVkaWFJbmZvKX19fSx7a2V5OiJfcGFyc2VLZXlmcmFtZXNJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49W10saT0xO2k8ZS50aW1lcy5sZW5ndGg7aSsrKXt2YXIgcj10aGlzLl90aW1lc3RhbXBCYXNlK01hdGguZmxvb3IoMWUzKmUudGltZXNbaV0pO3QucHVzaChyKSxuLnB1c2goZS5maWxlcG9zaXRpb25zW2ldKX1yZXR1cm57dGltZXM6dCxmaWxlcG9zaXRpb25zOm59fX0se2tleToiX3BhcnNlQXVkaW9EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQsbixpKXtpZihuPD0xKXJldHVybiB2b2lkIGwuZGVmYXVsdC53KHRoaXMuVEFHLCJGbHY6IEludmFsaWQgYXVkaW8gcGFja2V0LCBtaXNzaW5nIFNvdW5kRGF0YSBwYXlsb2FkISIpO3ZhciByPSh0aGlzLl9saXR0bGVFbmRpYW4sbmV3IERhdGFWaWV3KGUsdCxuKSkscz1yLmdldFVpbnQ4KDApLGE9cz4+PjQ7aWYoMiE9PWEmJjEwIT09YSlyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKG0uZGVmYXVsdC5DT0RFQ19VTlNVUFBPUlRFRCwiRmx2OiBVbnN1cHBvcnRlZCBhdWRpbyBjb2RlYyBpZHg6ICIrYSk7dmFyIG89MCx1PSgxMiZzKT4+PjI7aWYoISh1Pj0wJiZ1PD00KSlyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKG0uZGVmYXVsdC5GT1JNQVRfRVJST1IsIkZsdjogSW52YWxpZCBhdWRpbyBzYW1wbGUgcmF0ZSBpZHg6ICIrdSk7bz10aGlzLl9mbHZTb3VuZFJhdGVUYWJsZVt1XTt2YXIgZD0xJnMsaD10aGlzLl9hdWRpb01ldGFkYXRhLGY9dGhpcy5fYXVkaW9UcmFjaztpZihofHwodGhpcy5faGFzQXVkaW89PT0hMSYmKHRoaXMuX2hhc0F1ZGlvPSEwLHRoaXMuX21lZGlhSW5mby5oYXNBdWRpbz0hMCksaD10aGlzLl9hdWRpb01ldGFkYXRhPXt9LGgudHlwZT0iYXVkaW8iLGguaWQ9Zi5pZCxoLnRpbWVzY2FsZT10aGlzLl90aW1lc2NhbGUsaC5kdXJhdGlvbj10aGlzLl9kdXJhdGlvbixoLmF1ZGlvU2FtcGxlUmF0ZT1vLGguY2hhbm5lbENvdW50PTA9PT1kPzE6MiksMTA9PT1hKXt2YXIgYz10aGlzLl9wYXJzZUFBQ0F1ZGlvRGF0YShlLHQrMSxuLTEpO2lmKHZvaWQgMD09YylyZXR1cm47aWYoMD09PWMucGFja2V0VHlwZSl7aC5jb25maWcmJmwuZGVmYXVsdC53KHRoaXMuVEFHLCJGb3VuZCBhbm90aGVyIEF1ZGlvU3BlY2lmaWNDb25maWchIik7dmFyIF89Yy5kYXRhO2guYXVkaW9TYW1wbGVSYXRlPV8uc2FtcGxpbmdSYXRlLGguY2hhbm5lbENvdW50PV8uY2hhbm5lbENvdW50LGguY29kZWM9Xy5jb2RlYyxoLmNvbmZpZz1fLmNvbmZpZyxoLnJlZlNhbXBsZUR1cmF0aW9uPU1hdGguZmxvb3IoMTAyNC9oLmF1ZGlvU2FtcGxlUmF0ZSpoLnRpbWVzY2FsZSksbC5kZWZhdWx0LnYodGhpcy5UQUcsIlBhcnNlZCBBdWRpb1NwZWNpZmljQ29uZmlnIiksdGhpcy5faXNJbml0aWFsTWV0YWRhdGFEaXNwYXRjaGVkKCk/dGhpcy5fZGlzcGF0Y2gmJih0aGlzLl9hdWRpb1RyYWNrLmxlbmd0aHx8dGhpcy5fdmlkZW9UcmFjay5sZW5ndGgpJiZ0aGlzLl9vbkRhdGFBdmFpbGFibGUodGhpcy5fYXVkaW9UcmFjayx0aGlzLl92aWRlb1RyYWNrKTp0aGlzLl9hdWRpb0luaXRpYWxNZXRhZGF0YURpc3BhdGNoZWQ9ITAsdGhpcy5fZGlzcGF0Y2g9ITEsdGhpcy5fb25UcmFja01ldGFkYXRhKCJhdWRpbyIsaCk7dmFyIHA9dGhpcy5fbWVkaWFJbmZvO3AuYXVkaW9Db2RlYz0ibXA0YS40MC4iK18ub3JpZ2luYWxBdWRpb09iamVjdFR5cGUscC5hdWRpb1NhbXBsZVJhdGU9aC5hdWRpb1NhbXBsZVJhdGUscC5hdWRpb0NoYW5uZWxDb3VudD1oLmNoYW5uZWxDb3VudCxwLmhhc1ZpZGVvP251bGwhPXAudmlkZW9Db2RlYyYmKHAubWltZVR5cGU9J3ZpZGVvL3gtZmx2OyBjb2RlY3M9IicrcC52aWRlb0NvZGVjKyIsIitwLmF1ZGlvQ29kZWMrJyInKTpwLm1pbWVUeXBlPSd2aWRlby94LWZsdjsgY29kZWNzPSInK3AuYXVkaW9Db2RlYysnIicscC5pc0NvbXBsZXRlKCkmJnRoaXMuX29uTWVkaWFJbmZvKHApfWVsc2UgaWYoMT09PWMucGFja2V0VHlwZSl7dmFyIHY9dGhpcy5fdGltZXN0YW1wQmFzZStpLGc9e3VuaXQ6Yy5kYXRhLGR0czp2LHB0czp2fTtmLnNhbXBsZXMucHVzaChnKSxmLmxlbmd0aCs9Yy5kYXRhLmxlbmd0aH1lbHNlIGwuZGVmYXVsdC5lKHRoaXMuVEFHLCJGbHY6IFVuc3VwcG9ydGVkIEFBQyBkYXRhIHR5cGUgIitjLnBhY2tldFR5cGUpfWVsc2UgaWYoMj09PWEpe2lmKCFoLmNvZGVjKXt2YXIgeT10aGlzLl9wYXJzZU1QM0F1ZGlvRGF0YShlLHQrMSxuLTEsITApO2lmKHZvaWQgMD09eSlyZXR1cm47aC5hdWRpb1NhbXBsZVJhdGU9eS5zYW1wbGluZ1JhdGUsaC5jaGFubmVsQ29uZmlnPXkuY2hhbm5lbENvdW50LGguY29kZWM9eS5jb2RlYyxoLnJlZlNhbXBsZUR1cmF0aW9uPU1hdGguZmxvb3IoMTE1Mi9oLmF1ZGlvU2FtcGxlUmF0ZSpoLnRpbWVzY2FsZSksbC5kZWZhdWx0LnYodGhpcy5UQUcsIlBhcnNlZCBNUEVHIEF1ZGlvIEZyYW1lIEhlYWRlciIpLHRoaXMuX2F1ZGlvSW5pdGlhbE1ldGFkYXRhRGlzcGF0Y2hlZD0hMCx0aGlzLl9vblRyYWNrTWV0YWRhdGEoImF1ZGlvIixoKTt2YXIgRT10aGlzLl9tZWRpYUluZm87RS5hdWRpb0NvZGVjPWguY29kZWMsRS5hdWRpb1NhbXBsZVJhdGU9aC5hdWRpb1NhbXBsZVJhdGUsRS5hdWRpb0NoYW5uZWxDb3VudD1oLmNoYW5uZWxDb3VudCxFLmF1ZGlvRGF0YVJhdGU9eS5iaXRSYXRlLEUuaGFzVmlkZW8/bnVsbCE9RS52aWRlb0NvZGVjJiYoRS5taW1lVHlwZT0ndmlkZW8veC1mbHY7IGNvZGVjcz0iJytFLnZpZGVvQ29kZWMrIiwiK0UuYXVkaW9Db2RlYysnIicpOkUubWltZVR5cGU9J3ZpZGVvL3gtZmx2OyBjb2RlY3M9IicrRS5hdWRpb0NvZGVjKyciJyxFLmlzQ29tcGxldGUoKSYmdGhpcy5fb25NZWRpYUluZm8oRSl9dmFyIGI9dGhpcy5fcGFyc2VNUDNBdWRpb0RhdGEoZSx0KzEsbi0xLCExKTtpZih2b2lkIDA9PWIpcmV0dXJuO3ZhciBTPXRoaXMuX3RpbWVzdGFtcEJhc2UraSxrPXt1bml0OmIsZHRzOlMscHRzOlN9O2Yuc2FtcGxlcy5wdXNoKGspLGYubGVuZ3RoKz1iLmxlbmd0aH19fSx7a2V5OiJfcGFyc2VBQUNBdWRpb0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtpZihuPD0xKXJldHVybiB2b2lkIGwuZGVmYXVsdC53KHRoaXMuVEFHLCJGbHY6IEludmFsaWQgQUFDIHBhY2tldCwgbWlzc2luZyBBQUNQYWNrZXRUeXBlIG9yL2FuZCBEYXRhISIpO3ZhciBpPXt9LHI9bmV3IFVpbnQ4QXJyYXkoZSx0LG4pO3JldHVybiBpLnBhY2tldFR5cGU9clswXSwwPT09clswXT9pLmRhdGE9dGhpcy5fcGFyc2VBQUNBdWRpb1NwZWNpZmljQ29uZmlnKGUsdCsxLG4tMSk6aS5kYXRhPXIuc3ViYXJyYXkoMSksaX19LHtrZXk6Il9wYXJzZUFBQ0F1ZGlvU3BlY2lmaWNDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uZXcgVWludDhBcnJheShlLHQsbikscj1udWxsLHM9MCxhPTAsbz0wLHU9bnVsbDtpZihzPWE9aVswXT4+PjMsKG89KDcmaVswXSk8PDF8aVsxXT4+PjcpPDB8fG8+PXRoaXMuX21wZWdTYW1wbGluZ1JhdGVzLmxlbmd0aClyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKG0uZGVmYXVsdC5GT1JNQVRfRVJST1IsIkZsdjogQUFDIGludmFsaWQgc2FtcGxpbmcgZnJlcXVlbmN5IGluZGV4ISIpO3ZhciBsPXRoaXMuX21wZWdTYW1wbGluZ1JhdGVzW29dLGQ9KDEyMCZpWzFdKT4+PjM7aWYoZDwwfHxkPj04KXJldHVybiB2b2lkIHRoaXMuX29uRXJyb3IobS5kZWZhdWx0LkZPUk1BVF9FUlJPUiwiRmx2OiBBQUMgaW52YWxpZCBjaGFubmVsIGNvbmZpZ3VyYXRpb24iKTs1PT09cyYmKHU9KDcmaVsxXSk8PDF8aVsyXT4+PjcsaVsyXSk7dmFyIGg9c2VsZi5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIGguaW5kZXhPZigiZmlyZWZveCIpIT09LTE/bz49Nj8ocz01LHI9bmV3IEFycmF5KDQpLHU9by0zKToocz0yLHI9bmV3IEFycmF5KDIpLHU9byk6aC5pbmRleE9mKCJhbmRyb2lkIikhPT0tMT8ocz0yLHI9bmV3IEFycmF5KDIpLHU9byk6KHM9NSx1PW8scj1uZXcgQXJyYXkoNCksbz49Nj91PW8tMzoxPT09ZCYmKHM9MixyPW5ldyBBcnJheSgyKSx1PW8pKSxyWzBdPXM8PDMsclswXXw9KDE1Jm8pPj4+MSxyWzFdPSgxNSZvKTw8NyxyWzFdfD0oMTUmZCk8PDMsNT09PXMmJihyWzFdfD0oMTUmdSk+Pj4xLHJbMl09KDEmdSk8PDcsclsyXXw9OCxyWzNdPTApLHtjb25maWc6cixzYW1wbGluZ1JhdGU6bCxjaGFubmVsQ291bnQ6ZCxjb2RlYzoibXA0YS40MC4iK3Msb3JpZ2luYWxBdWRpb09iamVjdFR5cGU6YX19fSx7a2V5OiJfcGFyc2VNUDNBdWRpb0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGkpe2lmKG48NClyZXR1cm4gdm9pZCBsLmRlZmF1bHQudyh0aGlzLlRBRywiRmx2OiBJbnZhbGlkIE1QMyBwYWNrZXQsIGhlYWRlciBtaXNzaW5nISIpO3ZhciByPSh0aGlzLl9saXR0bGVFbmRpYW4sbmV3IFVpbnQ4QXJyYXkoZSx0LG4pKSxzPW51bGw7aWYoaSl7aWYoMjU1IT09clswXSlyZXR1cm47dmFyIGE9clsxXT4+PjMmMyxvPSg2JnJbMV0pPj4xLHU9KDI0MCZyWzJdKT4+PjQsZD0oMTImclsyXSk+Pj4yLGg9clszXT4+PjYmMyxmPTMhPT1oPzI6MSxjPTAsXz0wO3N3aXRjaChhKXtjYXNlIDA6Yz10aGlzLl9tcGVnQXVkaW9WMjVTYW1wbGVSYXRlVGFibGVbZF07YnJlYWs7Y2FzZSAyOmM9dGhpcy5fbXBlZ0F1ZGlvVjIwU2FtcGxlUmF0ZVRhYmxlW2RdO2JyZWFrO2Nhc2UgMzpjPXRoaXMuX21wZWdBdWRpb1YxMFNhbXBsZVJhdGVUYWJsZVtkXX1zd2l0Y2gobyl7Y2FzZSAxOjM0LHU8dGhpcy5fbXBlZ0F1ZGlvTDNCaXRSYXRlVGFibGUubGVuZ3RoJiYoXz10aGlzLl9tcGVnQXVkaW9MM0JpdFJhdGVUYWJsZVt1XSk7YnJlYWs7Y2FzZSAyOjMzLHU8dGhpcy5fbXBlZ0F1ZGlvTDJCaXRSYXRlVGFibGUubGVuZ3RoJiYoXz10aGlzLl9tcGVnQXVkaW9MMkJpdFJhdGVUYWJsZVt1XSk7YnJlYWs7Y2FzZSAzOjMyLHU8dGhpcy5fbXBlZ0F1ZGlvTDFCaXRSYXRlVGFibGUubGVuZ3RoJiYoXz10aGlzLl9tcGVnQXVkaW9MMUJpdFJhdGVUYWJsZVt1XSl9cz17Yml0UmF0ZTpfLHNhbXBsaW5nUmF0ZTpjLGNoYW5uZWxDb3VudDpmLGNvZGVjOiJtcDMifX1lbHNlIHM9cjtyZXR1cm4gc319LHtrZXk6Il9wYXJzZVZpZGVvRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4saSxyKXsKaWYobjw9MSlyZXR1cm4gdm9pZCBsLmRlZmF1bHQudyh0aGlzLlRBRywiRmx2OiBJbnZhbGlkIHZpZGVvIHBhY2tldCwgbWlzc2luZyBWaWRlb0RhdGEgcGF5bG9hZCEiKTt2YXIgcz1uZXcgVWludDhBcnJheShlLHQsbilbMF0sYT0oMjQwJnMpPj4+NCxvPTE1JnM7aWYoNyE9PW8pcmV0dXJuIHZvaWQgdGhpcy5fb25FcnJvcihtLmRlZmF1bHQuQ09ERUNfVU5TVVBQT1JURUQsIkZsdjogVW5zdXBwb3J0ZWQgY29kZWMgaW4gdmlkZW8gZnJhbWU6ICIrbyk7dGhpcy5fcGFyc2VBVkNWaWRlb1BhY2tldChlLHQrMSxuLTEsaSxyLGEpfX0se2tleToiX3BhcnNlQVZDVmlkZW9QYWNrZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGkscixzKXtpZihuPDQpcmV0dXJuIHZvaWQgbC5kZWZhdWx0LncodGhpcy5UQUcsIkZsdjogSW52YWxpZCBBVkMgcGFja2V0LCBtaXNzaW5nIEFWQ1BhY2tldFR5cGUgb3IvYW5kIENvbXBvc2l0aW9uVGltZSIpO3ZhciBhPXRoaXMuX2xpdHRsZUVuZGlhbixvPW5ldyBEYXRhVmlldyhlLHQsbiksdT1vLmdldFVpbnQ4KDApLGQ9MTY3NzcyMTUmby5nZXRVaW50MzIoMCwhYSk7aWYoMD09PXUpdGhpcy5fcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChlLHQrNCxuLTQpO2Vsc2UgaWYoMT09PXUpdGhpcy5fcGFyc2VBVkNWaWRlb0RhdGEoZSx0KzQsbi00LGkscixzLGQpO2Vsc2UgaWYoMiE9PXUpcmV0dXJuIHZvaWQgdGhpcy5fb25FcnJvcihtLmRlZmF1bHQuRk9STUFUX0VSUk9SLCJGbHY6IEludmFsaWQgdmlkZW8gcGFja2V0IHR5cGUgIit1KX19LHtrZXk6Il9wYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7aWYobjw3KXJldHVybiB2b2lkIGwuZGVmYXVsdC53KHRoaXMuVEFHLCJGbHY6IEludmFsaWQgQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQsIGxhY2sgb2YgZGF0YSEiKTt2YXIgaT10aGlzLl92aWRlb01ldGFkYXRhLHI9dGhpcy5fdmlkZW9UcmFjayxzPXRoaXMuX2xpdHRsZUVuZGlhbixhPW5ldyBEYXRhVmlldyhlLHQsbik7aT92b2lkIDAhPT1pLmF2Y2MmJmwuZGVmYXVsdC53KHRoaXMuVEFHLCJGb3VuZCBhbm90aGVyIEFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkISIpOih0aGlzLl9oYXNWaWRlbz09PSExJiYodGhpcy5faGFzVmlkZW89ITAsdGhpcy5fbWVkaWFJbmZvLmhhc1ZpZGVvPSEwKSxpPXRoaXMuX3ZpZGVvTWV0YWRhdGE9e30saS50eXBlPSJ2aWRlbyIsaS5pZD1yLmlkLGkudGltZXNjYWxlPXRoaXMuX3RpbWVzY2FsZSxpLmR1cmF0aW9uPXRoaXMuX2R1cmF0aW9uKTt2YXIgbz1hLmdldFVpbnQ4KDApLHU9YS5nZXRVaW50OCgxKTthLmdldFVpbnQ4KDIpLGEuZ2V0VWludDgoMyk7aWYoMSE9PW98fDA9PT11KXJldHVybiB2b2lkIHRoaXMuX29uRXJyb3IobS5kZWZhdWx0LkZPUk1BVF9FUlJPUiwiRmx2OiBJbnZhbGlkIEFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIik7aWYodGhpcy5fbmFsdUxlbmd0aFNpemU9MSsoMyZhLmdldFVpbnQ4KDQpKSwzIT09dGhpcy5fbmFsdUxlbmd0aFNpemUmJjQhPT10aGlzLl9uYWx1TGVuZ3RoU2l6ZSlyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKG0uZGVmYXVsdC5GT1JNQVRfRVJST1IsIkZsdjogU3RyYW5nZSBOYWx1TGVuZ3RoU2l6ZU1pbnVzT25lOiAiKyh0aGlzLl9uYWx1TGVuZ3RoU2l6ZS0xKSk7dmFyIGQ9MzEmYS5nZXRVaW50OCg1KTtpZigwPT09ZClyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKG0uZGVmYXVsdC5GT1JNQVRfRVJST1IsIkZsdjogSW52YWxpZCBBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZDogTm8gU1BTIik7ZD4xJiZsLmRlZmF1bHQudyh0aGlzLlRBRywiRmx2OiBTdHJhbmdlIEFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkOiBTUFMgQ291bnQgPSAiK2QpO2Zvcih2YXIgaD02LGY9MDtmPGQ7ZisrKXt2YXIgXz1hLmdldFVpbnQxNihoLCFzKTtpZihoKz0yLDAhPT1fKXt2YXIgcD1uZXcgVWludDhBcnJheShlLHQraCxfKTtoKz1fO3ZhciB2PWMuZGVmYXVsdC5wYXJzZVNQUyhwKTtpZigwPT09Zil7aS5jb2RlY1dpZHRoPXYuY29kZWNfc2l6ZS53aWR0aCxpLmNvZGVjSGVpZ2h0PXYuY29kZWNfc2l6ZS5oZWlnaHQsaS5wcmVzZW50V2lkdGg9di5wcmVzZW50X3NpemUud2lkdGgsaS5wcmVzZW50SGVpZ2h0PXYucHJlc2VudF9zaXplLmhlaWdodCxpLnByb2ZpbGU9di5wcm9maWxlX3N0cmluZyxpLmxldmVsPXYubGV2ZWxfc3RyaW5nLGkuYml0RGVwdGg9di5iaXRfZGVwdGgsaS5jaHJvbWFGb3JtYXQ9di5jaHJvbWFfZm9ybWF0LGkuc2FyUmF0aW89di5zYXJfcmF0aW8saS5mcmFtZVJhdGU9di5mcmFtZV9yYXRlLHYuZnJhbWVfcmF0ZS5maXhlZCE9PSExJiYwIT09di5mcmFtZV9yYXRlLmZwc19udW0mJjAhPT12LmZyYW1lX3JhdGUuZnBzX2Rlbnx8KGkuZnJhbWVSYXRlPXRoaXMuX3JlZmVyZW5jZUZyYW1lUmF0ZSk7dmFyIGc9aS5mcmFtZVJhdGUuZnBzX2Rlbix5PWkuZnJhbWVSYXRlLmZwc19udW07aS5yZWZTYW1wbGVEdXJhdGlvbj1NYXRoLmZsb29yKGkudGltZXNjYWxlKihnL3kpKTtmb3IodmFyIEU9cC5zdWJhcnJheSgxLDQpLGI9ImF2YzEuIixTPTA7UzwzO1MrKyl7dmFyIGs9RVtTXS50b1N0cmluZygxNik7ay5sZW5ndGg8MiYmKGs9IjAiK2spLGIrPWt9aS5jb2RlYz1iO3ZhciBMPXRoaXMuX21lZGlhSW5mbztMLndpZHRoPWkuY29kZWNXaWR0aCxMLmhlaWdodD1pLmNvZGVjSGVpZ2h0LEwuZnBzPWkuZnJhbWVSYXRlLmZwcyxMLnByb2ZpbGU9aS5wcm9maWxlLEwubGV2ZWw9aS5sZXZlbCxMLmNocm9tYUZvcm1hdD12LmNocm9tYV9mb3JtYXRfc3RyaW5nLEwuc2FyTnVtPWkuc2FyUmF0aW8ud2lkdGgsTC5zYXJEZW49aS5zYXJSYXRpby5oZWlnaHQsTC52aWRlb0NvZGVjPWIsTC5oYXNBdWRpbz9udWxsIT1MLmF1ZGlvQ29kZWMmJihMLm1pbWVUeXBlPSd2aWRlby94LWZsdjsgY29kZWNzPSInK0wudmlkZW9Db2RlYysiLCIrTC5hdWRpb0NvZGVjKyciJyk6TC5taW1lVHlwZT0ndmlkZW8veC1mbHY7IGNvZGVjcz0iJytMLnZpZGVvQ29kZWMrJyInLEwuaXNDb21wbGV0ZSgpJiZ0aGlzLl9vbk1lZGlhSW5mbyhMKX19fXZhciB3PWEuZ2V0VWludDgoaCk7aWYoMD09PXcpcmV0dXJuIHZvaWQgdGhpcy5fb25FcnJvcihtLmRlZmF1bHQuRk9STUFUX0VSUk9SLCJGbHY6IEludmFsaWQgQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQ6IE5vIFBQUyIpO3c+MSYmbC5kZWZhdWx0LncodGhpcy5UQUcsIkZsdjogU3RyYW5nZSBBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZDogUFBTIENvdW50ID0gIit3KSxoKys7Zm9yKHZhciBSPTA7Ujx3O1IrKyl7dmFyIEE9YS5nZXRVaW50MTYoaCwhcyk7aCs9MiwwIT09QSYmKGgrPUEpfWkuYXZjYz1uZXcgVWludDhBcnJheShuKSxpLmF2Y2Muc2V0KG5ldyBVaW50OEFycmF5KGUsdCxuKSwwKSxsLmRlZmF1bHQudih0aGlzLlRBRywiUGFyc2VkIEFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIiksdGhpcy5faXNJbml0aWFsTWV0YWRhdGFEaXNwYXRjaGVkKCk/dGhpcy5fZGlzcGF0Y2gmJih0aGlzLl9hdWRpb1RyYWNrLmxlbmd0aHx8dGhpcy5fdmlkZW9UcmFjay5sZW5ndGgpJiZ0aGlzLl9vbkRhdGFBdmFpbGFibGUodGhpcy5fYXVkaW9UcmFjayx0aGlzLl92aWRlb1RyYWNrKTp0aGlzLl92aWRlb0luaXRpYWxNZXRhZGF0YURpc3BhdGNoZWQ9ITAsdGhpcy5fZGlzcGF0Y2g9ITEsdGhpcy5fb25UcmFja01ldGFkYXRhKCJ2aWRlbyIsaSl9fSx7a2V5OiJfcGFyc2VBVkNWaWRlb0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGkscixzLGEpe2Zvcih2YXIgbz10aGlzLl9saXR0bGVFbmRpYW4sdT1uZXcgRGF0YVZpZXcoZSx0LG4pLGQ9W10saD0wLGY9MCxjPXRoaXMuX25hbHVMZW5ndGhTaXplLF89dGhpcy5fdGltZXN0YW1wQmFzZStpLG09MT09PXM7ZjxuOyl7aWYoZis0Pj1uKXtsLmRlZmF1bHQudyh0aGlzLlRBRywiTWFsZm9ybWVkIE5hbHUgbmVhciB0aW1lc3RhbXAgIitfKyIsIG9mZnNldCA9ICIrZisiLCBkYXRhU2l6ZSA9ICIrbik7YnJlYWt9dmFyIHA9dS5nZXRVaW50MzIoZiwhbyk7aWYoMz09PWMmJihwPj4+PTgpLHA+bi1jKXJldHVybiB2b2lkIGwuZGVmYXVsdC53KHRoaXMuVEFHLCJNYWxmb3JtZWQgTmFsdXMgbmVhciB0aW1lc3RhbXAgIitfKyIsIE5hbHVTaXplID4gRGF0YVNpemUhIik7dmFyIHY9MzEmdS5nZXRVaW50OChmK2MpOzU9PT12JiYobT0hMCk7dmFyIGc9bmV3IFVpbnQ4QXJyYXkoZSx0K2YsYytwKSx5PXt0eXBlOnYsZGF0YTpnfTtkLnB1c2goeSksaCs9Zy5ieXRlTGVuZ3RoLGYrPWMrcH1pZihkLmxlbmd0aCl7dmFyIEU9dGhpcy5fdmlkZW9UcmFjayxiPXt1bml0czpkLGxlbmd0aDpoLGlzS2V5ZnJhbWU6bSxkdHM6XyxjdHM6YSxwdHM6XythfTttJiYoYi5maWxlcG9zaXRpb249ciksRS5zYW1wbGVzLnB1c2goYiksRS5sZW5ndGgrPWh9fX0se2tleToib25UcmFja01ldGFkYXRhIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25UcmFja01ldGFkYXRhfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25UcmFja01ldGFkYXRhPWV9fSx7a2V5OiJvbk1lZGlhSW5mbyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uTWVkaWFJbmZvfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25NZWRpYUluZm89ZX19LHtrZXk6Im9uRXJyb3IiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkVycm9yfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25FcnJvcj1lfX0se2tleToib25EYXRhQXZhaWxhYmxlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25EYXRhQXZhaWxhYmxlfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25EYXRhQXZhaWxhYmxlPWV9fSx7a2V5OiJ0aW1lc3RhbXBCYXNlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGltZXN0YW1wQmFzZX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3RpbWVzdGFtcEJhc2U9ZX19LHtrZXk6Im92ZXJyaWRlZER1cmF0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldDpmdW5jdGlvbihlKXt0aGlzLl9kdXJhdGlvbk92ZXJyaWRlZD0hMCx0aGlzLl9kdXJhdGlvbj1lLHRoaXMuX21lZGlhSW5mby5kdXJhdGlvbj1lfX1dLFt7a2V5OiJwcm9iZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZSksbj17bWF0Y2g6ITF9O2lmKDcwIT09dFswXXx8NzYhPT10WzFdfHw4NiE9PXRbMl18fDEhPT10WzNdKXJldHVybiBuO3ZhciBpPSg0JnRbNF0pPj4+MiE9MCxyPTAhPSgxJnRbNF0pLGE9cyh0LDUpO3JldHVybiBhPDk/bjp7bWF0Y2g6ITAsY29uc3VtZWQ6YSxkYXRhT2Zmc2V0OmEsaGFzQXVkaW9UcmFjazppLGhhc1ZpZGVvVHJhY2s6cn19fV0pLGV9KCk7bi5kZWZhdWx0PXl9LHsiLi4vY29yZS9tZWRpYS1pbmZvLmpzIjo3LCIuLi91dGlscy9leGNlcHRpb24uanMiOjQwLCIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuL2FtZi1wYXJzZXIuanMiOjE1LCIuL2RlbXV4LWVycm9ycy5qcyI6MTYsIi4vc3BzLXBhcnNlci5qcyI6MTl9XSwxOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZSgiLi9leHAtZ29sb21iLmpzIiksYT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KHMpLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpfXJldHVybiByKGUsbnVsbCxbe2tleToiX2Vic3AycmJzcCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUsbj10LmJ5dGVMZW5ndGgsaT1uZXcgVWludDhBcnJheShuKSxyPTAscz0wO3M8bjtzKyspcz49MiYmMz09PXRbc10mJjA9PT10W3MtMV0mJjA9PT10W3MtMl18fChpW3JdPXRbc10scisrKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaS5idWZmZXIsMCxyKX19LHtrZXk6InBhcnNlU1BTIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj1lLl9lYnNwMnJic3AodCksaT1uZXcgYS5kZWZhdWx0KG4pO2kucmVhZEJ5dGUoKTt2YXIgcj1pLnJlYWRCeXRlKCk7aS5yZWFkQnl0ZSgpO3ZhciBzPWkucmVhZEJ5dGUoKTtpLnJlYWRVRUcoKTt2YXIgbz1lLmdldFByb2ZpbGVTdHJpbmcociksdT1lLmdldExldmVsU3RyaW5nKHMpLGw9MSxkPTQyMCxoPVswLDQyMCw0MjIsNDQ0XSxmPTg7aWYoKDEwMD09PXJ8fDExMD09PXJ8fDEyMj09PXJ8fDI0ND09PXJ8fDQ0PT09cnx8ODM9PT1yfHw4Nj09PXJ8fDExOD09PXJ8fDEyOD09PXJ8fDEzOD09PXJ8fDE0ND09PXIpJiYobD1pLnJlYWRVRUcoKSwzPT09bCYmaS5yZWFkQml0cygxKSxsPD0zJiYoZD1oW2xdKSxmPWkucmVhZFVFRygpKzgsaS5yZWFkVUVHKCksaS5yZWFkQml0cygxKSxpLnJlYWRCb29sKCkpKWZvcih2YXIgYz0zIT09bD84OjEyLF89MDtfPGM7XysrKWkucmVhZEJvb2woKSYmKF88Nj9lLl9za2lwU2NhbGluZ0xpc3QoaSwxNik6ZS5fc2tpcFNjYWxpbmdMaXN0KGksNjQpKTtpLnJlYWRVRUcoKTt2YXIgbT1pLnJlYWRVRUcoKTtpZigwPT09bSlpLnJlYWRVRUcoKTtlbHNlIGlmKDE9PT1tKXtpLnJlYWRCaXRzKDEpLGkucmVhZFNFRygpLGkucmVhZFNFRygpO2Zvcih2YXIgcD1pLnJlYWRVRUcoKSx2PTA7djxwO3YrKylpLnJlYWRTRUcoKX1pLnJlYWRVRUcoKSxpLnJlYWRCaXRzKDEpO3ZhciBnPWkucmVhZFVFRygpLHk9aS5yZWFkVUVHKCksRT1pLnJlYWRCaXRzKDEpOzA9PT1FJiZpLnJlYWRCaXRzKDEpLGkucmVhZEJpdHMoMSk7dmFyIGI9MCxTPTAsaz0wLEw9MDtpLnJlYWRCb29sKCkmJihiPWkucmVhZFVFRygpLFM9aS5yZWFkVUVHKCksaz1pLnJlYWRVRUcoKSxMPWkucmVhZFVFRygpKTt2YXIgdz0xLFI9MSxBPTAsTz0hMCxUPTAsST0wO2lmKGkucmVhZEJvb2woKSl7aWYoaS5yZWFkQm9vbCgpKXt2YXIgQz1pLnJlYWRCeXRlKCkseD1bMSwxMiwxMCwxNiw0MCwyNCwyMCwzMiw4MCwxOCwxNSw2NCwxNjAsNCwzLDJdLE09WzEsMTEsMTEsMTEsMzMsMTEsMTEsMTEsMzMsMTEsMTEsMzMsOTksMywyLDFdO0M+MCYmQzwxNj8odz14W0MtMV0sUj1NW0MtMV0pOjI1NT09PUMmJih3PWkucmVhZEJ5dGUoKTw8OHxpLnJlYWRCeXRlKCksUj1pLnJlYWRCeXRlKCk8PDh8aS5yZWFkQnl0ZSgpKX1pZihpLnJlYWRCb29sKCkmJmkucmVhZEJvb2woKSxpLnJlYWRCb29sKCkmJihpLnJlYWRCaXRzKDQpLGkucmVhZEJvb2woKSYmaS5yZWFkQml0cygyNCkpLGkucmVhZEJvb2woKSYmKGkucmVhZFVFRygpLGkucmVhZFVFRygpKSxpLnJlYWRCb29sKCkpe3ZhciBEPWkucmVhZEJpdHMoMzIpLGo9aS5yZWFkQml0cygzMik7Tz1pLnJlYWRCb29sKCksVD1qLEk9MipELEE9VC9JfX12YXIgUD0xOzE9PT13JiYxPT09Unx8KFA9dy9SKTt2YXIgQj0wLFU9MDtpZigwPT09bClCPTEsVT0yLUU7ZWxzZXt2YXIgTj0zPT09bD8xOjIsRj0xPT09bD8yOjE7Qj1OLFU9RiooMi1FKX12YXIgRz0xNiooZysxKSxWPTE2Kih5KzEpKigyLUUpO0ctPShiK1MpKkIsVi09KGsrTCkqVTt2YXIgej1NYXRoLmNlaWwoRypQKTtyZXR1cm4gaS5kZXN0cm95KCksaT1udWxsLHtwcm9maWxlX3N0cmluZzpvLGxldmVsX3N0cmluZzp1LGJpdF9kZXB0aDpmLGNocm9tYV9mb3JtYXQ6ZCxjaHJvbWFfZm9ybWF0X3N0cmluZzplLmdldENocm9tYUZvcm1hdFN0cmluZyhkKSxmcmFtZV9yYXRlOntmaXhlZDpPLGZwczpBLGZwc19kZW46SSxmcHNfbnVtOlR9LHNhcl9yYXRpbzp7d2lkdGg6dyxoZWlnaHQ6Un0sY29kZWNfc2l6ZTp7d2lkdGg6RyxoZWlnaHQ6Vn0scHJlc2VudF9zaXplOnt3aWR0aDp6LGhlaWdodDpWfX19fSx7a2V5OiJfc2tpcFNjYWxpbmdMaXN0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj04LGk9OCxyPTAscz0wO3M8dDtzKyspMCE9PWkmJihyPWUucmVhZFNFRygpLGk9KG4rcisyNTYpJTI1Niksbj0wPT09aT9uOml9fSx7a2V5OiJnZXRQcm9maWxlU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSA2NjpyZXR1cm4iQmFzZWxpbmUiO2Nhc2UgNzc6cmV0dXJuIk1haW4iO2Nhc2UgODg6cmV0dXJuIkV4dGVuZGVkIjtjYXNlIDEwMDpyZXR1cm4iSGlnaCI7Y2FzZSAxMTA6cmV0dXJuIkhpZ2gxMCI7Y2FzZSAxMjI6cmV0dXJuIkhpZ2g0MjIiO2Nhc2UgMjQ0OnJldHVybiJIaWdoNDQ0IjtkZWZhdWx0OnJldHVybiJVbmtub3duIn19fSx7a2V5OiJnZXRMZXZlbFN0cmluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKGUvMTApLnRvRml4ZWQoMSl9fSx7a2V5OiJnZXRDaHJvbWFGb3JtYXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIDQyMDpyZXR1cm4iNDoyOjAiO2Nhc2UgNDIyOnJldHVybiI0OjI6MiI7Y2FzZSA0NDQ6cmV0dXJuIjQ6NDo0IjtkZWZhdWx0OnJldHVybiJVbmtub3duIn19fV0pLGV9KCk7bi5kZWZhdWx0PW99LHsiLi9leHAtZ29sb21iLmpzIjoxN31dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXt2YXIgbj1lO2lmKG51bGw9PW58fCJvYmplY3QiIT09KHZvaWQgMD09PW4/InVuZGVmaW5lZCI6byhuKSkpdGhyb3cgbmV3IGIuSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJNZWRpYURhdGFTb3VyY2UgbXVzdCBiZSBhbiBqYXZhc2NyaXB0IG9iamVjdCEiKTtpZighbi5oYXNPd25Qcm9wZXJ0eSgidHlwZSIpKXRocm93IG5ldyBiLkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTWVkaWFEYXRhU291cmNlIG11c3QgaGFzIHR5cGUgZmllbGQgdG8gaW5kaWNhdGUgdmlkZW8gZmlsZSB0eXBlISIpO3N3aXRjaChuLnR5cGUpe2Nhc2UiZmx2IjpyZXR1cm4gbmV3IGMuZGVmYXVsdChuLHQpO2RlZmF1bHQ6cmV0dXJuIG5ldyBtLmRlZmF1bHQobix0KX19ZnVuY3Rpb24gcygpe3JldHVybiBoLmRlZmF1bHQuc3VwcG9ydE1TRUgyNjRQbGF5YmFjaygpfWZ1bmN0aW9uIGEoKXtyZXR1cm4gaC5kZWZhdWx0LmdldEZlYXR1cmVMaXN0KCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx1PWUoIi4vdXRpbHMvcG9seWZpbGwuanMiKSxsPWkodSksZD1lKCIuL2NvcmUvZmVhdHVyZXMuanMiKSxoPWkoZCksZj1lKCIuL3BsYXllci9mbHYtcGxheWVyLmpzIiksYz1pKGYpLF89ZSgiLi9wbGF5ZXIvbmF0aXZlLXBsYXllci5qcyIpLG09aShfKSxwPWUoIi4vcGxheWVyL3BsYXllci1ldmVudHMuanMiKSx2PWkocCksZz1lKCIuL3BsYXllci9wbGF5ZXItZXJyb3JzLmpzIikseT1lKCIuL3V0aWxzL2xvZ2dpbmctY29udHJvbC5qcyIpLEU9aSh5KSxiPWUoIi4vdXRpbHMvZXhjZXB0aW9uLmpzIik7bC5kZWZhdWx0Lmluc3RhbGwoKTt2YXIgUz17fTtTLmNyZWF0ZVBsYXllcj1yLFMuaXNTdXBwb3J0ZWQ9cyxTLmdldEZlYXR1cmVMaXN0PWEsUy5FdmVudHM9di5kZWZhdWx0LFMuRXJyb3JUeXBlcz1nLkVycm9yVHlwZXMsUy5FcnJvckRldGFpbHM9Zy5FcnJvckRldGFpbHMsUy5GbHZQbGF5ZXI9Yy5kZWZhdWx0LFMuTmF0aXZlUGxheWVyPW0uZGVmYXVsdCxTLkxvZ2dpbmdDb250cm9sPUUuZGVmYXVsdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjEuMi4wIn19KSxuLmRlZmF1bHQ9U30seyIuL2NvcmUvZmVhdHVyZXMuanMiOjYsIi4vcGxheWVyL2Zsdi1wbGF5ZXIuanMiOjMyLCIuL3BsYXllci9uYXRpdmUtcGxheWVyLmpzIjozMywiLi9wbGF5ZXIvcGxheWVyLWVycm9ycy5qcyI6MzQsIi4vcGxheWVyL3BsYXllci1ldmVudHMuanMiOjM1LCIuL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDAsIi4vdXRpbHMvbG9nZ2luZy1jb250cm9sLmpzIjo0MiwiLi91dGlscy9wb2x5ZmlsbC5qcyI6NDN9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZSgiLi9mbHYuanMiKS5kZWZhdWx0fSx7Ii4vZmx2LmpzIjoyMH1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBzKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx1PWZ1bmN0aW9uIGUodCxuLGkpe251bGw9PT10JiYodD1GdW5jdGlvbi5wcm90b3R5cGUpO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtpZih2b2lkIDA9PT1yKXt2YXIgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG51bGw9PT1zP3ZvaWQgMDplKHMsbixpKX1pZigidmFsdWUiaW4gcilyZXR1cm4gci52YWx1ZTt2YXIgYT1yLmdldDtpZih2b2lkIDAhPT1hKXJldHVybiBhLmNhbGwoaSl9LGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksZD1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxoPShpKGQpLGUoIi4uL3V0aWxzL2Jyb3dzZXIuanMiKSksZj1pKGgpLGM9ZSgiLi9sb2FkZXIuanMiKSxfPWUoIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyIpLG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe3IodGhpcyx0KTt2YXIgaT1zKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywiZmV0Y2gtc3RyZWFtLWxvYWRlciIpKTtyZXR1cm4gaS5UQUc9IkZldGNoU3RyZWFtTG9hZGVyIixpLl9zZWVrSGFuZGxlcj1lLGkuX2NvbmZpZz1uLGkuX25lZWRTdGFzaD0hMCxpLl9yZXF1ZXN0QWJvcnQ9ITEsaS5fY29udGVudExlbmd0aD1udWxsLGkuX3JlY2VpdmVkTGVuZ3RoPTAsaX1yZXR1cm4gYSh0LGUpLGwodCxudWxsLFt7a2V5OiJpc1N1cHBvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9Zi5kZWZhdWx0Lm1zZWRnZSYmZi5kZWZhdWx0LnZlcnNpb24ubWlub3I+PTE1MDQ4LHQ9IWYuZGVmYXVsdC5tc2VkZ2V8fGU7cmV0dXJuIHNlbGYuZmV0Y2gmJnNlbGYuUmVhZGFibGVTdHJlYW0mJnR9Y2F0Y2goZSl7cmV0dXJuITF9fX1dKSxsKHQsW3trZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc1dvcmtpbmcoKSYmdGhpcy5hYm9ydCgpLHUodC5wcm90b3R5cGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3RoaXMuX2RhdGFTb3VyY2U9ZSx0aGlzLl9yYW5nZT10O3ZhciBpPWUudXJsO3RoaXMuX2NvbmZpZy5yZXVzZVJlZGlyZWN0ZWRVUkwmJnZvaWQgMCE9ZS5yZWRpcmVjdGVkVVJMJiYoaT1lLnJlZGlyZWN0ZWRVUkwpO3ZhciByPXRoaXMuX3NlZWtIYW5kbGVyLmdldENvbmZpZyhpLHQpLHM9bmV3IHNlbGYuSGVhZGVycztpZigib2JqZWN0Ij09PW8oci5oZWFkZXJzKSl7dmFyIGE9ci5oZWFkZXJzO2Zvcih2YXIgdSBpbiBhKWEuaGFzT3duUHJvcGVydHkodSkmJnMuYXBwZW5kKHUsYVt1XSl9dmFyIGw9e21ldGhvZDoiR0VUIixoZWFkZXJzOnMsbW9kZToiY29ycyIsY2FjaGU6ImRlZmF1bHQifTtlLmNvcnM9PT0hMSYmKGwubW9kZT0ic2FtZS1vcmlnaW4iKSxlLndpdGhDcmVkZW50aWFscyYmKGwuY3JlZGVudGlhbHM9ImluY2x1ZGUiKSx0aGlzLl9zdGF0dXM9Yy5Mb2FkZXJTdGF0dXMua0Nvbm5lY3Rpbmcsc2VsZi5mZXRjaChyLnVybCxsKS50aGVuKGZ1bmN0aW9uKGUpe2lmKG4uX3JlcXVlc3RBYm9ydClyZXR1cm4gbi5fcmVxdWVzdEFib3J0PSExLHZvaWQobi5fc3RhdHVzPWMuTG9hZGVyU3RhdHVzLmtJZGxlKTtpZihlLm9rJiZlLnN0YXR1cz49MjAwJiZlLnN0YXR1czw9Mjk5KXtpZihlLnVybCE9PXIudXJsJiZuLl9vblVSTFJlZGlyZWN0KXt2YXIgdD1uLl9zZWVrSGFuZGxlci5yZW1vdmVVUkxQYXJhbWV0ZXJzKGUudXJsKTtuLl9vblVSTFJlZGlyZWN0KHQpfXZhciBpPWUuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIik7cmV0dXJuIG51bGwhPWkmJihuLl9jb250ZW50TGVuZ3RoPXBhcnNlSW50KGkpLDAhPT1uLl9jb250ZW50TGVuZ3RoJiZuLl9vbkNvbnRlbnRMZW5ndGhLbm93biYmbi5fb25Db250ZW50TGVuZ3RoS25vd24obi5fY29udGVudExlbmd0aCkpLG4uX3B1bXAuY2FsbChuLGUuYm9keS5nZXRSZWFkZXIoKSl9aWYobi5fc3RhdHVzPWMuTG9hZGVyU3RhdHVzLmtFcnJvciwhbi5fb25FcnJvcil0aHJvdyBuZXcgXy5SdW50aW1lRXhjZXB0aW9uKCJGZXRjaFN0cmVhbUxvYWRlcjogSHR0cCBjb2RlIGludmFsaWQsICIrZS5zdGF0dXMrIiAiK2Uuc3RhdHVzVGV4dCk7bi5fb25FcnJvcihjLkxvYWRlckVycm9ycy5IVFRQX1NUQVRVU19DT0RFX0lOVkFMSUQse2NvZGU6ZS5zdGF0dXMsbXNnOmUuc3RhdHVzVGV4dH0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYobi5fc3RhdHVzPWMuTG9hZGVyU3RhdHVzLmtFcnJvciwhbi5fb25FcnJvcil0aHJvdyBlO24uX29uRXJyb3IoYy5Mb2FkZXJFcnJvcnMuRVhDRVBUSU9OLHtjb2RlOi0xLG1zZzplLm1lc3NhZ2V9KX0pfX0se2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdEFib3J0PSEwfX0se2tleToiX3B1bXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUucmVhZCgpLnRoZW4oZnVuY3Rpb24obil7aWYoIW4uZG9uZSl7aWYodC5fcmVxdWVzdEFib3J0PT09ITApcmV0dXJuIHQuX3JlcXVlc3RBYm9ydD0hMSx0Ll9zdGF0dXM9Yy5Mb2FkZXJTdGF0dXMua0NvbXBsZXRlLGUuY2FuY2VsKCk7dC5fc3RhdHVzPWMuTG9hZGVyU3RhdHVzLmtCdWZmZXJpbmc7dmFyIGk9bi52YWx1ZS5idWZmZXIscj10Ll9yYW5nZS5mcm9tK3QuX3JlY2VpdmVkTGVuZ3RoO3JldHVybiB0Ll9yZWNlaXZlZExlbmd0aCs9aS5ieXRlTGVuZ3RoLHQuX29uRGF0YUFycml2YWwmJnQuX29uRGF0YUFycml2YWwoaSxyLHQuX3JlY2VpdmVkTGVuZ3RoKSx0Ll9wdW1wKGUpfXQuX3N0YXR1cz1jLkxvYWRlclN0YXR1cy5rQ29tcGxldGUsdC5fb25Db21wbGV0ZSYmdC5fb25Db21wbGV0ZSh0Ll9yYW5nZS5mcm9tLHQuX3JhbmdlLmZyb20rdC5fcmVjZWl2ZWRMZW5ndGgtMSl9KS5jYXRjaChmdW5jdGlvbihlKXtpZigxMSE9PWUuY29kZXx8IWYuZGVmYXVsdC5tc2VkZ2Upe3QuX3N0YXR1cz1jLkxvYWRlclN0YXR1cy5rRXJyb3I7dmFyIG49MCxpPW51bGw7aWYoMTkhPT1lLmNvZGUmJiJuZXR3b3JrIGVycm9yIiE9PWUubWVzc2FnZXx8IShudWxsPT09dC5fY29udGVudExlbmd0aHx8bnVsbCE9PXQuX2NvbnRlbnRMZW5ndGgmJnQuX3JlY2VpdmVkTGVuZ3RoPHQuX2NvbnRlbnRMZW5ndGgpPyhuPWMuTG9hZGVyRXJyb3JzLkVYQ0VQVElPTixpPXtjb2RlOmUuY29kZSxtc2c6ZS5tZXNzYWdlfSk6KG49Yy5Mb2FkZXJFcnJvcnMuRUFSTFlfRU9GLGk9e2NvZGU6ZS5jb2RlLG1zZzoiRmV0Y2ggc3RyZWFtIG1lZXQgRWFybHktRU9GIn0pLCF0Ll9vbkVycm9yKXRocm93IG5ldyBfLlJ1bnRpbWVFeGNlcHRpb24oaS5tc2cpO3QuX29uRXJyb3IobixpKX19KX19XSksdH0oYy5CYXNlTG9hZGVyKTtuLmRlZmF1bHQ9bX0seyIuLi91dGlscy9icm93c2VyLmpzIjozOSwiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIjo0MCwiLi4vdXRpbHMvbG9nZ2VyLmpzIjo0MSwiLi9sb2FkZXIuanMiOjI0fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxhPWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLG89aShhKSx1PWUoIi4vc3BlZWQtc2FtcGxlci5qcyIpLGw9aSh1KSxkPWUoIi4vbG9hZGVyLmpzIiksaD1lKCIuL2ZldGNoLXN0cmVhbS1sb2FkZXIuanMiKSxmPWkoaCksYz1lKCIuL3hoci1tb3otY2h1bmtlZC1sb2FkZXIuanMiKSxfPWkoYyksbT1lKCIuL3hoci1tc3N0cmVhbS1sb2FkZXIuanMiKSxwPShpKG0pLGUoIi4veGhyLXJhbmdlLWxvYWRlci5qcyIpKSx2PWkocCksZz1lKCIuL3dlYnNvY2tldC1sb2FkZXIuanMiKSx5PWkoZyksRT1lKCIuL3JhbmdlLXNlZWstaGFuZGxlci5qcyIpLGI9aShFKSxTPWUoIi4vcGFyYW0tc2Vlay1oYW5kbGVyLmpzIiksaz1pKFMpLEw9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksdz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLGkpe3IodGhpcyxlKSx0aGlzLlRBRz0iSU9Db250cm9sbGVyIix0aGlzLl9jb25maWc9bix0aGlzLl9leHRyYURhdGE9aSx0aGlzLl9zdGFzaEluaXRpYWxTaXplPTM5MzIxNix2b2lkIDAhPW4uc3Rhc2hJbml0aWFsU2l6ZSYmbi5zdGFzaEluaXRpYWxTaXplPjAmJih0aGlzLl9zdGFzaEluaXRpYWxTaXplPW4uc3Rhc2hJbml0aWFsU2l6ZSksdGhpcy5fc3Rhc2hVc2VkPTAsdGhpcy5fc3Rhc2hTaXplPXRoaXMuX3N0YXNoSW5pdGlhbFNpemUsdGhpcy5fYnVmZmVyU2l6ZT0zMTQ1NzI4LHRoaXMuX3N0YXNoQnVmZmVyPW5ldyBBcnJheUJ1ZmZlcih0aGlzLl9idWZmZXJTaXplKSx0aGlzLl9zdGFzaEJ5dGVTdGFydD0wLHRoaXMuX2VuYWJsZVN0YXNoPSEwLG4uZW5hYmxlU3Rhc2hCdWZmZXI9PT0hMSYmKHRoaXMuX2VuYWJsZVN0YXNoPSExKSx0aGlzLl9sb2FkZXI9bnVsbCx0aGlzLl9sb2FkZXJDbGFzcz1udWxsLHRoaXMuX3NlZWtIYW5kbGVyPW51bGwsdGhpcy5fZGF0YVNvdXJjZT10LHRoaXMuX2lzV2ViU29ja2V0VVJMPS93c3M/OlwvXC8oLis/KS8udGVzdCh0LnVybCksdGhpcy5fcmVmVG90YWxMZW5ndGg9dC5maWxlc2l6ZT90LmZpbGVzaXplOm51bGwsdGhpcy5fdG90YWxMZW5ndGg9dGhpcy5fcmVmVG90YWxMZW5ndGgsdGhpcy5fZnVsbFJlcXVlc3RGbGFnPSExLHRoaXMuX2N1cnJlbnRSYW5nZT1udWxsLHRoaXMuX3JlZGlyZWN0ZWRVUkw9bnVsbCx0aGlzLl9zcGVlZE5vcm1hbGl6ZWQ9MCx0aGlzLl9zcGVlZFNhbXBsZXI9bmV3IGwuZGVmYXVsdCx0aGlzLl9zcGVlZE5vcm1hbGl6ZUxpc3Q9WzY0LDEyOCwyNTYsMzg0LDUxMiw3NjgsMTAyNCwxNTM2LDIwNDgsMzA3Miw0MDk2XSx0aGlzLl9pc0Vhcmx5RW9mUmVjb25uZWN0aW5nPSExLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9yZXN1bWVGcm9tPTAsdGhpcy5fb25EYXRhQXJyaXZhbD1udWxsLHRoaXMuX29uU2Vla2VkPW51bGwsdGhpcy5fb25FcnJvcj1udWxsLHRoaXMuX29uQ29tcGxldGU9bnVsbCx0aGlzLl9vblJlZGlyZWN0PW51bGwsdGhpcy5fb25SZWNvdmVyZWRFYXJseUVvZj1udWxsLHRoaXMuX3NlbGVjdFNlZWtIYW5kbGVyKCksdGhpcy5fc2VsZWN0TG9hZGVyKCksdGhpcy5fY3JlYXRlTG9hZGVyKCl9cmV0dXJuIHMoZSxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9sb2FkZXIuaXNXb3JraW5nKCkmJnRoaXMuX2xvYWRlci5hYm9ydCgpLHRoaXMuX2xvYWRlci5kZXN0cm95KCksdGhpcy5fbG9hZGVyPW51bGwsdGhpcy5fbG9hZGVyQ2xhc3M9bnVsbCx0aGlzLl9kYXRhU291cmNlPW51bGwsdGhpcy5fc3Rhc2hCdWZmZXI9bnVsbCx0aGlzLl9zdGFzaFVzZWQ9dGhpcy5fc3Rhc2hTaXplPXRoaXMuX2J1ZmZlclNpemU9dGhpcy5fc3Rhc2hCeXRlU3RhcnQ9MCx0aGlzLl9jdXJyZW50UmFuZ2U9bnVsbCx0aGlzLl9zcGVlZFNhbXBsZXI9bnVsbCx0aGlzLl9pc0Vhcmx5RW9mUmVjb25uZWN0aW5nPSExLHRoaXMuX29uRGF0YUFycml2YWw9bnVsbCx0aGlzLl9vblNlZWtlZD1udWxsLHRoaXMuX29uRXJyb3I9bnVsbCx0aGlzLl9vbkNvbXBsZXRlPW51bGwsdGhpcy5fb25SZWRpcmVjdD1udWxsLHRoaXMuX29uUmVjb3ZlcmVkRWFybHlFb2Y9bnVsbCx0aGlzLl9leHRyYURhdGE9bnVsbH19LHtrZXk6ImlzV29ya2luZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGVyJiZ0aGlzLl9sb2FkZXIuaXNXb3JraW5nKCkmJiF0aGlzLl9wYXVzZWR9fSx7a2V5OiJpc1BhdXNlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGF1c2VkfX0se2tleToiX3NlbGVjdFNlZWtIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbmZpZztpZigicmFuZ2UiPT09ZS5zZWVrVHlwZSl0aGlzLl9zZWVrSGFuZGxlcj1uZXcgYi5kZWZhdWx0KHRoaXMuX2NvbmZpZy5yYW5nZUxvYWRaZXJvU3RhcnQpO2Vsc2UgaWYoInBhcmFtIj09PWUuc2Vla1R5cGUpe3ZhciB0PWUuc2Vla1BhcmFtU3RhcnR8fCJic3RhcnQiLG49ZS5zZWVrUGFyYW1FbmR8fCJiZW5kIjt0aGlzLl9zZWVrSGFuZGxlcj1uZXcgay5kZWZhdWx0KHQsbil9ZWxzZXtpZigiY3VzdG9tIiE9PWUuc2Vla1R5cGUpdGhyb3cgbmV3IEwuSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHNlZWtUeXBlIGluIGNvbmZpZzogIitlLnNlZWtUeXBlKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS5jdXN0b21TZWVrSGFuZGxlcil0aHJvdyBuZXcgTC5JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkN1c3RvbSBzZWVrVHlwZSBzcGVjaWZpZWQgaW4gY29uZmlnIGJ1dCBpbnZhbGlkIGN1c3RvbVNlZWtIYW5kbGVyISIpO3RoaXMuX3NlZWtIYW5kbGVyPW5ldyBlLmN1c3RvbVNlZWtIYW5kbGVyfX19LHtrZXk6Il9zZWxlY3RMb2FkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5faXNXZWJTb2NrZXRVUkwpdGhpcy5fbG9hZGVyQ2xhc3M9eS5kZWZhdWx0O2Vsc2UgaWYoZi5kZWZhdWx0LmlzU3VwcG9ydGVkKCkpdGhpcy5fbG9hZGVyQ2xhc3M9Zi5kZWZhdWx0O2Vsc2UgaWYoXy5kZWZhdWx0LmlzU3VwcG9ydGVkKCkpdGhpcy5fbG9hZGVyQ2xhc3M9Xy5kZWZhdWx0O2Vsc2V7aWYoIXYuZGVmYXVsdC5pc1N1cHBvcnRlZCgpKXRocm93IG5ldyBMLlJ1bnRpbWVFeGNlcHRpb24oIllvdXIgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgeGhyIHdpdGggYXJyYXlidWZmZXIgcmVzcG9uc2VUeXBlISIpO3RoaXMuX2xvYWRlckNsYXNzPXYuZGVmYXVsdH19fSx7a2V5OiJfY3JlYXRlTG9hZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2xvYWRlcj1uZXcgdGhpcy5fbG9hZGVyQ2xhc3ModGhpcy5fc2Vla0hhbmRsZXIsdGhpcy5fY29uZmlnKSx0aGlzLl9sb2FkZXIubmVlZFN0YXNoQnVmZmVyPT09ITEmJih0aGlzLl9lbmFibGVTdGFzaD0hMSksdGhpcy5fbG9hZGVyLm9uQ29udGVudExlbmd0aEtub3duPXRoaXMuX29uQ29udGVudExlbmd0aEtub3duLmJpbmQodGhpcyksdGhpcy5fbG9hZGVyLm9uVVJMUmVkaXJlY3Q9dGhpcy5fb25VUkxSZWRpcmVjdC5iaW5kKHRoaXMpLHRoaXMuX2xvYWRlci5vbkRhdGFBcnJpdmFsPXRoaXMuX29uTG9hZGVyQ2h1bmtBcnJpdmFsLmJpbmQodGhpcyksdGhpcy5fbG9hZGVyLm9uQ29tcGxldGU9dGhpcy5fb25Mb2FkZXJDb21wbGV0ZS5iaW5kKHRoaXMpLHRoaXMuX2xvYWRlci5vbkVycm9yPXRoaXMuX29uTG9hZGVyRXJyb3IuYmluZCh0aGlzKX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRSYW5nZT17ZnJvbTowLHRvOi0xfSxlJiYodGhpcy5fY3VycmVudFJhbmdlLmZyb209ZSksdGhpcy5fc3BlZWRTYW1wbGVyLnJlc2V0KCksZXx8KHRoaXMuX2Z1bGxSZXF1ZXN0RmxhZz0hMCksdGhpcy5fbG9hZGVyLm9wZW4odGhpcy5fZGF0YVNvdXJjZSxPYmplY3QuYXNzaWduKHt9LHRoaXMuX2N1cnJlbnRSYW5nZSkpfX0se2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZGVyLmFib3J0KCksdGhpcy5fcGF1c2VkJiYodGhpcy5fcGF1c2VkPSExLHRoaXMuX3Jlc3VtZUZyb209MCl9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzV29ya2luZygpJiYodGhpcy5fbG9hZGVyLmFib3J0KCksMCE9PXRoaXMuX3N0YXNoVXNlZD8odGhpcy5fcmVzdW1lRnJvbT10aGlzLl9zdGFzaEJ5dGVTdGFydCx0aGlzLl9jdXJyZW50UmFuZ2UudG89dGhpcy5fc3Rhc2hCeXRlU3RhcnQtMSk6dGhpcy5fcmVzdW1lRnJvbT10aGlzLl9jdXJyZW50UmFuZ2UudG8rMSx0aGlzLl9zdGFzaFVzZWQ9MCx0aGlzLl9zdGFzaEJ5dGVTdGFydD0wLHRoaXMuX3BhdXNlZD0hMCl9fSx7a2V5OiJyZXN1bWUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGF1c2VkKXt0aGlzLl9wYXVzZWQ9ITE7dmFyIGU9dGhpcy5fcmVzdW1lRnJvbTt0aGlzLl9yZXN1bWVGcm9tPTAsdGhpcy5faW50ZXJuYWxTZWVrKGUsITApfX19LHtrZXk6InNlZWsiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3BhdXNlZD0hMSx0aGlzLl9zdGFzaFVzZWQ9MCx0aGlzLl9zdGFzaEJ5dGVTdGFydD0wLHRoaXMuX2ludGVybmFsU2VlayhlLCEwKX19LHtrZXk6Il9pbnRlcm5hbFNlZWsiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fbG9hZGVyLmlzV29ya2luZygpJiZ0aGlzLl9sb2FkZXIuYWJvcnQoKSx0aGlzLl9mbHVzaFN0YXNoQnVmZmVyKHQpLHRoaXMuX2xvYWRlci5kZXN0cm95KCksdGhpcy5fbG9hZGVyPW51bGw7dmFyIG49e2Zyb206ZSx0bzotMX07dGhpcy5fY3VycmVudFJhbmdlPXtmcm9tOm4uZnJvbSx0bzotMX0sdGhpcy5fc3BlZWRTYW1wbGVyLnJlc2V0KCksdGhpcy5fc3Rhc2hTaXplPXRoaXMuX3N0YXNoSW5pdGlhbFNpemUsdGhpcy5fY3JlYXRlTG9hZGVyKCksdGhpcy5fbG9hZGVyLm9wZW4odGhpcy5fZGF0YVNvdXJjZSxuKSx0aGlzLl9vblNlZWtlZCYmdGhpcy5fb25TZWVrZWQoKX19LHtrZXk6InVwZGF0ZVVybCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBMLkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVXJsIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nISIpO3RoaXMuX2RhdGFTb3VyY2UudXJsPWV9fSx7a2V5OiJfZXhwYW5kQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fc3Rhc2hTaXplO3QrMTA0ODU3NjxlOyl0Kj0yO2lmKCh0Kz0xMDQ4NTc2KSE9PXRoaXMuX2J1ZmZlclNpemUpe3ZhciBuPW5ldyBBcnJheUJ1ZmZlcih0KTtpZih0aGlzLl9zdGFzaFVzZWQ+MCl7dmFyIGk9bmV3IFVpbnQ4QXJyYXkodGhpcy5fc3Rhc2hCdWZmZXIsMCx0aGlzLl9zdGFzaFVzZWQpO25ldyBVaW50OEFycmF5KG4sMCx0KS5zZXQoaSwwKX10aGlzLl9zdGFzaEJ1ZmZlcj1uLHRoaXMuX2J1ZmZlclNpemU9dH19fSx7a2V5OiJfbm9ybWFsaXplU3BlZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3NwZWVkTm9ybWFsaXplTGlzdCxuPXQubGVuZ3RoLTEsaT0wLHI9MCxzPW47aWYoZTx0WzBdKXJldHVybiB0WzBdO2Zvcig7cjw9czspe2lmKChpPXIrTWF0aC5mbG9vcigocy1yKS8yKSk9PT1ufHxlPj10W2ldJiZlPHRbaSsxXSlyZXR1cm4gdFtpXTt0W2ldPGU/cj1pKzE6cz1pLTF9fX0se2tleToiX2FkanVzdFN0YXNoU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9MDsodD10aGlzLl9jb25maWcuaXNMaXZlP2U6ZTw1MTI/ZTplPj01MTImJmU8PTEwMjQ/TWF0aC5mbG9vcigxLjUqZSk6MiplKT44MTkyJiYodD04MTkyKTt2YXIgbj0xMDI0KnQrMTA0ODU3Njt0aGlzLl9idWZmZXJTaXplPG4mJnRoaXMuX2V4cGFuZEJ1ZmZlcihuKSx0aGlzLl9zdGFzaFNpemU9MTAyNCp0fX0se2tleToiX2Rpc3BhdGNoQ2h1bmtzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jdXJyZW50UmFuZ2UudG89dCtlLmJ5dGVMZW5ndGgtMSx0aGlzLl9vbkRhdGFBcnJpdmFsKGUsdCl9fSx7a2V5OiJfb25VUkxSZWRpcmVjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fcmVkaXJlY3RlZFVSTD1lLHRoaXMuX29uUmVkaXJlY3QmJnRoaXMuX29uUmVkaXJlY3QoZSl9fSx7a2V5OiJfb25Db250ZW50TGVuZ3RoS25vd24iLHZhbHVlOmZ1bmN0aW9uKGUpe2UmJnRoaXMuX2Z1bGxSZXF1ZXN0RmxhZyYmKHRoaXMuX3RvdGFsTGVuZ3RoPWUsdGhpcy5fZnVsbFJlcXVlc3RGbGFnPSExKX19LHtrZXk6Il9vbkxvYWRlckNodW5rQXJyaXZhbCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe2lmKCF0aGlzLl9vbkRhdGFBcnJpdmFsKXRocm93IG5ldyBMLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSU9Db250cm9sbGVyOiBObyBleGlzdGluZyBjb25zdW1lciAob25EYXRhQXJyaXZhbCkgY2FsbGJhY2shIik7aWYoIXRoaXMuX3BhdXNlZCl7dGhpcy5faXNFYXJseUVvZlJlY29ubmVjdGluZyYmKHRoaXMuX2lzRWFybHlFb2ZSZWNvbm5lY3Rpbmc9ITEsdGhpcy5fb25SZWNvdmVyZWRFYXJseUVvZiYmdGhpcy5fb25SZWNvdmVyZWRFYXJseUVvZigpKSx0aGlzLl9zcGVlZFNhbXBsZXIuYWRkQnl0ZXMoZS5ieXRlTGVuZ3RoKTt2YXIgaT10aGlzLl9zcGVlZFNhbXBsZXIubGFzdFNlY29uZEtCcHM7aWYoMCE9PWkpe3ZhciByPXRoaXMuX25vcm1hbGl6ZVNwZWVkKGkpO3RoaXMuX3NwZWVkTm9ybWFsaXplZCE9PXImJih0aGlzLl9zcGVlZE5vcm1hbGl6ZWQ9cix0aGlzLl9hZGp1c3RTdGFzaFNpemUocikpfWlmKHRoaXMuX2VuYWJsZVN0YXNoKWlmKDA9PT10aGlzLl9zdGFzaFVzZWQmJjA9PT10aGlzLl9zdGFzaEJ5dGVTdGFydCYmKHRoaXMuX3N0YXNoQnl0ZVN0YXJ0PXQpLHRoaXMuX3N0YXNoVXNlZCtlLmJ5dGVMZW5ndGg8PXRoaXMuX3N0YXNoU2l6ZSl7dmFyIHM9bmV3IFVpbnQ4QXJyYXkodGhpcy5fc3Rhc2hCdWZmZXIsMCx0aGlzLl9zdGFzaFNpemUpO3Muc2V0KG5ldyBVaW50OEFycmF5KGUpLHRoaXMuX3N0YXNoVXNlZCksdGhpcy5fc3Rhc2hVc2VkKz1lLmJ5dGVMZW5ndGh9ZWxzZXt2YXIgYT1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlciwwLHRoaXMuX2J1ZmZlclNpemUpO2lmKHRoaXMuX3N0YXNoVXNlZD4wKXt2YXIgbz10aGlzLl9zdGFzaEJ1ZmZlci5zbGljZSgwLHRoaXMuX3N0YXNoVXNlZCksdT10aGlzLl9kaXNwYXRjaENodW5rcyhvLHRoaXMuX3N0YXNoQnl0ZVN0YXJ0KTtpZih1PG8uYnl0ZUxlbmd0aCl7aWYodT4wKXt2YXIgbD1uZXcgVWludDhBcnJheShvLHUpO2Euc2V0KGwsMCksdGhpcy5fc3Rhc2hVc2VkPWwuYnl0ZUxlbmd0aCx0aGlzLl9zdGFzaEJ5dGVTdGFydCs9dX19ZWxzZSB0aGlzLl9zdGFzaFVzZWQ9MCx0aGlzLl9zdGFzaEJ5dGVTdGFydCs9dTt0aGlzLl9zdGFzaFVzZWQrZS5ieXRlTGVuZ3RoPnRoaXMuX2J1ZmZlclNpemUmJih0aGlzLl9leHBhbmRCdWZmZXIodGhpcy5fc3Rhc2hVc2VkK2UuYnl0ZUxlbmd0aCksYT1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlciwwLHRoaXMuX2J1ZmZlclNpemUpKSxhLnNldChuZXcgVWludDhBcnJheShlKSx0aGlzLl9zdGFzaFVzZWQpLHRoaXMuX3N0YXNoVXNlZCs9ZS5ieXRlTGVuZ3RofWVsc2V7dmFyIGQ9dGhpcy5fZGlzcGF0Y2hDaHVua3MoZSx0KTtpZihkPGUuYnl0ZUxlbmd0aCl7dmFyIGg9ZS5ieXRlTGVuZ3RoLWQ7aD50aGlzLl9idWZmZXJTaXplJiYodGhpcy5fZXhwYW5kQnVmZmVyKGgpLGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5fc3Rhc2hCdWZmZXIsMCx0aGlzLl9idWZmZXJTaXplKSksYS5zZXQobmV3IFVpbnQ4QXJyYXkoZSxkKSwwKSx0aGlzLl9zdGFzaFVzZWQrPWgsdGhpcy5fc3Rhc2hCeXRlU3RhcnQ9dCtkfX19ZWxzZSBpZigwPT09dGhpcy5fc3Rhc2hVc2VkKXt2YXIgZj10aGlzLl9kaXNwYXRjaENodW5rcyhlLHQpO2lmKGY8ZS5ieXRlTGVuZ3RoKXt2YXIgYz1lLmJ5dGVMZW5ndGgtZjtjPnRoaXMuX2J1ZmZlclNpemUmJnRoaXMuX2V4cGFuZEJ1ZmZlcihjKTt2YXIgXz1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlciwwLHRoaXMuX2J1ZmZlclNpemUpO18uc2V0KG5ldyBVaW50OEFycmF5KGUsZiksMCksdGhpcy5fc3Rhc2hVc2VkKz1jLHRoaXMuX3N0YXNoQnl0ZVN0YXJ0PXQrZn19ZWxzZXt0aGlzLl9zdGFzaFVzZWQrZS5ieXRlTGVuZ3RoPnRoaXMuX2J1ZmZlclNpemUmJnRoaXMuX2V4cGFuZEJ1ZmZlcih0aGlzLl9zdGFzaFVzZWQrZS5ieXRlTGVuZ3RoKTt2YXIgbT1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlciwwLHRoaXMuX2J1ZmZlclNpemUpO20uc2V0KG5ldyBVaW50OEFycmF5KGUpLHRoaXMuX3N0YXNoVXNlZCksdGhpcy5fc3Rhc2hVc2VkKz1lLmJ5dGVMZW5ndGg7dmFyIHA9dGhpcy5fZGlzcGF0Y2hDaHVua3ModGhpcy5fc3Rhc2hCdWZmZXIuc2xpY2UoMCx0aGlzLl9zdGFzaFVzZWQpLHRoaXMuX3N0YXNoQnl0ZVN0YXJ0KTtpZihwPHRoaXMuX3N0YXNoVXNlZCYmcD4wKXt2YXIgdj1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlcixwKTttLnNldCh2LDApfXRoaXMuX3N0YXNoVXNlZC09cCx0aGlzLl9zdGFzaEJ5dGVTdGFydCs9cH19fX0se2tleToiX2ZsdXNoU3Rhc2hCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX3N0YXNoVXNlZD4wKXt2YXIgdD10aGlzLl9zdGFzaEJ1ZmZlci5zbGljZSgwLHRoaXMuX3N0YXNoVXNlZCksbj10aGlzLl9kaXNwYXRjaENodW5rcyh0LHRoaXMuX3N0YXNoQnl0ZVN0YXJ0KSxpPXQuYnl0ZUxlbmd0aC1uO2lmKG48dC5ieXRlTGVuZ3RoKXtpZighZSl7aWYobj4wKXt2YXIgcj1uZXcgVWludDhBcnJheSh0aGlzLl9zdGFzaEJ1ZmZlciwwLHRoaXMuX2J1ZmZlclNpemUpLHM9bmV3IFVpbnQ4QXJyYXkodCxuKTtyLnNldChzLDApLHRoaXMuX3N0YXNoVXNlZD1zLmJ5dGVMZW5ndGgsdGhpcy5fc3Rhc2hCeXRlU3RhcnQrPW59cmV0dXJuIDB9by5kZWZhdWx0LncodGhpcy5UQUcsaSsiIGJ5dGVzIHVuY29uc3VtZWQgZGF0YSByZW1haW4gd2hlbiBmbHVzaCBidWZmZXIsIGRyb3BwZWQiKX1yZXR1cm4gdGhpcy5fc3Rhc2hVc2VkPTAsdGhpcy5fc3Rhc2hCeXRlU3RhcnQ9MCxpfXJldHVybiAwfX0se2tleToiX29uTG9hZGVyQ29tcGxldGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZmx1c2hTdGFzaEJ1ZmZlcighMCksdGhpcy5fb25Db21wbGV0ZSYmdGhpcy5fb25Db21wbGV0ZSh0aGlzLl9leHRyYURhdGEpfX0se2tleToiX29uTG9hZGVyRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7c3dpdGNoKG8uZGVmYXVsdC5lKHRoaXMuVEFHLCJMb2FkZXIgZXJyb3IsIGNvZGUgPSAiK3QuY29kZSsiLCBtc2cgPSAiK3QubXNnKSx0aGlzLl9mbHVzaFN0YXNoQnVmZmVyKCExKSx0aGlzLl9pc0Vhcmx5RW9mUmVjb25uZWN0aW5nJiYodGhpcy5faXNFYXJseUVvZlJlY29ubmVjdGluZz0hMSxlPWQuTG9hZGVyRXJyb3JzLlVOUkVDT1ZFUkFCTEVfRUFSTFlfRU9GKSxlKXtjYXNlIGQuTG9hZGVyRXJyb3JzLkVBUkxZX0VPRjppZighdGhpcy5fY29uZmlnLmlzTGl2ZSYmdGhpcy5fdG90YWxMZW5ndGgpe3ZhciBuPXRoaXMuX2N1cnJlbnRSYW5nZS50bysxO3JldHVybiB2b2lkKG48dGhpcy5fdG90YWxMZW5ndGgmJihvLmRlZmF1bHQudyh0aGlzLlRBRywiQ29ubmVjdGlvbiBsb3N0LCB0cnlpbmcgcmVjb25uZWN0Li4uIiksdGhpcy5faXNFYXJseUVvZlJlY29ubmVjdGluZz0hMCx0aGlzLl9pbnRlcm5hbFNlZWsobiwhMSkpKX1lPWQuTG9hZGVyRXJyb3JzLlVOUkVDT1ZFUkFCTEVfRUFSTFlfRU9GO2JyZWFrO2Nhc2UgZC5Mb2FkZXJFcnJvcnMuVU5SRUNPVkVSQUJMRV9FQVJMWV9FT0Y6Y2FzZSBkLkxvYWRlckVycm9ycy5DT05ORUNUSU5HX1RJTUVPVVQ6Y2FzZSBkLkxvYWRlckVycm9ycy5IVFRQX1NUQVRVU19DT0RFX0lOVkFMSUQ6Y2FzZSBkLkxvYWRlckVycm9ycy5FWENFUFRJT046fWlmKCF0aGlzLl9vbkVycm9yKXRocm93IG5ldyBMLlJ1bnRpbWVFeGNlcHRpb24oIklPRXhjZXB0aW9uOiAiK3QubXNnKTt0aGlzLl9vbkVycm9yKGUsdCl9fSx7a2V5OiJzdGF0dXMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZXIuc3RhdHVzfX0se2tleToiZXh0cmFEYXRhIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXh0cmFEYXRhfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fZXh0cmFEYXRhPWV9fSx7a2V5OiJvbkRhdGFBcnJpdmFsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25EYXRhQXJyaXZhbH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uRGF0YUFycml2YWw9ZX19LHtrZXk6Im9uU2Vla2VkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25TZWVrZWR9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9vblNlZWtlZD1lfX0se2tleToib25FcnJvciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRXJyb3J9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9vbkVycm9yPWV9fSx7a2V5OiJvbkNvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25Db21wbGV0ZX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uQ29tcGxldGU9ZX19LHtrZXk6Im9uUmVkaXJlY3QiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlZGlyZWN0fSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25SZWRpcmVjdD1lfX0se2tleToib25SZWNvdmVyZWRFYXJseUVvZiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVjb3ZlcmVkRWFybHlFb2Z9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9vblJlY292ZXJlZEVhcmx5RW9mPWV9fSx7a2V5OiJjdXJyZW50VVJMIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YVNvdXJjZS51cmx9fSx7a2V5OiJoYXNSZWRpcmVjdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuX3JlZGlyZWN0ZWRVUkx8fHZvaWQgMCE9dGhpcy5fZGF0YVNvdXJjZS5yZWRpcmVjdGVkVVJMfX0se2tleToiY3VycmVudFJlZGlyZWN0ZWRVUkwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWRpcmVjdGVkVVJMfHx0aGlzLl9kYXRhU291cmNlLnJlZGlyZWN0ZWRVUkx9fSx7a2V5OiJjdXJyZW50U3BlZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZXJDbGFzcz09PXYuZGVmYXVsdD90aGlzLl9sb2FkZXIuY3VycmVudFNwZWVkOnRoaXMuX3NwZWVkU2FtcGxlci5sYXN0U2Vjb25kS0Jwc319LHtrZXk6ImxvYWRlclR5cGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZXIudHlwZX19XSksZX0oKTtuLmRlZmF1bHQ9d30seyIuLi91dGlscy9leGNlcHRpb24uanMiOjQwLCIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuL2ZldGNoLXN0cmVhbS1sb2FkZXIuanMiOjIyLCIuL2xvYWRlci5qcyI6MjQsIi4vcGFyYW0tc2Vlay1oYW5kbGVyLmpzIjoyNSwiLi9yYW5nZS1zZWVrLWhhbmRsZXIuanMiOjI2LCIuL3NwZWVkLXNhbXBsZXIuanMiOjI3LCIuL3dlYnNvY2tldC1sb2FkZXIuanMiOjI4LCIuL3hoci1tb3otY2h1bmtlZC1sb2FkZXIuanMiOjI5LCIuL3hoci1tc3N0cmVhbS1sb2FkZXIuanMiOjMwLCIuL3hoci1yYW5nZS1sb2FkZXIuanMiOjMxfV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLkJhc2VMb2FkZXI9bi5Mb2FkZXJFcnJvcnM9bi5Mb2FkZXJTdGF0dXM9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksYT1uLkxvYWRlclN0YXR1cz17a0lkbGU6MCxrQ29ubmVjdGluZzoxLGtCdWZmZXJpbmc6MixrRXJyb3I6MyxrQ29tcGxldGU6NH07bi5Mb2FkZXJFcnJvcnM9e09LOiJPSyIsRVhDRVBUSU9OOiJFeGNlcHRpb24iLEhUVFBfU1RBVFVTX0NPREVfSU5WQUxJRDoiSHR0cFN0YXR1c0NvZGVJbnZhbGlkIixDT05ORUNUSU5HX1RJTUVPVVQ6IkNvbm5lY3RpbmdUaW1lb3V0IixFQVJMWV9FT0Y6IkVhcmx5RW9mIixVTlJFQ09WRVJBQkxFX0VBUkxZX0VPRjoiVW5yZWNvdmVyYWJsZUVhcmx5RW9mIn0sbi5CYXNlTG9hZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtpKHRoaXMsZSksdGhpcy5fdHlwZT10fHwidW5kZWZpbmVkIix0aGlzLl9zdGF0dXM9YS5rSWRsZSx0aGlzLl9uZWVkU3Rhc2g9ITEsdGhpcy5fb25Db250ZW50TGVuZ3RoS25vd249bnVsbCx0aGlzLl9vblVSTFJlZGlyZWN0PW51bGwsdGhpcy5fb25EYXRhQXJyaXZhbD1udWxsLHRoaXMuX29uRXJyb3I9bnVsbCx0aGlzLl9vbkNvbXBsZXRlPW51bGx9cmV0dXJuIHIoZSxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9zdGF0dXM9YS5rSWRsZSx0aGlzLl9vbkNvbnRlbnRMZW5ndGhLbm93bj1udWxsLHRoaXMuX29uVVJMUmVkaXJlY3Q9bnVsbCx0aGlzLl9vbkRhdGFBcnJpdmFsPW51bGwsdGhpcy5fb25FcnJvcj1udWxsLHRoaXMuX29uQ29tcGxldGU9bnVsbH19LHtrZXk6ImlzV29ya2luZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzPT09YS5rQ29ubmVjdGluZ3x8dGhpcy5fc3RhdHVzPT09YS5rQnVmZmVyaW5nfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgcy5Ob3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigiVW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBmdW5jdGlvbiEiKX19LHtrZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBzLk5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCJVbmltcGxlbWVudGVkIGFic3RyYWN0IGZ1bmN0aW9uISIpfX0se2tleToidHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5cGV9fSx7a2V5OiJzdGF0dXMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXN9fSx7a2V5OiJuZWVkU3Rhc2hCdWZmZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWVkU3Rhc2h9fSx7a2V5OiJvbkNvbnRlbnRMZW5ndGhLbm93biIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQ29udGVudExlbmd0aEtub3dufSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25Db250ZW50TGVuZ3RoS25vd249ZX19LHtrZXk6Im9uVVJMUmVkaXJlY3QiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblVSTFJlZGlyZWN0fSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25VUkxSZWRpcmVjdD1lfX0se2tleToib25EYXRhQXJyaXZhbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRGF0YUFycml2YWx9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9vbkRhdGFBcnJpdmFsPWV9fSx7a2V5OiJvbkVycm9yIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25FcnJvcn0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uRXJyb3I9ZX19LHtrZXk6Im9uQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkNvbXBsZXRlfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25Db21wbGV0ZT1lfX1dKSxlfSgpfSx7Ii4uL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDB9XSwyNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7aSh0aGlzLGUpLHRoaXMuX3N0YXJ0TmFtZT10LHRoaXMuX2VuZE5hbWU9bn1yZXR1cm4gcihlLFt7a2V5OiJnZXRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtpZigwIT09dC5mcm9tfHx0LnRvIT09LTEpe3ZhciBpPSEwO24uaW5kZXhPZigiPyIpPT09LTEmJihuKz0iPyIsaT0hMSksaSYmKG4rPSImIiksbis9dGhpcy5fc3RhcnROYW1lKyI9Iit0LmZyb20udG9TdHJpbmcoKSx0LnRvIT09LTEmJihuKz0iJiIrdGhpcy5fZW5kTmFtZSsiPSIrdC50by50b1N0cmluZygpKX1yZXR1cm57dXJsOm4saGVhZGVyczp7fX19fSx7a2V5OiJyZW1vdmVVUkxQYXJhbWV0ZXJzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCI/IilbMF0sbj12b2lkIDAsaT1lLmluZGV4T2YoIj8iKTtpIT09LTEmJihuPWUuc3Vic3RyaW5nKGkrMSkpO3ZhciByPSIiO2lmKHZvaWQgMCE9biYmbi5sZW5ndGg+MClmb3IodmFyIHM9bi5zcGxpdCgiJiIpLGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIG89c1thXS5zcGxpdCgiPSIpLHU9YT4wO29bMF0hPT10aGlzLl9zdGFydE5hbWUmJm9bMF0hPT10aGlzLl9lbmROYW1lJiYodSYmKHIrPSImIikscis9c1thXSl9cmV0dXJuIDA9PT1yLmxlbmd0aD90OnQrIj8iK3J9fV0pLGV9KCk7bi5kZWZhdWx0PXN9LHt9XSwyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhpcyxlKSx0aGlzLl96ZXJvU3RhcnQ9dHx8ITF9cmV0dXJuIHIoZSxbe2tleToiZ2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2lmKDAhPT10LmZyb218fHQudG8hPT0tMSl7dmFyIGk9dm9pZCAwO2k9dC50byE9PS0xPyJieXRlcz0iK3QuZnJvbS50b1N0cmluZygpKyItIit0LnRvLnRvU3RyaW5nKCk6ImJ5dGVzPSIrdC5mcm9tLnRvU3RyaW5nKCkrIi0iLG4uUmFuZ2U9aX1lbHNlIHRoaXMuX3plcm9TdGFydCYmKG4uUmFuZ2U9ImJ5dGVzPTAtIik7cmV0dXJue3VybDplLGhlYWRlcnM6bn19fSx7a2V5OiJyZW1vdmVVUkxQYXJhbWV0ZXJzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19XSksZX0oKTtuLmRlZmF1bHQ9c30se31dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5fZmlyc3RDaGVja3BvaW50PTAsdGhpcy5fbGFzdENoZWNrcG9pbnQ9MCx0aGlzLl9pbnRlcnZhbEJ5dGVzPTAsdGhpcy5fdG90YWxCeXRlcz0wLHRoaXMuX2xhc3RTZWNvbmRCeXRlcz0wLHNlbGYucGVyZm9ybWFuY2UmJnNlbGYucGVyZm9ybWFuY2Uubm93P3RoaXMuX25vdz1zZWxmLnBlcmZvcm1hbmNlLm5vdy5iaW5kKHNlbGYucGVyZm9ybWFuY2UpOnRoaXMuX25vdz1EYXRlLm5vd31yZXR1cm4gcihlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9maXJzdENoZWNrcG9pbnQ9dGhpcy5fbGFzdENoZWNrcG9pbnQ9MCx0aGlzLl90b3RhbEJ5dGVzPXRoaXMuX2ludGVydmFsQnl0ZXM9MCwKdGhpcy5fbGFzdFNlY29uZEJ5dGVzPTB9fSx7a2V5OiJhZGRCeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7MD09PXRoaXMuX2ZpcnN0Q2hlY2twb2ludD8odGhpcy5fZmlyc3RDaGVja3BvaW50PXRoaXMuX25vdygpLHRoaXMuX2xhc3RDaGVja3BvaW50PXRoaXMuX2ZpcnN0Q2hlY2twb2ludCx0aGlzLl9pbnRlcnZhbEJ5dGVzKz1lLHRoaXMuX3RvdGFsQnl0ZXMrPWUpOnRoaXMuX25vdygpLXRoaXMuX2xhc3RDaGVja3BvaW50PDFlMz8odGhpcy5faW50ZXJ2YWxCeXRlcys9ZSx0aGlzLl90b3RhbEJ5dGVzKz1lKToodGhpcy5fbGFzdFNlY29uZEJ5dGVzPXRoaXMuX2ludGVydmFsQnl0ZXMsdGhpcy5faW50ZXJ2YWxCeXRlcz1lLHRoaXMuX3RvdGFsQnl0ZXMrPWUsdGhpcy5fbGFzdENoZWNrcG9pbnQ9dGhpcy5fbm93KCkpfX0se2tleToiY3VycmVudEtCcHMiLGdldDpmdW5jdGlvbigpe3RoaXMuYWRkQnl0ZXMoMCk7dmFyIGU9KHRoaXMuX25vdygpLXRoaXMuX2xhc3RDaGVja3BvaW50KS8xZTM7cmV0dXJuIDA9PWUmJihlPTEpLHRoaXMuX2ludGVydmFsQnl0ZXMvZS8xMDI0fX0se2tleToibGFzdFNlY29uZEtCcHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZEJ5dGVzKDApLDAhPT10aGlzLl9sYXN0U2Vjb25kQnl0ZXM/dGhpcy5fbGFzdFNlY29uZEJ5dGVzLzEwMjQ6dGhpcy5fbm93KCktdGhpcy5fbGFzdENoZWNrcG9pbnQ+PTUwMD90aGlzLmN1cnJlbnRLQnBzOjB9fSx7a2V5OiJhdmVyYWdlS0JwcyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9KHRoaXMuX25vdygpLXRoaXMuX2ZpcnN0Q2hlY2twb2ludCkvMWUzO3JldHVybiB0aGlzLl90b3RhbEJ5dGVzL2UvMTAyNH19XSksZX0oKTtuLmRlZmF1bHQ9c30se31dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiByKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gcyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPWZ1bmN0aW9uIGUodCxuLGkpe251bGw9PT10JiYodD1GdW5jdGlvbi5wcm90b3R5cGUpO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtpZih2b2lkIDA9PT1yKXt2YXIgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG51bGw9PT1zP3ZvaWQgMDplKHMsbixpKX1pZigidmFsdWUiaW4gcilyZXR1cm4gci52YWx1ZTt2YXIgYT1yLmdldDtpZih2b2lkIDAhPT1hKXJldHVybiBhLmNhbGwoaSl9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksdT1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxsPShmdW5jdGlvbihlKXtlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0odSksZSgiLi9sb2FkZXIuanMiKSksZD1lKCIuLi91dGlscy9leGNlcHRpb24uanMiKSxoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtpKHRoaXMsdCk7dmFyIGU9cih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIndlYnNvY2tldC1sb2FkZXIiKSk7cmV0dXJuIGUuVEFHPSJXZWJTb2NrZXRMb2FkZXIiLGUuX25lZWRTdGFzaD0hMCxlLl93cz1udWxsLGUuX3JlcXVlc3RBYm9ydD0hMSxlLl9yZWNlaXZlZExlbmd0aD0wLGV9cmV0dXJuIHModCxlKSxvKHQsbnVsbCxbe2tleToiaXNTdXBwb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB2b2lkIDAhPT1zZWxmLldlYlNvY2tldH1jYXRjaChlKXtyZXR1cm4hMX19fV0pLG8odCxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl93cyYmdGhpcy5hYm9ydCgpLGEodC5wcm90b3R5cGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX3dzPW5ldyBzZWxmLldlYlNvY2tldChlLnVybCk7dC5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciIsdC5vbm9wZW49dGhpcy5fb25XZWJTb2NrZXRPcGVuLmJpbmQodGhpcyksdC5vbmNsb3NlPXRoaXMuX29uV2ViU29ja2V0Q2xvc2UuYmluZCh0aGlzKSx0Lm9ubWVzc2FnZT10aGlzLl9vbldlYlNvY2tldE1lc3NhZ2UuYmluZCh0aGlzKSx0Lm9uZXJyb3I9dGhpcy5fb25XZWJTb2NrZXRFcnJvci5iaW5kKHRoaXMpLHRoaXMuX3N0YXR1cz1sLkxvYWRlclN0YXR1cy5rQ29ubmVjdGluZ31jYXRjaChlKXt0aGlzLl9zdGF0dXM9bC5Mb2FkZXJTdGF0dXMua0Vycm9yO3ZhciBuPXtjb2RlOmUuY29kZSxtc2c6ZS5tZXNzYWdlfTtpZighdGhpcy5fb25FcnJvcil0aHJvdyBuZXcgZC5SdW50aW1lRXhjZXB0aW9uKG4ubXNnKTt0aGlzLl9vbkVycm9yKGwuTG9hZGVyRXJyb3JzLkVYQ0VQVElPTixuKX19fSx7a2V5OiJhYm9ydCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl93czshZXx8MCE9PWUucmVhZHlTdGF0ZSYmMSE9PWUucmVhZHlTdGF0ZXx8KHRoaXMuX3JlcXVlc3RBYm9ydD0hMCxlLmNsb3NlKCkpLHRoaXMuX3dzPW51bGwsdGhpcy5fc3RhdHVzPWwuTG9hZGVyU3RhdHVzLmtDb21wbGV0ZX19LHtrZXk6Il9vbldlYlNvY2tldE9wZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3N0YXR1cz1sLkxvYWRlclN0YXR1cy5rQnVmZmVyaW5nfX0se2tleToiX29uV2ViU29ja2V0Q2xvc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX3JlcXVlc3RBYm9ydD09PSEwKXJldHVybiB2b2lkKHRoaXMuX3JlcXVlc3RBYm9ydD0hMSk7dGhpcy5fc3RhdHVzPWwuTG9hZGVyU3RhdHVzLmtDb21wbGV0ZSx0aGlzLl9vbkNvbXBsZXRlJiZ0aGlzLl9vbkNvbXBsZXRlKDAsdGhpcy5fcmVjZWl2ZWRMZW5ndGgtMSl9fSx7a2V5OiJfb25XZWJTb2NrZXRNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGUuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXRoaXMuX2Rpc3BhdGNoQXJyYXlCdWZmZXIoZS5kYXRhKTtlbHNlIGlmKGUuZGF0YSBpbnN0YW5jZW9mIEJsb2Ipe3ZhciBuPW5ldyBGaWxlUmVhZGVyO24ub25sb2FkPWZ1bmN0aW9uKCl7dC5fZGlzcGF0Y2hBcnJheUJ1ZmZlcihuLnJlc3VsdCl9LG4ucmVhZEFzQXJyYXlCdWZmZXIoZS5kYXRhKX1lbHNle3RoaXMuX3N0YXR1cz1sLkxvYWRlclN0YXR1cy5rRXJyb3I7dmFyIGk9e2NvZGU6LTEsbXNnOiJVbnN1cHBvcnRlZCBXZWJTb2NrZXQgbWVzc2FnZSB0eXBlOiAiK2UuZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTtpZighdGhpcy5fb25FcnJvcil0aHJvdyBuZXcgZC5SdW50aW1lRXhjZXB0aW9uKGkubXNnKTt0aGlzLl9vbkVycm9yKGwuTG9hZGVyRXJyb3JzLkVYQ0VQVElPTixpKX19fSx7a2V5OiJfZGlzcGF0Y2hBcnJheUJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPXRoaXMuX3JlY2VpdmVkTGVuZ3RoO3RoaXMuX3JlY2VpdmVkTGVuZ3RoKz10LmJ5dGVMZW5ndGgsdGhpcy5fb25EYXRhQXJyaXZhbCYmdGhpcy5fb25EYXRhQXJyaXZhbCh0LG4sdGhpcy5fcmVjZWl2ZWRMZW5ndGgpfX0se2tleToiX29uV2ViU29ja2V0RXJyb3IiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3N0YXR1cz1sLkxvYWRlclN0YXR1cy5rRXJyb3I7dmFyIHQ9e2NvZGU6ZS5jb2RlLG1zZzplLm1lc3NhZ2V9O2lmKCF0aGlzLl9vbkVycm9yKXRocm93IG5ldyBkLlJ1bnRpbWVFeGNlcHRpb24odC5tc2cpO3RoaXMuX29uRXJyb3IobC5Mb2FkZXJFcnJvcnMuRVhDRVBUSU9OLHQpfX1dKSx0fShsLkJhc2VMb2FkZXIpO24uZGVmYXVsdD1ofSx7Ii4uL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDAsIi4uL3V0aWxzL2xvZ2dlci5qcyI6NDEsIi4vbG9hZGVyLmpzIjoyNH1dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiByKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gcyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvPWZ1bmN0aW9uIGUodCxuLGkpe251bGw9PT10JiYodD1GdW5jdGlvbi5wcm90b3R5cGUpO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtpZih2b2lkIDA9PT1yKXt2YXIgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG51bGw9PT1zP3ZvaWQgMDplKHMsbixpKX1pZigidmFsdWUiaW4gcilyZXR1cm4gci52YWx1ZTt2YXIgYT1yLmdldDtpZih2b2lkIDAhPT1hKXJldHVybiBhLmNhbGwoaSl9LHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksbD1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxkPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0obCksaD1lKCIuL2xvYWRlci5qcyIpLGY9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7aSh0aGlzLHQpO3ZhciBzPXIodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCJ4aHItbW96LWNodW5rZWQtbG9hZGVyIikpO3JldHVybiBzLlRBRz0iTW96Q2h1bmtlZExvYWRlciIscy5fc2Vla0hhbmRsZXI9ZSxzLl9jb25maWc9bixzLl9uZWVkU3Rhc2g9ITAscy5feGhyPW51bGwscy5fcmVxdWVzdEFib3J0PSExLHMuX2NvbnRlbnRMZW5ndGg9bnVsbCxzLl9yZWNlaXZlZExlbmd0aD0wLHN9cmV0dXJuIHModCxlKSx1KHQsbnVsbCxbe2tleToiaXNTdXBwb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gZS5vcGVuKCJHRVQiLCJodHRwczovL2V4YW1wbGUuY29tIiwhMCksZS5yZXNwb25zZVR5cGU9Im1vei1jaHVua2VkLWFycmF5YnVmZmVyIiwibW96LWNodW5rZWQtYXJyYXlidWZmZXIiPT09ZS5yZXNwb25zZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIGQuZGVmYXVsdC53KCJNb3pDaHVua2VkTG9hZGVyIixlLm1lc3NhZ2UpLCExfX19XSksdSh0LFt7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNXb3JraW5nKCkmJnRoaXMuYWJvcnQoKSx0aGlzLl94aHImJih0aGlzLl94aHIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsdGhpcy5feGhyLm9ucHJvZ3Jlc3M9bnVsbCx0aGlzLl94aHIub25sb2FkZW5kPW51bGwsdGhpcy5feGhyLm9uZXJyb3I9bnVsbCx0aGlzLl94aHI9bnVsbCksbyh0LnByb3RvdHlwZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2RhdGFTb3VyY2U9ZSx0aGlzLl9yYW5nZT10O3ZhciBuPWUudXJsO3RoaXMuX2NvbmZpZy5yZXVzZVJlZGlyZWN0ZWRVUkwmJnZvaWQgMCE9ZS5yZWRpcmVjdGVkVVJMJiYobj1lLnJlZGlyZWN0ZWRVUkwpO3ZhciBpPXRoaXMuX3NlZWtIYW5kbGVyLmdldENvbmZpZyhuLHQpO3RoaXMuX3JlcXVlc3RVUkw9aS51cmw7dmFyIHI9dGhpcy5feGhyPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihyLm9wZW4oIkdFVCIsaS51cmwsITApLHIucmVzcG9uc2VUeXBlPSJtb3otY2h1bmtlZC1hcnJheWJ1ZmZlciIsci5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5fb25SZWFkeVN0YXRlQ2hhbmdlLmJpbmQodGhpcyksci5vbnByb2dyZXNzPXRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKSxyLm9ubG9hZGVuZD10aGlzLl9vbkxvYWRFbmQuYmluZCh0aGlzKSxyLm9uZXJyb3I9dGhpcy5fb25YaHJFcnJvci5iaW5kKHRoaXMpLGUud2l0aENyZWRlbnRpYWxzJiZyLndpdGhDcmVkZW50aWFscyYmKHIud2l0aENyZWRlbnRpYWxzPSEwKSwib2JqZWN0Ij09PWEoaS5oZWFkZXJzKSl7dmFyIHM9aS5oZWFkZXJzO2Zvcih2YXIgbyBpbiBzKXMuaGFzT3duUHJvcGVydHkobykmJnIuc2V0UmVxdWVzdEhlYWRlcihvLHNbb10pfXRoaXMuX3N0YXR1cz1oLkxvYWRlclN0YXR1cy5rQ29ubmVjdGluZyxyLnNlbmQoKX19LHtrZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3JlcXVlc3RBYm9ydD0hMCx0aGlzLl94aHImJnRoaXMuX3hoci5hYm9ydCgpLHRoaXMuX3N0YXR1cz1oLkxvYWRlclN0YXR1cy5rQ29tcGxldGV9fSx7a2V5OiJfb25SZWFkeVN0YXRlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtpZigyPT09dC5yZWFkeVN0YXRlKXtpZih2b2lkIDAhPXQucmVzcG9uc2VVUkwmJnQucmVzcG9uc2VVUkwhPT10aGlzLl9yZXF1ZXN0VVJMJiZ0aGlzLl9vblVSTFJlZGlyZWN0KXt2YXIgbj10aGlzLl9zZWVrSGFuZGxlci5yZW1vdmVVUkxQYXJhbWV0ZXJzKHQucmVzcG9uc2VVUkwpO3RoaXMuX29uVVJMUmVkaXJlY3Qobil9aWYoMCE9PXQuc3RhdHVzJiYodC5zdGF0dXM8MjAwfHx0LnN0YXR1cz4yOTkpKXtpZih0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0Vycm9yLCF0aGlzLl9vbkVycm9yKXRocm93IG5ldyBmLlJ1bnRpbWVFeGNlcHRpb24oIk1vekNodW5rZWRMb2FkZXI6IEh0dHAgY29kZSBpbnZhbGlkLCAiK3Quc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3RoaXMuX29uRXJyb3IoaC5Mb2FkZXJFcnJvcnMuSFRUUF9TVEFUVVNfQ09ERV9JTlZBTElELHtjb2RlOnQuc3RhdHVzLG1zZzp0LnN0YXR1c1RleHR9KX1lbHNlIHRoaXMuX3N0YXR1cz1oLkxvYWRlclN0YXR1cy5rQnVmZmVyaW5nfX19LHtrZXk6Il9vblByb2dyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtudWxsPT09dGhpcy5fY29udGVudExlbmd0aCYmbnVsbCE9PWUudG90YWwmJjAhPT1lLnRvdGFsJiYodGhpcy5fY29udGVudExlbmd0aD1lLnRvdGFsLHRoaXMuX29uQ29udGVudExlbmd0aEtub3duJiZ0aGlzLl9vbkNvbnRlbnRMZW5ndGhLbm93bih0aGlzLl9jb250ZW50TGVuZ3RoKSk7dmFyIHQ9ZS50YXJnZXQucmVzcG9uc2Usbj10aGlzLl9yYW5nZS5mcm9tK3RoaXMuX3JlY2VpdmVkTGVuZ3RoO3RoaXMuX3JlY2VpdmVkTGVuZ3RoKz10LmJ5dGVMZW5ndGgsdGhpcy5fb25EYXRhQXJyaXZhbCYmdGhpcy5fb25EYXRhQXJyaXZhbCh0LG4sdGhpcy5fcmVjZWl2ZWRMZW5ndGgpfX0se2tleToiX29uTG9hZEVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVxdWVzdEFib3J0PT09ITApcmV0dXJuIHZvaWQodGhpcy5fcmVxdWVzdEFib3J0PSExKTt0aGlzLl9zdGF0dXMhPT1oLkxvYWRlclN0YXR1cy5rRXJyb3ImJih0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0NvbXBsZXRlLHRoaXMuX29uQ29tcGxldGUmJnRoaXMuX29uQ29tcGxldGUodGhpcy5fcmFuZ2UuZnJvbSx0aGlzLl9yYW5nZS5mcm9tK3RoaXMuX3JlY2VpdmVkTGVuZ3RoLTEpKX19LHtrZXk6Il9vblhockVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0Vycm9yO3ZhciB0PTAsbj1udWxsO2lmKHRoaXMuX2NvbnRlbnRMZW5ndGgmJmUubG9hZGVkPHRoaXMuX2NvbnRlbnRMZW5ndGg/KHQ9aC5Mb2FkZXJFcnJvcnMuRUFSTFlfRU9GLG49e2NvZGU6LTEsbXNnOiJNb3otQ2h1bmtlZCBzdHJlYW0gbWVldCBFYXJseS1Fb2YifSk6KHQ9aC5Mb2FkZXJFcnJvcnMuRVhDRVBUSU9OLG49e2NvZGU6LTEsbXNnOmUuY29uc3RydWN0b3IubmFtZSsiICIrZS50eXBlfSksIXRoaXMuX29uRXJyb3IpdGhyb3cgbmV3IGYuUnVudGltZUV4Y2VwdGlvbihuLm1zZyk7dGhpcy5fb25FcnJvcih0LG4pfX1dKSx0fShoLkJhc2VMb2FkZXIpO24uZGVmYXVsdD1jfSx7Ii4uL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDAsIi4uL3V0aWxzL2xvZ2dlci5qcyI6NDEsIi4vbG9hZGVyLmpzIjoyNH1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiByKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gcyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvPWZ1bmN0aW9uIGUodCxuLGkpe251bGw9PT10JiYodD1GdW5jdGlvbi5wcm90b3R5cGUpO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtpZih2b2lkIDA9PT1yKXt2YXIgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG51bGw9PT1zP3ZvaWQgMDplKHMsbixpKX1pZigidmFsdWUiaW4gcilyZXR1cm4gci52YWx1ZTt2YXIgYT1yLmdldDtpZih2b2lkIDAhPT1hKXJldHVybiBhLmNhbGwoaSl9LHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksbD1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxkPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0obCksaD1lKCIuL2xvYWRlci5qcyIpLGY9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7aSh0aGlzLHQpO3ZhciBzPXIodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCJ4aHItbXNzdHJlYW0tbG9hZGVyIikpO3JldHVybiBzLlRBRz0iTVNTdHJlYW1Mb2FkZXIiLHMuX3NlZWtIYW5kbGVyPWUscy5fY29uZmlnPW4scy5fbmVlZFN0YXNoPSEwLHMuX3hocj1udWxsLHMuX3JlYWRlcj1udWxsLHMuX3RvdGFsUmFuZ2U9bnVsbCxzLl9jdXJyZW50UmFuZ2U9bnVsbCxzLl9jdXJyZW50UmVxdWVzdFVSTD1udWxsLHMuX2N1cnJlbnRSZWRpcmVjdGVkVVJMPW51bGwscy5fY29udGVudExlbmd0aD1udWxsLHMuX3JlY2VpdmVkTGVuZ3RoPTAscy5fYnVmZmVyTGltaXQ9MTY3NzcyMTYscy5fbGFzdFRpbWVCdWZmZXJTaXplPTAscy5faXNSZWNvbm5lY3Rpbmc9ITEsc31yZXR1cm4gcyh0LGUpLHUodCxudWxsLFt7a2V5OiJpc1N1cHBvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt0cnl7aWYodm9pZCAwPT09c2VsZi5NU1N0cmVhbXx8dm9pZCAwPT09c2VsZi5NU1N0cmVhbVJlYWRlcilyZXR1cm4hMTt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGUub3BlbigiR0VUIiwiaHR0cHM6Ly9leGFtcGxlLmNvbSIsITApLGUucmVzcG9uc2VUeXBlPSJtcy1zdHJlYW0iLCJtcy1zdHJlYW0iPT09ZS5yZXNwb25zZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIGQuZGVmYXVsdC53KCJNU1N0cmVhbUxvYWRlciIsZS5tZXNzYWdlKSwhMX19fV0pLHUodCxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzV29ya2luZygpJiZ0aGlzLmFib3J0KCksdGhpcy5fcmVhZGVyJiYodGhpcy5fcmVhZGVyLm9ucHJvZ3Jlc3M9bnVsbCx0aGlzLl9yZWFkZXIub25sb2FkPW51bGwsdGhpcy5fcmVhZGVyLm9uZXJyb3I9bnVsbCx0aGlzLl9yZWFkZXI9bnVsbCksdGhpcy5feGhyJiYodGhpcy5feGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHRoaXMuX3hocj1udWxsKSxvKHQucHJvdG90eXBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5faW50ZXJuYWxPcGVuKGUsdCwhMSl9fSx7a2V5OiJfaW50ZXJuYWxPcGVuIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dGhpcy5fZGF0YVNvdXJjZT1lLG4/dGhpcy5fY3VycmVudFJhbmdlPXQ6dGhpcy5fdG90YWxSYW5nZT10O3ZhciBpPWUudXJsO3RoaXMuX2NvbmZpZy5yZXVzZVJlZGlyZWN0ZWRVUkwmJih2b2lkIDAhPXRoaXMuX2N1cnJlbnRSZWRpcmVjdGVkVVJMP2k9dGhpcy5fY3VycmVudFJlZGlyZWN0ZWRVUkw6dm9pZCAwIT1lLnJlZGlyZWN0ZWRVUkwmJihpPWUucmVkaXJlY3RlZFVSTCkpO3ZhciByPXRoaXMuX3NlZWtIYW5kbGVyLmdldENvbmZpZyhpLHQpO3RoaXMuX2N1cnJlbnRSZXF1ZXN0VVJMPXIudXJsO3ZhciBzPXRoaXMuX3JlYWRlcj1uZXcgc2VsZi5NU1N0cmVhbVJlYWRlcjtzLm9ucHJvZ3Jlc3M9dGhpcy5fbXNyT25Qcm9ncmVzcy5iaW5kKHRoaXMpLHMub25sb2FkPXRoaXMuX21zck9uTG9hZC5iaW5kKHRoaXMpLHMub25lcnJvcj10aGlzLl9tc3JPbkVycm9yLmJpbmQodGhpcyk7dmFyIG89dGhpcy5feGhyPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihvLm9wZW4oIkdFVCIsci51cmwsITApLG8ucmVzcG9uc2VUeXBlPSJtcy1zdHJlYW0iLG8ub25yZWFkeXN0YXRlY2hhbmdlPXRoaXMuX3hock9uUmVhZHlTdGF0ZUNoYW5nZS5iaW5kKHRoaXMpLG8ub25lcnJvcj10aGlzLl94aHJPbkVycm9yLmJpbmQodGhpcyksZS53aXRoQ3JlZGVudGlhbHMmJihvLndpdGhDcmVkZW50aWFscz0hMCksIm9iamVjdCI9PT1hKHIuaGVhZGVycykpe3ZhciB1PXIuaGVhZGVycztmb3IodmFyIGwgaW4gdSl1Lmhhc093blByb3BlcnR5KGwpJiZvLnNldFJlcXVlc3RIZWFkZXIobCx1W2xdKX10aGlzLl9pc1JlY29ubmVjdGluZz90aGlzLl9pc1JlY29ubmVjdGluZz0hMTp0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0Nvbm5lY3Rpbmcsby5zZW5kKCl9fSx7a2V5OiJhYm9ydCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcm5hbEFib3J0KCksdGhpcy5fc3RhdHVzPWguTG9hZGVyU3RhdHVzLmtDb21wbGV0ZX19LHtrZXk6Il9pbnRlcm5hbEFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3JlYWRlciYmKDE9PT10aGlzLl9yZWFkZXIucmVhZHlTdGF0ZSYmdGhpcy5fcmVhZGVyLmFib3J0KCksdGhpcy5fcmVhZGVyLm9ucHJvZ3Jlc3M9bnVsbCx0aGlzLl9yZWFkZXIub25sb2FkPW51bGwsdGhpcy5fcmVhZGVyLm9uZXJyb3I9bnVsbCx0aGlzLl9yZWFkZXI9bnVsbCksdGhpcy5feGhyJiYodGhpcy5feGhyLmFib3J0KCksdGhpcy5feGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHRoaXMuX3hocj1udWxsKX19LHtrZXk6Il94aHJPblJlYWR5U3RhdGVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O2lmKDI9PT10LnJlYWR5U3RhdGUpaWYodC5zdGF0dXM+PTIwMCYmdC5zdGF0dXM8PTI5OSl7aWYodGhpcy5fc3RhdHVzPWguTG9hZGVyU3RhdHVzLmtCdWZmZXJpbmcsdm9pZCAwIT10LnJlc3BvbnNlVVJMKXt2YXIgbj10aGlzLl9zZWVrSGFuZGxlci5yZW1vdmVVUkxQYXJhbWV0ZXJzKHQucmVzcG9uc2VVUkwpO3QucmVzcG9uc2VVUkwhPT10aGlzLl9jdXJyZW50UmVxdWVzdFVSTCYmbiE9PXRoaXMuX2N1cnJlbnRSZWRpcmVjdGVkVVJMJiYodGhpcy5fY3VycmVudFJlZGlyZWN0ZWRVUkw9bix0aGlzLl9vblVSTFJlZGlyZWN0JiZ0aGlzLl9vblVSTFJlZGlyZWN0KG4pKX12YXIgaT10LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUxlbmd0aCIpO2lmKG51bGwhPWkmJm51bGw9PXRoaXMuX2NvbnRlbnRMZW5ndGgpe3ZhciByPXBhcnNlSW50KGkpO3I+MCYmKHRoaXMuX2NvbnRlbnRMZW5ndGg9cix0aGlzLl9vbkNvbnRlbnRMZW5ndGhLbm93biYmdGhpcy5fb25Db250ZW50TGVuZ3RoS25vd24odGhpcy5fY29udGVudExlbmd0aCkpfX1lbHNle2lmKHRoaXMuX3N0YXR1cz1oLkxvYWRlclN0YXR1cy5rRXJyb3IsIXRoaXMuX29uRXJyb3IpdGhyb3cgbmV3IGYuUnVudGltZUV4Y2VwdGlvbigiTVNTdHJlYW1Mb2FkZXI6IEh0dHAgY29kZSBpbnZhbGlkLCAiK3Quc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3RoaXMuX29uRXJyb3IoaC5Mb2FkZXJFcnJvcnMuSFRUUF9TVEFUVVNfQ09ERV9JTlZBTElELHtjb2RlOnQuc3RhdHVzLG1zZzp0LnN0YXR1c1RleHR9KX1lbHNlIGlmKDM9PT10LnJlYWR5U3RhdGUmJnQuc3RhdHVzPj0yMDAmJnQuc3RhdHVzPD0yOTkpe3RoaXMuX3N0YXR1cz1oLkxvYWRlclN0YXR1cy5rQnVmZmVyaW5nO3ZhciBzPXQucmVzcG9uc2U7dGhpcy5fcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKHMpfX19LHtrZXk6Il94aHJPbkVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0Vycm9yO3ZhciB0PWguTG9hZGVyRXJyb3JzLkVYQ0VQVElPTixuPXtjb2RlOi0xLG1zZzplLmNvbnN0cnVjdG9yLm5hbWUrIiAiK2UudHlwZX07aWYoIXRoaXMuX29uRXJyb3IpdGhyb3cgbmV3IGYuUnVudGltZUV4Y2VwdGlvbihuLm1zZyk7dGhpcy5fb25FcnJvcih0LG4pfX0se2tleToiX21zck9uUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LG49dC5yZXN1bHQ7aWYobnVsbD09bilyZXR1cm4gdm9pZCB0aGlzLl9kb1JlY29ubmVjdElmTmVlZGVkKCk7dmFyIGk9bi5zbGljZSh0aGlzLl9sYXN0VGltZUJ1ZmZlclNpemUpO3RoaXMuX2xhc3RUaW1lQnVmZmVyU2l6ZT1uLmJ5dGVMZW5ndGg7dmFyIHI9dGhpcy5fdG90YWxSYW5nZS5mcm9tK3RoaXMuX3JlY2VpdmVkTGVuZ3RoO3RoaXMuX3JlY2VpdmVkTGVuZ3RoKz1pLmJ5dGVMZW5ndGgsdGhpcy5fb25EYXRhQXJyaXZhbCYmdGhpcy5fb25EYXRhQXJyaXZhbChpLHIsdGhpcy5fcmVjZWl2ZWRMZW5ndGgpLG4uYnl0ZUxlbmd0aD49dGhpcy5fYnVmZmVyTGltaXQmJihkLmRlZmF1bHQudih0aGlzLlRBRywiTVNTdHJlYW0gYnVmZmVyIGV4Y2VlZGVkIG1heCBzaXplIG5lYXIgIisocitpLmJ5dGVMZW5ndGgpKyIsIHJlY29ubmVjdGluZy4uLiIpLHRoaXMuX2RvUmVjb25uZWN0SWZOZWVkZWQoKSl9fSx7a2V5OiJfZG9SZWNvbm5lY3RJZk5lZWRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9jb250ZW50TGVuZ3RofHx0aGlzLl9yZWNlaXZlZExlbmd0aDx0aGlzLl9jb250ZW50TGVuZ3RoKXt0aGlzLl9pc1JlY29ubmVjdGluZz0hMCx0aGlzLl9sYXN0VGltZUJ1ZmZlclNpemU9MCx0aGlzLl9pbnRlcm5hbEFib3J0KCk7dmFyIGU9e2Zyb206dGhpcy5fdG90YWxSYW5nZS5mcm9tK3RoaXMuX3JlY2VpdmVkTGVuZ3RoLHRvOi0xfTt0aGlzLl9pbnRlcm5hbE9wZW4odGhpcy5fZGF0YVNvdXJjZSxlLCEwKX19fSx7a2V5OiJfbXNyT25Mb2FkIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0NvbXBsZXRlLHRoaXMuX29uQ29tcGxldGUmJnRoaXMuX29uQ29tcGxldGUodGhpcy5fdG90YWxSYW5nZS5mcm9tLHRoaXMuX3RvdGFsUmFuZ2UuZnJvbSt0aGlzLl9yZWNlaXZlZExlbmd0aC0xKX19LHtrZXk6Il9tc3JPbkVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdGF0dXM9aC5Mb2FkZXJTdGF0dXMua0Vycm9yO3ZhciB0PTAsbj1udWxsO2lmKHRoaXMuX2NvbnRlbnRMZW5ndGgmJnRoaXMuX3JlY2VpdmVkTGVuZ3RoPHRoaXMuX2NvbnRlbnRMZW5ndGg/KHQ9aC5Mb2FkZXJFcnJvcnMuRUFSTFlfRU9GLG49e2NvZGU6LTEsbXNnOiJNU1N0cmVhbSBtZWV0IEVhcmx5LUVvZiJ9KToodD1oLkxvYWRlckVycm9ycy5FQVJMWV9FT0Ysbj17Y29kZTotMSxtc2c6ZS5jb25zdHJ1Y3Rvci5uYW1lKyIgIitlLnR5cGV9KSwhdGhpcy5fb25FcnJvcil0aHJvdyBuZXcgZi5SdW50aW1lRXhjZXB0aW9uKG4ubXNnKTt0aGlzLl9vbkVycm9yKHQsbil9fV0pLHR9KGguQmFzZUxvYWRlcik7bi5kZWZhdWx0PWN9LHsiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIjo0MCwiLi4vdXRpbHMvbG9nZ2VyLmpzIjo0MSwiLi9sb2FkZXIuanMiOjI0fV0sMzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHU9ZnVuY3Rpb24gZSh0LG4saSl7bnVsbD09PXQmJih0PUZ1bmN0aW9uLnByb3RvdHlwZSk7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO2lmKHZvaWQgMD09PXIpe3ZhciBzPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gbnVsbD09PXM/dm9pZCAwOmUocyxuLGkpfWlmKCJ2YWx1ZSJpbiByKXJldHVybiByLnZhbHVlO3ZhciBhPXIuZ2V0O2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuY2FsbChpKX0sbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxkPWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLGg9aShkKSxmPWUoIi4vc3BlZWQtc2FtcGxlci5qcyIpLGM9aShmKSxfPWUoIi4vbG9hZGVyLmpzIiksbT1lKCIuLi91dGlscy9leGNlcHRpb24uanMiKSxwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXtyKHRoaXMsdCk7dmFyIGk9cyh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsInhoci1yYW5nZS1sb2FkZXIiKSk7cmV0dXJuIGkuVEFHPSJSYW5nZUxvYWRlciIsaS5fc2Vla0hhbmRsZXI9ZSxpLl9jb25maWc9bixpLl9uZWVkU3Rhc2g9ITEsaS5fY2h1bmtTaXplS0JMaXN0PVsxMjgsMjU2LDM4NCw1MTIsNzY4LDEwMjQsMTUzNiwyMDQ4LDMwNzIsNDA5Niw1MTIwLDYxNDQsNzE2OCw4MTkyXSxpLl9jdXJyZW50Q2h1bmtTaXplS0I9Mzg0LGkuX2N1cnJlbnRTcGVlZE5vcm1hbGl6ZWQ9MCxpLl96ZXJvU3BlZWRDaHVua0NvdW50PTAsaS5feGhyPW51bGwsaS5fc3BlZWRTYW1wbGVyPW5ldyBjLmRlZmF1bHQsaS5fcmVxdWVzdEFib3J0PSExLGkuX3dhaXRGb3JUb3RhbExlbmd0aD0hMSxpLl90b3RhbExlbmd0aFJlY2VpdmVkPSExLGkuX2N1cnJlbnRSZXF1ZXN0VVJMPW51bGwsaS5fY3VycmVudFJlZGlyZWN0ZWRVUkw9bnVsbCxpLl9jdXJyZW50UmVxdWVzdFJhbmdlPW51bGwsaS5fdG90YWxMZW5ndGg9bnVsbCxpLl9jb250ZW50TGVuZ3RoPW51bGwsaS5fcmVjZWl2ZWRMZW5ndGg9MCxpLl9sYXN0VGltZUxvYWRlZD0wLGl9cmV0dXJuIGEodCxlKSxsKHQsbnVsbCxbe2tleToiaXNTdXBwb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gZS5vcGVuKCJHRVQiLCJodHRwczovL2V4YW1wbGUuY29tIiwhMCksZS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIiwiYXJyYXlidWZmZXIiPT09ZS5yZXNwb25zZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIGguZGVmYXVsdC53KCJSYW5nZUxvYWRlciIsZS5tZXNzYWdlKSwhMX19fV0pLGwodCxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzV29ya2luZygpJiZ0aGlzLmFib3J0KCksdGhpcy5feGhyJiYodGhpcy5feGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHRoaXMuX3hoci5vbnByb2dyZXNzPW51bGwsdGhpcy5feGhyLm9ubG9hZD1udWxsLHRoaXMuX3hoci5vbmVycm9yPW51bGwsdGhpcy5feGhyPW51bGwpLHUodC5wcm90b3R5cGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9kYXRhU291cmNlPWUsdGhpcy5fcmFuZ2U9dCx0aGlzLl9zdGF0dXM9Xy5Mb2FkZXJTdGF0dXMua0Nvbm5lY3RpbmcsdGhpcy5fdG90YWxMZW5ndGhSZWNlaXZlZD90aGlzLl9vcGVuU3ViUmFuZ2UoKToodGhpcy5fd2FpdEZvclRvdGFsTGVuZ3RoPSEwLHRoaXMuX2ludGVybmFsT3Blbih0aGlzLl9kYXRhU291cmNlLHtmcm9tOjAsdG86LTF9KSl9fSx7a2V5OiJfb3BlblN1YlJhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPTEwMjQqdGhpcy5fY3VycmVudENodW5rU2l6ZUtCLHQ9dGhpcy5fcmFuZ2UuZnJvbSt0aGlzLl9yZWNlaXZlZExlbmd0aCxuPXQrZTtudWxsIT10aGlzLl9jb250ZW50TGVuZ3RoJiZuLXRoaXMuX3JhbmdlLmZyb20+PXRoaXMuX2NvbnRlbnRMZW5ndGgmJihuPXRoaXMuX3JhbmdlLmZyb20rdGhpcy5fY29udGVudExlbmd0aC0xKSx0aGlzLl9jdXJyZW50UmVxdWVzdFJhbmdlPXtmcm9tOnQsdG86bn0sdGhpcy5faW50ZXJuYWxPcGVuKHRoaXMuX2RhdGFTb3VyY2UsdGhpcy5fY3VycmVudFJlcXVlc3RSYW5nZSl9fSx7a2V5OiJfaW50ZXJuYWxPcGVuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2xhc3RUaW1lTG9hZGVkPTA7dmFyIG49ZS51cmw7dGhpcy5fY29uZmlnLnJldXNlUmVkaXJlY3RlZFVSTCYmKHZvaWQgMCE9dGhpcy5fY3VycmVudFJlZGlyZWN0ZWRVUkw/bj10aGlzLl9jdXJyZW50UmVkaXJlY3RlZFVSTDp2b2lkIDAhPWUucmVkaXJlY3RlZFVSTCYmKG49ZS5yZWRpcmVjdGVkVVJMKSk7dmFyIGk9dGhpcy5fc2Vla0hhbmRsZXIuZ2V0Q29uZmlnKG4sdCk7dGhpcy5fY3VycmVudFJlcXVlc3RVUkw9aS51cmw7dmFyIHI9dGhpcy5feGhyPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihyLm9wZW4oIkdFVCIsaS51cmwsITApLHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsci5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5fb25SZWFkeVN0YXRlQ2hhbmdlLmJpbmQodGhpcyksci5vbnByb2dyZXNzPXRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKSxyLm9ubG9hZD10aGlzLl9vbkxvYWQuYmluZCh0aGlzKSxyLm9uZXJyb3I9dGhpcy5fb25YaHJFcnJvci5iaW5kKHRoaXMpLGUud2l0aENyZWRlbnRpYWxzJiZyLndpdGhDcmVkZW50aWFscyYmKHIud2l0aENyZWRlbnRpYWxzPSEwKSwib2JqZWN0Ij09PW8oaS5oZWFkZXJzKSl7dmFyIHM9aS5oZWFkZXJzO2Zvcih2YXIgYSBpbiBzKXMuaGFzT3duUHJvcGVydHkoYSkmJnIuc2V0UmVxdWVzdEhlYWRlcihhLHNbYV0pfXIuc2VuZCgpfX0se2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdEFib3J0PSEwLHRoaXMuX2ludGVybmFsQWJvcnQoKSx0aGlzLl9zdGF0dXM9Xy5Mb2FkZXJTdGF0dXMua0NvbXBsZXRlfX0se2tleToiX2ludGVybmFsQWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5feGhyJiYodGhpcy5feGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHRoaXMuX3hoci5vbnByb2dyZXNzPW51bGwsdGhpcy5feGhyLm9ubG9hZD1udWxsLHRoaXMuX3hoci5vbmVycm9yPW51bGwsdGhpcy5feGhyLmFib3J0KCksdGhpcy5feGhyPW51bGwpfX0se2tleToiX29uUmVhZHlTdGF0ZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7aWYoMj09PXQucmVhZHlTdGF0ZSl7aWYodm9pZCAwIT10LnJlc3BvbnNlVVJMKXt2YXIgbj10aGlzLl9zZWVrSGFuZGxlci5yZW1vdmVVUkxQYXJhbWV0ZXJzKHQucmVzcG9uc2VVUkwpO3QucmVzcG9uc2VVUkwhPT10aGlzLl9jdXJyZW50UmVxdWVzdFVSTCYmbiE9PXRoaXMuX2N1cnJlbnRSZWRpcmVjdGVkVVJMJiYodGhpcy5fY3VycmVudFJlZGlyZWN0ZWRVUkw9bix0aGlzLl9vblVSTFJlZGlyZWN0JiZ0aGlzLl9vblVSTFJlZGlyZWN0KG4pKX1pZih0LnN0YXR1cz49MjAwJiZ0LnN0YXR1czw9Mjk5KXtpZih0aGlzLl93YWl0Rm9yVG90YWxMZW5ndGgpcmV0dXJuO3RoaXMuX3N0YXR1cz1fLkxvYWRlclN0YXR1cy5rQnVmZmVyaW5nfWVsc2V7aWYodGhpcy5fc3RhdHVzPV8uTG9hZGVyU3RhdHVzLmtFcnJvciwhdGhpcy5fb25FcnJvcil0aHJvdyBuZXcgbS5SdW50aW1lRXhjZXB0aW9uKCJSYW5nZUxvYWRlcjogSHR0cCBjb2RlIGludmFsaWQsICIrdC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7dGhpcy5fb25FcnJvcihfLkxvYWRlckVycm9ycy5IVFRQX1NUQVRVU19DT0RFX0lOVkFMSUQse2NvZGU6dC5zdGF0dXMsbXNnOnQuc3RhdHVzVGV4dH0pfX19fSx7a2V5OiJfb25Qcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYobnVsbD09PXRoaXMuX2NvbnRlbnRMZW5ndGgpe3ZhciB0PSExO2lmKHRoaXMuX3dhaXRGb3JUb3RhbExlbmd0aCl7dGhpcy5fd2FpdEZvclRvdGFsTGVuZ3RoPSExLHRoaXMuX3RvdGFsTGVuZ3RoUmVjZWl2ZWQ9ITAsdD0hMDt2YXIgbj1lLnRvdGFsO3RoaXMuX2ludGVybmFsQWJvcnQoKSxudWxsIT1uJjAhPT1uJiYodGhpcy5fdG90YWxMZW5ndGg9bil9aWYodGhpcy5fcmFuZ2UudG89PT0tMT90aGlzLl9jb250ZW50TGVuZ3RoPXRoaXMuX3RvdGFsTGVuZ3RoLXRoaXMuX3JhbmdlLmZyb206dGhpcy5fY29udGVudExlbmd0aD10aGlzLl9yYW5nZS50by10aGlzLl9yYW5nZS5mcm9tKzEsdClyZXR1cm4gdm9pZCB0aGlzLl9vcGVuU3ViUmFuZ2UoKTt0aGlzLl9vbkNvbnRlbnRMZW5ndGhLbm93biYmdGhpcy5fb25Db250ZW50TGVuZ3RoS25vd24odGhpcy5fY29udGVudExlbmd0aCl9dmFyIGk9ZS5sb2FkZWQtdGhpcy5fbGFzdFRpbWVMb2FkZWQ7dGhpcy5fbGFzdFRpbWVMb2FkZWQ9ZS5sb2FkZWQsdGhpcy5fc3BlZWRTYW1wbGVyLmFkZEJ5dGVzKGkpfX0se2tleToiX25vcm1hbGl6ZVNwZWVkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jaHVua1NpemVLQkxpc3Qsbj10Lmxlbmd0aC0xLGk9MCxyPTAscz1uO2lmKGU8dFswXSlyZXR1cm4gdFswXTtmb3IoO3I8PXM7KXtpZigoaT1yK01hdGguZmxvb3IoKHMtcikvMikpPT09bnx8ZT49dFtpXSYmZTx0W2krMV0pcmV0dXJuIHRbaV07dFtpXTxlP3I9aSsxOnM9aS0xfX19LHtrZXk6Il9vbkxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX3dhaXRGb3JUb3RhbExlbmd0aClyZXR1cm4gdm9pZCh0aGlzLl93YWl0Rm9yVG90YWxMZW5ndGg9ITEpO3RoaXMuX2xhc3RUaW1lTG9hZGVkPTA7dmFyIHQ9dGhpcy5fc3BlZWRTYW1wbGVyLmxhc3RTZWNvbmRLQnBzO2lmKDA9PT10JiYrK3RoaXMuX3plcm9TcGVlZENodW5rQ291bnQ+PTMmJih0PXRoaXMuX3NwZWVkU2FtcGxlci5jdXJyZW50S0JwcyksMCE9PXQpe3ZhciBuPXRoaXMuX25vcm1hbGl6ZVNwZWVkKHQpO3RoaXMuX2N1cnJlbnRTcGVlZE5vcm1hbGl6ZWQhPT1uJiYodGhpcy5fY3VycmVudFNwZWVkTm9ybWFsaXplZD1uLHRoaXMuX2N1cnJlbnRDaHVua1NpemVLQj1uKX12YXIgaT1lLnRhcmdldC5yZXNwb25zZSxyPXRoaXMuX3JhbmdlLmZyb20rdGhpcy5fcmVjZWl2ZWRMZW5ndGg7dGhpcy5fcmVjZWl2ZWRMZW5ndGgrPWkuYnl0ZUxlbmd0aDt2YXIgcz0hMTtudWxsIT10aGlzLl9jb250ZW50TGVuZ3RoJiZ0aGlzLl9yZWNlaXZlZExlbmd0aDx0aGlzLl9jb250ZW50TGVuZ3RoP3RoaXMuX29wZW5TdWJSYW5nZSgpOnM9ITAsdGhpcy5fb25EYXRhQXJyaXZhbCYmdGhpcy5fb25EYXRhQXJyaXZhbChpLHIsdGhpcy5fcmVjZWl2ZWRMZW5ndGgpLHMmJih0aGlzLl9zdGF0dXM9Xy5Mb2FkZXJTdGF0dXMua0NvbXBsZXRlLHRoaXMuX29uQ29tcGxldGUmJnRoaXMuX29uQ29tcGxldGUodGhpcy5fcmFuZ2UuZnJvbSx0aGlzLl9yYW5nZS5mcm9tK3RoaXMuX3JlY2VpdmVkTGVuZ3RoLTEpKX19LHtrZXk6Il9vblhockVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdGF0dXM9Xy5Mb2FkZXJTdGF0dXMua0Vycm9yO3ZhciB0PTAsbj1udWxsO2lmKHRoaXMuX2NvbnRlbnRMZW5ndGgmJnRoaXMuX3JlY2VpdmVkTGVuZ3RoPjAmJnRoaXMuX3JlY2VpdmVkTGVuZ3RoPHRoaXMuX2NvbnRlbnRMZW5ndGg/KHQ9Xy5Mb2FkZXJFcnJvcnMuRUFSTFlfRU9GLG49e2NvZGU6LTEsbXNnOiJSYW5nZUxvYWRlciBtZWV0IEVhcmx5LUVvZiJ9KToodD1fLkxvYWRlckVycm9ycy5FWENFUFRJT04sbj17Y29kZTotMSxtc2c6ZS5jb25zdHJ1Y3Rvci5uYW1lKyIgIitlLnR5cGV9KSwhdGhpcy5fb25FcnJvcil0aHJvdyBuZXcgbS5SdW50aW1lRXhjZXB0aW9uKG4ubXNnKTt0aGlzLl9vbkVycm9yKHQsbil9fSx7a2V5OiJjdXJyZW50U3BlZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zcGVlZFNhbXBsZXIubGFzdFNlY29uZEtCcHN9fV0pLHR9KF8uQmFzZUxvYWRlcik7bi5kZWZhdWx0PXB9LHsiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIjo0MCwiLi4vdXRpbHMvbG9nZ2VyLmpzIjo0MSwiLi9sb2FkZXIuanMiOjI0LCIuL3NwZWVkLXNhbXBsZXIuanMiOjI3fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxvPWUoImV2ZW50cyIpLHU9aShvKSxsPWUoIi4uL3V0aWxzL2xvZ2dlci5qcyIpLGQ9aShsKSxoPWUoIi4uL3V0aWxzL2Jyb3dzZXIuanMiKSxmPWkoaCksYz1lKCIuL3BsYXllci1ldmVudHMuanMiKSxfPWkoYyksbT1lKCIuLi9jb3JlL3RyYW5zbXV4ZXIuanMiKSxwPWkobSksdj1lKCIuLi9jb3JlL3RyYW5zbXV4aW5nLWV2ZW50cy5qcyIpLGc9aSh2KSx5PWUoIi4uL2NvcmUvbXNlLWNvbnRyb2xsZXIuanMiKSxFPWkoeSksYj1lKCIuLi9jb3JlL21zZS1ldmVudHMuanMiKSxTPWkoYiksaz1lKCIuL3BsYXllci1lcnJvcnMuanMiKSxMPWUoIi4uL2NvbmZpZy5qcyIpLHc9ZSgiLi4vdXRpbHMvZXhjZXB0aW9uLmpzIiksUj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXtpZihyKHRoaXMsZSksdGhpcy5UQUc9IkZsdlBsYXllciIsdGhpcy5fdHlwZT0iRmx2UGxheWVyIix0aGlzLl9lbWl0dGVyPW5ldyB1LmRlZmF1bHQsdGhpcy5fY29uZmlnPSgwLEwuY3JlYXRlRGVmYXVsdENvbmZpZykoKSwib2JqZWN0Ij09PSh2b2lkIDA9PT1uPyJ1bmRlZmluZWQiOnMobikpJiZPYmplY3QuYXNzaWduKHRoaXMuX2NvbmZpZyxuKSwiZmx2IiE9PXQudHlwZS50b0xvd2VyQ2FzZSgpKXRocm93IG5ldyB3LkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiRmx2UGxheWVyIHJlcXVpcmVzIGFuIGZsdiBNZWRpYURhdGFTb3VyY2UgaW5wdXQhIik7dC5pc0xpdmU9PT0hMCYmKHRoaXMuX2NvbmZpZy5pc0xpdmU9ITApLHRoaXMuZT17b252TG9hZGVkTWV0YWRhdGE6dGhpcy5fb252TG9hZGVkTWV0YWRhdGEuYmluZCh0aGlzKSxvbnZTZWVraW5nOnRoaXMuX29udlNlZWtpbmcuYmluZCh0aGlzKSxvbnZDYW5QbGF5OnRoaXMuX29udkNhblBsYXkuYmluZCh0aGlzKSxvbnZTdGFsbGVkOnRoaXMuX29udlN0YWxsZWQuYmluZCh0aGlzKSxvbnZQcm9ncmVzczp0aGlzLl9vbnZQcm9ncmVzcy5iaW5kKHRoaXMpfSxzZWxmLnBlcmZvcm1hbmNlJiZzZWxmLnBlcmZvcm1hbmNlLm5vdz90aGlzLl9ub3c9c2VsZi5wZXJmb3JtYW5jZS5ub3cuYmluZChzZWxmLnBlcmZvcm1hbmNlKTp0aGlzLl9ub3c9RGF0ZS5ub3csdGhpcy5fcGVuZGluZ1NlZWtUaW1lPW51bGwsdGhpcy5fcmVxdWVzdFNldFRpbWU9ITEsdGhpcy5fc2Vla3BvaW50UmVjb3JkPW51bGwsdGhpcy5fcHJvZ3Jlc3NDaGVja2VyPW51bGwsdGhpcy5fbWVkaWFEYXRhU291cmNlPXQsdGhpcy5fbWVkaWFFbGVtZW50PW51bGwsdGhpcy5fbXNlY3RsPW51bGwsdGhpcy5fdHJhbnNtdXhlcj1udWxsLHRoaXMuX21zZVNvdXJjZU9wZW5lZD0hMSx0aGlzLl9oYXNQZW5kaW5nTG9hZD0hMSx0aGlzLl9yZWNlaXZlZENhblBsYXk9ITEsdGhpcy5fbWVkaWFJbmZvPW51bGwsdGhpcy5fc3RhdGlzdGljc0luZm89bnVsbDt2YXIgaT1mLmRlZmF1bHQuY2hyb21lJiYoZi5kZWZhdWx0LnZlcnNpb24ubWFqb3I8NTB8fDUwPT09Zi5kZWZhdWx0LnZlcnNpb24ubWFqb3ImJmYuZGVmYXVsdC52ZXJzaW9uLmJ1aWxkPDI2NjEpO3RoaXMuX2Fsd2F5c1NlZWtLZXlmcmFtZT0hIShpfHxmLmRlZmF1bHQubXNlZGdlfHxmLmRlZmF1bHQubXNpZSksdGhpcy5fYWx3YXlzU2Vla0tleWZyYW1lJiYodGhpcy5fY29uZmlnLmFjY3VyYXRlU2Vlaz0hMSl9cmV0dXJuIGEoZSxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtudWxsIT10aGlzLl9wcm9ncmVzc0NoZWNrZXImJih3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9wcm9ncmVzc0NoZWNrZXIpLHRoaXMuX3Byb2dyZXNzQ2hlY2tlcj1udWxsKSx0aGlzLl90cmFuc211eGVyJiZ0aGlzLnVubG9hZCgpLHRoaXMuX21lZGlhRWxlbWVudCYmdGhpcy5kZXRhY2hNZWRpYUVsZW1lbnQoKSx0aGlzLmU9bnVsbCx0aGlzLl9tZWRpYURhdGFTb3VyY2U9bnVsbCx0aGlzLl9lbWl0dGVyLnJlbW92ZUFsbExpc3RlbmVycygpLHRoaXMuX2VtaXR0ZXI9bnVsbH19LHtrZXk6Im9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZT09PV8uZGVmYXVsdC5NRURJQV9JTkZPP251bGwhPXRoaXMuX21lZGlhSW5mbyYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe24uX2VtaXR0ZXIuZW1pdChfLmRlZmF1bHQuTUVESUFfSU5GTyxuLm1lZGlhSW5mbyl9KTplPT09Xy5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyYmbnVsbCE9dGhpcy5fc3RhdGlzdGljc0luZm8mJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtuLl9lbWl0dGVyLmVtaXQoXy5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyxuLnN0YXRpc3RpY3NJbmZvKX0pLHRoaXMuX2VtaXR0ZXIuYWRkTGlzdGVuZXIoZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLnJlbW92ZUxpc3RlbmVyKGUsdCl9fSx7a2V5OiJhdHRhY2hNZWRpYUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodGhpcy5fbWVkaWFFbGVtZW50PWUsZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRtZXRhZGF0YSIsdGhpcy5lLm9udkxvYWRlZE1ldGFkYXRhKSxlLmFkZEV2ZW50TGlzdGVuZXIoInNlZWtpbmciLHRoaXMuZS5vbnZTZWVraW5nKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXkiLHRoaXMuZS5vbnZDYW5QbGF5KSxlLmFkZEV2ZW50TGlzdGVuZXIoInN0YWxsZWQiLHRoaXMuZS5vbnZTdGFsbGVkKSxlLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIix0aGlzLmUub252UHJvZ3Jlc3MpLHRoaXMuX21zZWN0bD1uZXcgRS5kZWZhdWx0LHRoaXMuX21zZWN0bC5vbihTLmRlZmF1bHQuVVBEQVRFX0VORCx0aGlzLl9vbm1zZVVwZGF0ZUVuZC5iaW5kKHRoaXMpKSx0aGlzLl9tc2VjdGwub24oUy5kZWZhdWx0LkJVRkZFUl9GVUxMLHRoaXMuX29ubXNlQnVmZmVyRnVsbC5iaW5kKHRoaXMpKSx0aGlzLl9tc2VjdGwub24oUy5kZWZhdWx0LlNPVVJDRV9PUEVOLGZ1bmN0aW9uKCl7dC5fbXNlU291cmNlT3BlbmVkPSEwLHQuX2hhc1BlbmRpbmdMb2FkJiYodC5faGFzUGVuZGluZ0xvYWQ9ITEsdC5sb2FkKCkpfSksdGhpcy5fbXNlY3RsLm9uKFMuZGVmYXVsdC5FUlJPUixmdW5jdGlvbihlKXt0Ll9lbWl0dGVyLmVtaXQoXy5kZWZhdWx0LkVSUk9SLGsuRXJyb3JUeXBlcy5NRURJQV9FUlJPUixrLkVycm9yRGV0YWlscy5NRURJQV9NU0VfRVJST1IsZSl9KSx0aGlzLl9tc2VjdGwuYXR0YWNoTWVkaWFFbGVtZW50KGUpLG51bGwhPXRoaXMuX3BlbmRpbmdTZWVrVGltZSl0cnl7ZS5jdXJyZW50VGltZT10aGlzLl9wZW5kaW5nU2Vla1RpbWUsdGhpcy5fcGVuZGluZ1NlZWtUaW1lPW51bGx9Y2F0Y2goZSl7fX19LHtrZXk6ImRldGFjaE1lZGlhRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tZWRpYUVsZW1lbnQmJih0aGlzLl9tc2VjdGwuZGV0YWNoTWVkaWFFbGVtZW50KCksdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIix0aGlzLmUub252TG9hZGVkTWV0YWRhdGEpLHRoaXMuX21lZGlhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWVraW5nIix0aGlzLmUub252U2Vla2luZyksdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNhbnBsYXkiLHRoaXMuZS5vbnZDYW5QbGF5KSx0aGlzLl9tZWRpYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RhbGxlZCIsdGhpcy5lLm9udlN0YWxsZWQpLHRoaXMuX21lZGlhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsdGhpcy5lLm9udlByb2dyZXNzKSx0aGlzLl9tZWRpYUVsZW1lbnQ9bnVsbCksdGhpcy5fbXNlY3RsJiYodGhpcy5fbXNlY3RsLmRlc3Ryb3koKSx0aGlzLl9tc2VjdGw9bnVsbCl9fSx7a2V5OiJsb2FkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIXRoaXMuX21lZGlhRWxlbWVudCl0aHJvdyBuZXcgdy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkhUTUxNZWRpYUVsZW1lbnQgbXVzdCBiZSBhdHRhY2hlZCBiZWZvcmUgbG9hZCgpISIpO2lmKHRoaXMuX3RyYW5zbXV4ZXIpdGhyb3cgbmV3IHcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJGbHZQbGF5ZXIubG9hZCgpIGhhcyBiZWVuIGNhbGxlZCwgcGxlYXNlIGNhbGwgdW5sb2FkKCkgZmlyc3QhIik7aWYoIXRoaXMuX2hhc1BlbmRpbmdMb2FkKXtpZih0aGlzLl9jb25maWcuZGVmZXJMb2FkQWZ0ZXJTb3VyY2VPcGVuJiZ0aGlzLl9tc2VTb3VyY2VPcGVuZWQ9PT0hMSlyZXR1cm4gdm9pZCh0aGlzLl9oYXNQZW5kaW5nTG9hZD0hMCk7dGhpcy5fbWVkaWFFbGVtZW50LnJlYWR5U3RhdGU+MCYmKHRoaXMuX3JlcXVlc3RTZXRUaW1lPSEwLHRoaXMuX21lZGlhRWxlbWVudC5jdXJyZW50VGltZT0wKSx0aGlzLl90cmFuc211eGVyPW5ldyBwLmRlZmF1bHQodGhpcy5fbWVkaWFEYXRhU291cmNlLHRoaXMuX2NvbmZpZyksdGhpcy5fdHJhbnNtdXhlci5vbihnLmRlZmF1bHQuSU5JVF9TRUdNRU5ULGZ1bmN0aW9uKHQsbil7ZS5fbXNlY3RsLmFwcGVuZEluaXRTZWdtZW50KG4pfSksdGhpcy5fdHJhbnNtdXhlci5vbihnLmRlZmF1bHQuTUVESUFfU0VHTUVOVCxmdW5jdGlvbih0LG4pe2lmKGUuX21zZWN0bC5hcHBlbmRNZWRpYVNlZ21lbnQobiksZS5fY29uZmlnLmxhenlMb2FkJiYhZS5fY29uZmlnLmlzTGl2ZSl7dmFyIGk9ZS5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lO24uaW5mby5lbmREdHM+PTFlMyooaStlLl9jb25maWcubGF6eUxvYWRNYXhEdXJhdGlvbikmJm51bGw9PWUuX3Byb2dyZXNzQ2hlY2tlciYmKGQuZGVmYXVsdC52KGUuVEFHLCJNYXhpbXVtIGJ1ZmZlcmluZyBkdXJhdGlvbiBleGNlZWRlZCwgc3VzcGVuZCB0cmFuc211eGluZyB0YXNrIiksZS5fc3VzcGVuZFRyYW5zbXV4ZXIoKSl9fSksdGhpcy5fdHJhbnNtdXhlci5vbihnLmRlZmF1bHQuTE9BRElOR19DT01QTEVURSxmdW5jdGlvbigpe2UuX21zZWN0bC5lbmRPZlN0cmVhbSgpLGUuX2VtaXR0ZXIuZW1pdChfLmRlZmF1bHQuTE9BRElOR19DT01QTEVURSl9KSx0aGlzLl90cmFuc211eGVyLm9uKGcuZGVmYXVsdC5SRUNPVkVSRURfRUFSTFlfRU9GLGZ1bmN0aW9uKCl7ZS5fZW1pdHRlci5lbWl0KF8uZGVmYXVsdC5SRUNPVkVSRURfRUFSTFlfRU9GKX0pLHRoaXMuX3RyYW5zbXV4ZXIub24oZy5kZWZhdWx0LklPX0VSUk9SLGZ1bmN0aW9uKHQsbil7ZS5fZW1pdHRlci5lbWl0KF8uZGVmYXVsdC5FUlJPUixrLkVycm9yVHlwZXMuTkVUV09SS19FUlJPUix0LG4pfSksdGhpcy5fdHJhbnNtdXhlci5vbihnLmRlZmF1bHQuREVNVVhfRVJST1IsZnVuY3Rpb24odCxuKXtlLl9lbWl0dGVyLmVtaXQoXy5kZWZhdWx0LkVSUk9SLGsuRXJyb3JUeXBlcy5NRURJQV9FUlJPUix0LHtjb2RlOi0xLG1zZzpufSl9KSx0aGlzLl90cmFuc211eGVyLm9uKGcuZGVmYXVsdC5NRURJQV9JTkZPLGZ1bmN0aW9uKHQpe2UuX21lZGlhSW5mbz10LGUuX2VtaXR0ZXIuZW1pdChfLmRlZmF1bHQuTUVESUFfSU5GTyxPYmplY3QuYXNzaWduKHt9LHQpKX0pLHRoaXMuX3RyYW5zbXV4ZXIub24oZy5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyxmdW5jdGlvbih0KXtlLl9zdGF0aXN0aWNzSW5mbz1lLl9maWxsU3RhdGlzdGljc0luZm8odCksZS5fZW1pdHRlci5lbWl0KF8uZGVmYXVsdC5TVEFUSVNUSUNTX0lORk8sT2JqZWN0LmFzc2lnbih7fSxlLl9zdGF0aXN0aWNzSW5mbykpfSksdGhpcy5fdHJhbnNtdXhlci5vbihnLmRlZmF1bHQuUkVDT01NRU5EX1NFRUtQT0lOVCxmdW5jdGlvbih0KXtlLl9tZWRpYUVsZW1lbnQmJiFlLl9jb25maWcuYWNjdXJhdGVTZWVrJiYoZS5fcmVxdWVzdFNldFRpbWU9ITAsZS5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPXQvMWUzKX0pLHRoaXMuX3RyYW5zbXV4ZXIub3BlbigpfX19LHtrZXk6InVubG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tZWRpYUVsZW1lbnQmJnRoaXMuX21lZGlhRWxlbWVudC5wYXVzZSgpLHRoaXMuX21zZWN0bCYmdGhpcy5fbXNlY3RsLnNlZWsoMCksdGhpcy5fdHJhbnNtdXhlciYmKHRoaXMuX3RyYW5zbXV4ZXIuY2xvc2UoKSx0aGlzLl90cmFuc211eGVyLmRlc3Ryb3koKSx0aGlzLl90cmFuc211eGVyPW51bGwpfX0se2tleToicGxheSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tZWRpYUVsZW1lbnQucGxheSgpfX0se2tleToicGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbWVkaWFFbGVtZW50LnBhdXNlKCl9fSx7a2V5OiJfZmlsbFN0YXRpc3RpY3NJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlLnBsYXllclR5cGU9dGhpcy5fdHlwZSwhKHRoaXMuX21lZGlhRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpKXJldHVybiBlO3ZhciB0PSEwLG49MCxpPTA7aWYodGhpcy5fbWVkaWFFbGVtZW50LmdldFZpZGVvUGxheWJhY2tRdWFsaXR5KXt2YXIgcj10aGlzLl9tZWRpYUVsZW1lbnQuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkoKTtuPXIudG90YWxWaWRlb0ZyYW1lcyxpPXIuZHJvcHBlZFZpZGVvRnJhbWVzfWVsc2Ugdm9pZCAwIT10aGlzLl9tZWRpYUVsZW1lbnQud2Via2l0RGVjb2RlZEZyYW1lQ291bnQ/KG49dGhpcy5fbWVkaWFFbGVtZW50LndlYmtpdERlY29kZWRGcmFtZUNvdW50LGk9dGhpcy5fbWVkaWFFbGVtZW50LndlYmtpdERyb3BwZWRGcmFtZUNvdW50KTp0PSExO3JldHVybiB0JiYoZS5kZWNvZGVkRnJhbWVzPW4sZS5kcm9wcGVkRnJhbWVzPWkpLGV9fSx7a2V5OiJfb25tc2VVcGRhdGVFbmQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5fY29uZmlnLmxhenlMb2FkJiYhdGhpcy5fY29uZmlnLmlzTGl2ZSl7Zm9yKHZhciBlPXRoaXMuX21lZGlhRWxlbWVudC5idWZmZXJlZCx0PXRoaXMuX21lZGlhRWxlbWVudC5jdXJyZW50VGltZSxuPTAsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcj1lLnN0YXJ0KGkpLHM9ZS5lbmQoaSk7aWYocjw9dCYmdDxzKXtyLG49czticmVha319bj49dCt0aGlzLl9jb25maWcubGF6eUxvYWRNYXhEdXJhdGlvbiYmbnVsbD09dGhpcy5fcHJvZ3Jlc3NDaGVja2VyJiYoZC5kZWZhdWx0LnYodGhpcy5UQUcsIk1heGltdW0gYnVmZmVyaW5nIGR1cmF0aW9uIGV4Y2VlZGVkLCBzdXNwZW5kIHRyYW5zbXV4aW5nIHRhc2siKSx0aGlzLl9zdXNwZW5kVHJhbnNtdXhlcigpKX19fSx7a2V5OiJfb25tc2VCdWZmZXJGdWxsIix2YWx1ZTpmdW5jdGlvbigpe2QuZGVmYXVsdC52KHRoaXMuVEFHLCJNU0UgU291cmNlQnVmZmVyIGlzIGZ1bGwsIHN1c3BlbmQgdHJhbnNtdXhpbmcgdGFzayIpLG51bGw9PXRoaXMuX3Byb2dyZXNzQ2hlY2tlciYmdGhpcy5fc3VzcGVuZFRyYW5zbXV4ZXIoKX19LHtrZXk6Il9zdXNwZW5kVHJhbnNtdXhlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl90cmFuc211eGVyJiYodGhpcy5fdHJhbnNtdXhlci5wYXVzZSgpLG51bGw9PXRoaXMuX3Byb2dyZXNzQ2hlY2tlciYmKHRoaXMuX3Byb2dyZXNzQ2hlY2tlcj13aW5kb3cuc2V0SW50ZXJ2YWwodGhpcy5fY2hlY2tQcm9ncmVzc0FuZFJlc3VtZS5iaW5kKHRoaXMpLDFlMykpKX19LHtrZXk6Il9jaGVja1Byb2dyZXNzQW5kUmVzdW1lIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLl9tZWRpYUVsZW1lbnQuY3VycmVudFRpbWUsdD10aGlzLl9tZWRpYUVsZW1lbnQuYnVmZmVyZWQsbj0hMSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciByPXQuc3RhcnQoaSkscz10LmVuZChpKTtpZihlPj1yJiZlPHMpe2U+PXMtdGhpcy5fY29uZmlnLmxhenlMb2FkUmVjb3ZlckR1cmF0aW9uJiYobj0hMCk7YnJlYWt9fW4mJih3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9wcm9ncmVzc0NoZWNrZXIpLHRoaXMuX3Byb2dyZXNzQ2hlY2tlcj1udWxsLG4mJihkLmRlZmF1bHQudih0aGlzLlRBRywiQ29udGludWUgbG9hZGluZyBmcm9tIHBhdXNlZCBwb3NpdGlvbiIpLHRoaXMuX3RyYW5zbXV4ZXIucmVzdW1lKCkpKX19LHtrZXk6Il9pc1RpbWVwb2ludEJ1ZmZlcmVkIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fbWVkaWFFbGVtZW50LmJ1ZmZlcmVkLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dC5zdGFydChuKSxyPXQuZW5kKG4pO2lmKGU+PWkmJmU8cilyZXR1cm4hMH1yZXR1cm4hMX19LHtrZXk6Il9pbnRlcm5hbFNlZWsiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lzVGltZXBvaW50QnVmZmVyZWQoZSksbj0hMSxpPTA7aWYoZTwxJiZ0aGlzLl9tZWRpYUVsZW1lbnQuYnVmZmVyZWQubGVuZ3RoPjApewp2YXIgcj10aGlzLl9tZWRpYUVsZW1lbnQuYnVmZmVyZWQuc3RhcnQoMCk7KHI8MSYmZTxyfHxmLmRlZmF1bHQuc2FmYXJpKSYmKG49ITAsaT1mLmRlZmF1bHQuc2FmYXJpPy4xOnIpfWlmKG4pdGhpcy5fcmVxdWVzdFNldFRpbWU9ITAsdGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPWk7ZWxzZSBpZih0KXtpZih0aGlzLl9hbHdheXNTZWVrS2V5ZnJhbWUpe3ZhciBzPXRoaXMuX21zZWN0bC5nZXROZWFyZXN0S2V5ZnJhbWUoTWF0aC5mbG9vcigxZTMqZSkpO3RoaXMuX3JlcXVlc3RTZXRUaW1lPSEwLHRoaXMuX21lZGlhRWxlbWVudC5jdXJyZW50VGltZT1udWxsIT1zP3MuZHRzLzFlMzplfWVsc2UgdGhpcy5fcmVxdWVzdFNldFRpbWU9ITAsdGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPWU7bnVsbCE9dGhpcy5fcHJvZ3Jlc3NDaGVja2VyJiZ0aGlzLl9jaGVja1Byb2dyZXNzQW5kUmVzdW1lKCl9ZWxzZSBudWxsIT10aGlzLl9wcm9ncmVzc0NoZWNrZXImJih3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9wcm9ncmVzc0NoZWNrZXIpLHRoaXMuX3Byb2dyZXNzQ2hlY2tlcj1udWxsKSx0aGlzLl9tc2VjdGwuc2VlayhlKSx0aGlzLl90cmFuc211eGVyLnNlZWsoTWF0aC5mbG9vcigxZTMqZSkpLHRoaXMuX2NvbmZpZy5hY2N1cmF0ZVNlZWsmJih0aGlzLl9yZXF1ZXN0U2V0VGltZT0hMCx0aGlzLl9tZWRpYUVsZW1lbnQuY3VycmVudFRpbWU9ZSl9fSx7a2V5OiJfY2hlY2tBbmRBcHBseVVuYnVmZmVyZWRTZWVrcG9pbnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5fc2Vla3BvaW50UmVjb3JkKWlmKHRoaXMuX3NlZWtwb2ludFJlY29yZC5yZWNvcmRUaW1lPD10aGlzLl9ub3coKS0xMDApe3ZhciBlPXRoaXMuX21lZGlhRWxlbWVudC5jdXJyZW50VGltZTt0aGlzLl9zZWVrcG9pbnRSZWNvcmQ9bnVsbCx0aGlzLl9pc1RpbWVwb2ludEJ1ZmZlcmVkKGUpfHwobnVsbCE9dGhpcy5fcHJvZ3Jlc3NDaGVja2VyJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9wcm9ncmVzc0NoZWNrZXIpLHRoaXMuX3Byb2dyZXNzQ2hlY2tlcj1udWxsKSx0aGlzLl9tc2VjdGwuc2VlayhlKSx0aGlzLl90cmFuc211eGVyLnNlZWsoTWF0aC5mbG9vcigxZTMqZSkpLHRoaXMuX2NvbmZpZy5hY2N1cmF0ZVNlZWsmJih0aGlzLl9yZXF1ZXN0U2V0VGltZT0hMCx0aGlzLl9tZWRpYUVsZW1lbnQuY3VycmVudFRpbWU9ZSkpfWVsc2Ugd2luZG93LnNldFRpbWVvdXQodGhpcy5fY2hlY2tBbmRBcHBseVVuYnVmZmVyZWRTZWVrcG9pbnQuYmluZCh0aGlzKSw1MCl9fSx7a2V5OiJfY2hlY2tBbmRSZXN1bWVTdHVja1BsYXliYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9tZWRpYUVsZW1lbnQ7aWYoZXx8IXRoaXMuX3JlY2VpdmVkQ2FuUGxheXx8dC5yZWFkeVN0YXRlPDIpe3ZhciBuPXQuYnVmZmVyZWQ7bi5sZW5ndGg+MCYmdC5jdXJyZW50VGltZTxuLnN0YXJ0KDApJiYoZC5kZWZhdWx0LncodGhpcy5UQUcsIlBsYXliYWNrIHNlZW1zIHN0dWNrIGF0ICIrdC5jdXJyZW50VGltZSsiLCBzZWVrIHRvICIrbi5zdGFydCgwKSksdGhpcy5fcmVxdWVzdFNldFRpbWU9ITAsdGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPW4uc3RhcnQoMCksdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIix0aGlzLmUub252UHJvZ3Jlc3MpKX1lbHNlIHRoaXMuX21lZGlhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsdGhpcy5lLm9udlByb2dyZXNzKX19LHtrZXk6Il9vbnZMb2FkZWRNZXRhZGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ1NlZWtUaW1lJiYodGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPXRoaXMuX3BlbmRpbmdTZWVrVGltZSx0aGlzLl9wZW5kaW5nU2Vla1RpbWU9bnVsbCl9fSx7a2V5OiJfb252U2Vla2luZyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lLG49dGhpcy5fbWVkaWFFbGVtZW50LmJ1ZmZlcmVkO2lmKHRoaXMuX3JlcXVlc3RTZXRUaW1lKXJldHVybiB2b2lkKHRoaXMuX3JlcXVlc3RTZXRUaW1lPSExKTtpZih0PDEmJm4ubGVuZ3RoPjApe3ZhciBpPW4uc3RhcnQoMCk7aWYoaTwxJiZ0PGl8fGYuZGVmYXVsdC5zYWZhcmkpcmV0dXJuIHRoaXMuX3JlcXVlc3RTZXRUaW1lPSEwLHZvaWQodGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPWYuZGVmYXVsdC5zYWZhcmk/LjE6aSl9aWYodGhpcy5faXNUaW1lcG9pbnRCdWZmZXJlZCh0KSl7aWYodGhpcy5fYWx3YXlzU2Vla0tleWZyYW1lKXt2YXIgcj10aGlzLl9tc2VjdGwuZ2V0TmVhcmVzdEtleWZyYW1lKE1hdGguZmxvb3IoMWUzKnQpKTtudWxsIT1yJiYodGhpcy5fcmVxdWVzdFNldFRpbWU9ITAsdGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPXIuZHRzLzFlMyl9cmV0dXJuIHZvaWQobnVsbCE9dGhpcy5fcHJvZ3Jlc3NDaGVja2VyJiZ0aGlzLl9jaGVja1Byb2dyZXNzQW5kUmVzdW1lKCkpfXRoaXMuX3NlZWtwb2ludFJlY29yZD17c2Vla1BvaW50OnQscmVjb3JkVGltZTp0aGlzLl9ub3coKX0sd2luZG93LnNldFRpbWVvdXQodGhpcy5fY2hlY2tBbmRBcHBseVVuYnVmZmVyZWRTZWVrcG9pbnQuYmluZCh0aGlzKSw1MCl9fSx7a2V5OiJfb252Q2FuUGxheSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fcmVjZWl2ZWRDYW5QbGF5PSEwLHRoaXMuX21lZGlhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjYW5wbGF5Iix0aGlzLmUub252Q2FuUGxheSl9fSx7a2V5OiJfb252U3RhbGxlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fY2hlY2tBbmRSZXN1bWVTdHVja1BsYXliYWNrKCEwKX19LHtrZXk6Il9vbnZQcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fY2hlY2tBbmRSZXN1bWVTdHVja1BsYXliYWNrKCl9fSx7a2V5OiJ0eXBlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHlwZX19LHtrZXk6ImJ1ZmZlcmVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVkaWFFbGVtZW50LmJ1ZmZlcmVkfX0se2tleToiZHVyYXRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYUVsZW1lbnQuZHVyYXRpb259fSx7a2V5OiJ2b2x1bWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYUVsZW1lbnQudm9sdW1lfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fbWVkaWFFbGVtZW50LnZvbHVtZT1lfX0se2tleToibXV0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYUVsZW1lbnQubXV0ZWR9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9tZWRpYUVsZW1lbnQubXV0ZWQ9ZX19LHtrZXk6ImN1cnJlbnRUaW1lIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVkaWFFbGVtZW50P3RoaXMuX21lZGlhRWxlbWVudC5jdXJyZW50VGltZTowfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fbWVkaWFFbGVtZW50P3RoaXMuX2ludGVybmFsU2VlayhlKTp0aGlzLl9wZW5kaW5nU2Vla1RpbWU9ZX19LHtrZXk6Im1lZGlhSW5mbyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdGhpcy5fbWVkaWFJbmZvKX19LHtrZXk6InN0YXRpc3RpY3NJbmZvIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fc3RhdGlzdGljc0luZm8mJih0aGlzLl9zdGF0aXN0aWNzSW5mbz17fSksdGhpcy5fc3RhdGlzdGljc0luZm89dGhpcy5fZmlsbFN0YXRpc3RpY3NJbmZvKHRoaXMuX3N0YXRpc3RpY3NJbmZvKSxPYmplY3QuYXNzaWduKHt9LHRoaXMuX3N0YXRpc3RpY3NJbmZvKX19XSksZX0oKTtuLmRlZmF1bHQ9Un0seyIuLi9jb25maWcuanMiOjUsIi4uL2NvcmUvbXNlLWNvbnRyb2xsZXIuanMiOjksIi4uL2NvcmUvbXNlLWV2ZW50cy5qcyI6MTAsIi4uL2NvcmUvdHJhbnNtdXhlci5qcyI6MTEsIi4uL2NvcmUvdHJhbnNtdXhpbmctZXZlbnRzLmpzIjoxMywiLi4vdXRpbHMvYnJvd3Nlci5qcyI6MzksIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDAsIi4uL3V0aWxzL2xvZ2dlci5qcyI6NDEsIi4vcGxheWVyLWVycm9ycy5qcyI6MzQsIi4vcGxheWVyLWV2ZW50cy5qcyI6MzUsZXZlbnRzOjJ9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLG89ZSgiZXZlbnRzIiksdT1pKG8pLGw9ZSgiLi9wbGF5ZXItZXZlbnRzLmpzIiksZD1pKGwpLGg9ZSgiLi4vY29uZmlnLmpzIiksZj1lKCIuLi91dGlscy9leGNlcHRpb24uanMiKSxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe2lmKHIodGhpcyxlKSx0aGlzLlRBRz0iTmF0aXZlUGxheWVyIix0aGlzLl90eXBlPSJOYXRpdmVQbGF5ZXIiLHRoaXMuX2VtaXR0ZXI9bmV3IHUuZGVmYXVsdCx0aGlzLl9jb25maWc9KDAsaC5jcmVhdGVEZWZhdWx0Q29uZmlnKSgpLCJvYmplY3QiPT09KHZvaWQgMD09PW4/InVuZGVmaW5lZCI6cyhuKSkmJk9iamVjdC5hc3NpZ24odGhpcy5fY29uZmlnLG4pLCJmbHYiPT09dC50eXBlLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IGYuSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJOYXRpdmVQbGF5ZXIgZG9lcyd0IHN1cHBvcnQgZmx2IE1lZGlhRGF0YVNvdXJjZSBpbnB1dCEiKTtpZih0Lmhhc093blByb3BlcnR5KCJzZWdtZW50cyIpKXRocm93IG5ldyBmLkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTmF0aXZlUGxheWVyKCIrdC50eXBlKyIpIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBhcnQgcGxheWJhY2shIik7dGhpcy5lPXtvbnZMb2FkZWRNZXRhZGF0YTp0aGlzLl9vbnZMb2FkZWRNZXRhZGF0YS5iaW5kKHRoaXMpfSx0aGlzLl9wZW5kaW5nU2Vla1RpbWU9bnVsbCx0aGlzLl9zdGF0aXN0aWNzUmVwb3J0ZXI9bnVsbCx0aGlzLl9tZWRpYURhdGFTb3VyY2U9dCx0aGlzLl9tZWRpYUVsZW1lbnQ9bnVsbH1yZXR1cm4gYShlLFt7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX21lZGlhRWxlbWVudCYmKHRoaXMudW5sb2FkKCksdGhpcy5kZXRhY2hNZWRpYUVsZW1lbnQoKSksdGhpcy5lPW51bGwsdGhpcy5fbWVkaWFEYXRhU291cmNlPW51bGwsdGhpcy5fZW1pdHRlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLl9lbWl0dGVyPW51bGx9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2U9PT1kLmRlZmF1bHQuTUVESUFfSU5GTz9udWxsIT10aGlzLl9tZWRpYUVsZW1lbnQmJjAhPT10aGlzLl9tZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe24uX2VtaXR0ZXIuZW1pdChkLmRlZmF1bHQuTUVESUFfSU5GTyxuLm1lZGlhSW5mbyl9KTplPT09ZC5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyYmbnVsbCE9dGhpcy5fbWVkaWFFbGVtZW50JiYwIT09dGhpcy5fbWVkaWFFbGVtZW50LnJlYWR5U3RhdGUmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtuLl9lbWl0dGVyLmVtaXQoZC5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyxuLnN0YXRpc3RpY3NJbmZvKX0pLHRoaXMuX2VtaXR0ZXIuYWRkTGlzdGVuZXIoZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbWl0dGVyLnJlbW92ZUxpc3RlbmVyKGUsdCl9fSx7a2V5OiJhdHRhY2hNZWRpYUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX21lZGlhRWxlbWVudD1lLGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkbWV0YWRhdGEiLHRoaXMuZS5vbnZMb2FkZWRNZXRhZGF0YSksbnVsbCE9dGhpcy5fcGVuZGluZ1NlZWtUaW1lKXRyeXtlLmN1cnJlbnRUaW1lPXRoaXMuX3BlbmRpbmdTZWVrVGltZSx0aGlzLl9wZW5kaW5nU2Vla1RpbWU9bnVsbH1jYXRjaChlKXt9fX0se2tleToiZGV0YWNoTWVkaWFFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX21lZGlhRWxlbWVudCYmKHRoaXMuX21lZGlhRWxlbWVudC5zcmM9IiIsdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3JjIiksdGhpcy5fbWVkaWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIix0aGlzLmUub252TG9hZGVkTWV0YWRhdGEpLHRoaXMuX21lZGlhRWxlbWVudD1udWxsKSxudWxsIT10aGlzLl9zdGF0aXN0aWNzUmVwb3J0ZXImJih3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9zdGF0aXN0aWNzUmVwb3J0ZXIpLHRoaXMuX3N0YXRpc3RpY3NSZXBvcnRlcj1udWxsKX19LHtrZXk6ImxvYWQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX21lZGlhRWxlbWVudCl0aHJvdyBuZXcgZi5JbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkhUTUxNZWRpYUVsZW1lbnQgbXVzdCBiZSBhdHRhY2hlZCBiZWZvcmUgbG9hZCgpISIpO3RoaXMuX21lZGlhRWxlbWVudC5zcmM9dGhpcy5fbWVkaWFEYXRhU291cmNlLnVybCx0aGlzLl9tZWRpYUVsZW1lbnQucmVhZHlTdGF0ZT4wJiYodGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPTApLHRoaXMuX21lZGlhRWxlbWVudC5wcmVsb2FkPSJhdXRvIix0aGlzLl9tZWRpYUVsZW1lbnQubG9hZCgpLHRoaXMuX3N0YXRpc3RpY3NSZXBvcnRlcj13aW5kb3cuc2V0SW50ZXJ2YWwodGhpcy5fcmVwb3J0U3RhdGlzdGljc0luZm8uYmluZCh0aGlzKSx0aGlzLl9jb25maWcuc3RhdGlzdGljc0luZm9SZXBvcnRJbnRlcnZhbCl9fSx7a2V5OiJ1bmxvYWQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbWVkaWFFbGVtZW50JiYodGhpcy5fbWVkaWFFbGVtZW50LnNyYz0iIix0aGlzLl9tZWRpYUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJzcmMiKSksbnVsbCE9dGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fc3RhdGlzdGljc1JlcG9ydGVyKSx0aGlzLl9zdGF0aXN0aWNzUmVwb3J0ZXI9bnVsbCl9fSx7a2V5OiJwbGF5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX21lZGlhRWxlbWVudC5wbGF5KCl9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tZWRpYUVsZW1lbnQucGF1c2UoKX19LHtrZXk6Il9vbnZMb2FkZWRNZXRhZGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ1NlZWtUaW1lJiYodGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPXRoaXMuX3BlbmRpbmdTZWVrVGltZSx0aGlzLl9wZW5kaW5nU2Vla1RpbWU9bnVsbCksdGhpcy5fZW1pdHRlci5lbWl0KGQuZGVmYXVsdC5NRURJQV9JTkZPLHRoaXMubWVkaWFJbmZvKX19LHtrZXk6Il9yZXBvcnRTdGF0aXN0aWNzSW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9lbWl0dGVyLmVtaXQoZC5kZWZhdWx0LlNUQVRJU1RJQ1NfSU5GTyx0aGlzLnN0YXRpc3RpY3NJbmZvKX19LHtrZXk6InR5cGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90eXBlfX0se2tleToiYnVmZmVyZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYUVsZW1lbnQuYnVmZmVyZWR9fSx7a2V5OiJkdXJhdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lZGlhRWxlbWVudC5kdXJhdGlvbn19LHtrZXk6InZvbHVtZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lZGlhRWxlbWVudC52b2x1bWV9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9tZWRpYUVsZW1lbnQudm9sdW1lPWV9fSx7a2V5OiJtdXRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lZGlhRWxlbWVudC5tdXRlZH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX21lZGlhRWxlbWVudC5tdXRlZD1lfX0se2tleToiY3VycmVudFRpbWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYUVsZW1lbnQ/dGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lOjB9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9tZWRpYUVsZW1lbnQ/dGhpcy5fbWVkaWFFbGVtZW50LmN1cnJlbnRUaW1lPWU6dGhpcy5fcGVuZGluZ1NlZWtUaW1lPWV9fSx7a2V5OiJtZWRpYUluZm8iLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX21lZGlhRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxBdWRpb0VsZW1lbnQ/ImF1ZGlvLyI6InZpZGVvLyIsdD17bWltZVR5cGU6ZSt0aGlzLl9tZWRpYURhdGFTb3VyY2UudHlwZX07cmV0dXJuIHRoaXMuX21lZGlhRWxlbWVudCYmKHQuZHVyYXRpb249TWF0aC5mbG9vcigxZTMqdGhpcy5fbWVkaWFFbGVtZW50LmR1cmF0aW9uKSx0aGlzLl9tZWRpYUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50JiYodC53aWR0aD10aGlzLl9tZWRpYUVsZW1lbnQudmlkZW9XaWR0aCx0LmhlaWdodD10aGlzLl9tZWRpYUVsZW1lbnQudmlkZW9IZWlnaHQpKSx0fX0se2tleToic3RhdGlzdGljc0luZm8iLGdldDpmdW5jdGlvbigpe3ZhciBlPXtwbGF5ZXJUeXBlOnRoaXMuX3R5cGUsdXJsOnRoaXMuX21lZGlhRGF0YVNvdXJjZS51cmx9O2lmKCEodGhpcy5fbWVkaWFFbGVtZW50IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkpcmV0dXJuIGU7dmFyIHQ9ITAsbj0wLGk9MDtpZih0aGlzLl9tZWRpYUVsZW1lbnQuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkpe3ZhciByPXRoaXMuX21lZGlhRWxlbWVudC5nZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgpO249ci50b3RhbFZpZGVvRnJhbWVzLGk9ci5kcm9wcGVkVmlkZW9GcmFtZXN9ZWxzZSB2b2lkIDAhPXRoaXMuX21lZGlhRWxlbWVudC53ZWJraXREZWNvZGVkRnJhbWVDb3VudD8obj10aGlzLl9tZWRpYUVsZW1lbnQud2Via2l0RGVjb2RlZEZyYW1lQ291bnQsaT10aGlzLl9tZWRpYUVsZW1lbnQud2Via2l0RHJvcHBlZEZyYW1lQ291bnQpOnQ9ITE7cmV0dXJuIHQmJihlLmRlY29kZWRGcmFtZXM9bixlLmRyb3BwZWRGcmFtZXM9aSksZX19XSksZX0oKTtuLmRlZmF1bHQ9Y30seyIuLi9jb25maWcuanMiOjUsIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyI6NDAsIi4vcGxheWVyLWV2ZW50cy5qcyI6MzUsZXZlbnRzOjJ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5FcnJvckRldGFpbHM9bi5FcnJvclR5cGVzPXZvaWQgMDt2YXIgaT1lKCIuLi9pby9sb2FkZXIuanMiKSxyPWUoIi4uL2RlbXV4L2RlbXV4LWVycm9ycy5qcyIpLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fShyKTtuLkVycm9yVHlwZXM9e05FVFdPUktfRVJST1I6Ik5ldHdvcmtFcnJvciIsTUVESUFfRVJST1I6Ik1lZGlhRXJyb3IiLE9USEVSX0VSUk9SOiJPdGhlckVycm9yIn0sbi5FcnJvckRldGFpbHM9e05FVFdPUktfRVhDRVBUSU9OOmkuTG9hZGVyRXJyb3JzLkVYQ0VQVElPTixORVRXT1JLX1NUQVRVU19DT0RFX0lOVkFMSUQ6aS5Mb2FkZXJFcnJvcnMuSFRUUF9TVEFUVVNfQ09ERV9JTlZBTElELE5FVFdPUktfVElNRU9VVDppLkxvYWRlckVycm9ycy5DT05ORUNUSU5HX1RJTUVPVVQsTkVUV09SS19VTlJFQ09WRVJBQkxFX0VBUkxZX0VPRjppLkxvYWRlckVycm9ycy5VTlJFQ09WRVJBQkxFX0VBUkxZX0VPRixNRURJQV9NU0VfRVJST1I6Ik1lZGlhTVNFRXJyb3IiLE1FRElBX0ZPUk1BVF9FUlJPUjpzLmRlZmF1bHQuRk9STUFUX0VSUk9SLE1FRElBX0ZPUk1BVF9VTlNVUFBPUlRFRDpzLmRlZmF1bHQuRk9STUFUX1VOU1VQUE9SVEVELE1FRElBX0NPREVDX1VOU1VQUE9SVEVEOnMuZGVmYXVsdC5DT0RFQ19VTlNVUFBPUlRFRH19LHsiLi4vZGVtdXgvZGVtdXgtZXJyb3JzLmpzIjoxNiwiLi4vaW8vbG9hZGVyLmpzIjoyNH1dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT17RVJST1I6ImVycm9yIixMT0FESU5HX0NPTVBMRVRFOiJsb2FkaW5nX2NvbXBsZXRlIixSRUNPVkVSRURfRUFSTFlfRU9GOiJyZWNvdmVyZWRfZWFybHlfZW9mIixNRURJQV9JTkZPOiJtZWRpYV9pbmZvIixTVEFUSVNUSUNTX0lORk86InN0YXRpc3RpY3NfaW5mbyJ9O24uZGVmYXVsdD1pfSx7fV0sMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKX1yZXR1cm4gcihlLG51bGwsW3trZXk6ImdldFNpbGVudEZyYW1lIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/bmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDM1LDEyOF0pOjI9PT1lP25ldyBVaW50OEFycmF5KFszMywwLDczLDE0NCwyLDI1LDAsMzUsMTI4XSk6Mz09PWU/bmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTQyXSk6ND09PWU/bmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTI4LDQ0LDEyOCw4LDIsNTZdKTo1PT09ZT9uZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxMzAsNDgsNCwxNTMsMCwzMywxNDQsMiw1Nl0pOjY9PT1lP25ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzMiwxMzIsMSwzOCw2NCw4LDEwMCwwLDEzMCw0OCw0LDE1MywwLDMzLDE0NCwyLDAsMTc4LDAsMzIsOCwyMjRdKTpudWxsfX1dKSxlfSgpO24uZGVmYXVsdD1zfSx7fV0sMzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKX1yZXR1cm4gcihlLG51bGwsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7ZS50eXBlcz17YXZjMTpbXSxhdmNDOltdLGJ0cnQ6W10sZGluZjpbXSxkcmVmOltdLGVzZHM6W10sZnR5cDpbXSxoZGxyOltdLG1kYXQ6W10sbWRoZDpbXSxtZGlhOltdLG1maGQ6W10sbWluZjpbXSxtb29mOltdLG1vb3Y6W10sbXA0YTpbXSxtdmV4OltdLG12aGQ6W10sc2R0cDpbXSxzdGJsOltdLHN0Y286W10sc3RzYzpbXSxzdHNkOltdLHN0c3o6W10sc3R0czpbXSx0ZmR0OltdLHRmaGQ6W10sdHJhZjpbXSx0cmFrOltdLHRydW46W10sdHJleDpbXSx0a2hkOltdLHZtaGQ6W10sc21oZDpbXSwiLm1wMyI6W119O2Zvcih2YXIgdCBpbiBlLnR5cGVzKWUudHlwZXMuaGFzT3duUHJvcGVydHkodCkmJihlLnR5cGVzW3RdPVt0LmNoYXJDb2RlQXQoMCksdC5jaGFyQ29kZUF0KDEpLHQuY2hhckNvZGVBdCgyKSx0LmNoYXJDb2RlQXQoMyldKTt2YXIgbj1lLmNvbnN0YW50cz17fTtuLkZUWVA9bmV3IFVpbnQ4QXJyYXkoWzEwNSwxMTUsMTExLDEwOSwwLDAsMCwxLDEwNSwxMTUsMTExLDEwOSw5NywxMTgsOTksNDldKSxuLlNUU0RfUFJFRklYPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDFdKSxuLlNUVFM9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMF0pLG4uU1RTQz1uLlNUQ089bi5TVFRTLG4uU1RTWj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSxuLkhETFJfVklERU89bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTgsMTA1LDEwMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODYsMTA1LDEwMCwxMDEsMTExLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pLG4uSERMUl9BVURJTz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExNSwxMTEsMTE3LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywxMTEsMTE3LDExMCwxMDAsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksbi5EUkVGPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIsMTE3LDExNCwxMDgsMzIsMCwwLDAsMV0pLG4uU01IRD1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwXSksbi5WTUhEPW5ldyBVaW50OEFycmF5KFswLDAsMCwxLDAsMCwwLDAsMCwwLDAsMF0pfX0se2tleToiYm94Iix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9OCxuPW51bGwsaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkscj1pLmxlbmd0aCxzPTA7czxyO3MrKyl0Kz1pW3NdLmJ5dGVMZW5ndGg7bj1uZXcgVWludDhBcnJheSh0KSxuWzBdPXQ+Pj4yNCYyNTUsblsxXT10Pj4+MTYmMjU1LG5bMl09dD4+PjgmMjU1LG5bM109MjU1JnQsbi5zZXQoZSw0KTtmb3IodmFyIGE9OCxvPTA7bzxyO28rKyluLnNldChpW29dLGEpLGErPWlbb10uYnl0ZUxlbmd0aDtyZXR1cm4gbn19LHtrZXk6ImdlbmVyYXRlSW5pdFNlZ21lbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPWUuYm94KGUudHlwZXMuZnR5cCxlLmNvbnN0YW50cy5GVFlQKSxpPWUubW9vdih0KSxyPW5ldyBVaW50OEFycmF5KG4uYnl0ZUxlbmd0aCtpLmJ5dGVMZW5ndGgpO3JldHVybiByLnNldChuLDApLHIuc2V0KGksbi5ieXRlTGVuZ3RoKSxyfX0se2tleToibW9vdiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49ZS5tdmhkKHQudGltZXNjYWxlLHQuZHVyYXRpb24pLGk9ZS50cmFrKHQpLHI9ZS5tdmV4KHQpO3JldHVybiBlLmJveChlLnR5cGVzLm1vb3YsbixpLHIpfX0se2tleToibXZoZCIsdmFsdWU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5ib3goZS50eXBlcy5tdmhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCx0Pj4+MjQmMjU1LHQ+Pj4xNiYyNTUsdD4+PjgmMjU1LDI1NSZ0LG4+Pj4yNCYyNTUsbj4+PjE2JjI1NSxuPj4+OCYyNTUsMjU1Jm4sMCwxLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSkpfX0se2tleToidHJhayIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYm94KGUudHlwZXMudHJhayxlLnRraGQodCksZS5tZGlhKHQpKX19LHtrZXk6InRraGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPXQuaWQsaT10LmR1cmF0aW9uLHI9dC5wcmVzZW50V2lkdGgscz10LnByZXNlbnRIZWlnaHQ7cmV0dXJuIGUuYm94KGUudHlwZXMudGtoZCxuZXcgVWludDhBcnJheShbMCwwLDAsNywwLDAsMCwwLDAsMCwwLDAsbj4+PjI0JjI1NSxuPj4+MTYmMjU1LG4+Pj44JjI1NSwyNTUmbiwwLDAsMCwwLGk+Pj4yNCYyNTUsaT4+PjE2JjI1NSxpPj4+OCYyNTUsMjU1JmksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjQsMCwwLDAscj4+PjgmMjU1LDI1NSZyLDAsMCxzPj4+OCYyNTUsMjU1JnMsMCwwXSkpfX0se2tleToibWRpYSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYm94KGUudHlwZXMubWRpYSxlLm1kaGQodCksZS5oZGxyKHQpLGUubWluZih0KSl9fSx7a2V5OiJtZGhkIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj10LnRpbWVzY2FsZSxpPXQuZHVyYXRpb247cmV0dXJuIGUuYm94KGUudHlwZXMubWRoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsbj4+PjI0JjI1NSxuPj4+MTYmMjU1LG4+Pj44JjI1NSwyNTUmbixpPj4+MjQmMjU1LGk+Pj4xNiYyNTUsaT4+PjgmMjU1LDI1NSZpLDg1LDE5NiwwLDBdKSl9fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj1udWxsO3JldHVybiBuPSJhdWRpbyI9PT10LnR5cGU/ZS5jb25zdGFudHMuSERMUl9BVURJTzplLmNvbnN0YW50cy5IRExSX1ZJREVPLGUuYm94KGUudHlwZXMuaGRscixuKX19LHtrZXk6Im1pbmYiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPW51bGw7cmV0dXJuIG49ImF1ZGlvIj09PXQudHlwZT9lLmJveChlLnR5cGVzLnNtaGQsZS5jb25zdGFudHMuU01IRCk6ZS5ib3goZS50eXBlcy52bWhkLGUuY29uc3RhbnRzLlZNSEQpLGUuYm94KGUudHlwZXMubWluZixuLGUuZGluZigpLGUuc3RibCh0KSl9fSx7a2V5OiJkaW5mIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLmJveChlLnR5cGVzLmRpbmYsZS5ib3goZS50eXBlcy5kcmVmLGUuY29uc3RhbnRzLkRSRUYpKX19LHtrZXk6InN0YmwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBlLmJveChlLnR5cGVzLnN0YmwsZS5zdHNkKHQpLGUuYm94KGUudHlwZXMuc3R0cyxlLmNvbnN0YW50cy5TVFRTKSxlLmJveChlLnR5cGVzLnN0c2MsZS5jb25zdGFudHMuU1RTQyksZS5ib3goZS50eXBlcy5zdHN6LGUuY29uc3RhbnRzLlNUU1opLGUuYm94KGUudHlwZXMuc3RjbyxlLmNvbnN0YW50cy5TVENPKSl9fSx7a2V5OiJzdHNkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4iYXVkaW8iPT09dC50eXBlPyJtcDMiPT09dC5jb2RlYz9lLmJveChlLnR5cGVzLnN0c2QsZS5jb25zdGFudHMuU1RTRF9QUkVGSVgsZS5tcDModCkpOmUuYm94KGUudHlwZXMuc3RzZCxlLmNvbnN0YW50cy5TVFNEX1BSRUZJWCxlLm1wNGEodCkpOmUuYm94KGUudHlwZXMuc3RzZCxlLmNvbnN0YW50cy5TVFNEX1BSRUZJWCxlLmF2YzEodCkpfX0se2tleToibXAzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj10LmNoYW5uZWxDb3VudCxpPXQuYXVkaW9TYW1wbGVSYXRlLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCxuLDAsMTYsMCwwLDAsMCxpPj4+OCYyNTUsMjU1JmksMCwwXSk7cmV0dXJuIGUuYm94KGUudHlwZXNbIi5tcDMiXSxyKX19LHtrZXk6Im1wNGEiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPXQuY2hhbm5lbENvdW50LGk9dC5hdWRpb1NhbXBsZVJhdGUscj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLG4sMCwxNiwwLDAsMCwwLGk+Pj44JjI1NSwyNTUmaSwwLDBdKTtyZXR1cm4gZS5ib3goZS50eXBlcy5tcDRhLHIsZS5lc2RzKHQpKX19LHtrZXk6ImVzZHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPXQuY29uZmlnfHxbXSxpPW4ubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMywyMytpLDAsMSwwLDQsMTUraSw2NCwyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNV0uY29uY2F0KFtpXSkuY29uY2F0KG4pLmNvbmNhdChbNiwxLDJdKSk7cmV0dXJuIGUuYm94KGUudHlwZXMuZXNkcyxyKX19LHtrZXk6ImF2YzEiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPXQuYXZjYyxpPXQuY29kZWNXaWR0aCxyPXQuY29kZWNIZWlnaHQscz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsaT4+PjgmMjU1LDI1NSZpLHI+Pj44JjI1NSwyNTUmciwwLDcyLDAsMCwwLDcyLDAsMCwwLDAsMCwwLDAsMSwxMCwxMjAsMTEzLDExMyw0NywxMDIsMTA4LDExOCw0NiwxMDYsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMjU1LDI1NV0pO3JldHVybiBlLmJveChlLnR5cGVzLmF2YzEscyxlLmJveChlLnR5cGVzLmF2Y0MsbikpfX0se2tleToibXZleCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYm94KGUudHlwZXMubXZleCxlLnRyZXgodCkpfX0se2tleToidHJleCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49dC5pZCxpPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLG4+Pj4yNCYyNTUsbj4+PjE2JjI1NSxuPj4+OCYyNTUsMjU1Jm4sMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMV0pO3JldHVybiBlLmJveChlLnR5cGVzLnRyZXgsaSl9fSx7a2V5OiJtb29mIix2YWx1ZTpmdW5jdGlvbih0LG4pe3JldHVybiBlLmJveChlLnR5cGVzLm1vb2YsZS5tZmhkKHQuc2VxdWVuY2VOdW1iZXIpLGUudHJhZih0LG4pKX19LHtrZXk6Im1maGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLHQ+Pj4yNCYyNTUsdD4+PjE2JjI1NSx0Pj4+OCYyNTUsMjU1JnRdKTtyZXR1cm4gZS5ib3goZS50eXBlcy5tZmhkLG4pfX0se2tleToidHJhZiIsdmFsdWU6ZnVuY3Rpb24odCxuKXt2YXIgaT10LmlkLHI9ZS5ib3goZS50eXBlcy50ZmhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGk+Pj4yNCYyNTUsaT4+PjE2JjI1NSxpPj4+OCYyNTUsMjU1JmldKSkscz1lLmJveChlLnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsbj4+PjI0JjI1NSxuPj4+MTYmMjU1LG4+Pj44JjI1NSwyNTUmbl0pKSxhPWUuc2R0cCh0KSxvPWUudHJ1bih0LGEuYnl0ZUxlbmd0aCsxNisxNis4KzE2KzgrOCk7cmV0dXJuIGUuYm94KGUudHlwZXMudHJhZixyLHMsbyxhKX19LHtrZXk6InNkdHAiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10LnNhbXBsZXN8fFtdLGk9bi5sZW5ndGgscj1uZXcgVWludDhBcnJheSg0K2kpLHM9MDtzPGk7cysrKXt2YXIgYT1uW3NdLmZsYWdzO3Jbcys0XT1hLmlzTGVhZGluZzw8NnxhLmRlcGVuZHNPbjw8NHxhLmlzRGVwZW5kZWRPbjw8MnxhLmhhc1JlZHVuZGFuY3l9cmV0dXJuIGUuYm94KGUudHlwZXMuc2R0cCxyKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKHQsbil7dmFyIGk9dC5zYW1wbGVzfHxbXSxyPWkubGVuZ3RoLHM9MTIrMTYqcixhPW5ldyBVaW50OEFycmF5KHMpO24rPTgrcyxhLnNldChbMCwwLDE1LDEscj4+PjI0JjI1NSxyPj4+MTYmMjU1LHI+Pj44JjI1NSwyNTUmcixuPj4+MjQmMjU1LG4+Pj4xNiYyNTUsbj4+PjgmMjU1LDI1NSZuXSwwKTtmb3IodmFyIG89MDtvPHI7bysrKXt2YXIgdT1pW29dLmR1cmF0aW9uLGw9aVtvXS5zaXplLGQ9aVtvXS5mbGFncyxoPWlbb10uY3RzO2Euc2V0KFt1Pj4+MjQmMjU1LHU+Pj4xNiYyNTUsdT4+PjgmMjU1LDI1NSZ1LGw+Pj4yNCYyNTUsbD4+PjE2JjI1NSxsPj4+OCYyNTUsMjU1JmwsZC5pc0xlYWRpbmc8PDJ8ZC5kZXBlbmRzT24sZC5pc0RlcGVuZGVkT248PDZ8ZC5oYXNSZWR1bmRhbmN5PDw0fGQuaXNOb25TeW5jLDAsMCxoPj4+MjQmMjU1LGg+Pj4xNiYyNTUsaD4+PjgmMjU1LDI1NSZoXSwxMisxNipvKX1yZXR1cm4gZS5ib3goZS50eXBlcy50cnVuLGEpfX0se2tleToibWRhdCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYm94KGUudHlwZXMubWRhdCx0KX19XSksZX0oKTtzLmluaXQoKSxuLmRlZmF1bHQ9c30se31dLDM4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksYT1lKCIuLi91dGlscy9sb2dnZXIuanMiKSxvPWkoYSksdT1lKCIuL21wNC1nZW5lcmF0b3IuanMiKSxsPWkodSksZD1lKCIuL2FhYy1zaWxlbnQuanMiKSxoPWkoZCksZj1lKCIuLi91dGlscy9icm93c2VyLmpzIiksYz1pKGYpLF89ZSgiLi4vY29yZS9tZWRpYS1zZWdtZW50LWluZm8uanMiKSxtPWUoIi4uL3V0aWxzL2V4Y2VwdGlvbi5qcyIpLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLlRBRz0iTVA0UmVtdXhlciIsdGhpcy5fY29uZmlnPXQsdGhpcy5faXNMaXZlPXQuaXNMaXZlPT09ITAsdGhpcy5fZHRzQmFzZT0tMSx0aGlzLl9kdHNCYXNlSW5pdGVkPSExLHRoaXMuX2F1ZGlvRHRzQmFzZT0xLzAsdGhpcy5fdmlkZW9EdHNCYXNlPTEvMCx0aGlzLl9hdWRpb05leHREdHM9dm9pZCAwLHRoaXMuX3ZpZGVvTmV4dER0cz12b2lkIDAsdGhpcy5fYXVkaW9NZXRhPW51bGwsdGhpcy5fdmlkZW9NZXRhPW51bGwsdGhpcy5fYXVkaW9TZWdtZW50SW5mb0xpc3Q9bmV3IF8uTWVkaWFTZWdtZW50SW5mb0xpc3QoImF1ZGlvIiksdGhpcy5fdmlkZW9TZWdtZW50SW5mb0xpc3Q9bmV3IF8uTWVkaWFTZWdtZW50SW5mb0xpc3QoInZpZGVvIiksdGhpcy5fb25Jbml0U2VnbWVudD1udWxsLHRoaXMuX29uTWVkaWFTZWdtZW50PW51bGwsdGhpcy5fZm9yY2VGaXJzdElEUj0hKCFjLmRlZmF1bHQuY2hyb21lfHwhKGMuZGVmYXVsdC52ZXJzaW9uLm1ham9yPDUwfHw1MD09PWMuZGVmYXVsdC52ZXJzaW9uLm1ham9yJiZjLmRlZmF1bHQudmVyc2lvbi5idWlsZDwyNjYxKSksdGhpcy5fZmlsbFNpbGVudEFmdGVyU2Vlaz1jLmRlZmF1bHQubXNlZGdlfHxjLmRlZmF1bHQubXNpZSx0aGlzLl9tcDNVc2VNcGVnQXVkaW89IWMuZGVmYXVsdC5maXJlZm94fXJldHVybiBzKGUsW3trZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZHRzQmFzZT0tMSx0aGlzLl9kdHNCYXNlSW5pdGVkPSExLHRoaXMuX2F1ZGlvTWV0YT1udWxsLHRoaXMuX3ZpZGVvTWV0YT1udWxsLHRoaXMuX2F1ZGlvU2VnbWVudEluZm9MaXN0LmNsZWFyKCksdGhpcy5fYXVkaW9TZWdtZW50SW5mb0xpc3Q9bnVsbCx0aGlzLl92aWRlb1NlZ21lbnRJbmZvTGlzdC5jbGVhcigpLHRoaXMuX3ZpZGVvU2VnbWVudEluZm9MaXN0PW51bGwsdGhpcy5fb25Jbml0U2VnbWVudD1udWxsLHRoaXMuX29uTWVkaWFTZWdtZW50PW51bGx9fSx7a2V5OiJiaW5kRGF0YVNvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUub25EYXRhQXZhaWxhYmxlPXRoaXMucmVtdXguYmluZCh0aGlzKSxlLm9uVHJhY2tNZXRhZGF0YT10aGlzLl9vblRyYWNrTWV0YWRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpLHRoaXN9fSx7a2V5OiJpbnNlcnREaXNjb250aW51aXR5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2F1ZGlvTmV4dER0cz10aGlzLl92aWRlb05leHREdHM9dm9pZCAwfX0se2tleToic2VlayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fdmlkZW9TZWdtZW50SW5mb0xpc3QuY2xlYXIoKSx0aGlzLl9hdWRpb1NlZ21lbnRJbmZvTGlzdC5jbGVhcigpfX0se2tleToicmVtdXgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX29uTWVkaWFTZWdtZW50KXRocm93IG5ldyBtLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiTVA0UmVtdXhlcjogb25NZWRpYVNlZ21lbnQgY2FsbGJhY2sgbXVzdCBiZSBzcGVjaWZpY2VkISIpO3RoaXMuX2R0c0Jhc2VJbml0ZWR8fHRoaXMuX2NhbGN1bGF0ZUR0c0Jhc2UoZSx0KSx0aGlzLl9yZW11eFZpZGVvKHQpLHRoaXMuX3JlbXV4QXVkaW8oZSl9fSx7a2V5OiJfb25UcmFja01ldGFkYXRhUmVjZWl2ZWQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxpPSJtcDQiLHI9dC5jb2RlYztpZigiYXVkaW8iPT09ZSl0aGlzLl9hdWRpb01ldGE9dCwibXAzIj09PXQuY29kZWMmJnRoaXMuX21wM1VzZU1wZWdBdWRpbz8oaT0ibXBlZyIscj0iIixuPW5ldyBVaW50OEFycmF5KTpuPWwuZGVmYXVsdC5nZW5lcmF0ZUluaXRTZWdtZW50KHQpO2Vsc2V7aWYoInZpZGVvIiE9PWUpcmV0dXJuO3RoaXMuX3ZpZGVvTWV0YT10LG49bC5kZWZhdWx0LmdlbmVyYXRlSW5pdFNlZ21lbnQodCl9aWYoIXRoaXMuX29uSW5pdFNlZ21lbnQpdGhyb3cgbmV3IG0uSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJNUDRSZW11eGVyOiBvbkluaXRTZWdtZW50IGNhbGxiYWNrIG11c3QgYmUgc3BlY2lmaWVkISIpO3RoaXMuX29uSW5pdFNlZ21lbnQoZSx7dHlwZTplLGRhdGE6bi5idWZmZXIsY29kZWM6cixjb250YWluZXI6ZSsiLyIraSxtZWRpYUR1cmF0aW9uOnQuZHVyYXRpb259KX19LHtrZXk6Il9jYWxjdWxhdGVEdHNCYXNlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2R0c0Jhc2VJbml0ZWR8fChlLnNhbXBsZXMmJmUuc2FtcGxlcy5sZW5ndGgmJih0aGlzLl9hdWRpb0R0c0Jhc2U9ZS5zYW1wbGVzWzBdLmR0cyksdC5zYW1wbGVzJiZ0LnNhbXBsZXMubGVuZ3RoJiYodGhpcy5fdmlkZW9EdHNCYXNlPXQuc2FtcGxlc1swXS5kdHMpLHRoaXMuX2R0c0Jhc2U9TWF0aC5taW4odGhpcy5fYXVkaW9EdHNCYXNlLHRoaXMuX3ZpZGVvRHRzQmFzZSksdGhpcy5fZHRzQmFzZUluaXRlZD0hMCl9fSx7a2V5OiJfcmVtdXhBdWRpbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPXQuc2FtcGxlcyxpPXZvaWQgMCxyPS0xLHM9LTEsYT0ibXAzIj09PXRoaXMuX2F1ZGlvTWV0YS5jb2RlYyYmdGhpcy5fbXAzVXNlTXBlZ0F1ZGlvLG89dGhpcy5fZHRzQmFzZUluaXRlZCYmdm9pZCAwPT09dGhpcy5fYXVkaW9OZXh0RHRzLHU9ITEsZD0tMTtpZihuJiYwIT09bi5sZW5ndGgpe3ZhciBoPTAsZj0wLGM9bnVsbDthPyhoPXQubGVuZ3RoLGY9MCxjPW5ldyBVaW50OEFycmF5KGgpKTooaD04K3QubGVuZ3RoLGY9OCxjPW5ldyBVaW50OEFycmF5KGgpLGNbMF09aD4+PjI0JjI1NSxjWzFdPWg+Pj4xNiYyNTUsY1syXT1oPj4+OCYyNTUsY1szXT0yNTUmaCxjLnNldChsLmRlZmF1bHQudHlwZXMubWRhdCw0KSk7Zm9yKHZhciBtPVtdO24ubGVuZ3RoOyl7dmFyIHA9bi5zaGlmdCgpLHY9cC51bml0LGc9cC5kdHMtdGhpcy5fZHRzQmFzZTtpZih2b2lkIDA9PWkpaWYodm9pZCAwPT10aGlzLl9hdWRpb05leHREdHMpaWYodGhpcy5fYXVkaW9TZWdtZW50SW5mb0xpc3QuaXNFbXB0eSgpKWk9MCx0aGlzLl9maWxsU2lsZW50QWZ0ZXJTZWVrJiYhdGhpcy5fdmlkZW9TZWdtZW50SW5mb0xpc3QuaXNFbXB0eSgpJiYibXAzIiE9PXRoaXMuX2F1ZGlvTWV0YS5jb2RlYyYmKHU9ITApO2Vsc2V7dmFyIHk9dGhpcy5fYXVkaW9TZWdtZW50SW5mb0xpc3QuZ2V0TGFzdFNhbXBsZUJlZm9yZShnKTtpZihudWxsIT15KXt2YXIgRT1nLSh5Lm9yaWdpbmFsRHRzK3kuZHVyYXRpb24pO0U8PTMmJihFPTApO3ZhciBiPXkuZHRzK3kuZHVyYXRpb24rRTtpPWctYn1lbHNlIGk9MH1lbHNlIGk9Zy10aGlzLl9hdWRpb05leHREdHM7dmFyIFM9Zy1pO2lmKHUpe3ZhciBrPXRoaXMuX3ZpZGVvU2VnbWVudEluZm9MaXN0LmdldExhc3RTZWdtZW50QmVmb3JlKGcpO251bGwhPWsmJmsuYmVnaW5EdHM8Uz8oZD1TLWsuYmVnaW5EdHMsUz1rLmJlZ2luRHRzKTp1PSExfWlmKHI9PT0tMSYmKHI9UyksdSl7dT0hMSxuLnVuc2hpZnQocCk7dmFyIEw9dGhpcy5fZ2VuZXJhdGVTaWxlbnRBdWRpbyhTLGQpO2lmKG51bGw9PUwpY29udGludWU7dmFyIHc9TC5tcDRTYW1wbGUsUj1MLnVuaXQ7bS5wdXNoKHcpLGgrPVIuYnl0ZUxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGgpLGNbMF09aD4+PjI0JjI1NSxjWzFdPWg+Pj4xNiYyNTUsY1syXT1oPj4+OCYyNTUsY1szXT0yNTUmaCxjLnNldChsLmRlZmF1bHQudHlwZXMubWRhdCw0KSxjLnNldChSLGYpLGYrPVIuYnl0ZUxlbmd0aH1lbHNle3ZhciBBPTA7aWYobi5sZW5ndGg+PTEpe0E9blswXS5kdHMtdGhpcy5fZHRzQmFzZS1pLVN9ZWxzZSBBPW0ubGVuZ3RoPj0xP21bbS5sZW5ndGgtMV0uZHVyYXRpb246dGhpcy5fYXVkaW9NZXRhLnJlZlNhbXBsZUR1cmF0aW9uO3ZhciBPPXtkdHM6UyxwdHM6UyxjdHM6MCxzaXplOnYuYnl0ZUxlbmd0aCxkdXJhdGlvbjpBLG9yaWdpbmFsRHRzOmcsZmxhZ3M6e2lzTGVhZGluZzowLGRlcGVuZHNPbjoxLGlzRGVwZW5kZWRPbjowLGhhc1JlZHVuZGFuY3k6MH19O20ucHVzaChPKSxjLnNldCh2LGYpLGYrPXYuYnl0ZUxlbmd0aH19dmFyIFQ9bVttLmxlbmd0aC0xXTtzPVQuZHRzK1QuZHVyYXRpb24sdGhpcy5fYXVkaW9OZXh0RHRzPXM7dmFyIEk9bmV3IF8uTWVkaWFTZWdtZW50SW5mbztJLmJlZ2luRHRzPXIsSS5lbmREdHM9cyxJLmJlZ2luUHRzPXIsSS5lbmRQdHM9cyxJLm9yaWdpbmFsQmVnaW5EdHM9bVswXS5vcmlnaW5hbER0cyxJLm9yaWdpbmFsRW5kRHRzPVQub3JpZ2luYWxEdHMrVC5kdXJhdGlvbixJLmZpcnN0U2FtcGxlPW5ldyBfLlNhbXBsZUluZm8obVswXS5kdHMsbVswXS5wdHMsbVswXS5kdXJhdGlvbixtWzBdLm9yaWdpbmFsRHRzLCExKSxJLmxhc3RTYW1wbGU9bmV3IF8uU2FtcGxlSW5mbyhULmR0cyxULnB0cyxULmR1cmF0aW9uLFQub3JpZ2luYWxEdHMsITEpLHRoaXMuX2lzTGl2ZXx8dGhpcy5fYXVkaW9TZWdtZW50SW5mb0xpc3QuYXBwZW5kKEkpLHQuc2FtcGxlcz1tLHQuc2VxdWVuY2VOdW1iZXIrKzt2YXIgQz1udWxsO0M9YT9uZXcgVWludDhBcnJheTpsLmRlZmF1bHQubW9vZih0LHIpLHQuc2FtcGxlcz1bXSx0Lmxlbmd0aD0wO3ZhciB4PXt0eXBlOiJhdWRpbyIsZGF0YTp0aGlzLl9tZXJnZUJveGVzKEMsYykuYnVmZmVyLHNhbXBsZUNvdW50Om0ubGVuZ3RoLGluZm86SX07YSYmbyYmKHgudGltZXN0YW1wT2Zmc2V0PXIpLHRoaXMuX29uTWVkaWFTZWdtZW50KCJhdWRpbyIseCl9fX0se2tleToiX2dlbmVyYXRlU2lsZW50QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7by5kZWZhdWx0LnYodGhpcy5UQUcsIkdlbmVyYXRlU2lsZW50QXVkaW86IGR0cyA9ICIrZSsiLCBkdXJhdGlvbiA9ICIrdCk7dmFyIG49aC5kZWZhdWx0LmdldFNpbGVudEZyYW1lKHRoaXMuX2F1ZGlvTWV0YS5jaGFubmVsQ291bnQpO3JldHVybiBudWxsPT1uPyhvLmRlZmF1bHQudyh0aGlzLlRBRywiQ2Fubm90IGdlbmVyYXRlIHNpbGVudCBhYWMgZnJhbWUgZm9yIGNoYW5uZWxDb3VudCA9ICIrdGhpcy5fYXVkaW9NZXRhLmNoYW5uZWxDb3VudCksbnVsbCk6e3VuaXQ6bixtcDRTYW1wbGU6e2R0czplLHB0czplLGN0czowLHNpemU6bi5ieXRlTGVuZ3RoLGR1cmF0aW9uOnQsb3JpZ2luYWxEdHM6ZSxmbGFnczp7aXNMZWFkaW5nOjAsZGVwZW5kc09uOjEsaXNEZXBlbmRlZE9uOjAsaGFzUmVkdW5kYW5jeTowfX19fX0se2tleToiX3JlbXV4VmlkZW8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUsbj10LnNhbXBsZXMsaT12b2lkIDAscj0tMSxzPS0xLGE9LTEsbz0tMTtpZihuJiYwIT09bi5sZW5ndGgpe3ZhciB1PTgrZS5sZW5ndGgsZD1uZXcgVWludDhBcnJheSh1KTtkWzBdPXU+Pj4yNCYyNTUsZFsxXT11Pj4+MTYmMjU1LGRbMl09dT4+PjgmMjU1LGRbM109MjU1JnUsZC5zZXQobC5kZWZhdWx0LnR5cGVzLm1kYXQsNCk7Zm9yKHZhciBoPTgsZj1bXSxjPW5ldyBfLk1lZGlhU2VnbWVudEluZm87bi5sZW5ndGg7KXt2YXIgbT1uLnNoaWZ0KCkscD1tLmlzS2V5ZnJhbWUsdj1tLmR0cy10aGlzLl9kdHNCYXNlO2lmKHZvaWQgMD09aSlpZih2b2lkIDA9PXRoaXMuX3ZpZGVvTmV4dER0cylpZih0aGlzLl92aWRlb1NlZ21lbnRJbmZvTGlzdC5pc0VtcHR5KCkpaT0wO2Vsc2V7dmFyIGc9dGhpcy5fdmlkZW9TZWdtZW50SW5mb0xpc3QuZ2V0TGFzdFNhbXBsZUJlZm9yZSh2KTtpZihudWxsIT1nKXt2YXIgeT12LShnLm9yaWdpbmFsRHRzK2cuZHVyYXRpb24pO3k8PTMmJih5PTApO3ZhciBFPWcuZHRzK2cuZHVyYXRpb24reTtpPXYtRX1lbHNlIGk9MH1lbHNlIGk9di10aGlzLl92aWRlb05leHREdHM7dmFyIGI9di1pLFM9bS5jdHMsaz1iK1M7cj09PS0xJiYocj1iLGE9ayk7Zm9yKHZhciBMPTA7bS51bml0cy5sZW5ndGg7KXt2YXIgdz1tLnVuaXRzLnNoaWZ0KCksUj13LmRhdGE7ZC5zZXQoUixoKSxoKz1SLmJ5dGVMZW5ndGgsTCs9Ui5ieXRlTGVuZ3RofXZhciBBPTA7aWYobi5sZW5ndGg+PTEpe0E9blswXS5kdHMtdGhpcy5fZHRzQmFzZS1pLWJ9ZWxzZSBBPWYubGVuZ3RoPj0xP2ZbZi5sZW5ndGgtMV0uZHVyYXRpb246dGhpcy5fdmlkZW9NZXRhLnJlZlNhbXBsZUR1cmF0aW9uO2lmKHApe3ZhciBPPW5ldyBfLlNhbXBsZUluZm8oYixrLEEsbS5kdHMsITApO08uZmlsZXBvc2l0aW9uPW0uZmlsZXBvc2l0aW9uLGMuYXBwZW5kU3luY1BvaW50KE8pfXZhciBUPXtkdHM6YixwdHM6ayxjdHM6UyxzaXplOkwsaXNLZXlmcmFtZTpwLGR1cmF0aW9uOkEsb3JpZ2luYWxEdHM6dixmbGFnczp7aXNMZWFkaW5nOjAsZGVwZW5kc09uOnA/MjoxLGlzRGVwZW5kZWRPbjpwPzE6MCxoYXNSZWR1bmRhbmN5OjAsaXNOb25TeW5jOnA/MDoxfX07Zi5wdXNoKFQpfXZhciBJPWZbZi5sZW5ndGgtMV07aWYocz1JLmR0cytJLmR1cmF0aW9uLG89SS5wdHMrSS5kdXJhdGlvbix0aGlzLl92aWRlb05leHREdHM9cyxjLmJlZ2luRHRzPXIsYy5lbmREdHM9cyxjLmJlZ2luUHRzPWEsYy5lbmRQdHM9byxjLm9yaWdpbmFsQmVnaW5EdHM9ZlswXS5vcmlnaW5hbER0cyxjLm9yaWdpbmFsRW5kRHRzPUkub3JpZ2luYWxEdHMrSS5kdXJhdGlvbixjLmZpcnN0U2FtcGxlPW5ldyBfLlNhbXBsZUluZm8oZlswXS5kdHMsZlswXS5wdHMsZlswXS5kdXJhdGlvbixmWzBdLm9yaWdpbmFsRHRzLGZbMF0uaXNLZXlmcmFtZSksYy5sYXN0U2FtcGxlPW5ldyBfLlNhbXBsZUluZm8oSS5kdHMsSS5wdHMsSS5kdXJhdGlvbixJLm9yaWdpbmFsRHRzLEkuaXNLZXlmcmFtZSksdGhpcy5faXNMaXZlfHx0aGlzLl92aWRlb1NlZ21lbnRJbmZvTGlzdC5hcHBlbmQoYyksdC5zYW1wbGVzPWYsdC5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2ZvcmNlRmlyc3RJRFIpe3ZhciBDPWZbMF0uZmxhZ3M7Qy5kZXBlbmRzT249MixDLmlzTm9uU3luYz0wfXZhciB4PWwuZGVmYXVsdC5tb29mKHQscik7dC5zYW1wbGVzPVtdLHQubGVuZ3RoPTAsdGhpcy5fb25NZWRpYVNlZ21lbnQoInZpZGVvIix7dHlwZToidmlkZW8iLGRhdGE6dGhpcy5fbWVyZ2VCb3hlcyh4LGQpLmJ1ZmZlcixzYW1wbGVDb3VudDpmLmxlbmd0aCxpbmZvOmN9KX19fSx7a2V5OiJfbWVyZ2VCb3hlcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgVWludDhBcnJheShlLmJ5dGVMZW5ndGgrdC5ieXRlTGVuZ3RoKTtyZXR1cm4gbi5zZXQoZSwwKSxuLnNldCh0LGUuYnl0ZUxlbmd0aCksbn19LHtrZXk6Im9uSW5pdFNlZ21lbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkluaXRTZWdtZW50fSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25Jbml0U2VnbWVudD1lfX0se2tleToib25NZWRpYVNlZ21lbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbk1lZGlhU2VnbWVudH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uTWVkaWFTZWdtZW50PWV9fV0pLGV9KCk7bi5kZWZhdWx0PXB9LHsiLi4vY29yZS9tZWRpYS1zZWdtZW50LWluZm8uanMiOjgsIi4uL3V0aWxzL2Jyb3dzZXIuanMiOjM5LCIuLi91dGlscy9leGNlcHRpb24uanMiOjQwLCIuLi91dGlscy9sb2dnZXIuanMiOjQxLCIuL2FhYy1zaWxlbnQuanMiOjM2LCIuL21wNC1nZW5lcmF0b3IuanMiOjM3fV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXt9OyFmdW5jdGlvbigpe3ZhciBlPXNlbGYubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLHQ9LyhlZGdlKVwvKFtcdy5dKykvLmV4ZWMoZSl8fC8ob3ByKVtcL10oW1x3Ll0rKS8uZXhlYyhlKXx8LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhlKXx8LyhpZW1vYmlsZSlbXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8odmVyc2lvbikoYXBwbGV3ZWJraXQpWyBcL10oW1x3Ll0rKS4qKHNhZmFyaSlbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKHdlYmtpdClbIFwvXShbXHcuXSspLioodmVyc2lvbilbIFwvXShbXHcuXSspLiooc2FmYXJpKVsgXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8od2Via2l0KVsgXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKG1zaWUpIChbXHcuXSspLy5leGVjKGUpfHxlLmluZGV4T2YoInRyaWRlbnQiKT49MCYmLyhydikoPzo6fCApKFtcdy5dKykvLmV4ZWMoZSl8fGUuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJi8oZmlyZWZveClbIFwvXShbXHcuXSspLy5leGVjKGUpfHxbXSxuPS8oaXBhZCkvLmV4ZWMoZSl8fC8oaXBvZCkvLmV4ZWMoZSl8fC8od2luZG93cyBwaG9uZSkvLmV4ZWMoZSl8fC8oaXBob25lKS8uZXhlYyhlKXx8LyhraW5kbGUpLy5leGVjKGUpfHwvKGFuZHJvaWQpLy5leGVjKGUpfHwvKHdpbmRvd3MpLy5leGVjKGUpfHwvKG1hYykvLmV4ZWMoZSl8fC8obGludXgpLy5leGVjKGUpfHwvKGNyb3MpLy5leGVjKGUpfHxbXSxyPXticm93c2VyOnRbNV18fHRbM118fHRbMV18fCIiLHZlcnNpb246dFsyXXx8dFs0XXx8IjAiLG1ham9yVmVyc2lvbjp0WzRdfHx0WzJdfHwiMCIscGxhdGZvcm06blswXXx8IiJ9LHM9e307aWYoci5icm93c2VyKXtzW3IuYnJvd3Nlcl09ITA7dmFyIGE9ci5tYWpvclZlcnNpb24uc3BsaXQoIi4iKTtzLnZlcnNpb249e21ham9yOnBhcnNlSW50KHIubWFqb3JWZXJzaW9uLDEwKSxzdHJpbmc6ci52ZXJzaW9ufSxhLmxlbmd0aD4xJiYocy52ZXJzaW9uLm1pbm9yPXBhcnNlSW50KGFbMV0sMTApKSxhLmxlbmd0aD4yJiYocy52ZXJzaW9uLmJ1aWxkPXBhcnNlSW50KGFbMl0sMTApKX1yLnBsYXRmb3JtJiYoc1tyLnBsYXRmb3JtXT0hMCksKHMuY2hyb21lfHxzLm9wcnx8cy5zYWZhcmkpJiYocy53ZWJraXQ9ITApLChzLnJ2fHxzLmllbW9iaWxlKSYmKHMucnYmJmRlbGV0ZSBzLnJ2LHIuYnJvd3Nlcj0ibXNpZSIscy5tc2llPSEwKSxzLmVkZ2UmJihkZWxldGUgcy5lZGdlLHIuYnJvd3Nlcj0ibXNlZGdlIixzLm1zZWRnZT0hMCkscy5vcHImJihyLmJyb3dzZXI9Im9wZXJhIixzLm9wZXJhPSEwKSxzLnNhZmFyaSYmcy5hbmRyb2lkJiYoci5icm93c2VyPSJhbmRyb2lkIixzLmFuZHJvaWQ9ITApLHMubmFtZT1yLmJyb3dzZXIscy5wbGF0Zm9ybT1yLnBsYXRmb3JtO2Zvcih2YXIgbyBpbiBpKWkuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSBpW29dO09iamVjdC5hc3NpZ24oaSxzKX0oKSxuLmRlZmF1bHQ9aX0se31dLDQwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiByKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLG89bi5SdW50aW1lRXhjZXB0aW9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtzKHRoaXMsZSksdGhpcy5fbWVzc2FnZT10fXJldHVybiBhKGUsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSx7a2V5OiJuYW1lIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iUnVudGltZUV4Y2VwdGlvbiJ9fSx7a2V5OiJtZXNzYWdlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVzc2FnZX19XSksZX0oKTtuLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBzKHRoaXMsdCksaSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpfXJldHVybiByKHQsZSksYSh0LFt7a2V5OiJuYW1lIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIn19XSksdH0obyksbi5JbnZhbGlkQXJndW1lbnRFeGNlcHRpb249ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gcyh0aGlzLHQpLGkodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKX1yZXR1cm4gcih0LGUpLGEodCxbe2tleToibmFtZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiJ9fV0pLHR9KG8pLG4uTm90SW1wbGVtZW50ZWRFeGNlcHRpb249ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gcyh0aGlzLHQpLGkodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKX1yZXR1cm4gcih0LGUpLGEodCxbe2tleToibmFtZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIk5vdEltcGxlbWVudGVkRXhjZXB0aW9uIn19XSksdH0obyl9LHt9XSw0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpfXJldHVybiByKGUsbnVsbCxbe2tleToiZSIsdmFsdWU6ZnVuY3Rpb24odCxuKXtpZihlLkVOQUJMRV9FUlJPUil7dCYmIWUuRk9SQ0VfR0xPQkFMX1RBR3x8KHQ9ZS5HTE9CQUxfVEFHKTt2YXIgaT0iWyIrdCsiXSA+ICIrbjtjb25zb2xlLmVycm9yP2NvbnNvbGUuZXJyb3IoaSk6Y29uc29sZS53YXJuP2NvbnNvbGUud2FybihpKTpjb25zb2xlLmxvZyhpKX19fSx7a2V5OiJpIix2YWx1ZTpmdW5jdGlvbih0LG4pe2lmKGUuRU5BQkxFX0lORk8pe3QmJiFlLkZPUkNFX0dMT0JBTF9UQUd8fCh0PWUuR0xPQkFMX1RBRyk7dmFyIGk9IlsiK3QrIl0gPiAiK247Y29uc29sZS5pbmZvP2NvbnNvbGUuaW5mbyhpKTpjb25zb2xlLmxvZyhpKX19fSx7a2V5OiJ3Iix2YWx1ZTpmdW5jdGlvbih0LG4pe2lmKGUuRU5BQkxFX1dBUk4pe3QmJiFlLkZPUkNFX0dMT0JBTF9UQUd8fCh0PWUuR0xPQkFMX1RBRyk7dmFyIGk9IlsiK3QrIl0gPiAiK247Y29uc29sZS53YXJuP2NvbnNvbGUud2FybihpKTpjb25zb2xlLmxvZyhpKX19fSx7a2V5OiJkIix2YWx1ZTpmdW5jdGlvbih0LG4pe2lmKGUuRU5BQkxFX0RFQlVHKXt0JiYhZS5GT1JDRV9HTE9CQUxfVEFHfHwodD1lLkdMT0JBTF9UQUcpO3ZhciBpPSJbIit0KyJdID4gIituO2NvbnNvbGUuZGVidWc/Y29uc29sZS5kZWJ1ZyhpKTpjb25zb2xlLmxvZyhpKX19fSx7a2V5OiJ2Iix2YWx1ZTpmdW5jdGlvbih0LG4pe2UuRU5BQkxFX1ZFUkJPU0UmJih0JiYhZS5GT1JDRV9HTE9CQUxfVEFHfHwodD1lLkdMT0JBTF9UQUcpLGNvbnNvbGUubG9nKCJbIit0KyJdID4gIituKSl9fV0pLGV9KCk7cy5HTE9CQUxfVEFHPSJmbHYuanMiLHMuRk9SQ0VfR0xPQkFMX1RBRz0hMSxzLkVOQUJMRV9FUlJPUj0hMCxzLkVOQUJMRV9JTkZPPSEwLHMuRU5BQkxFX1dBUk49ITAscy5FTkFCTEVfREVCVUc9ITAscy5FTkFCTEVfVkVSQk9TRT0hMCxuLmRlZmF1bHQ9c30se31dLDQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksYT1lKCJldmVudHMiKSxvPWkoYSksdT1lKCIuL2xvZ2dlci5qcyIpLGw9aSh1KSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3IodGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImdldENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Z2xvYmFsVGFnOmwuZGVmYXVsdC5HTE9CQUxfVEFHLGZvcmNlR2xvYmFsVGFnOmwuZGVmYXVsdC5GT1JDRV9HTE9CQUxfVEFHLGVuYWJsZVZlcmJvc2U6bC5kZWZhdWx0LkVOQUJMRV9WRVJCT1NFLAplbmFibGVEZWJ1ZzpsLmRlZmF1bHQuRU5BQkxFX0RFQlVHLGVuYWJsZUluZm86bC5kZWZhdWx0LkVOQUJMRV9JTkZPLGVuYWJsZVdhcm46bC5kZWZhdWx0LkVOQUJMRV9XQVJOLGVuYWJsZUVycm9yOmwuZGVmYXVsdC5FTkFCTEVfRVJST1J9fX0se2tleToiYXBwbHlDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe2wuZGVmYXVsdC5HTE9CQUxfVEFHPWUuZ2xvYmFsVGFnLGwuZGVmYXVsdC5GT1JDRV9HTE9CQUxfVEFHPWUuZm9yY2VHbG9iYWxUYWcsbC5kZWZhdWx0LkVOQUJMRV9WRVJCT1NFPWUuZW5hYmxlVmVyYm9zZSxsLmRlZmF1bHQuRU5BQkxFX0RFQlVHPWUuZW5hYmxlRGVidWcsbC5kZWZhdWx0LkVOQUJMRV9JTkZPPWUuZW5hYmxlSW5mbyxsLmRlZmF1bHQuRU5BQkxFX1dBUk49ZS5lbmFibGVXYXJuLGwuZGVmYXVsdC5FTkFCTEVfRVJST1I9ZS5lbmFibGVFcnJvcn19LHtrZXk6Il9ub3RpZnlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZS5lbWl0dGVyO2lmKHQubGlzdGVuZXJDb3VudCgiY2hhbmdlIik+MCl7dmFyIG49ZS5nZXRDb25maWcoKTt0LmVtaXQoImNoYW5nZSIsbil9fX0se2tleToicmVnaXN0ZXJMaXN0ZW5lciIsdmFsdWU6ZnVuY3Rpb24odCl7ZS5lbWl0dGVyLmFkZExpc3RlbmVyKCJjaGFuZ2UiLHQpfX0se2tleToicmVtb3ZlTGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe2UuZW1pdHRlci5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIix0KX19LHtrZXk6ImZvcmNlR2xvYmFsVGFnIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkZPUkNFX0dMT0JBTF9UQUd9LHNldDpmdW5jdGlvbih0KXtsLmRlZmF1bHQuRk9SQ0VfR0xPQkFMX1RBRz10LGUuX25vdGlmeUNoYW5nZSgpfX0se2tleToiZ2xvYmFsVGFnIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkdMT0JBTF9UQUd9LHNldDpmdW5jdGlvbih0KXtsLmRlZmF1bHQuR0xPQkFMX1RBRz10LGUuX25vdGlmeUNoYW5nZSgpfX0se2tleToiZW5hYmxlQWxsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkVOQUJMRV9WRVJCT1NFJiZsLmRlZmF1bHQuRU5BQkxFX0RFQlVHJiZsLmRlZmF1bHQuRU5BQkxFX0lORk8mJmwuZGVmYXVsdC5FTkFCTEVfV0FSTiYmbC5kZWZhdWx0LkVOQUJMRV9FUlJPUn0sc2V0OmZ1bmN0aW9uKHQpe2wuZGVmYXVsdC5FTkFCTEVfVkVSQk9TRT10LGwuZGVmYXVsdC5FTkFCTEVfREVCVUc9dCxsLmRlZmF1bHQuRU5BQkxFX0lORk89dCxsLmRlZmF1bHQuRU5BQkxFX1dBUk49dCxsLmRlZmF1bHQuRU5BQkxFX0VSUk9SPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fSx7a2V5OiJlbmFibGVEZWJ1ZyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5FTkFCTEVfREVCVUd9LHNldDpmdW5jdGlvbih0KXtsLmRlZmF1bHQuRU5BQkxFX0RFQlVHPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fSx7a2V5OiJlbmFibGVWZXJib3NlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkVOQUJMRV9WRVJCT1NFfSxzZXQ6ZnVuY3Rpb24odCl7bC5kZWZhdWx0LkVOQUJMRV9WRVJCT1NFPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fSx7a2V5OiJlbmFibGVJbmZvIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkVOQUJMRV9JTkZPfSxzZXQ6ZnVuY3Rpb24odCl7bC5kZWZhdWx0LkVOQUJMRV9JTkZPPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fSx7a2V5OiJlbmFibGVXYXJuIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LkVOQUJMRV9XQVJOfSxzZXQ6ZnVuY3Rpb24odCl7bC5kZWZhdWx0LkVOQUJMRV9XQVJOPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fSx7a2V5OiJlbmFibGVFcnJvciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5FTkFCTEVfRVJST1J9LHNldDpmdW5jdGlvbih0KXtsLmRlZmF1bHQuRU5BQkxFX0VSUk9SPXQsZS5fbm90aWZ5Q2hhbmdlKCl9fV0pLGV9KCk7ZC5lbWl0dGVyPW5ldyBvLmRlZmF1bHQsbi5kZWZhdWx0PWR9LHsiLi9sb2dnZXIuanMiOjQxLGV2ZW50czoyfV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLGkmJmUodCxpKSx0fX0oKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2kodGhpcyx0KX1yZXR1cm4gcih0LG51bGwsW3trZXk6Imluc3RhbGwiLHZhbHVlOmZ1bmN0aW9uKCl7T2JqZWN0LnNldFByb3RvdHlwZU9mPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxPYmplY3QuYXNzaWduPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWV8fG51bGw9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgdD1PYmplY3QoZSksbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciBpPWFyZ3VtZW50c1tuXTtpZih2b2lkIDAhPT1pJiZudWxsIT09aSlmb3IodmFyIHIgaW4gaSlpLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1pW3JdKX1yZXR1cm4gdH0sImZ1bmN0aW9uIiE9dHlwZW9mIHNlbGYuUHJvbWlzZSYmZSgiZXM2LXByb21pc2UiKS5wb2x5ZmlsbCgpfX1dKSx0fSgpO3MuaW5zdGFsbCgpLG4uZGVmYXVsdD1zfSx7ImVzNi1wcm9taXNlIjoxfV0sNDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQsbil7dmFyIGk9ZTtpZih0K248aS5sZW5ndGgpe2Zvcig7bi0tOylpZigxMjghPSgxOTImaVsrK3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiByKGUpe2Zvcih2YXIgdD1bXSxuPWUscj0wLHM9ZS5sZW5ndGg7cjxzOylpZihuW3JdPDEyOCl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuW3JdKSksKytyO2Vsc2V7aWYobltyXTwxOTIpO2Vsc2UgaWYobltyXTwyMjQpe2lmKGkobixyLDEpKXt2YXIgYT0oMzEmbltyXSk8PDZ8NjMmbltyKzFdO2lmKGE+PTEyOCl7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzUmYSkpLHIrPTI7Y29udGludWV9fX1lbHNlIGlmKG5bcl08MjQwKXtpZihpKG4sciwyKSl7dmFyIG89KDE1Jm5bcl0pPDwxMnwoNjMmbltyKzFdKTw8Nnw2MyZuW3IrMl07aWYobz49MjA0OCYmNTUyOTYhPSg2MzQ4OCZvKSl7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzUmbykpLHIrPTM7Y29udGludWV9fX1lbHNlIGlmKG5bcl08MjQ4JiZpKG4sciwzKSl7dmFyIHU9KDcmbltyXSk8PDE4fCg2MyZuW3IrMV0pPDwxMnwoNjMmbltyKzJdKTw8Nnw2MyZuW3IrM107aWYodT42NTUzNiYmdTwxMTE0MTEyKXt1LT02NTUzNix0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh1Pj4+MTB8NTUyOTYpKSx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMDIzJnV8NTYzMjApKSxyKz00O2NvbnRpbnVlfX10LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzMykpLCsrcn1yZXR1cm4gdC5qb2luKCIiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5kZWZhdWx0PXJ9LHt9XX0se30sWzIxXSkoMjEpfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWZsdi5taW4uanMubWFwCg=="
const glyphicons_halflings_regular_woff2 = "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"
const glyphicons_halflings_regular_eot = "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"