-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathobjects.html
858 lines (834 loc) · 334 KB
/
objects.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
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
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<meta name="author" content="George G. Vega Yon University of Southern California Department of Preventive Medicine" />
<meta name="copyright" content="ggvy.cl" />
<meta name="font-size-adjustment" content="-1" />
<title>Intro to R (part 2): R language fundamentals</title>
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
a.sourceLine { display: inline-block; line-height: 1.25; }
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
a.sourceLine:empty { height: 1.2em; position: absolute; }
.sourceCode { overflow: visible; }
code.sourceCode { white-space: pre; position: relative; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
code.sourceCode { white-space: pre-wrap; }
a.sourceLine { text-indent: -1em; padding-left: 1em; }
}
pre.numberSource a.sourceLine
{ position: relative; }
pre.numberSource a.sourceLine:empty
{ position: absolute; }
pre.numberSource a.sourceLine::before
{ content: attr(data-line-number);
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
border: none; pointer-events: all;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
background-color: #ffffff;
color: #a0a0a0;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #a0a0a0; padding-left: 4px; }
div.sourceCode
{ color: #1f1c1b; background-color: #ffffff; }
@media screen {
a.sourceLine::before { text-decoration: underline; }
}
code span. { color: #1f1c1b; } /* Normal */
code span.al { color: #bf0303; background-color: #f7e6e6; font-weight: bold; } /* Alert */
code span.an { color: #ca60ca; } /* Annotation */
code span.at { color: #0057ae; } /* Attribute */
code span.bn { color: #b08000; } /* BaseN */
code span.bu { color: #644a9b; font-weight: bold; } /* BuiltIn */
code span.cf { color: #1f1c1b; font-weight: bold; } /* ControlFlow */
code span.ch { color: #924c9d; } /* Char */
code span.cn { color: #aa5500; } /* Constant */
code span.co { color: #898887; } /* Comment */
code span.cv { color: #0095ff; } /* CommentVar */
code span.do { color: #607880; } /* Documentation */
code span.dt { color: #0057ae; } /* DataType */
code span.dv { color: #b08000; } /* DecVal */
code span.er { color: #bf0303; text-decoration: underline; } /* Error */
code span.ex { color: #0095ff; font-weight: bold; } /* Extension */
code span.fl { color: #b08000; } /* Float */
code span.fu { color: #644a9b; } /* Function */
code span.im { color: #ff5500; } /* Import */
code span.in { color: #b08000; } /* Information */
code span.kw { color: #1f1c1b; font-weight: bold; } /* Keyword */
code span.op { color: #1f1c1b; } /* Operator */
code span.ot { color: #006e28; } /* Other */
code span.pp { color: #006e28; } /* Preprocessor */
code span.re { color: #0057ae; background-color: #e0e9f8; } /* RegionMarker */
code span.sc { color: #3daee9; } /* SpecialChar */
code span.ss { color: #ff5500; } /* SpecialString */
code span.st { color: #bf0303; } /* String */
code span.va { color: #0057ae; } /* Variable */
code span.vs { color: #bf0303; } /* VerbatimString */
code span.wa { color: #bf0303; } /* Warning */
</style>
<style type="text/css">
body
{
margin: 0 0 0 0;
padding: 0 0 0 0;
width: 100%;
height: 100%;
color: black;
background-color: white;
font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
font-size: 14pt;
}
div.toolbar {
position: fixed; z-index: 200;
top: auto; bottom: 0; left: 0; right: 0;
height: 1.2em; text-align: right;
padding-left: 1em;
padding-right: 1em; font-size: 60%;
color: DimGray;
background-color: rgb(240,240,240);
border-top: solid 1px rgb(180,180,180);
}
div.toolbar span.copyright {
color: DimGray;
margin-left: 0.5em;
}
div.initial_prompt {
position: absolute;
z-index: 1000;
bottom: 1.2em;
width: 100%;
background-color: rgb(200,200,200);
opacity: 0.35;
background-color: rgb(200,200,200, 0.35);
cursor: pointer;
}
div.initial_prompt p.help {
text-align: center;
}
div.initial_prompt p.close {
text-align: right;
font-style: italic;
}
div.slidy_toc {
position: absolute;
z-index: 300;
width: 60%;
max-width: 30em;
height: 30em;
overflow: auto;
top: auto;
right: auto;
left: 4em;
bottom: 4em;
padding: 1em;
background: rgb(240,240,240);
border-style: solid;
border-width: 2px;
font-size: 60%;
}
div.slidy_toc .toc_heading {
text-align: center;
width: 100%;
margin: 0;
margin-bottom: 1em;
border-bottom-style: solid;
border-bottom-color: rgb(180,180,180);
border-bottom-width: 1px;
}
div.slide {
z-index: 20;
margin: 0 0 0 0;
padding-top: 0;
padding-bottom: 0;
padding-left: 20px;
padding-right: 20px;
border-width: 0;
clear: both;
top: 0;
bottom: 0;
left: 0;
right: 0;
line-height: 120%;
background-color: transparent;
}
div.background {
display: none;
}
div.handout {
margin-left: 20px;
margin-right: 20px;
}
div.slide.titlepage {
text-align: center;
}
div.slide.titlepage h1 {
padding-top: 10%;
margin-right: 0;
}
div.slide h1 {
padding-left: 0;
padding-right: 20pt;
padding-top: 4pt;
padding-bottom: 4pt;
margin-top: 0;
margin-left: 0;
margin-right: 60pt;
margin-bottom: 0.5em;
display: block; font-size: 160%;
line-height: 1.2em;
background: transparent;
}
@media screen and (max-device-width: 1024px)
{
div.slide { font-size: 100%; }
}
@media screen and (max-device-width: 800px)
{
div.slide { font-size: 200%; }
div.slidy_toc {
top: 1em;
left: 1em;
right: auto;
width: 80%;
font-size: 180%;
}
}
div.toc-heading {
width: 100%;
border-bottom: solid 1px rgb(180,180,180);
margin-bottom: 1em;
text-align: center;
}
img {
image-rendering: optimize-quality;
}
pre {
font-size: 80%;
font-weight: bold;
line-height: 120%;
padding-top: 0.2em;
padding-bottom: 0.2em;
padding-left: 1em;
padding-right: 1em;
border-style: solid;
border-left-width: 1em;
border-top-width: thin;
border-right-width: thin;
border-bottom-width: thin;
border-color: #95ABD0;
color: #00428C;
background-color: #E4E5E7;
}
li pre { margin-left: 0; }
blockquote { font-style: italic }
img { background-color: transparent }
p.copyright { font-size: smaller }
.center { text-align: center }
.footnote { font-size: smaller; margin-left: 2em; }
a img { border-width: 0; border-style: none }
a:visited { color: navy }
a:link { color: navy }
a:hover { color: red; text-decoration: underline }
a:active { color: red; text-decoration: underline }
a {text-decoration: none}
.toolbar a:link {color: blue}
.toolbar a:visited {color: blue}
.toolbar a:active {color: red}
.toolbar a:hover {color: red}
ul { list-style-type: square; }
ul ul { list-style-type: disc; }
ul ul ul { list-style-type: circle; }
ul ul ul ul { list-style-type: disc; }
li { margin-left: 0.5em; margin-top: 0.5em; }
li li { font-size: 85%; font-style: italic }
li li li { font-size: 85%; font-style: normal }
div dt
{
margin-left: 0;
margin-top: 1em;
margin-bottom: 0.5em;
font-weight: bold;
}
div dd
{
margin-left: 2em;
margin-bottom: 0.5em;
}
p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
margin-left: 1em;
margin-right: 1em;
}
p.subhead { font-weight: bold; margin-top: 2em; }
.smaller { font-size: smaller }
.bigger { font-size: 130% }
td,th { padding: 0.2em }
ul {
margin: 0.5em 1.5em 0.5em 1.5em;
padding: 0;
}
ol {
margin: 0.5em 1.5em 0.5em 1.5em;
padding: 0;
}
ul { list-style-type: square; }
ul ul { list-style-type: disc; }
ul ul ul { list-style-type: circle; }
ul ul ul ul { list-style-type: disc; }
ul li { list-style: square;
margin: 0.1em 0em 0.6em 0;
padding: 0 0 0 0;
line-height: 140%;
}
ol li { margin: 0.1em 0em 0.6em 1.5em;
padding: 0 0 0 0px;
line-height: 140%;
list-style-type: decimal;
}
li ul li { font-size: 85%; font-style: italic;
list-style-type: disc;
background: transparent;
padding: 0 0 0 0;
}
li li ul li { font-size: 85%; font-style: normal;
list-style-type: circle;
background: transparent;
padding: 0 0 0 0;
}
li li li ul li {
list-style-type: disc;
background: transparent;
padding: 0 0 0 0;
}
li ol li {
list-style-type: decimal;
}
li li ol li {
list-style-type: decimal;
}
ol.outline li:hover { cursor: pointer }
ol.outline li.nofold:hover { cursor: default }
ul.outline li:hover { cursor: pointer }
ul.outline li.nofold:hover { cursor: default }
ol.outline { list-style:decimal; }
ol.outline ol { list-style-type:lower-alpha }
ol.outline li.nofold {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAIACAMzMzOvr/ywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7) no-repeat 0px 0.5em;
}
ol.outline li.unfolded {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAMPD/8zMzOvr/////ywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs=) no-repeat 0px 0.5em;
}
ol.outline li.folded {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAMPD/8zMzOvr/////ywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs=) no-repeat 0px 0.5em;
}
ol.outline li.unfolded:hover {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAAAAAAAA/8PD/////ywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs=) no-repeat 0px 0.5em;
}
ol.outline li.folded:hover {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAAAAAAAA/8PD/////ywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs=) no-repeat 0px 0.5em;
}
ul.outline li.nofold {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAIACAMzMzOvr/ywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7) no-repeat 0px 0.5em;
}
ul.outline li.unfolded {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAMPD/8zMzOvr/////ywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs=) no-repeat 0px 0.5em;
}
ul.outline li.folded {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAMPD/8zMzOvr/////ywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs=) no-repeat 0px 0.5em;
}
ul.outline li.unfolded:hover {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAAAAAAAA/8PD/////ywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs=) no-repeat 0px 0.5em;
}
ul.outline li.folded:hover {
padding: 0 0 0 20px;
background: transparent url(data:image/gif;base64,R0lGODdhCQAJAKEDAAAAAAAA/8PD/////ywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs=) no-repeat 0px 0.5em;
}
a.titleslide { font-weight: bold; font-style: italic }
img.hidden { display: none; visibility: hidden }
div.initial_prompt { display: none; visibility: hidden }
div.slide {
visibility: visible;
position: inherit;
}
div.handout {
border-top-style: solid;
border-top-width: thin;
border-top-color: black;
}
@media screen {
.hidden { display: none; visibility: visible }
div.slide.hidden { display: block; visibility: visible }
div.handout.hidden { display: block; visibility: visible }
div.background { display: none; visibility: hidden }
body.single_slide div.initial_prompt { display: block; visibility: visible }
body.single_slide div.background { display: block; visibility: visible }
body.single_slide div.background.hidden { display: none; visibility: hidden }
body.single_slide .invisible { visibility: hidden }
body.single_slide .hidden { display: none; visibility: hidden }
body.single_slide div.slide { position: absolute }
body.single_slide div.handout { display: none; visibility: hidden }
}
@media print {
.hidden { display: block; visibility: visible }
div.slide pre { font-size: 60%; padding-left: 0.5em; }
div.toolbar { display: none; visibility: hidden; }
div.slidy_toc { display: none; visibility: hidden; }
div.background { display: none; visibility: hidden; }
div.slide { page-break-before: always }
div.slide.first-slide { page-break-before: avoid }
}
.jslider table {
margin-left: 0em;
margin-right: 0em;
}
table.dataTable, .shiny-datatable-output div {
font-size: 14pt;
}
.dataTables_info, .dataTables_paginate {
font-size: 19px;
}
pre.sourceCode, code.sourceCode {
font-size: 80%;
}
label, button, input, select, textarea {
font-size: 14pt;
}
ul.nav, ul.nav li {
list-style-type: none;
}
</style>
<script src="data:application/javascript;base64,Lyogc2xpZHkuanMKCiAgIENvcHlyaWdodCAoYykgMjAwNS0yMDEzIFczQyAoTUlULCBFUkNJTSwgS2VpbyksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgIFczQyBsaWFiaWxpdHksIHRyYWRlbWFyaywgZG9jdW1lbnQgdXNlIGFuZCBzb2Z0d2FyZSBsaWNlbnNpbmcKICAgcnVsZXMgYXBwbHksIHNlZToKCiAgIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRvY3VtZW50cwogICBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2NvcHlyaWdodC1zb2Z0d2FyZQoKICAgRGVmaW5lcyBzaW5nbGUgbmFtZSAidzNjX3NsaWR5IiBpbiBnbG9iYWwgbmFtZXNwYWNlCiAgIEFkZHMgZXZlbnQgaGFuZGxlcnMgd2l0aG91dCB0cmFtcGxpbmcgb24gYW55IG90aGVycwoqLwoKLy8gdGhlIHNsaWR5IG9iamVjdCBpbXBsZW1lbnRhdGlvbgp2YXIgdzNjX3NsaWR5ID0gewogIC8vIGNsYXNzaWZ5IHdoaWNoIGtpbmQgb2YgYnJvd3NlciB3ZSdyZSBydW5uaW5nIHVuZGVyCiAgbnNfcG9zOiAodHlwZW9mIHdpbmRvdy5wYWdlWU9mZnNldCE9J3VuZGVmaW5lZCcpLAogIGtodG1sOiAoKG5hdmlnYXRvci51c2VyQWdlbnQpLmluZGV4T2YoIktIVE1MIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgb3BlcmE6ICgobmF2aWdhdG9yLnVzZXJBZ2VudCkuaW5kZXhPZigiT3BlcmEiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlKSwKICBpcGFkOiAoKG5hdmlnYXRvci51c2VyQWdlbnQpLmluZGV4T2YoImlQYWQiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlKSwKICBpcGhvbmU6ICgobmF2aWdhdG9yLnVzZXJBZ2VudCkuaW5kZXhPZigiaVBob25lIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgYW5kcm9pZDogKChuYXZpZ2F0b3IudXNlckFnZW50KS5pbmRleE9mKCJBbmRyb2lkIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgaWU6ICh0eXBlb2YgZG9jdW1lbnQuYWxsICE9ICJ1bmRlZmluZWQiICYmICF0aGlzLm9wZXJhKSwKICBpZTY6ICghdGhpcy5uc19wb3MgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIDYiKSAhPSAtMSksCiAgaWU3OiAoIXRoaXMubnNfcG9zICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSA3IikgIT0gLTEpLAogIGllODogKCF0aGlzLm5zX3BvcyAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOCIpICE9IC0xKSwKICBpZTk6ICghdGhpcy5uc19wb3MgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIDkiKSAhPSAtMSksCgogIC8vIGRhdGEgZm9yIHN3aXBlIGFuZCBkb3VibGUgdGFwIGRldGVjdGlvbiBvbiB0b3VjaCBzY3JlZW5zCiAgbGFzdF90YXA6IDAsCiAgcHJldl90YXA6IDAsCiAgc3RhcnRfeDogMCwKICBzdGFydF95OiAwLAogIGRlbHRhX3g6IDAsCiAgZGVsdGFfeTogMCwKCiAgLy8gYXJlIHdlIHJ1bm5pbmcgYXMgWEhUTUw/IChkb2Vzbid0IHdvcmsgb24gT3BlcmEpCiAgaXNfeGh0bWw6IC94bWwvLnRlc3QoZG9jdW1lbnQuY29udGVudFR5cGUpLAoKICBzbGlkZV9udW1iZXI6IDAsIC8vIGludGVnZXIgc2xpZGUgY291bnQ6IDAsIDEsIDIsIC4uLgogIHNsaWRlX251bWJlcl9lbGVtZW50OiBudWxsLCAvLyBlbGVtZW50IGNvbnRhaW5pbmcgc2xpZGUgbnVtYmVyCiAgc2xpZGVzOiBbXSwgLy8gc2V0IHRvIGFycmF5IG9mIHNsaWRlIGRpdidzCiAgbm90ZXM6IFtdLCAvLyBzZXQgdG8gYXJyYXkgb2YgaGFuZG91dCBkaXYncwogIGJhY2tncm91bmRzOiBbXSwgLy8gc2V0IHRvIGFycmF5IG9mIGJhY2tncm91bmQgZGl2J3MKICBvYnNlcnZlcnM6IFtdLCAvLyBsaXN0IG9mIG9ic2VydmVyIGZ1bmN0aW9ucwogIHRvb2xiYXI6IG51bGwsIC8vIGVsZW1lbnQgY29udGFpbmluZyB0b29sYmFyCiAgdGl0bGU6IG51bGwsIC8vIGRvY3VtZW50IHRpdGxlCiAgbGFzdF9zaG93bjogbnVsbCwgLy8gbGFzdCBpbmNyZW1lbnRhbGx5IHNob3duIGl0ZW0KICBlb3M6IG51bGwsICAvLyBzcGFuIGVsZW1lbnQgZm9yIGVuZCBvZiBzbGlkZSBpbmRpY2F0b3IKICB0b2M6IG51bGwsIC8vIHRhYmxlIG9mIGNvbnRlbnRzCiAgb3V0bGluZTogbnVsbCwgLy8gb3V0bGluZSBlbGVtZW50IHdpdGggdGhlIGZvY3VzCiAgc2VsZWN0ZWRfdGV4dF9sZW46IDAsIC8vIGxlbmd0aCBvZiBkcmFnIHNlbGVjdGlvbiBvbiBkb2N1bWVudAogIHZpZXdfYWxsOiAwLCAgLy8gMSB0byB2aWV3IGFsbCBzbGlkZXMgKyBoYW5kb3V0cwogIHdhbnRfdG9vbGJhcjogdHJ1ZSwgIC8vIHVzZXIgcHJlZmVyZW5jZSB0byBzaG93L2hpZGUgdG9vbGJhcgogIG1vdXNlX2NsaWNrX2VuYWJsZWQ6IHRydWUsIC8vIGVuYWJsZXMgbGVmdCBjbGljayBmb3IgbmV4dCBzbGlkZQogIHNjcm9sbF9oYWNrOiAwLCAvLyBJRSB3b3JrIGFyb3VuZCBmb3IgcG9zaXRpb246IGZpeGVkCiAgZGlzYWJsZV9zbGlkZV9jbGljazogZmFsc2UsICAvLyB1c2VkIGJ5IGNsaWNrZWQgYW5jaG9ycwoKICBsYW5nOiAiZW4iLCAvLyB1cGRhdGVkIHRvIGxhbmd1YWdlIHNwZWNpZmllZCBieSBodG1sIGZpbGUKCiAgaGVscF9hbmNob3I6IG51bGwsIC8vIHVzZWQgZm9yIGtleWJvYXJkIGZvY3VzIGhhY2sgaW4gc2hvd1Rvb2xiYXIoKQogIGhlbHBfcGFnZTogImh0dHA6Ly93d3cudzMub3JnL1RhbGtzL1Rvb2xzL1NsaWR5Mi9oZWxwL2hlbHAuaHRtbCIsCiAgaGVscF90ZXh0OiAiTmF2aWdhdGUgd2l0aCBtb3VzZSBjbGljaywgc3BhY2UgYmFyLCBDdXJzb3IgTGVmdC9SaWdodCwgIiArCiAgICAgICAgICAgICAib3IgUGcgVXAgYW5kIFBnIERuLiBVc2UgUyBhbmQgQiB0byBjaGFuZ2UgZm9udCBzaXplLiIsCgogIHNpemVfaW5kZXg6IDAsCiAgc2l6ZV9hZGp1c3RtZW50OiAwLAogIHNpemVzOiAgbmV3IEFycmF5KCIxMHB0IiwgIjEycHQiLCAiMTRwdCIsICIxNnB0IiwgIjE4cHQiLCAiMjBwdCIsCiAgICAgICAgICAgICAgICAgICAgIjIycHQiLCAiMjRwdCIsICIyNnB0IiwgIjI4cHQiLCAiMzBwdCIsICIzMnB0IiksCgogIC8vIG5lZWRlZCBmb3IgZWZmaWNpZW50IHJlc2l6aW5nCiAgbGFzdF93aWR0aDogMCwKICBsYXN0X2hlaWdodDogMCwKCgogIC8vIE5lZWRlZCBmb3IgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZvciByZWxhdGl2ZSB3aWR0aC9oZWlnaHQgb24KICAvLyBvYmplY3QgZWxlbWVudHMuIFRoZSB3b3JrIGFyb3VuZCBpcyB0byBzYXZlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVzCiAgLy8gYW5kIHRoZW4gdG8gcmVjb21wdXRlIGFic29sdXRlIHdpZHRoL2hlaWdodCBkaW1lbnNpb25zIG9uIHJlc2l6aW5nCiAgIG9iamVjdHM6IFtdLAoKICAvLyBhdHRhY2ggaW5pdGlhbGlhdGlvbiBldmVudCBoYW5kbGVycwogIHNldF91cDogZnVuY3Rpb24gKCkgewogICAgdmFyIGluaXQgPSBmdW5jdGlvbigpIHsgdzNjX3NsaWR5LmluaXQoKTsgfTsKICAgIGlmICh0eXBlb2Ygd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgIT0gInVuZGVmaW5lZCIpCiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgaW5pdCwgZmFsc2UpOwogICAgZWxzZQogICAgICB3aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsIGluaXQpOwogIH0sCgogIGhpZGVfc2xpZGVzOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiAhdzNjX3NsaWR5LmluaXRpYWxpemVkKQogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIGVsc2UKICAgICAgc2V0VGltZW91dCh3M2Nfc2xpZHkuaGlkZV9zbGlkZXMsIDUwKTsKICB9LAoKICAvLyBoYWNrIHRvIHBlcnN1YWRlIElFIHRvIGNvbXB1dGUgY29ycmVjdCBkb2N1bWVudCBoZWlnaHQKICAvLyBhcyBuZWVkZWQgZm9yIHNpbXVsYXRpbmcgZml4ZWQgcG9zaXRpb25pbmcgb2YgdG9vbGJhcgogIGllX2hhY2s6IGZ1bmN0aW9uICgpIHsKICAgIHdpbmRvdy5yZXNpemVCeSgwLC0xKTsKICAgIHdpbmRvdy5yZXNpemVCeSgwLCAxKTsKICB9LAoKICBpbml0OiBmdW5jdGlvbiAoKSB7CiAgICAvL2FsZXJ0KCJzbGlkeSBzdGFydGluZyB0ZXN0IDEwIik7CiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICB0aGlzLmluaXRfbG9jYWxpemF0aW9uKCk7CiAgICB0aGlzLmFkZF90b29sYmFyKCk7CiAgICB0aGlzLndyYXBfaW1wbGljaXRfc2xpZGVzKCk7CiAgICB0aGlzLmNvbGxlY3Rfc2xpZGVzKCk7CiAgICB0aGlzLmNvbGxlY3Rfbm90ZXMoKTsKICAgIHRoaXMuY29sbGVjdF9iYWNrZ3JvdW5kcygpOwogICAgdGhpcy5vYmplY3RzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7CiAgICB0aGlzLnBhdGNoX2FuY2hvcnMoKTsKICAgIHRoaXMuc2xpZGVfbnVtYmVyID0gdGhpcy5maW5kX3NsaWRlX251bWJlcihsb2NhdGlvbi5ocmVmKTsKICAgIHdpbmRvdy5vZmZzY3JlZW5idWZmZXJpbmcgPSB0cnVlOwogICAgdGhpcy5zaXplX2FkanVzdG1lbnQgPSB0aGlzLmZpbmRfc2l6ZV9hZGp1c3QoKTsKICAgIHRoaXMudGltZV9sZWZ0ID0gdGhpcy5maW5kX2R1cmF0aW9uKCk7CiAgICB0aGlzLmhpZGVfaW1hZ2VfdG9vbGJhcigpOyAgLy8gc3VwcHJlc3MgSUUgaW1hZ2UgdG9vbGJhciBwb3B1cAogICAgdGhpcy5pbml0X291dGxpbmVyKCk7ICAvLyBhY3RpdmF0ZSBmb2xkL3VuZm9sZCBzdXBwb3J0CiAgICB0aGlzLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7CiAgICB0aGlzLmtleWJvYXJkbGVzcyA9ICh0aGlzLmlwYWR8fHRoaXMuaXBob25lfHx0aGlzLmFuZHJvaWQpOwoKICAgIGlmICh0aGlzLmtleWJvYXJkbGVzcykKICAgIHsKICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgIHRoaXMud2FudF90b29sYmFyID0gMDsKICAgIH0KCiAgICAvLyB3b3JrIGFyb3VuZCBmb3Igb3BlcmEgYnVnCiAgICB0aGlzLmlzX3hodG1sID0gKGRvY3VtZW50LmJvZHkudGFnTmFtZSA9PSAiQk9EWSIgPyBmYWxzZSA6IHRydWUpOwoKICAgIGlmICh0aGlzLnNsaWRlcy5sZW5ndGggPiAwKQogICAgewogICAgICB2YXIgc2xpZGUgPSB0aGlzLnNsaWRlc1t0aGlzLnNsaWRlX251bWJlcl07CiAgIAogICAgICBpZiAodGhpcy5zbGlkZV9udW1iZXIgPiAwKQogICAgICB7CiAgICAgICAgdGhpcy5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICAgICAgICB0aGlzLmxhc3Rfc2hvd24gPSB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obnVsbCk7CiAgICAgICAgdGhpcy5zZXRfZW9zX3N0YXR1cyh0cnVlKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICB0aGlzLmxhc3Rfc2hvd24gPSBudWxsOwogICAgICAgIHRoaXMuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJoaWRkZW4iKTsKICAgICAgICB0aGlzLnNldF9lb3Nfc3RhdHVzKCF0aGlzLm5leHRfaW5jcmVtZW50YWxfaXRlbSh0aGlzLmxhc3Rfc2hvd24pKTsKICAgICAgfQoKICAgICAgdGhpcy5zZXRfbG9jYXRpb24oKTsKICAgICAgdGhpcy5hZGRfY2xhc3ModGhpcy5zbGlkZXNbMF0sICJmaXJzdC1zbGlkZSIpOwogICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZShzbGlkZSk7CiAgICB9CgogICAgdGhpcy50b2MgPSB0aGlzLnRhYmxlX29mX2NvbnRlbnRzKCk7CgogICAgdGhpcy5hZGRfaW5pdGlhbF9wcm9tcHQoKTsKCiAgICAvLyBiaW5kIGV2ZW50IGhhbmRsZXJzIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBjdXN0b20gcGFnZSBzY3JpcHRzCiAgICAvLyBUYXAgZXZlbnRzIGJlaGF2ZSB0b28gd2VpcmRseSB0byBzdXBwb3J0IGNsaWNrcyByZWxpYWJseSBvbgogICAgLy8gaVBob25lIGFuZCBpUGFkLCBzbyBleGNsdWRlIHRoZXNlIGZyb20gY2xpY2sgaGFuZGxlcgoKICAgIGlmICghdGhpcy5rZXlib2FyZGxlc3MpCiAgICB7CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LmJvZHksICJjbGljayIsIHRoaXMubW91c2VfYnV0dG9uX2NsaWNrKTsKICAgICAgdGhpcy5hZGRfbGlzdGVuZXIoZG9jdW1lbnQuYm9keSwgIm1vdXNlZG93biIsIHRoaXMubW91c2VfYnV0dG9uX2Rvd24pOwogICAgfQoKICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LCAia2V5ZG93biIsIHRoaXMua2V5X2Rvd24pOwogICAgdGhpcy5hZGRfbGlzdGVuZXIoZG9jdW1lbnQsICJrZXlwcmVzcyIsIHRoaXMua2V5X3ByZXNzKTsKICAgIHRoaXMuYWRkX2xpc3RlbmVyKHdpbmRvdywgInJlc2l6ZSIsIHRoaXMucmVzaXplZCk7CiAgICB0aGlzLmFkZF9saXN0ZW5lcih3aW5kb3csICJzY3JvbGwiLCB0aGlzLnNjcm9sbGVkKTsKICAgIHRoaXMuYWRkX2xpc3RlbmVyKHdpbmRvdywgInVubG9hZCIsIHRoaXMudW5sb2FkZWQpOwoKICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LCAiZ2VzdHVyZWNoYW5nZSIsIGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgIHRoaXMuYXR0YWNoX3RvdWNoX2hhbmRlcnModGhpcy5zbGlkZXMpOwoKICAgIC8vIHRoaXMgc2VlbXMgdG8gYmUgYSBkZWJ1Z2dpbmcgaGFjawogICAgLy9pZiAoIWRvY3VtZW50LmJvZHkub25jbGljaykKICAgIC8vICBkb2N1bWVudC5ib2R5Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IH07CgogICAgdGhpcy5zaW5nbGVfc2xpZGVfdmlldygpOwoKICAgIC8vdGhpcy5zZXRfbG9jYXRpb24oKTsKCiAgICB0aGlzLnJlc2l6ZWQoKTsKCiAgICBpZiAodGhpcy5pZTcpCiAgICAgIHNldFRpbWVvdXQodzNjX3NsaWR5LmllX2hhY2ssIDEwMCk7CgogICAgdGhpcy5zaG93X3Rvb2xiYXIoKTsKCiAgICAvLyBmb3IgYmFjayBidXR0b24gZGV0ZWN0aW9uCiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHczY19zbGlkeS5jaGVja19sb2NhdGlvbigpOyB9LCAyMDApOwogICAgdzNjX3NsaWR5LmluaXRpYWxpemVkID0gdHJ1ZTsKICB9LAoKICAvLyBjcmVhdGUgZGl2IGVsZW1lbnQgd2l0aCBsaW5rcyB0byBlYWNoIHNsaWRlCiAgdGFibGVfb2ZfY29udGVudHM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciB0b2MgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKTsKICAgIHRoaXMuYWRkX2NsYXNzKHRvYywgInNsaWR5X3RvYyBoaWRkZW4iKTsKICAgIC8vdG9jLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAiMCIpOwoKICAgIHZhciBoZWFkaW5nID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICB0aGlzLmFkZF9jbGFzcyhoZWFkaW5nLCAidG9jLWhlYWRpbmciKTsKICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgiVGFibGUgb2YgQ29udGVudHMiKTsKCiAgICB0b2MuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CiAgICB2YXIgcHJldmlvdXMgPSBudWxsOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zbGlkZXMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIHZhciB0aXRsZSA9IHRoaXMuaGFzX2NsYXNzKHRoaXMuc2xpZGVzW2ldLCAidGl0bGUiKTsKICAgICAgdmFyIG51bSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKChpICsgMSkgKyAiLiAiKTsKCiAgICAgIHRvYy5hcHBlbmRDaGlsZChudW0pOwoKICAgICAgdmFyIGEgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJhIik7CiAgICAgIGEuc2V0QXR0cmlidXRlKCJocmVmIiwgIiMoIiArIChpKzEpICsgIikiKTsKCiAgICAgIGlmICh0aXRsZSkKICAgICAgICB0aGlzLmFkZF9jbGFzcyhhLCAidGl0bGVzbGlkZSIpOwoKICAgICAgdmFyIG5hbWUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnNsaWRlX25hbWUoaSkpOwogICAgICBhLmFwcGVuZENoaWxkKG5hbWUpOwogICAgICBhLm9uY2xpY2sgPSB3M2Nfc2xpZHkudG9jX2NsaWNrOwogICAgICBhLm9ua2V5ZG93biA9IHczY19zbGlkeS50b2Nfa2V5X2Rvd247CiAgICAgIGEucHJldmlvdXMgPSBwcmV2aW91czsKCiAgICAgIGlmIChwcmV2aW91cykKICAgICAgICBwcmV2aW91cy5uZXh0ID0gYTsKCiAgICAgIHRvYy5hcHBlbmRDaGlsZChhKTsKCiAgICAgIGlmIChpID09IDApCiAgICAgICAgdG9jLmZpcnN0ID0gYTsKCiAgICAgIGlmIChpIDwgdGhpcy5zbGlkZXMubGVuZ3RoIC0gMSkKICAgICAgewogICAgICAgIHZhciBiciA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImJyIik7CiAgICAgICAgdG9jLmFwcGVuZENoaWxkKGJyKTsKICAgICAgfQoKICAgICAgcHJldmlvdXMgPSBhOwogICAgfQoKICAgIHRvYy5mb2N1cyA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMuZmlyc3QpCiAgICAgICAgdGhpcy5maXJzdC5mb2N1cygpOwogICAgfQoKICAgIHRvYy5vbm1vdXNldXAgPSB3M2Nfc2xpZHkubW91c2VfYnV0dG9uX3VwOwoKICAgIHRvYy5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgZXx8KGU9d2luZG93LmV2ZW50KTsKCiAgICAgIGlmICh3M2Nfc2xpZHkuc2VsZWN0ZWRfdGV4dF9sZW4gPD0gMCkKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfdGFibGVfb2ZfY29udGVudHModHJ1ZSk7CgogICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKICAgIAogICAgICBpZiAoZS5jYW5jZWwgIT0gdW5kZWZpbmVkKQogICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKICAgICAgCiAgICAgIGlmIChlLnJldHVyblZhbHVlICE9IHVuZGVmaW5lZCkKICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgIAogICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRvYywgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKICAgIHJldHVybiB0b2M7CiAgfSwKCiAgaXNfc2hvd25fdG9jOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gIXczY19zbGlkeS5oYXNfY2xhc3ModzNjX3NsaWR5LnRvYywgImhpZGRlbiIpOwogIH0sCgogIHNob3dfdGFibGVfb2ZfY29udGVudHM6IGZ1bmN0aW9uICgpIHsKICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3ModzNjX3NsaWR5LnRvYywgImhpZGRlbiIpOwogICAgdmFyIHRvYyA9IHczY19zbGlkeS50b2M7CiAgICB0b2MuZm9jdXMoKTsKCiAgICBpZiAodzNjX3NsaWR5LmllNyAmJiB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID09IDApCiAgICAgIHNldFRpbWVvdXQodzNjX3NsaWR5LmllX2hhY2ssIDEwMCk7CiAgfSwKCiAgaGlkZV90YWJsZV9vZl9jb250ZW50czogZnVuY3Rpb24gKGZvY3VzKSB7CiAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKHczY19zbGlkeS50b2MsICJoaWRkZW4iKTsKCiAgICBpZiAoZm9jdXMgJiYgIXczY19zbGlkeS5vcGVyYSAmJgogICAgICAgICF3M2Nfc2xpZHkuaGFzX2NsYXNzKHczY19zbGlkeS50b2MsICJoaWRkZW4iKSkKICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogIH0sCgogIHRvZ2dsZV90YWJsZV9vZl9jb250ZW50czogZnVuY3Rpb24gKCkgewogICAgaWYgKHczY19zbGlkeS5pc19zaG93bl90b2MoKSkKICAgICAgdzNjX3NsaWR5LmhpZGVfdGFibGVfb2ZfY29udGVudHModHJ1ZSk7CiAgICBlbHNlCiAgICAgIHczY19zbGlkeS5zaG93X3RhYmxlX29mX2NvbnRlbnRzKCk7CiAgfSwKCiAgLy8gY2FsbGVkIG9uIGNsaWNraW5nIHRvYyBlbnRyeQogIHRvY19jbGljazogZnVuY3Rpb24gKGUpIHsKICAgIGlmICghZSkKICAgICAgZSA9IHdpbmRvdy5ldmVudDsKCiAgICB2YXIgdGFyZ2V0ID0gdzNjX3NsaWR5LmdldF90YXJnZXQoZSk7CgogICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZVR5cGUgPT0gMSkKICAgIHsKICAgICAgdmFyIHVyaSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKCiAgICAgIGlmICh1cmkpCiAgICAgIHsKICAgICAgICAvL2FsZXJ0KCJnb2luZyB0byAiICsgdXJpKTsKICAgICAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5oaWRlX3NsaWRlKHNsaWRlKTsKICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID0gdzNjX3NsaWR5LmZpbmRfc2xpZGVfbnVtYmVyKHVyaSk7CiAgICAgICAgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CiAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgiaGlkZGVuIik7CiAgICAgICAgdzNjX3NsaWR5LnNldF9lb3Nfc3RhdHVzKCF3M2Nfc2xpZHkubmV4dF9pbmNyZW1lbnRhbF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKSk7CiAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICAgIC8vdGFyZ2V0LmZvY3VzKCk7CgogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgIGlmICghdzNjX3NsaWR5Lm9wZXJhKQogICAgICAgICAgICB3M2Nfc2xpZHkuc2V0X2ZvY3VzKCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKQogICAgICAgIHsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB3M2Nfc2xpZHkuaGlkZV90YWJsZV9vZl9jb250ZW50cyh0cnVlKTsKICAgIGlmICh3M2Nfc2xpZHkuaWU3KSB3M2Nfc2xpZHkuaWVfaGFjaygpOwogICAgdzNjX3NsaWR5LnN0b3BfcHJvcGFnYXRpb24oZSk7CiAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChlKTsKICB9LAoKICAvLyBjYWxsZWQgb25rZXlkb3duIGZvciB0b2MgZW50cnkKICB0b2Nfa2V5X2Rvd246IGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIGtleTsKCiAgICBpZiAoIWV2ZW50KQogICAgICB2YXIgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh3aW5kb3cuZXZlbnQpCiAgICAgIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgZWxzZSBpZiAoZXZlbnQud2hpY2gpCiAgICAgIGtleSA9IGV2ZW50LndoaWNoOwogICAgZWxzZQogICAgICByZXR1cm4gdHJ1ZTsgLy8gWWlrZXMhIHVua25vd24gYnJvd3NlcgoKICAgIC8vIGlnbm9yZSBldmVudCBpZiBrZXkgdmFsdWUgaXMgemVybwogICAgLy8gYXMgZm9yIGFsdCBvbiBPcGVyYSBhbmQgS29ucXVlcm9yCiAgICBpZiAoIWtleSkKICAgICAgcmV0dXJuIHRydWU7CgogICAgLy8gY2hlY2sgZm9yIGNvbmN1cnJlbnQgY29udHJvbC9jb21tYW5kL2FsdCBrZXkKICAgIC8vIGJ1dCBhcmUgdGhlc2Ugb25seSBwcmVzZW50IG9uIG1vdXNlIGV2ZW50cz8KCiAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmIChrZXkgPT0gMTMpCiAgICB7CiAgICAgIHZhciB1cmkgPSB0aGlzLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwoKICAgICAgaWYgKHVyaSkKICAgICAgewogICAgICAgIC8vYWxlcnQoImdvaW5nIHRvICIgKyB1cmkpOwogICAgICAgdmFyIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkuaGlkZV9zbGlkZShzbGlkZSk7CiAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5maW5kX3NsaWRlX251bWJlcih1cmkpOwogICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IG51bGw7CiAgICAgICAgdzNjX3NsaWR5LnNldF9sb2NhdGlvbigpOwogICAgICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoImhpZGRlbiIpOwogICAgICAgIHczY19zbGlkeS5zZXRfZW9zX3N0YXR1cyghdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbSh3M2Nfc2xpZHkubGFzdF9zaG93bikpOwogICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgICAvL3RhcmdldC5mb2N1cygpOwoKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICBpZiAoIXczY19zbGlkeS5vcGVyYSkKICAgICAgICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoZSkKICAgICAgICB7CiAgICAgICAgfQogICAgICB9CgogICAgICB3M2Nfc2xpZHkuaGlkZV90YWJsZV9vZl9jb250ZW50cyh0cnVlKTsKCiAgICAgIGlmIChzZWxmLmllNykKICAgICAgIHczY19zbGlkeS5pZV9oYWNrKCk7CgogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CgogICAgaWYgKGtleSA9PSA0MCAmJiB0aGlzLm5leHQpCiAgICB7CiAgICAgIHRoaXMubmV4dC5mb2N1cygpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CgogICAgaWYgKGtleSA9PSAzOCAmJiB0aGlzLnByZXZpb3VzKQogICAgewogICAgICB0aGlzLnByZXZpb3VzLmZvY3VzKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICB0b3VjaHN0YXJ0OiBmdW5jdGlvbiAoZSkKICB7CiAgICAvLyBhIGRvdWJsZSB0b3VjaCBvZnRlbiBzdGFydHMgd2l0aCBhCiAgICAvLyBzaW5nbGUgdG91Y2ggZHVlIHRvIGZpbmdlcnMgdG91Y2hpbmcKICAgIC8vIGRvd24gYXQgc2xpZ2h0bHkgZGlmZmVyZW50IHRpbWVzCiAgICAvLyB0aHVzIGF2b2lkIGNhbGxpbmcgcHJldmVudERlZmF1bHQgaGVyZQogICAgdGhpcy5wcmV2X3RhcCA9IHRoaXMubGFzdF90YXA7CiAgICB0aGlzLmxhc3RfdGFwID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7CgogICAgdmFyIHRhcF9kZWxheSA9IHRoaXMubGFzdF90YXAgLSB0aGlzLnByZXZfdGFwOwoKICAgIGlmICh0YXBfZGVsYXkgPD0gMjAwKQogICAgewogICAgICAvLyBkb3VibGUgdGFwCiAgICB9CgogICAgdmFyIHRvdWNoID0gZS50b3VjaGVzWzBdOwoKICAgIHRoaXMucGFnZVggPSB0b3VjaC5wYWdlWDsKICAgIHRoaXMucGFnZVkgPSB0b3VjaC5wYWdlWTsKICAgIHRoaXMuc2NyZWVuWCA9IHRvdWNoLnNjcmVlblg7CiAgICB0aGlzLnNjcmVlblkgPSB0b3VjaC5zY3JlZW5ZOwogICAgdGhpcy5jbGllbnRYID0gdG91Y2guY2xpZW50WDsKICAgIHRoaXMuY2xpZW50WSA9IHRvdWNoLmNsaWVudFk7CgogICAgdGhpcy5kZWx0YV94ID0gdGhpcy5kZWx0YV95ID0gMDsKICB9LAoKICB0b3VjaG1vdmU6IGZ1bmN0aW9uIChlKQogIHsKICAgIC8vIG92ZXJyaWRlIG5hdGl2ZSBnZXN0dXJlcyBmb3Igc2luZ2xlIHRvdWNoCiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpCiAgICAgIHJldHVybjsKCiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgdG91Y2ggPSBlLnRvdWNoZXNbMF07CiAgICB0aGlzLmRlbHRhX3ggPSB0b3VjaC5wYWdlWCAtIHRoaXMucGFnZVg7CiAgICB0aGlzLmRlbHRhX3kgPSB0b3VjaC5wYWdlWSAtIHRoaXMucGFnZVk7CiAgfSwKCiAgdG91Y2hlbmQ6IGZ1bmN0aW9uIChlKQogIHsKICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgZm9yIG11bHRpLXRvdWNoCiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpCiAgICAgIHJldHVybjsKCiAgICB2YXIgZGVsYXkgPSAobmV3IERhdGUpLmdldFRpbWUoKSAtIHRoaXMubGFzdF90YXA7CiAgICB2YXIgZHggPSB0aGlzLmRlbHRhX3g7CiAgICB2YXIgZHkgPSB0aGlzLmRlbHRhX3k7CiAgICB2YXIgYWJzX2R4ID0gTWF0aC5hYnMoZHgpOwogICAgdmFyIGFic19keSA9IE1hdGguYWJzKGR5KTsKCiAgICBpZiAoZGVsYXkgPCA1MDAgJiYgKGFic19keCA+IDEwMCB8fCBhYnNfZHkgPiAxMDApKQogICAgewogICAgICBpZiAoYWJzX2R4ID4gMC41ICogYWJzX2R5KQogICAgICB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICBpZiAoZHggPCAwKQogICAgICAgICAgdzNjX3NsaWR5Lm5leHRfc2xpZGUodHJ1ZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgdzNjX3NsaWR5LnByZXZpb3VzX3NsaWRlKHRydWUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGFic19keSA+IDIgKiBhYnNfZHgpCiAgICAgIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdzNjX3NsaWR5LnRvZ2dsZV90YWJsZV9vZl9jb250ZW50cygpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gIyMjIE9CU09MRVRFICMjIwogIGJlZm9yZV9wcmludDogZnVuY3Rpb24gKCkgewogICAgdGhpcy5zaG93X2FsbF9zbGlkZXMoKTsKICAgIHRoaXMuaGlkZV90b29sYmFyKCk7CiAgICBhbGVydCgiYmVmb3JlIHByaW50Iik7CiAgfSwKCiAgLy8gIyMjIE9CU09MRVRFICMjIwogIGFmdGVyX3ByaW50OiBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIXRoaXMudmlld19hbGwpCiAgICB7CiAgICAgIHRoaXMuc2luZ2xlX3NsaWRlX3ZpZXcoKTsKICAgICAgdGhpcy5zaG93X3Rvb2xiYXIoKTsKICAgIH0KICAgIGFsZXJ0KCJhZnRlciBwcmludCIpOwogIH0sCgogIC8vICMjIyBPQlNPTEVURSAjIyMKICBwcmludF9zbGlkZXM6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuYmVmb3JlX3ByaW50KCk7CiAgICB3aW5kb3cucHJpbnQoKTsKICAgIHRoaXMuYWZ0ZXJfcHJpbnQoKTsKICB9LAoKICAvLyAjIyMgT0JTT0xFVEUgPz8gIyMjCiAgdG9nZ2xlX3ZpZXc6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLnZpZXdfYWxsKQogICAgewogICAgICB0aGlzLnNpbmdsZV9zbGlkZV92aWV3KCk7CiAgICAgIHRoaXMuc2hvd190b29sYmFyKCk7CiAgICAgIHRoaXMudmlld19hbGwgPSAwOwogICAgfQogICAgZWxzZQogICAgewogICAgICB0aGlzLnNob3dfYWxsX3NsaWRlcygpOwogICAgICB0aGlzLmhpZGVfdG9vbGJhcigpOwogICAgICB0aGlzLnZpZXdfYWxsID0gMTsKICAgIH0KICB9LAoKICAvLyBwcmVwYXJlIGZvciBwcmludGluZyAgIyMjIE9CU09MRVRFICMjIwogIHNob3dfYWxsX3NsaWRlczogZnVuY3Rpb24gKCkgewogICAgdGhpcy5yZW1vdmVfY2xhc3MoZG9jdW1lbnQuYm9keSwgInNpbmdsZV9zbGlkZSIpOwogICAgdGhpcy5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICB9LAoKICAvLyByZXN0b3JlIGFmdGVyIHByaW50aW5nICAjIyMgT0JTT0xFVEUgIyMjCiAgc2luZ2xlX3NsaWRlX3ZpZXc6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuYWRkX2NsYXNzKGRvY3VtZW50LmJvZHksICJzaW5nbGVfc2xpZGUiKTsKICAgIHRoaXMuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJ2aXNpYmxlIik7CiAgICB0aGlzLmxhc3Rfc2hvd24gPSB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obnVsbCk7CiAgfSwKCiAgLy8gc3VwcHJlc3MgSUUncyBpbWFnZSB0b29sYmFyIHBvcCB1cAogIGhpZGVfaW1hZ2VfdG9vbGJhcjogZnVuY3Rpb24gKCkgewogICAgaWYgKCF0aGlzLm5zX3BvcykKICAgIHsKICAgICAgdmFyIGltYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJJTUciKTsKCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aDsgKytpKQogICAgICAgIGltYWdlc1tpXS5zZXRBdHRyaWJ1dGUoImdhbGxlcnlpbWciLCAibm8iKTsKICAgIH0KICB9LAoKICB1bmxvYWRlZDogZnVuY3Rpb24gKGUpIHsKICAgIC8vYWxlcnQoInVubG9hZGVkIik7CiAgfSwKCiAgLy8gU2FmYXJpIGFuZCBLb25xdWVyb3IgZG9uJ3QgeWV0IHN1cHBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSgpCiAgLy8gYW5kIHRoZXkgYWx3YXlzIHJlbG9hZCBwYWdlIHdoZW4gbG9jYXRpb24uaHJlZiBpcyB1cGRhdGVkCiAgaXNfS0hUTUw6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICByZXR1cm4gKGFnZW50LmluZGV4T2YoIktIVE1MIikgPj0gMCA/IHRydWUgOiBmYWxzZSk7CiAgfSwKCiAgLy8gZmluZCBzbGlkZSBuYW1lIGZyb20gZmlyc3QgaDEgZWxlbWVudAogIC8vIGRlZmF1bHQgdG8gZG9jdW1lbnQgdGl0bGUgKyBzbGlkZSBudW1iZXIKICBzbGlkZV9uYW1lOiBmdW5jdGlvbiAoaW5kZXgpIHsKICAgIHZhciBuYW1lID0gbnVsbDsKICAgIHZhciBzbGlkZSA9IHRoaXMuc2xpZGVzW2luZGV4XTsKCiAgICB2YXIgaGVhZGluZyA9IHRoaXMuZmluZF9oZWFkaW5nKHNsaWRlKTsKCiAgICBpZiAoaGVhZGluZykKICAgICAgbmFtZSA9IHRoaXMuZXh0cmFjdF90ZXh0KGhlYWRpbmcpOwoKICAgIGlmICghbmFtZSkKICAgICAgbmFtZSA9IHRoaXMudGl0bGUgKyAiKCIgKyAoaW5kZXggKyAxKSArICIpIjsKCiAgICBuYW1lLnJlcGxhY2UoL1wmL2csICImYW1wOyIpOwogICAgbmFtZS5yZXBsYWNlKC9cPC9nLCAiJmx0OyIpOwogICAgbmFtZS5yZXBsYWNlKC9cPi9nLCAiJmd0OyIpOwoKICAgIHJldHVybiBuYW1lOwogIH0sCgogIC8vIGZpbmQgZmlyc3QgaDEgZWxlbWVudCBpbiBET00gdHJlZQogIGZpbmRfaGVhZGluZzogZnVuY3Rpb24gKG5vZGUpIHsKICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBudWxsOwoKICAgIGlmIChub2RlLm5vZGVOYW1lID09ICJIMSIgfHwgbm9kZS5ub2RlTmFtZSA9PSAiaDEiKQogICAgICByZXR1cm4gbm9kZTsKCiAgICB2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7CgogICAgd2hpbGUgKGNoaWxkKQogICAgewogICAgICBub2RlID0gdGhpcy5maW5kX2hlYWRpbmcoY2hpbGQpOwoKICAgICAgaWYgKG5vZGUpCiAgICAgICAgcmV0dXJuIG5vZGU7CgogICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nOwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH0sCgogIC8vIHJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIERPTSB0cmVlCiAgZXh0cmFjdF90ZXh0OiBmdW5jdGlvbiAobm9kZSkgewogICAgaWYgKCFub2RlKQogICAgICByZXR1cm4gIiI7CgogICAgLy8gdGV4dCBub2RlcwogICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykKICAgICAgcmV0dXJuIG5vZGUubm9kZVZhbHVlOwoKICAgIC8vIGVsZW1lbnRzCiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxKQogICAgewogICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkOwogICAgICB2YXIgdGV4dCA9ICIiOwoKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB0ZXh0ID0gdGV4dCArIHRoaXMuZXh0cmFjdF90ZXh0KG5vZGUpOwogICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICB9CgogICAgICByZXR1cm4gdGV4dDsKICAgIH0KCiAgICByZXR1cm4gIiI7CiAgfSwKCiAgLy8gZmluZCBjb3B5cmlnaHQgdGV4dCBmcm9tIG1ldGEgZWxlbWVudAogIGZpbmRfY29weXJpZ2h0OiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgbmFtZSwgY29udGVudDsKICAgIHZhciBtZXRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGEiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGEubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIG5hbWUgPSBtZXRhW2ldLmdldEF0dHJpYnV0ZSgibmFtZSIpOwogICAgICBjb250ZW50ID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKTsKCiAgICAgIGlmIChuYW1lID09ICJjb3B5cmlnaHQiKQogICAgICAgIHJldHVybiBjb250ZW50OwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH0sCgogIGZpbmRfc2l6ZV9hZGp1c3Q6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBuYW1lLCBjb250ZW50LCBvZmZzZXQ7CiAgICB2YXIgbWV0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmxlbmd0aDsgKytpKQogICAgewogICAgICBuYW1lID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKICAgICAgY29udGVudCA9IG1ldGFbaV0uZ2V0QXR0cmlidXRlKCJjb250ZW50Iik7CgogICAgICBpZiAobmFtZSA9PSAiZm9udC1zaXplLWFkanVzdG1lbnQiKQogICAgICAgIHJldHVybiAxICogY29udGVudDsKICAgIH0KCiAgICByZXR1cm4gMTsKICB9LAoKICAvLyA8bWV0YSBuYW1lPSJkdXJhdGlvbiIgY29udGVudD0iMjAiIC8+ICBmb3IgMjAgbWludXRlcwogIGZpbmRfZHVyYXRpb246IGZ1bmN0aW9uICgpIHsKICAgIHZhciBuYW1lLCBjb250ZW50LCBvZmZzZXQ7CiAgICB2YXIgbWV0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmxlbmd0aDsgKytpKQogICAgewogICAgICBuYW1lID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKICAgICAgY29udGVudCA9IG1ldGFbaV0uZ2V0QXR0cmlidXRlKCJjb250ZW50Iik7CgogICAgICBpZiAobmFtZSA9PSAiZHVyYXRpb24iKQogICAgICAgIHJldHVybiA2MDAwMCAqIGNvbnRlbnQ7CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfSwKCiAgcmVwbGFjZV9ieV9ub25fYnJlYWtpbmdfc3BhY2U6IGZ1bmN0aW9uIChzdHIpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKQogICAgICBzdHJbaV0gPSAxNjA7CiAgfSwKCiAgLy8gIyMjIENIRUNLIE1FICMjIyBpcyB1c2Ugb2YgImxpIiBva2F5IGZvciB0ZXh0L2h0bWw/CiAgLy8gZm9yIFhIVE1MIGRvIHdlIGFsc28gbmVlZCB0byBzcGVjaWZ5IG5hbWVzcGFjZT8KICBpbml0X291dGxpbmVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgaXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKQogICAgewogICAgICB2YXIgdGFyZ2V0ID0gaXRlbXNbaV07CgogICAgICBpZiAoIXRoaXMuaGFzX2NsYXNzKHRhcmdldC5wYXJlbnROb2RlLCAib3V0bGluZSIpKQogICAgICAgIGNvbnRpbnVlOwoKICAgICAgdGFyZ2V0Lm9uY2xpY2sgPSB0aGlzLm91dGxpbmVfY2xpY2s7Ci8qICMjIyBtb3JlIHdvcmsgbmVlZGVkIGZvciBJRTYKICAgICAgaWYgKCF0aGlzLm5zX3BvcykKICAgICAgewogICAgICAgIHRhcmdldC5vbm1vdXNlb3ZlciA9IHRoaXMuaG92ZXJfb3V0bGluZTsKICAgICAgICB0YXJnZXQub25tb3VzZW91dCA9IHRoaXMudW5ob3Zlcl9vdXRsaW5lOwogICAgICB9CiovCiAgICAgIGlmICh0aGlzLmZvbGRhYmxlKHRhcmdldCkpCiAgICAgIHsKICAgICAgICB0YXJnZXQuZm9sZGFibGUgPSB0cnVlOwogICAgICAgIHRhcmdldC5vbmZvY3VzID0gZnVuY3Rpb24gKCkge3czY19zbGlkeS5vdXRsaW5lID0gdGhpczt9OwogICAgICAgIHRhcmdldC5vbmJsdXIgPSBmdW5jdGlvbiAoKSB7dzNjX3NsaWR5Lm91dGxpbmUgPSBudWxsO307CgogICAgICAgIGlmICghdGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSkKICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwgIjAiKTsKCiAgICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKHRhcmdldCwgImV4cGFuZCIpKQogICAgICAgICAgdGhpcy51bmZvbGQodGFyZ2V0KTsKICAgICAgICBlbHNlCiAgICAgICAgICB0aGlzLmZvbGQodGFyZ2V0KTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICB0aGlzLmFkZF9jbGFzcyh0YXJnZXQsICJub2ZvbGQiKTsKICAgICAgICB0YXJnZXQudmlzaWJsZSA9IHRydWU7CiAgICAgICAgdGFyZ2V0LmZvbGRhYmxlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9LAoKICBmb2xkYWJsZTogZnVuY3Rpb24gKGl0ZW0pIHsKICAgIGlmICghaXRlbSB8fCBpdGVtLm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICB2YXIgbm9kZSA9IGl0ZW0uZmlyc3RDaGlsZDsKCiAgICB3aGlsZSAobm9kZSkKICAgIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiB0aGlzLmlzX2Jsb2NrKG5vZGUpKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIC8vICMjIyBDSEVDSyBNRSAjIyMgc3dpdGNoIHRvIGFkZC9yZW1vdmUgImhpZGRlbiIgY2xhc3MKICBmb2xkOiBmdW5jdGlvbiAoaXRlbSkgewogICAgaWYgKGl0ZW0pCiAgICB7CiAgICAgIHRoaXMucmVtb3ZlX2NsYXNzKGl0ZW0sICJ1bmZvbGRlZCIpOwogICAgICB0aGlzLmFkZF9jbGFzcyhpdGVtLCAiZm9sZGVkIik7CiAgICB9CgogICAgdmFyIG5vZGUgPSBpdGVtID8gaXRlbS5maXJzdENoaWxkIDogbnVsbDsKCiAgICB3aGlsZSAobm9kZSkKICAgIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiB0aGlzLmlzX2Jsb2NrKG5vZGUpKSAvLyBlbGVtZW50CiAgICAgIHsKICAgICAgICAgdzNjX3NsaWR5LmFkZF9jbGFzcyhub2RlLCAiaGlkZGVuIik7CiAgICAgIH0KCiAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgfQoKICAgIGl0ZW0udmlzaWJsZSA9IGZhbHNlOwogIH0sCgogIC8vICMjIyBDSEVDSyBNRSAjIyMgc3dpdGNoIHRvIGFkZC9yZW1vdmUgImhpZGRlbiIgY2xhc3MKICB1bmZvbGQ6IGZ1bmN0aW9uIChpdGVtKSB7CiAgICBpZiAoaXRlbSkKICAgIHsKICAgICAgdGhpcy5hZGRfY2xhc3MoaXRlbSwgInVuZm9sZGVkIik7CiAgICAgIHRoaXMucmVtb3ZlX2NsYXNzKGl0ZW0sICJmb2xkZWQiKTsKICAgIH0KCiAgICB2YXIgbm9kZSA9IGl0ZW0gPyBpdGVtLmZpcnN0Q2hpbGQgOiBudWxsOwoKICAgIHdoaWxlIChub2RlKQogICAgewogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxICYmIHRoaXMuaXNfYmxvY2sobm9kZSkpIC8vIGVsZW1lbnQKICAgICAgewogICAgICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3Mobm9kZSwgImhpZGRlbiIpOwogICAgICB9CgogICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgIH0KCiAgICBpdGVtLnZpc2libGUgPSB0cnVlOwogIH0sCgogIG91dGxpbmVfY2xpY2s6IGZ1bmN0aW9uIChlKSB7CiAgICBpZiAoIWUpCiAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgdmFyIHJpZ2h0Y2xpY2sgPSBmYWxzZTsKICAgIHZhciB0YXJnZXQgPSB3M2Nfc2xpZHkuZ2V0X3RhcmdldChlKTsKCiAgICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC52aXNpYmxlID09IHVuZGVmaW5lZCkKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgaWYgKCF0YXJnZXQpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmIChlLndoaWNoKQogICAgICByaWdodGNsaWNrID0gKGUud2hpY2ggPT0gMyk7CiAgICBlbHNlIGlmIChlLmJ1dHRvbikKICAgICAgcmlnaHRjbGljayA9IChlLmJ1dHRvbiA9PSAyKTsKCiAgICBpZiAoIXJpZ2h0Y2xpY2sgJiYgdGFyZ2V0LnZpc2libGUgIT0gdW5kZWZpbmVkKQogICAgewogICAgICBpZiAodGFyZ2V0LmZvbGRhYmxlKQogICAgICB7CiAgICAgICAgaWYgKHRhcmdldC52aXNpYmxlKQogICAgICAgICAgdzNjX3NsaWR5LmZvbGQodGFyZ2V0KTsKICAgICAgICBlbHNlCiAgICAgICAgICB3M2Nfc2xpZHkudW5mb2xkKHRhcmdldCk7CiAgICAgIH0KCiAgICAgIHczY19zbGlkeS5zdG9wX3Byb3BhZ2F0aW9uKGUpOwogICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgYWRkX2luaXRpYWxfcHJvbXB0OiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgcHJvbXB0ID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICBwcm9tcHQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJpbml0aWFsX3Byb21wdCIpOwoKICAgIHZhciBwMSA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoInAiKTsKICAgIHByb21wdC5hcHBlbmRDaGlsZChwMSk7CiAgICBwMS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImhlbHAiKTsKCiAgICBpZiAodGhpcy5rZXlib2FyZGxlc3MpCiAgICAgIHAxLmlubmVySFRNTCA9ICJzd2lwZSBsZWZ0IHRvIG1vdmUgdG8gbmV4dCBzbGlkZSI7CiAgICBlbHNlCiAgICAgIHAxLmlubmVySFRNTCA9ICJTcGFjZSwgUmlnaHQgQXJyb3cgb3Igc3dpcGUgbGVmdCB0byBtb3ZlIHRvICIgKwogICAgICAgICAgICAgICAgICAgICAibmV4dCBzbGlkZSwgY2xpY2sgaGVscCBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzIjsKCiAgICB0aGlzLmFkZF9saXN0ZW5lcihwcm9tcHQsICJjbGljayIsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocHJvbXB0KTsKICAgICAgdzNjX3NsaWR5LnN0b3BfcHJvcGFnYXRpb24oZSk7CiAgICAKICAgICAgaWYgKGUuY2FuY2VsICE9IHVuZGVmaW5lZCkKICAgICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIAogICAgICBpZiAoZS5yZXR1cm5WYWx1ZSAhPSB1bmRlZmluZWQpCiAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwogICAgICAKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7CgogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcm9tcHQpOwogICAgdGhpcy5pbml0aWFsX3Byb21wdCA9IHByb21wdDsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwcm9tcHQpO30sIDUwMDApOwogIH0sCgogIGFkZF90b29sYmFyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgY291bnRlciwgcGFnZTsKCiAgICAgdGhpcy50b29sYmFyID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy50b29sYmFyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidG9vbGJhciIpOwoKICAgICAvLyBhIHJlYXNvbmFibHkgYmVoYXZlZCBicm93c2VyCiAgICAgaWYgKHRoaXMubnNfcG9zIHx8ICF0aGlzLmllNikKICAgICB7CiAgICAgICB2YXIgcmlnaHQgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKTsKICAgICAgIHJpZ2h0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodCIpOwoKICAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIikKICAgICAgIGNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgic2xpZGUiKSArICIgbi9tIjsKICAgICAgIHJpZ2h0LmFwcGVuZENoaWxkKGNvdW50ZXIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKHJpZ2h0KTsKCiAgICAgICB2YXIgbGVmdCA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImRpdiIpOwogICAgICAgbGVmdC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgInRleHQtYWxpZ246IGxlZnQiKTsKCiAgICAgICAvLyBnbG9iYWwgZW5kIG9mIHNsaWRlIGluZGljYXRvcgogICAgICAgdGhpcy5lb3MgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICB0aGlzLmVvcy5pbm5lckhUTUwgPSAiKiAiOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZCh0aGlzLmVvcyk7CgogICAgICAgdmFyIGhlbHAgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJhIik7CiAgICAgICBoZWxwLnNldEF0dHJpYnV0ZSgiaHJlZiIsIHRoaXMuaGVscF9wYWdlKTsKICAgICAgIGhlbHAuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIHRoaXMubG9jYWxpemUodGhpcy5oZWxwX3RleHQpKTsKICAgICAgIGhlbHAuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgiaGVscD8iKTsKICAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoaGVscCk7CiAgICAgICBoZWxwLnN0eWxlLmRpc3BsYXk9Im5vbmUiOyAKICAgICAgIHRoaXMuaGVscF9hbmNob3IgPSBoZWxwOyAgLy8gc2F2ZSBmb3IgZm9jdXMgaGFjawoKICAgICAgIHZhciBnYXAxID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKTsKICAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoZ2FwMSk7CgogICAgICAgdmFyIGNvbnRlbnRzID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiYSIpOwogICAgICAgY29udGVudHMuc2V0QXR0cmlidXRlKCJocmVmIiwgImphdmFzY3JpcHQ6dzNjX3NsaWR5LnRvZ2dsZV90YWJsZV9vZl9jb250ZW50cygpIik7CiAgICAgICBjb250ZW50cy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSgidGFibGUgb2YgY29udGVudHMiKSk7CiAgICAgICBjb250ZW50cy5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJDb250ZW50cyIpOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZChjb250ZW50cyk7CgogICAgICAgdmFyIGdhcDIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZChnYXAyKTsKCiAgICAgICB2YXIgY29weXJpZ2h0ID0gdGhpcy5maW5kX2NvcHlyaWdodCgpOwoKICAgICAgIGlmIChjb3B5cmlnaHQpCiAgICAgICB7CiAgICAgICAgIHZhciBzcGFuID0gdGhpcy5jcmVhdGVfZWxlbWVudCgic3BhbiIpOwogICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICJjb3B5cmlnaHQiOwogICAgICAgICBzcGFuLmlubmVySFRNTCA9IGNvcHlyaWdodDsKICAgICAgICAgbGVmdC5hcHBlbmRDaGlsZChzcGFuKTsKICAgICAgIH0KCiAgICAgICB0aGlzLnRvb2xiYXIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsICIwIik7CiAgICAgICB0aGlzLnRvb2xiYXIuYXBwZW5kQ2hpbGQobGVmdCk7CiAgICAgfQogICAgIGVsc2UgLy8gSUU2IHNvIG5lZWQgdG8gd29yayBhcm91bmQgaXRzIHBvb3IgQ1NTIHN1cHBvcnQKICAgICB7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUucG9zaXRpb24gPSAodGhpcy5pZTcgPyAiZml4ZWQiIDogImFic29sdXRlIik7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUuekluZGV4ID0gIjIwMCI7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUud2lkdGggPSAiOTkuOSUiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmhlaWdodCA9ICIxLjJlbSI7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUudG9wID0gImF1dG8iOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmJvdHRvbSA9ICIwIjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5sZWZ0ID0gIjAiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLnJpZ2h0ID0gIjAiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLnRleHRBbGlnbiA9ICJsZWZ0IjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5mb250U2l6ZSA9ICI2MCUiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmNvbG9yID0gInJlZCI7CiAgICAgICB0aGlzLnRvb2xiYXIuYm9yZGVyV2lkdGggPSAwOwogICAgICAgdGhpcy50b29sYmFyLmNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5iYWNrZ3JvdW5kID0gInJnYigyNDAsMjQwLDI0MCkiOwoKICAgICAgIC8vIHdvdWxkIGxpa2UgdG8gaGF2ZSBoZWxwIHRleHQgbGVmdCBhbGlnbmVkCiAgICAgICAvLyBhbmQgcGFnZSBjb3VudGVyIHJpZ2h0IGFsaWduZWQsIGZsb2F0aW5nCiAgICAgICAvLyBkaXYncyBkb24ndCB3b3JrLCBzbyBpbnN0ZWFkIHVzZSBuZXN0ZWQKICAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBkaXYncy4KCiAgICAgICB2YXIgc3AgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICBzcC5pbm5lckhUTUwgPSAiJm5ic3A7Jm5ic3A7KiZuYnNwOyI7CiAgICAgICB0aGlzLnRvb2xiYXIuYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgdGhpcy5lb3MgPSBzcDsgIC8vIGVuZCBvZiBzbGlkZSBpbmRpY2F0b3IKCiAgICAgICB2YXIgaGVscCA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImEiKTsKICAgICAgIGhlbHAuc2V0QXR0cmlidXRlKCJocmVmIiwgdGhpcy5oZWxwX3BhZ2UpOwogICAgICAgaGVscC5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSh0aGlzLmhlbHBfdGV4dCkpOwogICAgICAgaGVscC5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJoZWxwPyIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGhlbHApOwogICAgICAgdGhpcy5oZWxwX2FuY2hvciA9IGhlbHA7ICAvLyBzYXZlIGZvciBmb2N1cyBoYWNrCgogICAgICAgdmFyIGdhcDEgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGdhcDEpOwoKICAgICAgIHZhciBjb250ZW50cyA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImEiKTsKICAgICAgIGNvbnRlbnRzLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJqYXZhc2NyaXB0OnRvZ2dsZVRhYmxlT2ZDb250ZW50cygpIik7CiAgICAgICBjb250ZW50cy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSgidGFibGUgb2YgY29udGVudHMiLmxvY2FsaXplKSk7CiAgICAgICBjb250ZW50cy5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJjb250ZW50cz8iKTsKICAgICAgIHRoaXMudG9vbGJhci5hcHBlbmRDaGlsZChjb250ZW50cyk7CgogICAgICAgdmFyIGdhcDIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGdhcDIpOwoKICAgICAgIHZhciBjb3B5cmlnaHQgPSB0aGlzLmZpbmRfY29weXJpZ2h0KCk7CgogICAgICAgaWYgKGNvcHlyaWdodCkKICAgICAgIHsKICAgICAgICAgdmFyIHNwYW4gPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gY29weXJpZ2h0OwogICAgICAgICBzcGFuLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKICAgICAgICAgc3Bhbi5zdHlsZS5tYXJnaW5MZWZ0ID0gIjAuNWVtIjsKICAgICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKHNwYW4pOwogICAgICAgfQoKICAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKQogICAgICAgY291bnRlci5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICBjb3VudGVyLnN0eWxlLndpZHRoID0gImF1dG8iOyAvLyIyMCUiOwogICAgICAgY291bnRlci5zdHlsZS5oZWlnaHQgPSAiMS4yZW0iOwogICAgICAgY291bnRlci5zdHlsZS50b3AgPSAiYXV0byI7CiAgICAgICBjb3VudGVyLnN0eWxlLmJvdHRvbSA9IDA7CiAgICAgICBjb3VudGVyLnN0eWxlLnJpZ2h0ID0gIjAiOwogICAgICAgY291bnRlci5zdHlsZS50ZXh0QWxpZ24gPSAicmlnaHQiOwogICAgICAgY291bnRlci5zdHlsZS5jb2xvciA9ICJyZWQiOwogICAgICAgY291bnRlci5zdHlsZS5iYWNrZ3JvdW5kID0gInJnYigyNDAsMjQwLDI0MCkiOwoKICAgICAgIGNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgic2xpZGUiKSArICIgbi9tIjsKICAgICAgIHRoaXMudG9vbGJhci5hcHBlbmRDaGlsZChjb3VudGVyKTsKICAgICB9CgogICAgIC8vIGVuc3VyZSB0aGF0IGNsaWNrIGlzbid0IHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBwYWdlCiAgICAgdGhpcy50b29sYmFyLm9uY2xpY2sgPQogICAgICAgICBmdW5jdGlvbiAoZSkgewogICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKCiAgICAgICAgICAgaWYgKCF0YXJnZXQgJiYgZS5zcmNFbGVtZW50KQogICAgICAgICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgICAgICAgICAvLyB3b3JrIGFyb3VuZCBTYWZhcmkgYnVnCiAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZVR5cGUgPT0gMykKICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwoKICAgICAgICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKCiAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSAiYSIpCiAgICAgICAgICAgICB3M2Nfc2xpZHkubW91c2VfYnV0dG9uX2NsaWNrKGUpOwogICAgICAgICB9OwoKICAgICB0aGlzLnNsaWRlX251bWJlcl9lbGVtZW50ID0gY291bnRlcjsKICAgICB0aGlzLnNldF9lb3Nfc3RhdHVzKGZhbHNlKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbGJhcik7CiAgfSwKCiAgLy8gd3lzaXd5ZyBlZGl0b3JzIG1ha2UgaXQgaGFyZCB0byB1c2UgZGl2IGVsZW1lbnRzCiAgLy8gZS5nLiBhbWF5YSBsb3NlcyB0aGUgZGl2IHdoZW4geW91IGNvcHkgYW5kIHBhc3RlCiAgLy8gdGhpcyBmdW5jdGlvbiB3cmFwcyBkaXYgZWxlbWVudHMgYXJvdW5kIGltcGxpY2l0CiAgLy8gc2xpZGVzIHdoaWNoIHN0YXJ0IHdpdGggYW4gaDEgZWxlbWVudCBhbmQgY29udGludWUKICAvLyB1cCB0byB0aGUgbmV4dCBoZWFkaW5nIG9yIGRpdiBlbGVtZW50CiAgd3JhcF9pbXBsaWNpdF9zbGlkZXM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBpLCBoZWFkaW5nLCBub2RlLCBuZXh0LCBkaXY7CiAgICB2YXIgaGVhZGluZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaDEiKTsKCiAgICBpZiAoIWhlYWRpbmdzKQogICAgICByZXR1cm47CgogICAgZm9yIChpID0gMDsgaSA8IGhlYWRpbmdzLmxlbmd0aDsgKytpKQogICAgewogICAgICBoZWFkaW5nID0gaGVhZGluZ3NbaV07CgogICAgICBpZiAoaGVhZGluZy5wYXJlbnROb2RlICE9IGRvY3VtZW50LmJvZHkpCiAgICAgICAgY29udGludWU7CgogICAgICBub2RlID0gaGVhZGluZy5uZXh0U2libGluZzsKCiAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICB0aGlzLmFkZF9jbGFzcyhkaXYsICJzbGlkZSIpOwogICAgICBkb2N1bWVudC5ib2R5LnJlcGxhY2VDaGlsZChkaXYsIGhlYWRpbmcpOwogICAgICBkaXYuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CgogICAgICB3aGlsZSAobm9kZSkKICAgICAgewogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIC8vIGFuIGVsZW1lbnQKICAgICAgICB7CiAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkgxIiB8fCBub2RlLm5vZGVOYW1lID09ICJoMSIpCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkRJViIgfHwgbm9kZS5ub2RlTmFtZSA9PSAiZGl2IikKICAgICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5oYXNfY2xhc3Mobm9kZSwgInNsaWRlIikpCiAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgIGlmICh0aGlzLmhhc19jbGFzcyhub2RlLCAiaGFuZG91dCIpKQogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0ID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgICBub2RlID0gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub2RlKTsKICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgIH0gCiAgICB9CiAgfSwKCiAgYXR0YWNoX3RvdWNoX2hhbmRlcnM6IGZ1bmN0aW9uKHNsaWRlcykKICB7CiAgICB2YXIgaSwgc2xpZGU7CgogICAgZm9yIChpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgc2xpZGUgPSBzbGlkZXNbaV07CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKHNsaWRlLCAidG91Y2hzdGFydCIsIHRoaXMudG91Y2hzdGFydCk7CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKHNsaWRlLCAidG91Y2htb3ZlIiwgdGhpcy50b3VjaG1vdmUpOwogICAgICB0aGlzLmFkZF9saXN0ZW5lcihzbGlkZSwgInRvdWNoZW5kIiwgdGhpcy50b3VjaGVuZCk7CiAgICB9CiAgfSwKCi8vIHJldHVybiBuZXcgYXJyYXkgb2YgYWxsIHNsaWRlcwogIGNvbGxlY3Rfc2xpZGVzOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgc2xpZGVzID0gbmV3IEFycmF5KCk7CiAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgZGl2ID0gZGl2cy5pdGVtKGkpOwoKICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKGRpdiwgInNsaWRlIikpCiAgICAgIHsKICAgICAgICAvLyBhZGQgc2xpZGUgdG8gY29sbGVjdGlvbgogICAgICAgIHNsaWRlc1tzbGlkZXMubGVuZ3RoXSA9IGRpdjsKCiAgICAgICAgLy8gaGlkZSBlYWNoIHNsaWRlIGFzIGl0IGlzIGZvdW5kCiAgICAgICAgdGhpcy5hZGRfY2xhc3MoZGl2LCAiaGlkZGVuIik7CgogICAgICAgIC8vIGFkZCBkdW1teSA8YnIvPiBhdCBlbmQgZm9yIHNjcm9sbGluZyBoYWNrCiAgICAgICAgdmFyIG5vZGUxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobm9kZTEpOwogICAgICAgIHZhciBub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CiAgICAgICAgZGl2LmFwcGVuZENoaWxkKG5vZGUyKTsKICAgICAgfQogICAgICBlbHNlIGlmICh0aGlzLmhhc19jbGFzcyhkaXYsICJiYWNrZ3JvdW5kIikpCiAgICAgIHsgIC8vIHdvcmsgYXJvdW5kIGZvciBGaXJlZm94IFNWRyByZWxvYWQgYnVnCiAgICAgICAgLy8gd2hpY2ggb3RoZXJ3aXNlIHJlcGxhY2VzIDFzdCBTVkcgZ3JhcGhpYyB3aXRoIDJuZAogICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgfQogICAgfQoKICAgIHRoaXMuc2xpZGVzID0gc2xpZGVzOwogIH0sCgogIC8vIHJldHVybiBuZXcgYXJyYXkgb2YgYWxsIDxkaXYgY2xhc3M9ImhhbmRvdXQiPgogIGNvbGxlY3Rfbm90ZXM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBub3RlcyA9IG5ldyBBcnJheSgpOwogICAgdmFyIGRpdnMgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpdnMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGRpdiA9IGRpdnMuaXRlbShpKTsKCiAgICAgIGlmICh0aGlzLmhhc19jbGFzcyhkaXYsICJoYW5kb3V0IikpCiAgICAgIHsKICAgICAgICAvLyBhZGQgbm90ZSB0byBjb2xsZWN0aW9uCiAgICAgICAgbm90ZXNbbm90ZXMubGVuZ3RoXSA9IGRpdjsKCiAgICAgICAgLy8gYW5kIGhpZGUgaXQKICAgICAgICB0aGlzLmFkZF9jbGFzcyhkaXYsICJoaWRkZW4iKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMubm90ZXMgPSBub3RlczsKICB9LAoKICAvLyByZXR1cm4gbmV3IGFycmF5IG9mIGFsbCA8ZGl2IGNsYXNzPSJiYWNrZ3JvdW5kIj4KICAvLyBpbmNsdWRpbmcgbmFtZWQgYmFja2dyb3VuZHMgZS5nLiBjbGFzcz0iYmFja2dyb3VuZCB0aXRsZXBhZ2UiCiAgY29sbGVjdF9iYWNrZ3JvdW5kczogZnVuY3Rpb24gKCkgewogICAgdmFyIGJhY2tncm91bmRzID0gbmV3IEFycmF5KCk7CiAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgZGl2ID0gZGl2cy5pdGVtKGkpOwoKICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKGRpdiwgImJhY2tncm91bmQiKSkKICAgICAgewogICAgICAgIC8vIGFkZCBiYWNrZ3JvdW5kIHRvIGNvbGxlY3Rpb24KICAgICAgICBiYWNrZ3JvdW5kc1tiYWNrZ3JvdW5kcy5sZW5ndGhdID0gZGl2OwoKICAgICAgICAvLyBhbmQgaGlkZSBpdAogICAgICAgIHRoaXMuYWRkX2NsYXNzKGRpdiwgImhpZGRlbiIpOwogICAgICB9CiAgICB9CgogICAgdGhpcy5iYWNrZ3JvdW5kcyA9IGJhY2tncm91bmRzOwogIH0sCgogIC8vIHNldCBjbGljayBoYW5kbGVycyBvbiBhbGwgYW5jaG9ycwogIHBhdGNoX2FuY2hvcnM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBzZWxmID0gdzNjX3NsaWR5OwogICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgLy8gY29tcGFyZSB0aGlzLmhyZWYgd2l0aCBsb2NhdGlvbi5ocmVmCiAgICAgIC8vIGZvciBsaW5rIHRvIGFub3RoZXIgc2xpZGUgaW4gdGhpcyBkb2MKCiAgICAgIGlmIChzZWxmLnBhZ2VfYWRkcmVzcyh0aGlzLmhyZWYpID09IHNlbGYucGFnZV9hZGRyZXNzKGxvY2F0aW9uLmhyZWYpKQogICAgICB7CiAgICAgICAgLy8geWVzLCBzbyBmaW5kIG5ldyBzbGlkZSBudW1iZXIKICAgICAgICB2YXIgbmV3c2xpZGVudW0gPSBzZWxmLmZpbmRfc2xpZGVfbnVtYmVyKHRoaXMuaHJlZik7CgogICAgICAgIGlmIChuZXdzbGlkZW51bSAhPSBzZWxmLnNsaWRlX251bWJlcikKICAgICAgICB7CiAgICAgICAgICB2YXIgc2xpZGUgPSBzZWxmLnNsaWRlc1tzZWxmLnNsaWRlX251bWJlcl07CiAgICAgICAgICBzZWxmLmhpZGVfc2xpZGUoc2xpZGUpOwogICAgICAgICAgc2VsZi5zbGlkZV9udW1iZXIgPSBuZXdzbGlkZW51bTsKICAgICAgICAgIHNsaWRlID0gc2VsZi5zbGlkZXNbc2VsZi5zbGlkZV9udW1iZXJdOwogICAgICAgICAgc2VsZi5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgICAgIHNlbGYuc2V0X2xvY2F0aW9uKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UKICAgICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihldmVudCk7CgovLyAgICAgIGVsc2UgaWYgKHRoaXMudGFyZ2V0ID09IG51bGwpCi8vICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5ocmVmOwoKICAgICAgdGhpcy5ibHVyKCk7CiAgICAgIHNlbGYuZGlzYWJsZV9zbGlkZV9jbGljayA9IHRydWU7CiAgICB9OwoKICAgIHZhciBhbmNob3JzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKQogICAgICAgIGFuY2hvcnNbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVyLCBmYWxzZSk7CiAgICAgIGVsc2UKICAgICAgICBhbmNob3JzW2ldLmF0dGFjaEV2ZW50KCJvbmNsaWNrIiwgaGFuZGxlcik7CiAgICB9CiAgfSwKCiAgLy8gIyMjIENIRUNLIE1FICMjIyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBpbnZva2VkIHZpYSBzZXRUaW1lb3V0CiAgLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZm9yIHVzZSBvZiB3M2Nfc2xpZHkgdnMgdGhpcwogIHNob3dfc2xpZGVfbnVtYmVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdGltZXIgPSB3M2Nfc2xpZHkuZ2V0X3RpbWVyKCk7CiAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGltZXIgKyB3M2Nfc2xpZHkubG9jYWxpemUoInNsaWRlIikgKyAiICIgKwogICAgICAgICAgICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyICsgMSkgKyAiLyIgKyB3M2Nfc2xpZHkuc2xpZGVzLmxlbmd0aDsKICB9LAoKICAvLyBldmVyeSAyMDBtUyBjaGVjayBpZiB0aGUgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZCBhcyBhCiAgLy8gcmVzdWx0IG9mIHRoZSB1c2VyIGFjdGl2YXRpbmcgdGhlIEJhY2sgYnV0dG9uL21lbnUgaXRlbQogIC8vIGRvZXNuJ3Qgd29yayBmb3IgT3BlcmEgPCA5LjUKICBjaGVja19sb2NhdGlvbjogZnVuY3Rpb24gKCkgewogICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoOwoKICAgIGlmICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID4gMCAmJiAoaGFzaCA9PSAiIiB8fCBoYXNoID09ICIjIikpCiAgICAgIHczY19zbGlkeS5nb3RvX3NsaWRlKDApOwogICAgZWxzZSBpZiAoaGFzaC5sZW5ndGggPiAyICYmIGhhc2ggIT0gIiMoIisodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSsiKSIpCiAgICB7CiAgICAgIHZhciBudW0gPSBwYXJzZUludChsb2NhdGlvbi5oYXNoLnN1YnN0cigyKSk7CgogICAgICBpZiAoIWlzTmFOKG51bSkpCiAgICAgICAgdzNjX3NsaWR5LmdvdG9fc2xpZGUobnVtLTEpOwogICAgfQoKICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0ICYmIHczY19zbGlkeS5zbGlkZV9udW1iZXIgPiAwKQogICAgewogICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKCiAgICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0ID4gMCkKICAgICAgICB3M2Nfc2xpZHkudGltZV9sZWZ0IC09IDIwMDsKICAgIH0gCiAgfSwKCiAgZ2V0X3RpbWVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdGltZXIgPSAiIjsKICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0KQogICAgewogICAgICB2YXIgbWlucywgc2VjczsKICAgICAgc2VjcyA9IE1hdGguZmxvb3IodzNjX3NsaWR5LnRpbWVfbGVmdC8xMDAwKTsKICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2VjcyAvIDYwKTsKICAgICAgc2VjcyA9IHNlY3MgJSA2MDsKICAgICAgdGltZXIgPSAobWlucyA/IG1pbnMrIm0iIDogIiIpICsgc2VjcyArICJzICI7CiAgICB9CgogICAgcmV0dXJuIHRpbWVyOwogIH0sCgogIC8vIHRoaXMgZG9lc24ndCBwdXNoIGxvY2F0aW9uIG9udG8gaGlzdG9yeSBzdGFjayBmb3IgSUUKICAvLyBmb3Igd2hpY2ggYSBoaWRkZW4gaWZyYW1lIGhhY2sgaXMgbmVlZGVkOiBsb2FkIHBhZ2UgaW50bwogIC8vIHRoZSBpZnJhbWUgd2l0aCBzY3JpcHQgdGhhdCBzZXQncyBwYXJlbnQncyBsb2NhdGlvbi5oYXNoCiAgLy8gYnV0IHRoYXQgd29uJ3Qgd29yayBmb3Igc3RhbmRhbG9uZSB1c2UgdW5sZXNzIHdlIGNhbgogIC8vIGNyZWF0ZSB0aGUgcGFnZSBkeW5hbWljYWxseSB2aWEgYSBqYXZhc2NyaXB0OiBVUkwKICAvLyAjIyMgdXNlIGhpc3RvcnkucHVzaFN0YXRlIGlmIGF2YWlsYWJsZQogIHNldF9sb2NhdGlvbjogZnVuY3Rpb24gKCkgewogICAgIHZhciB1cmkgPSB3M2Nfc2xpZHkucGFnZV9hZGRyZXNzKGxvY2F0aW9uLmhyZWYpOwogICAgIHZhciBoYXNoID0gIiMoIiArICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyKzEpICsgIikiOwoKICAgICBpZiAodzNjX3NsaWR5LnNsaWRlX251bWJlciA+PSAwKQogICAgICAgdXJpID0gdXJpICsgaGFzaDsKCiAgICAgaWYgKHR5cGVvZihoaXN0b3J5LnB1c2hTdGF0ZSkgIT0gInVuZGVmaW5lZCIgJiYgbG9jYXRpb24ucHJvdG9jb2wgIT09ICJmaWxlOiIpCiAgICAgewogICAgICAgZG9jdW1lbnQudGl0bGUgPSB3M2Nfc2xpZHkudGl0bGUgKyAiICgiICsgKHczY19zbGlkeS5zbGlkZV9udW1iZXIrMSkgKyAiKSI7CiAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSgwLCBkb2N1bWVudC50aXRsZSwgaGFzaCk7CiAgICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKICAgICAgIHczY19zbGlkeS5ub3RpZnlfb2JzZXJ2ZXJzKCk7CiAgICAgICByZXR1cm47CiAgICAgfQoKICAgICBpZiAodzNjX3NsaWR5LmllICYmICh3M2Nfc2xpZHkuaWU2IHx8IHczY19zbGlkeS5pZTcpKQogICAgICAgdzNjX3NsaWR5LnB1c2hfaGFzaChoYXNoKTsKCiAgICAgaWYgKHVyaSAhPSBsb2NhdGlvbi5ocmVmKSAvLyAmJiAha2h0bWwKICAgICAgICBsb2NhdGlvbi5ocmVmID0gdXJpOwoKICAgICBpZiAodGhpcy5raHRtbCkKICAgICAgICBoYXNoID0gIigiICsgKHczY19zbGlkeS5zbGlkZV9udW1iZXIrMSkgKyAiKSI7CgogICAgIGlmICghdGhpcy5pZSAmJiBsb2NhdGlvbi5oYXNoICE9IGhhc2ggJiYgbG9jYXRpb24uaGFzaCAhPSAiIikKICAgICAgIGxvY2F0aW9uLmhhc2ggPSBoYXNoOwoKICAgICBkb2N1bWVudC50aXRsZSA9IHczY19zbGlkeS50aXRsZSArICIgKCIgKyAodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSArICIpIjsKICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKICAgICB3M2Nfc2xpZHkubm90aWZ5X29ic2VydmVycygpOwogIH0sCgogIG5vdGlmeV9vYnNlcnZlcnM6IGZ1bmN0aW9uICgpCiAgewogICAgdmFyIHNsaWRlID0gdGhpcy5zbGlkZXNbdGhpcy5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYnNlcnZlcnMubGVuZ3RoOyArK2kpCiAgICAgIHRoaXMub2JzZXJ2ZXJzW2ldKHRoaXMuc2xpZGVfbnVtYmVyKzEsIHRoaXMuZmluZF9oZWFkaW5nKHNsaWRlKS5pbm5lclRleHQsIGxvY2F0aW9uLmhyZWYpOwogIH0sCgogIGFkZF9vYnNlcnZlcjogZnVuY3Rpb24gKG9ic2VydmVyKQogIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYnNlcnZlcnMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGlmIChvYnNlcnZlciA9PSB0aGlzLm9ic2VydmVyc1tpXSkKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5vYnNlcnZlcnMucHVzaChvYnNlcnZlcik7CiAgfSwKCiAgcmVtb3ZlX29ic2VydmVyOiBmdW5jdGlvbiAobykKICB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2JzZXJ2ZXJzLmxlbmd0aDsgKytpKQogICAgewogICAgICBpZiAob2JzZXJ2ZXIgPT0gdGhpcy5vYnNlcnZlcnNbaV0pCiAgICAgIHsKICAgICAgICB0aGlzLm9ic2VydmVycy5zcGxpY2UoaSwxKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0sCgogIHBhZ2VfYWRkcmVzczogZnVuY3Rpb24gKHVyaSkgewogICAgdmFyIGkgPSB1cmkuaW5kZXhPZigiIyIpOwoKICAgIGlmIChpIDwgMCkKICAgICAgaSA9IHVyaS5pbmRleE9mKCIlMjMiKTsKCiAgICAvLyBjaGVjayBpZiBhbmNob3IgaXMgZW50aXJlIHBhZ2UKCiAgICBpZiAoaSA8IDApCiAgICAgIHJldHVybiB1cmk7ICAvLyB5ZXMKCiAgICByZXR1cm4gdXJpLnN1YnN0cigwLCBpKTsKICB9LAoKICAvLyBvbmx5IHVzZWQgZm9yIElFNiBhbmQgSUU3CiAgb25fZnJhbWVfbG9hZGVkOiBmdW5jdGlvbiAoaGFzaCkgewogICAgbG9jYXRpb24uaGFzaCA9IGhhc2g7CiAgICB2YXIgdXJpID0gdzNjX3NsaWR5LnBhZ2VfYWRkcmVzcyhsb2NhdGlvbi5ocmVmKTsKICAgIGxvY2F0aW9uLmhyZWYgPSB1cmkgKyBoYXNoOwogIH0sCgogIC8vIGhpc3RvcnkgaGFjayB3aXRoIHRoYW5rcyB0byBCZXJ0cmFuZCBMZSBSb3kKICBwdXNoX2hhc2g6IGZ1bmN0aW9uIChoYXNoKSB7CiAgICBpZiAoaGFzaCA9PSAiIikgaGFzaCA9ICIjKDEpIjsKICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoOwoKICAgIHZhciBkb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGlzdG9yeUZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudDsKICAgIGRvYy5vcGVuKCJqYXZhc2NyaXB0Oic8aHRtbD48L2h0bWw+JyIpOwogICAgZG9jLndyaXRlKCI8aHRtbD48aGVhZD48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cucGFyZW50LnczY19zbGlkeS5vbl9mcmFtZV9sb2FkZWQoJyIrCiAgICAgIChoYXNoKSArICInKTs8L3NjcmlwdD48L2hlYWQ+PGJvZHk+aGVsbG8gbXVtPC9ib2R5PjwvaHRtbD4iKTsKICAgICAgZG9jLmNsb3NlKCk7CiAgfSwKCiAgLy8gZmluZCBjdXJyZW50IHNsaWRlIGJhc2VkIHVwb24gbG9jYXRpb24KICAvLyBmaXJzdCBmaW5kIHRhcmdldCBhbmNob3IgYW5kIHRoZW4gbG9vawogIC8vIGZvciBhc3NvY2lhdGVkIGRpdiBlbGVtZW50IGVuY2xvc2luZyBpdAogIC8vIGZpbmFsbHkgbWFwIHRoYXQgdG8gc2xpZGUgbnVtYmVyCiAgZmluZF9zbGlkZV9udW1iZXI6IGZ1bmN0aW9uICh1cmkpIHsKICAgIC8vIGZpcnN0IGdldCBhbmNob3IgZnJvbSBwYWdlIGxvY2F0aW9uCgogICAgdmFyIGkgPSB1cmkuaW5kZXhPZigiIyIpOwoKICAgIC8vIGNoZWNrIGlmIGFuY2hvciBpcyBlbnRpcmUgcGFnZQogICAgaWYgKGkgPCAwKQogICAgICByZXR1cm4gMDsgIC8vIHllcwoKICAgIHZhciBhbmNob3IgPSB1bmVzY2FwZSh1cmkuc3Vic3RyKGkrMSkpOwoKICAgIC8vIG5vdyB1c2UgYW5jaG9yIGFzIFhNTCBJRCB0byBmaW5kIHRhcmdldAogICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuY2hvcik7CgogICAgaWYgKCF0YXJnZXQpCiAgICB7CiAgICAgIC8vIGRvZXMgYW5jaG9yIGxvb2sgbGlrZSAiKDIpIiBmb3Igc2xpZGUgMiA/PwogICAgICAvLyB3aGVyZSBmaXJzdCBzbGlkZSBpcyAoMSkKICAgICAgdmFyIHJlID0gL1woKFxkKStcKS87CgogICAgICBpZiAoYW5jaG9yLm1hdGNoKHJlKSkKICAgICAgewogICAgICAgIHZhciBudW0gPSBwYXJzZUludChhbmNob3Iuc3Vic3RyaW5nKDEsIGFuY2hvci5sZW5ndGgtMSkpOwoKICAgICAgICBpZiAobnVtID4gdGhpcy5zbGlkZXMubGVuZ3RoKQogICAgICAgICAgbnVtID0gMTsKCiAgICAgICAgaWYgKC0tbnVtIDwgMCkKICAgICAgICAgIG51bSA9IDA7CgogICAgICAgIHJldHVybiBudW07CiAgICAgIH0KCiAgICAgIC8vIGFjY2VwdCBbMl0gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgIHJlID0gL1xbKFxkKStcXS87CgogICAgICBpZiAoYW5jaG9yLm1hdGNoKHJlKSkKICAgICAgewogICAgICAgICB2YXIgbnVtID0gcGFyc2VJbnQoYW5jaG9yLnN1YnN0cmluZygxLCBhbmNob3IubGVuZ3RoLTEpKTsKCiAgICAgICAgIGlmIChudW0gPiB0aGlzLnNsaWRlcy5sZW5ndGgpCiAgICAgICAgICAgIG51bSA9IDE7CgogICAgICAgICBpZiAoLS1udW0gPCAwKQogICAgICAgICAgICBudW0gPSAwOwoKICAgICAgICAgcmV0dXJuIG51bTsKICAgICAgfQoKICAgICAgLy8gb2ggZGVhciB1bmtub3duIGFuY2hvcgogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBzZWFyY2ggZm9yIGVuY2xvc2luZyBzbGlkZQoKICAgIHdoaWxlICh0cnVlKQogICAgewogICAgICAvLyBicm93c2VyIGNvZXJjZXMgaHRtbCBlbGVtZW50cyB0byB1cHBlcmNhc2UhCiAgICAgIGlmICh0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAiZGl2IiAmJgogICAgICAgICAgICB0aGlzLmhhc19jbGFzcyh0YXJnZXQsICJzbGlkZSIpKQogICAgICB7CiAgICAgICAgLy8gZm91bmQgdGhlIHNsaWRlIGVsZW1lbnQKICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgLy8gb3RoZXJ3aXNlIHRyeSBwYXJlbnQgZWxlbWVudCBpZiBhbnkKCiAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwoKICAgICAgaWYgKCF0YXJnZXQpCiAgICAgIHsKICAgICAgICByZXR1cm4gMDsgICAvLyBubyBsdWNrIQogICAgICB9CiAgICB9OwoKICAgIGZvciAoaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGlmIChzbGlkZXNbaV0gPT0gdGFyZ2V0KQogICAgICAgIHJldHVybiBpOyAgLy8gc3VjY2VzcwogICAgfQoKICAgIC8vIG9oIGRlYXIgc3RpbGwgbm8gbHVjawogICAgcmV0dXJuIDA7CiAgfSwKCiAgcHJldmlvdXNfc2xpZGU6IGZ1bmN0aW9uIChpbmNyZW1lbnRhbCkgewogICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICB7CiAgICAgIHZhciBzbGlkZTsKCiAgICAgIGlmICgoaW5jcmVtZW50YWwgfHwgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9PSAwKSAmJiB3M2Nfc2xpZHkubGFzdF9zaG93biAhPSBudWxsKQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkuaGlkZV9wcmV2aW91c19pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXMoZmFsc2UpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHczY19zbGlkeS5zbGlkZV9udW1iZXIgPiAwKQogICAgICB7CiAgICAgICAgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5oaWRlX3NsaWRlKHNsaWRlKTsKCiAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5zbGlkZV9udW1iZXIgLSAxOwogICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJ2aXNpYmxlIik7CiAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkucHJldmlvdXNfaW5jcmVtZW50YWxfaXRlbShudWxsKTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXModHJ1ZSk7CiAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CgogICAgICBpZiAoIXczY19zbGlkeS5uc19wb3MpCiAgICAgICAgdzNjX3NsaWR5LnJlZnJlc2hfdG9vbGJhcigyMDApOwogICAgfQogIH0sCgogIG5leHRfc2xpZGU6IGZ1bmN0aW9uIChpbmNyZW1lbnRhbCkgewogICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICB7CiAgICAgIHZhciBzbGlkZSwgbGFzdCA9IHczY19zbGlkeS5sYXN0X3Nob3duOwoKICAgICAgaWYgKGluY3JlbWVudGFsIHx8IHczY19zbGlkeS5zbGlkZV9udW1iZXIgPT0gdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IHczY19zbGlkeS5yZXZlYWxfbmV4dF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKTsKCiAgICAgIGlmICgoIWluY3JlbWVudGFsIHx8IHczY19zbGlkeS5sYXN0X3Nob3duID09IG51bGwpICYmCiAgICAgICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyIDwgdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwoKICAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5zbGlkZV9udW1iZXIgKyAxOwogICAgICAgICBzbGlkZSA9IHczY19zbGlkeS5zbGlkZXNbdzNjX3NsaWR5LnNsaWRlX251bWJlcl07CiAgICAgICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgiaGlkZGVuIik7CiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgfQogICAgICBlbHNlIGlmICghdzNjX3NsaWR5Lmxhc3Rfc2hvd24pCiAgICAgIHsKICAgICAgICAgaWYgKGxhc3QgJiYgaW5jcmVtZW50YWwpCiAgICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSBsYXN0OwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CgogICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXMoIXczY19zbGlkeS5uZXh0X2luY3JlbWVudGFsX2l0ZW0odzNjX3NsaWR5Lmxhc3Rfc2hvd24pKTsKCiAgICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcykKICAgICAgICAgdzNjX3NsaWR5LnJlZnJlc2hfdG9vbGJhcigyMDApOwogICAgIH0KICB9LAoKICAvLyB0byBmaXJzdCBzbGlkZSB3aXRoIG5vdGhpbmcgcmV2ZWFsZWQKICAvLyBpLmUuIHN0YXRlIGF0IHN0YXJ0IG9mIHByZXNlbnRhdGlvbgogIGZpcnN0X3NsaWRlOiBmdW5jdGlvbiAoKSB7CiAgICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICAgewogICAgICAgdmFyIHNsaWRlOwoKICAgICAgIGlmICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyICE9IDApCiAgICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwoKICAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IDA7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSBudWxsOwogICAgICAgICB3M2Nfc2xpZHkuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJoaWRkZW4iKTsKICAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICAgfQoKICAgICAgIHczY19zbGlkeS5zZXRfZW9zX3N0YXR1cygKICAgICAgICAgIXczY19zbGlkeS5uZXh0X2luY3JlbWVudGFsX2l0ZW0odzNjX3NsaWR5Lmxhc3Rfc2hvd24pKTsKICAgICAgIHczY19zbGlkeS5zZXRfbG9jYXRpb24oKTsKICAgICB9CiAgfSwKCiAgLy8gZ290byBsYXN0IHNsaWRlIHdpdGggZXZlcnl0aGluZyByZXZlYWxlZAogIC8vIGkuZS4gc3RhdGUgYXQgZW5kIG9mIHByZXNlbnRhdGlvbgogIGxhc3Rfc2xpZGU6IGZ1bmN0aW9uICgpIHsKICAgIGlmICghdzNjX3NsaWR5LnZpZXdfYWxsKQogICAgewogICAgICB2YXIgc2xpZGU7CgogICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IG51bGw7IC8vcmV2ZWFsTmV4dEl0ZW0obGFzdFNob3duKTsKCiAgICAgIGlmICh3M2Nfc2xpZHkubGFzdF9zaG93biA9PSBudWxsICYmCiAgICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyIDwgdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID0gdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxOwogICAgICAgICBzbGlkZSA9IHczY19zbGlkeS5zbGlkZXNbdzNjX3NsaWR5LnNsaWRlX251bWJlcl07CiAgICAgICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkucHJldmlvdXNfaW5jcmVtZW50YWxfaXRlbShudWxsKTsKCiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgidmlzaWJsZSIpOwogICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IHczY19zbGlkeS5wcmV2aW91c19pbmNyZW1lbnRhbF9pdGVtKG51bGwpOwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXModHJ1ZSk7CiAgICAgIHczY19zbGlkeS5zZXRfbG9jYXRpb24oKTsKICAgIH0KICB9LAoKCiAgLy8gIyMjIGNoZWNrIHRoaXMgYW5kIGNvbnNpZGVyIGFkZC9yZW1vdmUgY2xhc3MKICBzZXRfZW9zX3N0YXR1czogZnVuY3Rpb24gKHN0YXRlKSB7CiAgICBpZiAodGhpcy5lb3MpCiAgICAgIHRoaXMuZW9zLnN0eWxlLmNvbG9yID0gKHN0YXRlID8gInJnYigyNDAsMjQwLDI0MCkiIDogInJlZCIpOwogIH0sCgogIC8vIGZpcnN0IHNsaWRlIGlzIDAKICBnb3RvX3NsaWRlOiBmdW5jdGlvbiAobnVtKSB7CiAgICAvL2FsZXJ0KCJnb2luZyB0byBzbGlkZSAiICsgKG51bSsxKSk7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IG51bTsKICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoImhpZGRlbiIpOwogICAgdzNjX3NsaWR5LnNldF9lb3Nfc3RhdHVzKCF3M2Nfc2xpZHkubmV4dF9pbmNyZW1lbnRhbF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKSk7CiAgICBkb2N1bWVudC50aXRsZSA9IHczY19zbGlkeS50aXRsZSArICIgKCIgKyAodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSArICIpIjsKICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgIHczY19zbGlkeS5zaG93X3NsaWRlX251bWJlcigpOwogIH0sCgoKICBzaG93X3NsaWRlOiBmdW5jdGlvbiAoc2xpZGUpIHsKICAgIHRoaXMuc3luY19iYWNrZ3JvdW5kKHNsaWRlKTsKICAgIHRoaXMucmVtb3ZlX2NsYXNzKHNsaWRlLCAiaGlkZGVuIik7CgogICAgLy8gd29yayBhcm91bmQgSUU5IG9iamVjdCByZW5kZXJpbmcgYnVnCiAgICBzZXRUaW1lb3V0KCJ3aW5kb3cuc2Nyb2xsVG8oMCwwKTsiLCAxKTsKICB9LAoKICBoaWRlX3NsaWRlOiBmdW5jdGlvbiAoc2xpZGUpIHsKICAgIHRoaXMuYWRkX2NsYXNzKHNsaWRlLCAiaGlkZGVuIik7CiAgfSwKCiAgc2V0X2ZvY3VzOiBmdW5jdGlvbiAoZWxlbWVudCkKICB7CiAgICBpZiAoZWxlbWVudCkKICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgZWxzZQogICAgewogICAgICB3M2Nfc2xpZHkuaGVscF9hbmNob3IuZm9jdXMoKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgdzNjX3NsaWR5LmhlbHBfYW5jaG9yLmJsdXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfSwKCiAgLy8gc2hvdyBqdXN0IHRoZSBiYWNrZ3JvdW5kcyBwZXJ0aW5lbnQgdG8gdGhpcyBzbGlkZQogIC8vIHdoZW4gc2xpZGUgYmFja2dyb3VuZC1jb2xvciBpcyB0cmFuc3BhcmVudAogIC8vIHRoaXMgc2hvdWxkIG5vdyB3b3JrIHdpdGggcmdiYSBjb2xvciB2YWx1ZXMKICBzeW5jX2JhY2tncm91bmQ6IGZ1bmN0aW9uIChzbGlkZSkgewogICAgdmFyIGJhY2tncm91bmQ7CiAgICB2YXIgYmdDb2xvcjsKCiAgICBpZiAoc2xpZGUuY3VycmVudFN0eWxlKQogICAgICBiZ0NvbG9yID0gc2xpZGUuY3VycmVudFN0eWxlWyJiYWNrZ3JvdW5kQ29sb3IiXTsKICAgIGVsc2UgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3KQogICAgewogICAgICB2YXIgc3R5bGVzID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzbGlkZSxudWxsKTsKCiAgICAgIGlmIChzdHlsZXMpCiAgICAgICAgYmdDb2xvciA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIik7CiAgICAgIGVsc2UgLy8gYnJva2VuIGltcGxlbWVudGF0aW9uIHByb2JhYmx5IGR1ZSBTYWZhcmkgb3IgS29ucXVlcm9yCiAgICAgIHsKICAgICAgICAvL2FsZXJ0KCJkZWZlY3RpdmUgaW1wbGVtZW50YXRpb24gb2YgZ2V0Q29tcHV0ZWRTdHlsZSgpIik7CiAgICAgICAgYmdDb2xvciA9ICJ0cmFuc3BhcmVudCI7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgICAgYmdDb2xvciA9PSAidHJhbnNwYXJlbnQiOwoKICAgIGlmIChiZ0NvbG9yID09ICJ0cmFuc3BhcmVudCIgfHwKICAgICAgICBiZ0NvbG9yLmluZGV4T2YoInJnYmEiKSA+PSAwIHx8CiAgICAgICAgYmdDb2xvci5pbmRleE9mKCJvcGFjaXR5IikgPj0gMCkKICAgIHsKICAgICAgdmFyIHNsaWRlQ2xhc3MgPSB0aGlzLmdldF9jbGFzc19saXN0KHNsaWRlKTsKCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iYWNrZ3JvdW5kcy5sZW5ndGg7IGkrKykKICAgICAgewogICAgICAgIGJhY2tncm91bmQgPSB0aGlzLmJhY2tncm91bmRzW2ldOwoKICAgICAgICB2YXIgYmdDbGFzcyA9IHRoaXMuZ2V0X2NsYXNzX2xpc3QoYmFja2dyb3VuZCk7CgogICAgICAgIGlmICh0aGlzLm1hdGNoaW5nX2JhY2tncm91bmQoc2xpZGVDbGFzcywgYmdDbGFzcykpCiAgICAgICAgICB0aGlzLnJlbW92ZV9jbGFzcyhiYWNrZ3JvdW5kLCAiaGlkZGVuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgdGhpcy5hZGRfY2xhc3MoYmFja2dyb3VuZCwgImhpZGRlbiIpOwogICAgICB9CiAgICB9CiAgICBlbHNlIC8vIGZvcmNpYmx5IGhpZGUgYWxsIGJhY2tncm91bmRzCiAgICAgIHRoaXMuaGlkZV9iYWNrZ3JvdW5kcygpOwogIH0sCgogIGhpZGVfYmFja2dyb3VuZHM6IGZ1bmN0aW9uICgpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iYWNrZ3JvdW5kcy5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgYmFja2dyb3VuZCA9IHRoaXMuYmFja2dyb3VuZHNbaV07CiAgICAgIHRoaXMuYWRkX2NsYXNzKGJhY2tncm91bmQsICJoaWRkZW4iKTsKICAgIH0KICB9LAoKICAvLyBjb21wYXJlIGNsYXNzZXMgZm9yIHNsaWRlIGFuZCBiYWNrZ3JvdW5kCiAgbWF0Y2hpbmdfYmFja2dyb3VuZDogZnVuY3Rpb24gKHNsaWRlQ2xhc3MsIGJnQ2xhc3MpIHsKICAgIHZhciBpLCBjb3VudCwgcGF0dGVybiwgcmVzdWx0OwoKICAgIC8vIGRlZmluZSBwYXR0ZXJuIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgcGF0dGVybiA9IC9cdysvZzsKCiAgICAvLyBjaGVjayBiYWNrZ3JvdW5kIGNsYXNzIG5hbWVzCiAgICByZXN1bHQgPSBiZ0NsYXNzLm1hdGNoKHBhdHRlcm4pOwoKICAgIGZvciAoaSA9IGNvdW50ID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgaWYgKHJlc3VsdFtpXSA9PSAiaGlkZGVuIikKICAgICAgICBjb250aW51ZTsKCiAgICAgIGlmIChyZXN1bHRbaV0gPT0gImJhY2tncm91bmQiKQoJY29udGludWU7CgogICAgICArK2NvdW50OwogICAgfQoKICAgIGlmIChjb3VudCA9PSAwKSAgLy8gZGVmYXVsdCBtYXRjaAogICAgICByZXR1cm4gdHJ1ZTsKCiAgICAvLyBjaGVjayBmb3IgbWF0Y2hlcyBhbmQgcGxhY2UgcmVzdWx0IGluIGFycmF5CiAgICByZXN1bHQgPSBzbGlkZUNsYXNzLm1hdGNoKHBhdHRlcm4pOwoKICAgIC8vIG5vdyBjaGVjayBpZiBkZXNpcmVkIG5hbWUgaXMgcHJlc2VudCBmb3IgYmFja2dyb3VuZAogICAgZm9yIChpID0gY291bnQgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKQogICAgewogICAgICBpZiAocmVzdWx0W2ldID09ICJoaWRkZW4iKQogICAgICAgIGNvbnRpbnVlOwoKICAgICAgaWYgKHRoaXMuaGFzX3Rva2VuKGJnQ2xhc3MsIHJlc3VsdFtpXSkpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHJlc2l6ZWQ6IGZ1bmN0aW9uICgpIHsKICAgICB2YXIgd2lkdGggPSAwOwoKICAgICBpZiAoIHR5cGVvZiggd2luZG93LmlubmVyV2lkdGggKSA9PSAnbnVtYmVyJyApCiAgICAgICB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOyAgLy8gTm9uIElFIGJyb3dzZXIKICAgICBlbHNlIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKQogICAgICAgd2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7ICAvLyBJRTYKICAgICBlbHNlIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpCiAgICAgICB3aWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7IC8vIElFNAoKICAgICB2YXIgaGVpZ2h0ID0gMDsKCiAgICAgaWYgKCB0eXBlb2YoIHdpbmRvdy5pbm5lckhlaWdodCApID09ICdudW1iZXInICkKICAgICAgIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsgIC8vIE5vbiBJRSBicm93c2VyCiAgICAgZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpCiAgICAgICBoZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OyAgLy8gSUU2CiAgICAgZWxzZSBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgIGhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OyAvLyBJRTQKCiAgICAgaWYgKGhlaWdodCAmJiAod2lkdGgvaGVpZ2h0ID4gMS4wNSoxMDI0Lzc2OCkpCiAgICAgewogICAgICAgd2lkdGggPSBoZWlnaHQgKiAxMDI0LjAvNzY4OwogICAgIH0KCiAgICAgLy8gSUUgZmlyZXMgb25yZXNpemUgZXZlbiB3aGVuIG9ubHkgZm9udCBzaXplIGlzIGNoYW5nZWQhCiAgICAgLy8gc28gd2UgZG8gYSBjaGVjayB0byBhdm9pZCBibG9ja2luZyA8IGFuZCA+IGFjdGlvbnMKICAgICBpZiAod2lkdGggIT0gdzNjX3NsaWR5Lmxhc3Rfd2lkdGggfHwgaGVpZ2h0ICE9IHczY19zbGlkeS5sYXN0X2hlaWdodCkKICAgICB7CiAgICAgICBpZiAod2lkdGggPj0gMTEwMCkKICAgICAgICAgdzNjX3NsaWR5LnNpemVfaW5kZXggPSA1OyAgICAvLyA0CiAgICAgICBlbHNlIGlmICh3aWR0aCA+PSAxMDAwKQogICAgICAgICB3M2Nfc2xpZHkuc2l6ZV9pbmRleCA9IDQ7ICAgIC8vIDMKICAgICAgIGVsc2UgaWYgKHdpZHRoID49IDgwMCkKICAgICAgICAgdzNjX3NsaWR5LnNpemVfaW5kZXggPSAzOyAgICAvLyAyCiAgICAgICBlbHNlIGlmICh3aWR0aCA+PSA2MDApCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gMjsgICAgLy8gMQogICAgICAgZWxzZSBpZiAod2lkdGgpCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gMDsKCiAgICAgICAvLyBhZGQgaW4gZm9udCBzaXplIGFkanVzdG1lbnQgZnJvbSBtZXRhIGVsZW1lbnQgZS5nLgogICAgICAgLy8gPG1ldGEgbmFtZT0iZm9udC1zaXplLWFkanVzdG1lbnQiIGNvbnRlbnQ9Ii0yIiAvPgogICAgICAgLy8gdXNlZnVsIHdoZW4gc2xpZGVzIGhhdmUgdG9vIG11Y2ggY29udGVudCA7LSkKCiAgICAgICBpZiAoMCA8PSB3M2Nfc2xpZHkuc2l6ZV9pbmRleCArIHczY19zbGlkeS5zaXplX2FkanVzdG1lbnQgJiYKICAgICAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ICsgdzNjX3NsaWR5LnNpemVfYWRqdXN0bWVudCA8IHczY19zbGlkeS5zaXplcy5sZW5ndGgpCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gdzNjX3NsaWR5LnNpemVfaW5kZXggKyB3M2Nfc2xpZHkuc2l6ZV9hZGp1c3RtZW50OwoKICAgICAgIC8vIGVuYWJsZXMgY3Jvc3MgYnJvd3NlciB1c2Ugb2YgcmVsYXRpdmUgd2lkdGgvaGVpZ2h0CiAgICAgICAvLyBvbiBvYmplY3QgZWxlbWVudHMgZm9yIHVzZSB3aXRoIFNWRyBhbmQgRmxhc2ggbWVkaWEKICAgICAgIHczY19zbGlkeS5hZGp1c3Rfb2JqZWN0X2RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCk7CgogICAgICAgaWYgKGRvY3VtZW50LmJvZHkuc3R5bGUuZm9udFNpemUgIT0gdzNjX3NsaWR5LnNpemVzW3czY19zbGlkeS5zaXplX2luZGV4XSkKICAgICAgIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICAgICB9CgogICAgICAgdzNjX3NsaWR5Lmxhc3Rfd2lkdGggPSB3aWR0aDsKICAgICAgIHczY19zbGlkeS5sYXN0X2hlaWdodCA9IGhlaWdodDsKCiAgICAgICAvLyBmb3JjZSByZWZsb3cgdG8gd29yayBhcm91bmQgTW96aWxsYSBidWcKICAgICAgIGlmICh3M2Nfc2xpZHkubnNfcG9zKQogICAgICAgewogICAgICAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgICB3M2Nfc2xpZHkuaGlkZV9zbGlkZShzbGlkZSk7CiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgIH0KCiAgICAgICAvLyBmb3JjZSBjb3JyZWN0IHBvc2l0aW9uaW5nIG9mIHRvb2xiYXIKICAgICAgIHczY19zbGlkeS5yZWZyZXNoX3Rvb2xiYXIoMjAwKTsKICAgICB9CiAgfSwKCiAgc2Nyb2xsZWQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3M2Nfc2xpZHkudG9vbGJhciAmJiAhdzNjX3NsaWR5Lm5zX3BvcyAmJiAhdzNjX3NsaWR5LmllNykKICAgIHsKICAgICAgdzNjX3NsaWR5LmhhY2tfb2Zmc2V0ID0gdzNjX3NsaWR5LnNjcm9sbF94X29mZnNldCgpOwogICAgICAvLyBoaWRlIHRvb2xiYXIKICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCiAgICAgIC8vIG1ha2UgaXQgcmVhcHBlYXIgbGF0ZXIKICAgICAgaWYgKHczY19zbGlkeS5zY3JvbGxoYWNrID09IDAgJiYgIXczY19zbGlkeS52aWV3X2FsbCkKICAgICAgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge3czY19zbGlkeS5zaG93X3Rvb2xiYXIoKTsgfSwgMTAwMCk7CiAgICAgICAgdzNjX3NsaWR5LnNjcm9sbGhhY2sgPSAxOwogICAgICB9CiAgICB9CiAgfSwKCiAgaGlkZV90b29sYmFyOiBmdW5jdGlvbiAoKSB7CiAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKHczY19zbGlkeS50b29sYmFyLCAiaGlkZGVuIik7CiAgICB3aW5kb3cuZm9jdXMoKTsKICB9LAoKICAvLyB1c2VkIHRvIGVuc3VyZSBJRSByZWZyZXNoZXMgdG9vbGJhciBpbiBjb3JyZWN0IHBvc2l0aW9uCiAgcmVmcmVzaF90b29sYmFyOiBmdW5jdGlvbiAoaW50ZXJ2YWwpIHsKICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcyAmJiAhdzNjX3NsaWR5LmllNykKICAgIHsKICAgICAgdzNjX3NsaWR5LmhpZGVfdG9vbGJhcigpOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHt3M2Nfc2xpZHkuc2hvd190b29sYmFyKCk7fSwgaW50ZXJ2YWwpOwogICAgfQogIH0sCgogIC8vIHJlc3RvcmVzIHRvb2xiYXIgYWZ0ZXIgc2hvcnQgZGVsYXkKICBzaG93X3Rvb2xiYXI6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3M2Nfc2xpZHkud2FudF90b29sYmFyKQogICAgewogICAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCiAgICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcykKICAgICAgewogICAgICAgIC8vIGFkanVzdCBwb3NpdGlvbiB0byBhbGxvdyBmb3Igc2Nyb2xsaW5nCiAgICAgICAgdmFyIHhvZmZzZXQgPSB3M2Nfc2xpZHkuc2Nyb2xsX3hfb2Zmc2V0KCk7CiAgICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUubGVmdCA9IHhvZmZzZXQ7CiAgICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUucmlnaHQgPSB4b2Zmc2V0OwoKICAgICAgICAvLyBkZXRlcm1pbmUgdmVydGljYWwgc2Nyb2xsIG9mZnNldAogICAgICAgIC8vdmFyIHlvZmZzZXQgPSBzY3JvbGxZT2Zmc2V0KCk7CgogICAgICAgIC8vIGJvdHRvbSBpcyBkb2MgaGVpZ2h0IC0gd2luZG93IGhlaWdodCAtIHNjcm9sbCBvZmZzZXQKICAgICAgICAvL3ZhciBib3R0b20gPSBkb2N1bWVudEhlaWdodCgpIC0gbGFzdEhlaWdodCAtIHlvZmZzZXQKCiAgICAgICAgLy9pZiAoeW9mZnNldCA+IDAgfHwgZG9jdW1lbnRIZWlnaHQoKSA+IGxhc3RIZWlnaHQpCiAgICAgICAgLy8gICBib3R0b20gKz0gMTY7ICAvLyBhbGxvdyBmb3IgaGVpZ2h0IG9mIHNjcm9sbGJhcgoKICAgICAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5ib3R0b20gPSAwOyAvL2JvdHRvbTsKICAgICAgfQoKICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpOwogICAgfQoKICAgIHczY19zbGlkeS5zY3JvbGxoYWNrID0gMDsKCgogICAgLy8gc2V0IHRoZSBrZXlib2FyZCBmb2N1cyB0byB0aGUgaGVscCBsaW5rIG9uIHRoZQogICAgLy8gdG9vbGJhciB0byBlbnN1cmUgdGhhdCBkb2N1bWVudCBoYXMgdGhlIGZvY3VzCiAgICAvLyBJRSBkb2Vzbid0IGFsd2F5cyB3b3JrIHdpdGggd2luZG93LmZvY3VzKCkKICAgIC8vIGFuZCB0aGlzIGhhY2sgaGFzIGJlbmVmaXQgb2YgRW50ZXIgZm9yIGhlbHAKCiAgICB0cnkKICAgIHsKICAgICAgaWYgKCF3M2Nfc2xpZHkub3BlcmEpCiAgICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogICAgfQogICAgY2F0Y2ggKGUpCiAgICB7CiAgICB9CiAgfSwKCi8vIGludm9rZWQgdmlhIEYga2V5CiAgdG9nZ2xlX3Rvb2xiYXI6IGZ1bmN0aW9uICgpIHsKICAgIGlmICghdzNjX3NsaWR5LnZpZXdfYWxsKQogICAgewogICAgICBpZiAodzNjX3NsaWR5Lmhhc19jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpKQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgICAgdzNjX3NsaWR5LndhbnRfdG9vbGJhciA9IDE7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5LmFkZF9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgICAgdzNjX3NsaWR5LndhbnRfdG9vbGJhciA9IDA7CiAgICAgIH0KICAgIH0KICB9LAoKICBzY3JvbGxfeF9vZmZzZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3aW5kb3cucGFnZVhPZmZzZXQpCiAgICAgIHJldHVybiBzZWxmLnBhZ2VYT2Zmc2V0OwoKICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgCiAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0OwoKICAgIGlmIChkb2N1bWVudC5ib2R5KQogICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OwoKICAgIHJldHVybiAwOwogIH0sCgogIHNjcm9sbF95X29mZnNldDogZnVuY3Rpb24gKCkgewogICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCkKICAgICAgcmV0dXJuIHNlbGYucGFnZVlPZmZzZXQ7CgogICAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAKICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApCiAgICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwoKICAgIGlmIChkb2N1bWVudC5ib2R5KQogICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CgogICAgcmV0dXJuIDA7CiAgfSwKCiAgLy8gbG9va2luZyBmb3IgYSB3YXkgdG8gZGV0ZXJtaW5lIGhlaWdodCBvZiBzbGlkZSBjb250ZW50CiAgLy8gdGhlIHNsaWRlIGl0c2VsZiBpcyBzZXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgd2luZG93CiAgb3B0aW1pemVfZm9udF9zaXplOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIC8vdmFyIGRoID0gZG9jdW1lbnRIZWlnaHQoKTsgLy9nZXREb2NIZWlnaHQoZG9jdW1lbnQpOwogICAgdmFyIGRoID0gc2xpZGUuc2Nyb2xsSGVpZ2h0OwogICAgdmFyIHdoID0gZ2V0V2luZG93SGVpZ2h0KCk7CiAgICB2YXIgdSA9IDEwMCAqIGRoIC8gd2g7CgogICAgYWxlcnQoIndpbmRvdyB1dGlsaXphdGlvbiA9ICIgKyB1ICsgIiUgKGRvYyAiCiAgICAgICsgZGggKyAiIHdpbiAiICsgd2ggKyAiKSIpOwogIH0sCgogIC8vIGZyb20gZG9jdW1lbnQgb2JqZWN0CiAgZ2V0X2RvY19oZWlnaHQ6IGZ1bmN0aW9uIChkb2MpIHsKICAgIGlmICghZG9jKQogICAgICBkb2MgPSBkb2N1bWVudDsKCiAgICBpZiAoZG9jICYmIGRvYy5ib2R5ICYmIGRvYy5ib2R5Lm9mZnNldEhlaWdodCkKICAgICAgcmV0dXJuIGRvYy5ib2R5Lm9mZnNldEhlaWdodDsgIC8vIG5zL2dlY2tvIHN5bnRheAoKICAgIGlmIChkb2MgJiYgZG9jLmJvZHkgJiYgZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0KQogICAgICByZXR1cm4gZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0OwoKICAgIGFsZXJ0KCJjb3VsZG4ndCBkZXRlcm1pbmUgZG9jdW1lbnQgaGVpZ2h0Iik7CiAgfSwKCiAgZ2V0X3dpbmRvd19oZWlnaHQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICggdHlwZW9mKCB3aW5kb3cuaW5uZXJIZWlnaHQgKSA9PSAnbnVtYmVyJyApCiAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7ICAvLyBOb24gSUUgYnJvd3NlcgoKICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7ICAvLyBJRTYKCiAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OyAvLyBJRTQKICB9LAoKICBkb2N1bWVudF9oZWlnaHQ6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBzaCwgb2g7CgogICAgc2ggPSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDsKICAgIG9oID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CgogICAgaWYgKHNoICYmIG9oKQogICAgewogICAgICByZXR1cm4gKHNoID4gb2ggPyBzaCA6IG9oKTsKICAgIH0KCiAgICAvLyBubyBpZGVhIQogICAgcmV0dXJuIDA7CiAgfSwKCiAgc21hbGxlcjogZnVuY3Rpb24gKCkgewogICAgaWYgKHczY19zbGlkeS5zaXplX2luZGV4ID4gMCkKICAgIHsKICAgICAgLS13M2Nfc2xpZHkuc2l6ZV9pbmRleDsKICAgIH0KCiAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7dzNjX3NsaWR5LnNob3dfdG9vbGJhcigpOyB9LCA1MCk7CiAgfSwKCiAgYmlnZ2VyOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodzNjX3NsaWR5LnNpemVfaW5kZXggPCB3M2Nfc2xpZHkuc2l6ZXMubGVuZ3RoIC0gMSkKICAgIHsKICAgICAgKyt3M2Nfc2xpZHkuc2l6ZV9pbmRleDsKICAgIH0KCiAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7dzNjX3NsaWR5LnNob3dfdG9vbGJhcigpOyB9LCA1MCk7CiAgfSwKCiAgLy8gZW5hYmxlcyBjcm9zcyBicm93c2VyIHVzZSBvZiByZWxhdGl2ZSB3aWR0aC9oZWlnaHQKICAvLyBvbiBvYmplY3QgZWxlbWVudHMgZm9yIHVzZSB3aXRoIFNWRyBhbmQgRmxhc2ggbWVkaWEKICAvLyB3aXRoIHRoYW5rcyB0byBJdmFuIEhlcm1hbiBmb3IgdGhlIHN1Z2dlc3Rpb24KICBhZGp1c3Rfb2JqZWN0X2RpbWVuc2lvbnM6IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CiAgICBmb3IoIHZhciBpID0gMDsgaSA8IHczY19zbGlkeS5vYmplY3RzLmxlbmd0aDsgaSsrICkKICAgIHsKICAgICAgdmFyIG9iaiA9IHRoaXMub2JqZWN0c1tpXTsKICAgICAgdmFyIG1pbWVUeXBlID0gb2JqLmdldEF0dHJpYnV0ZSgidHlwZSIpOwoKICAgICAgaWYgKG1pbWVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQogICAgICB7CiAgICAgICAgaWYgKCAhb2JqLmluaXRpYWxXaWR0aCApIAogICAgICAgICAgb2JqLmluaXRpYWxXaWR0aCA9IG9iai5nZXRBdHRyaWJ1dGUoIndpZHRoIik7CgogICAgICAgIGlmICggIW9iai5pbml0aWFsSGVpZ2h0ICkgCiAgICAgICAgICBvYmouaW5pdGlhbEhlaWdodCA9IG9iai5nZXRBdHRyaWJ1dGUoImhlaWdodCIpOwoKICAgICAgICBpZiAoIG9iai5pbml0aWFsV2lkdGggJiYgb2JqLmluaXRpYWxXaWR0aC5jaGFyQXQob2JqLmluaXRpYWxXaWR0aC5sZW5ndGgtMSkgPT0gIiUiICkKICAgICAgICB7CiAgICAgICAgICB2YXIgdyA9IHBhcnNlSW50KG9iai5pbml0aWFsV2lkdGguc2xpY2UoMCwgb2JqLmluaXRpYWxXaWR0aC5sZW5ndGgtMSkpOwogICAgICAgICAgdmFyIG5ld1cgPSB3aWR0aCAqICh3LzEwMC4wKTsKICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoIndpZHRoIixuZXdXKTsKICAgICAgICB9CgogICAgICAgIGlmICggb2JqLmluaXRpYWxIZWlnaHQgJiYKICAgICAgICAgICAgIG9iai5pbml0aWFsSGVpZ2h0LmNoYXJBdChvYmouaW5pdGlhbEhlaWdodC5sZW5ndGgtMSkgPT0gIiUiICkKICAgICAgICB7CiAgICAgICAgICB2YXIgaCA9IHBhcnNlSW50KG9iai5pbml0aWFsSGVpZ2h0LnNsaWNlKDAsIG9iai5pbml0aWFsSGVpZ2h0Lmxlbmd0aC0xKSk7CiAgICAgICAgICB2YXIgbmV3SCA9IGhlaWdodCAqIChoLzEwMC4wKTsKICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIG5ld0gpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCgogIC8vIG5lZWRlZCBmb3IgT3BlcmEgdG8gaW5oaWJpdCBkZWZhdWx0IGJlaGF2aW9yCiAgLy8gc2luY2UgT3BlcmEgZGVsaXZlcnMga2V5UHJlc3MgZXZlbiBpZiBrZXlEb3duCiAgLy8gd2FzIGNhbmNlbGxlZAogIGtleV9wcmVzczogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBpZiAoIWV2ZW50KQogICAgICBldmVudCA9IHdpbmRvdy5ldmVudDsKCiAgICBpZiAoIXczY19zbGlkeS5rZXlfd2FudGVkKQogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgLy8gIFNlZSBlLmcuIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzL2tleXMuaHRtbCBmb3Iga2V5Y29kZXMKICBrZXlfZG93bjogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIga2V5LCB0YXJnZXQsIHRhZzsKCiAgICB3M2Nfc2xpZHkua2V5X3dhbnRlZCA9IHRydWU7CgogICAgaWYgKCFldmVudCkKICAgICAgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh3aW5kb3cuZXZlbnQpCiAgICB7CiAgICAgIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgICB0YXJnZXQgPSB3aW5kb3cuZXZlbnQuc3JjRWxlbWVudDsKICAgIH0KICAgIGVsc2UgaWYgKGV2ZW50LndoaWNoKQogICAgewogICAgICBrZXkgPSBldmVudC53aGljaDsKICAgICAgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0OwogICAgfQogICAgZWxzZQogICAgICByZXR1cm4gdHJ1ZTsgLy8gWWlrZXMhIHVua25vd24gYnJvd3NlcgoKICAgIC8vIGlnbm9yZSBldmVudCBpZiBrZXkgdmFsdWUgaXMgemVybwogICAgLy8gYXMgZm9yIGFsdCBvbiBPcGVyYSBhbmQgS29ucXVlcm9yCiAgICBpZiAoIWtleSkKICAgICAgIHJldHVybiB0cnVlOwoKICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGgga2V5c3Ryb2tlCiAgICAvLyBiZWhhdmlvciBmb3Igbm9uLXNsaWR5IGNocm9tZSBlbGVtZW50cwogICAgaWYgKCF3M2Nfc2xpZHkuc2xpZHlfY2hyb21lKHRhcmdldCkgJiYKICAgICAgICB3M2Nfc2xpZHkuc3BlY2lhbF9lbGVtZW50KHRhcmdldCkpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIC8vIGNoZWNrIGZvciBjb25jdXJyZW50IGNvbnRyb2wvY29tbWFuZC9hbHQga2V5CiAgICAvLyBidXQgYXJlIHRoZXNlIG9ubHkgcHJlc2VudCBvbiBtb3VzZSBldmVudHM/CgogICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXkpCiAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAvLyBkaXNtaXNzIHRhYmxlIG9mIGNvbnRlbnRzIGlmIHZpc2libGUKICAgIGlmICh3M2Nfc2xpZHkuaXNfc2hvd25fdG9jKCkgJiYga2V5ICE9IDkgJiYga2V5ICE9IDE2ICYmIGtleSAhPSAzOCAmJiBrZXkgIT0gNDApCiAgICB7CiAgICAgIHczY19zbGlkeS5oaWRlX3RhYmxlX29mX2NvbnRlbnRzKHRydWUpOwoKICAgICAgaWYgKGtleSA9PSAyNyB8fCBrZXkgPT0gODQgfHwga2V5ID09IDY3KQogICAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KCiAgICBpZiAoa2V5ID09IDM0KSAvLyBQYWdlIERvd24KICAgIHsKICAgICAgaWYgKHczY19zbGlkeS52aWV3X2FsbCkKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgIHczY19zbGlkeS5uZXh0X3NsaWRlKGZhbHNlKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDMzKSAvLyBQYWdlIFVwCiAgICB7CiAgICAgIGlmICh3M2Nfc2xpZHkudmlld19hbGwpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICB3M2Nfc2xpZHkucHJldmlvdXNfc2xpZGUoZmFsc2UpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMzIpIC8vIHNwYWNlIGJhcgogICAgewogICAgICB3M2Nfc2xpZHkubmV4dF9zbGlkZSh0cnVlKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDM3KSAvLyBMZWZ0IGFycm93CiAgICB7CiAgICAgIHczY19zbGlkeS5wcmV2aW91c19zbGlkZSghZXZlbnQuc2hpZnRLZXkpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMzYpIC8vIEhvbWUKICAgIHsKICAgICAgdzNjX3NsaWR5LmZpcnN0X3NsaWRlKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSAzNSkgLy8gRW5kCiAgICB7CiAgICAgIHczY19zbGlkeS5sYXN0X3NsaWRlKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSAzOSkgLy8gUmlnaHQgYXJyb3cKICAgIHsKICAgICAgdzNjX3NsaWR5Lm5leHRfc2xpZGUoIWV2ZW50LnNoaWZ0S2V5KTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDEzKSAvLyBFbnRlcgogICAgewogICAgICBpZiAodzNjX3NsaWR5Lm91dGxpbmUpCiAgICAgIHsKICAgICAgICBpZiAodzNjX3NsaWR5Lm91dGxpbmUudmlzaWJsZSkKICAgICAgICAgIHczY19zbGlkeS5mb2xkKHczY19zbGlkeS5vdXRsaW5lKTsKICAgICAgICBlbHNlCiAgICAgICAgICB3M2Nfc2xpZHkudW5mb2xkKHczY19zbGlkeS5vdXRsaW5lKTsKICAgICAgICAgIAogICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgICB9CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTg4KSAgLy8gPCBmb3Igc21hbGxlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuc21hbGxlcigpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTkwKSAgLy8gPiBmb3IgbGFyZ2VyIGZvbnRzCiAgICB7CiAgICAgIHczY19zbGlkeS5iaWdnZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDE4OSB8fCBrZXkgPT0gMTA5KSAgLy8gLSBmb3Igc21hbGxlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuc21hbGxlcigpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTg3IHx8IGtleSA9PSAxOTEgfHwga2V5ID09IDEwNykgIC8vID0gKyAgZm9yIGxhcmdlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuYmlnZ2VyKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA4MykgIC8vIFMgZm9yIHNtYWxsZXIgZm9udHMKICAgIHsKICAgICAgdzNjX3NsaWR5LnNtYWxsZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDY2KSAgLy8gQiBmb3IgbGFyZ2VyIGZvbnRzCiAgICB7CiAgICAgIHczY19zbGlkeS5iaWdnZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDkwKSAgLy8gWiBmb3IgbGFzdCBzbGlkZQogICAgewogICAgICB3M2Nfc2xpZHkubGFzdF9zbGlkZSgpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gNzApICAvLyBGIGZvciB0b2dnbGUgdG9vbGJhcgogICAgewogICAgICB3M2Nfc2xpZHkudG9nZ2xlX3Rvb2xiYXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDY1KSAgLy8gQSBmb3IgdG9nZ2xlIHZpZXcgc2luZ2xlL2FsbCBzbGlkZXMKICAgIHsKICAgICAgdzNjX3NsaWR5LnRvZ2dsZV92aWV3KCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA3NSkgIC8vIHRvZ2dsZSBhY3Rpb24gb2YgbGVmdCBjbGljayBmb3IgbmV4dCBwYWdlCiAgICB7CiAgICAgIHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkID0gIXczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkOwogICAgICB2YXIgYWxlcnRfbXNnID0gKHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkID8KICAgICAgICAgICAgICAgICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpICsgICIgbW91c2UgY2xpY2sgYWR2YW5jZSI7CgogICAgICBhbGVydCh3M2Nfc2xpZHkubG9jYWxpemUoYWxlcnRfbXNnKSk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA4NCB8fCBrZXkgPT0gNjcpICAvLyBUIG9yIEMgZm9yIHRhYmxlIG9mIGNvbnRlbnRzCiAgICB7CiAgICAgIGlmICh3M2Nfc2xpZHkudG9jKQogICAgICAgIHczY19zbGlkeS50b2dnbGVfdGFibGVfb2ZfY29udGVudHMoKTsKCiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA3MikgLy8gSCBmb3IgaGVscAogICAgewogICAgICB3aW5kb3cubG9jYXRpb24gPSB3M2Nfc2xpZHkuaGVscF9wYWdlOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICAvL2Vsc2UgYWxlcnQoImtleSBjb2RlIGlzICIrIGtleSk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgLy8gc2FmZSBmb3IgYm90aCB0ZXh0L2h0bWwgYW5kIGFwcGxpY2F0aW9uL3hodG1sK3htbAogIGNyZWF0ZV9lbGVtZW50OiBmdW5jdGlvbiAobmFtZSkgewogICAgaWYgKHRoaXMueGh0bWwgJiYgKHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgIT0gJ3VuZGVmaW5lZCcpKQogICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgbmFtZSkKCiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKICB9LAoKICBnZXRfZWxlbWVudF9zdHlsZTogZnVuY3Rpb24gKGVsZW0sIElFU3R5bGVQcm9wLCBDU1NTdHlsZVByb3ApIHsKICAgIGlmIChlbGVtLmN1cnJlbnRTdHlsZSkKICAgIHsKICAgICAgcmV0dXJuIGVsZW0uY3VycmVudFN0eWxlW0lFU3R5bGVQcm9wXTsKICAgIH0KICAgIGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKQogICAgewogICAgICB2YXIgY29tcFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSwgIiIpOwogICAgICByZXR1cm4gY29tcFN0eWxlLmdldFByb3BlcnR5VmFsdWUoQ1NTU3R5bGVQcm9wKTsKICAgIH0KICAgIHJldHVybiAiIjsKICB9LAoKICAvLyB0aGUgc3RyaW5nIHN0ciBpcyBhIHdoaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdG9rZW5zCiAgLy8gdGVzdCBpZiBzdHIgY29udGFpbnMgYSBwYXJ0aWN1bGFyIHRva2VuLCBlLmcuICJzbGlkZSIKICBoYXNfdG9rZW46IGZ1bmN0aW9uIChzdHIsIHRva2VuKSB7CiAgICBpZiAoc3RyKQogICAgewogICAgICAvLyBkZWZpbmUgcGF0dGVybiBhcyByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgdmFyIHBhdHRlcm4gPSAvXHcrL2c7CgogICAgICAvLyBjaGVjayBmb3IgbWF0Y2hlcwogICAgICAvLyBwbGFjZSByZXN1bHQgaW4gYXJyYXkKICAgICAgdmFyIHJlc3VsdCA9IHN0ci5tYXRjaChwYXR0ZXJuKTsKCiAgICAgIC8vIG5vdyBjaGVjayBpZiBkZXNpcmVkIHRva2VuIGlzIHByZXNlbnQKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspCiAgICAgIHsKICAgICAgICBpZiAocmVzdWx0W2ldID09IHRva2VuKQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgZ2V0X2NsYXNzX2xpc3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lICE9ICd1bmRlZmluZWQnKQogICAgICByZXR1cm4gZWxlbWVudC5jbGFzc05hbWU7CgogICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogIH0sCgogIGhhc19jbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHsKICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgiKF58ICkiICsgbmFtZSArICJcVyoiKTsKCiAgICBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lICE9ICd1bmRlZmluZWQnKQogICAgICByZXR1cm4gcmVnZXhwLnRlc3QoZWxlbWVudC5jbGFzc05hbWUpOwoKICAgIHJldHVybiByZWdleHAudGVzdChlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xhc3MiKSk7CiAgfSwKCiAgcmVtb3ZlX2NsYXNzOiBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgewogICAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoIihefCApIiArIG5hbWUgKyAiXFcqIik7CiAgICB2YXIgY2xzdmFsID0gIiI7CgogICAgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSAhPSAndW5kZWZpbmVkJykKICAgIHsKICAgICAgY2xzdmFsID0gZWxlbWVudC5jbGFzc05hbWU7CgogICAgICBpZiAoY2xzdmFsKQogICAgICB7CiAgICAgICAgY2xzdmFsID0gY2xzdmFsLnJlcGxhY2UocmVnZXhwLCAiIik7CiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbHN2YWw7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgY2xzdmFsID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CgogICAgICBpZiAoY2xzdmFsKQogICAgICB7CiAgICAgICAgY2xzdmFsID0gY2xzdmFsLnJlcGxhY2UocmVnZXhwLCAiIik7CiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgY2xzdmFsKTsKICAgICAgfQogICAgfQogIH0sCgogIGFkZF9jbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHsKICAgIGlmICghdGhpcy5oYXNfY2xhc3MoZWxlbWVudCwgbmFtZSkpCiAgICB7CiAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgIT0gJ3VuZGVmaW5lZCcpCiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gIiAiICsgbmFtZTsKICAgICAgZWxzZQogICAgICB7CiAgICAgICAgdmFyIGNsc3ZhbCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogICAgICAgIGNsc3ZhbCA9IGNsc3ZhbCA/IGNsc3ZhbCArICIgIiArIG5hbWUgOiBuYW1lOwogICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGNsc3ZhbCk7CiAgICAgIH0KICAgIH0KICB9LAoKICAvLyBIVE1MIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBjbGFzcz0iaW5jcmVtZW50YWwiCiAgLy8gbm90ZSB0aGF0IHlvdSBjYW4gYWxzbyBwdXQgdGhlIGNsYXNzIG9uIGNvbnRhaW5lcnMgbGlrZQogIC8vIHVwLCBvbCwgZGwsIGFuZCBkaXYgdG8gbWFrZSB0aGVpciBjb250ZW50cyBhcHBlYXIKICAvLyBpbmNyZW1lbnRhbGx5LiBVcHBlciBjYXNlIGlzIHVzZWQgc2luY2UgdGhpcyBpcyB3aGF0CiAgLy8gYnJvd3NlcnMgcmVwb3J0IGZvciBIVE1MIG5vZGUgbmFtZXMgKHRleHQvaHRtbCkuCiAgaW5jcmVtZW50YWxfZWxlbWVudHM6IG51bGwsCiAgb2theV9mb3JfaW5jcmVtZW50YWw6IGZ1bmN0aW9uIChuYW1lKSB7CiAgICBpZiAoIXRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHMpCiAgICB7CiAgICAgIHZhciBpbmNsaXN0ID0gbmV3IEFycmF5KCk7CiAgICAgIGluY2xpc3RbInAiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbInByZSJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsibGkiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImJsb2NrcXVvdGUiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImR0Il0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJkZCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaDIiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImgzIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJoNCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaDUiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImg2Il0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJzcGFuIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJhZGRyZXNzIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJ0YWJsZSJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsidHIiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbInRoIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJ0ZCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaW1nIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJvYmplY3QiXSA9IHRydWU7CiAgICAgIHRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHMgPSBpbmNsaXN0OwogICAgfQogICAgcmV0dXJuIHRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHNbbmFtZS50b0xvd2VyQ2FzZSgpXTsKICB9LAoKICBuZXh0X2luY3JlbWVudGFsX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICB2YXIgYnIgPSB0aGlzLmlzX3hodG1sID8gImJyIiA6ICJCUiI7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSB3M2Nfc2xpZHkubmV4dF9ub2RlKHNsaWRlLCBub2RlKTsKCiAgICAgIGlmIChub2RlID09IG51bGwgfHwgbm9kZS5wYXJlbnROb2RlID09IG51bGwpCiAgICAgICAgYnJlYWs7CgogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxKSAgLy8gRUxFTUVOVAogICAgICB7CiAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gYnIpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgaWYgKHczY19zbGlkeS5oYXNfY2xhc3Mobm9kZSwgImluY3JlbWVudGFsIikKICAgICAgICAgICAgICYmIHczY19zbGlkeS5va2F5X2Zvcl9pbmNyZW1lbnRhbChub2RlLm5vZGVOYW1lKSkKICAgICAgICAgIHJldHVybiBub2RlOwoKICAgICAgICBpZiAodzNjX3NsaWR5Lmhhc19jbGFzcyhub2RlLnBhcmVudE5vZGUsICJpbmNyZW1lbnRhbCIpCiAgICAgICAgICAgICAmJiAhdzNjX3NsaWR5Lmhhc19jbGFzcyhub2RlLCAibm9uLWluY3JlbWVudGFsIikpCiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBub2RlOwogIH0sCgogIHByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICB2YXIgYnIgPSB0aGlzLmlzX3hodG1sID8gImJyIiA6ICJCUiI7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSB3M2Nfc2xpZHkucHJldmlvdXNfbm9kZShzbGlkZSwgbm9kZSk7CgogICAgICBpZiAobm9kZSA9PSBudWxsIHx8IG5vZGUucGFyZW50Tm9kZSA9PSBudWxsKQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSkKICAgICAgewogICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09IGJyKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICh3M2Nfc2xpZHkuaGFzX2NsYXNzKG5vZGUsICJpbmNyZW1lbnRhbCIpCiAgICAgICAgICAgICAmJiB3M2Nfc2xpZHkub2theV9mb3JfaW5jcmVtZW50YWwobm9kZS5ub2RlTmFtZSkpCiAgICAgICAgICByZXR1cm4gbm9kZTsKCiAgICAgICAgaWYgKHczY19zbGlkeS5oYXNfY2xhc3Mobm9kZS5wYXJlbnROb2RlLCAiaW5jcmVtZW50YWwiKQogICAgICAgICAgICAgJiYgIXczY19zbGlkeS5oYXNfY2xhc3Mobm9kZSwgIm5vbi1pbmNyZW1lbnRhbCIpKQogICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbm9kZTsKICB9LAoKICAvLyBzZXQgdmlzaWJpbGl0eSBmb3IgYWxsIGVsZW1lbnRzIG9uIGN1cnJlbnQgc2xpZGUgd2l0aAogIC8vIGEgcGFyZW50IGVsZW1lbnQgd2l0aCBhdHRyaWJ1dGUgY2xhc3M9ImluY3JlbWVudGFsIgogIHNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICB2YXIgbm9kZSA9IHRoaXMubmV4dF9pbmNyZW1lbnRhbF9pdGVtKG51bGwpOwoKICAgIGlmICh2YWx1ZSA9PSAiaGlkZGVuIikKICAgIHsKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKG5vZGUsICJpbnZpc2libGUiKTsKICAgICAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKICAgICAgfQogICAgfQogICAgZWxzZSAvLyB2YWx1ZSA9PSAidmlzaWJsZSIKICAgIHsKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB3M2Nfc2xpZHkucmVtb3ZlX2NsYXNzKG5vZGUsICJpbnZpc2libGUiKTsKICAgICAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vIHJldmVhbCB0aGUgbmV4dCBoaWRkZW4gaXRlbSBvbiB0aGUgc2xpZGUKICAvLyBub2RlIGlzIG51bGwgb3IgdGhlIG5vZGUgdGhhdCB3YXMgbGFzdCByZXZlYWxlZAogIHJldmVhbF9uZXh0X2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKCiAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09IDEpICAvLyBhbiBlbGVtZW50CiAgICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3Mobm9kZSwgImludmlzaWJsZSIpOwoKICAgIHJldHVybiBub2RlOwogIH0sCgogIC8vIGV4YWN0IGludmVyc2Ugb2YgcmV2ZWFsTmV4dEl0ZW0obm9kZSkKICBoaWRlX3ByZXZpb3VzX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09IDEpICAvLyBhbiBlbGVtZW50CiAgICAgIHczY19zbGlkeS5hZGRfY2xhc3Mobm9kZSwgImludmlzaWJsZSIpOwoKICAgIHJldHVybiB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obm9kZSk7CiAgfSwKCiAgLy8gbGVmdCB0byByaWdodCB0cmF2ZXJzYWwgb2Ygcm9vdCdzIGNvbnRlbnQKICBuZXh0X25vZGU6IGZ1bmN0aW9uIChyb290LCBub2RlKSB7CiAgICBpZiAobm9kZSA9PSBudWxsKQogICAgICByZXR1cm4gcm9vdC5maXJzdENoaWxkOwoKICAgIGlmIChub2RlLmZpcnN0Q2hpbGQpCiAgICAgIHJldHVybiBub2RlLmZpcnN0Q2hpbGQ7CgogICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpCiAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CgogICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PSByb290KQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKG5vZGUgJiYgbm9kZS5uZXh0U2libGluZykKICAgICAgICByZXR1cm4gbm9kZS5uZXh0U2libGluZzsKICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9LAoKICAvLyByaWdodCB0byBsZWZ0IHRyYXZlcnNhbCBvZiByb290J3MgY29udGVudAogIHByZXZpb3VzX25vZGU6IGZ1bmN0aW9uIChyb290LCBub2RlKSB7CiAgICBpZiAobm9kZSA9PSBudWxsKQogICAgewogICAgICBub2RlID0gcm9vdC5sYXN0Q2hpbGQ7CgogICAgICBpZiAobm9kZSkKICAgICAgewogICAgICAgIHdoaWxlIChub2RlLmxhc3RDaGlsZCkKICAgICAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKICAgICAgfQoKICAgICAgcmV0dXJuIG5vZGU7CiAgICB9CgogICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKQogICAgewogICAgICBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CgogICAgICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpCiAgICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkOwoKICAgICAgcmV0dXJuIG5vZGU7CiAgICB9CgogICAgaWYgKG5vZGUucGFyZW50Tm9kZSAhPSByb290KQogICAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlOwoKICAgIHJldHVybiBudWxsOwogIH0sCgogIHByZXZpb3VzX3NpYmxpbmdfZWxlbWVudDogZnVuY3Rpb24gKGVsKSB7CiAgICBlbCA9IGVsLnByZXZpb3VzU2libGluZzsKCiAgICB3aGlsZSAoZWwgJiYgZWwubm9kZVR5cGUgIT0gMSkKICAgICAgZWwgPSBlbC5wcmV2aW91c1NpYmxpbmc7CgogICAgcmV0dXJuIGVsOwogIH0sCgogIG5leHRfc2libGluZ19lbGVtZW50OiBmdW5jdGlvbiAoZWwpIHsKICAgIGVsID0gZWwubmV4dFNpYmxpbmc7CgogICAgd2hpbGUgKGVsICYmIGVsLm5vZGVUeXBlICE9IDEpCiAgICAgIGVsID0gZWwubmV4dFNpYmxpbmc7CgogICAgcmV0dXJuIGVsOwogIH0sCgogIGZpcnN0X2NoaWxkX2VsZW1lbnQ6IGZ1bmN0aW9uIChlbCkgewogICAgdmFyIG5vZGU7CgogICAgZm9yIChub2RlID0gZWwuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpCiAgICB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIG5vZGU7CiAgfSwKCiAgZmlyc3RfdGFnOiBmdW5jdGlvbiAoZWxlbWVudCwgdGFnKSB7CiAgICB2YXIgbm9kZTsKCiAgICBpZiAoIXRoaXMuaXNfeGh0bWwpCiAgICAgIHRhZyA9IHRhZy50b1VwcGVyQ2FzZSgpOwoKICAgIGZvciAobm9kZSA9IGVsZW1lbnQuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpCiAgICB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgbm9kZS5ub2RlTmFtZSA9PSB0YWcpCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIG5vZGU7CiAgfSwKCiAgaGlkZV9zZWxlY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSAvLyBGaXJlZm94LCBDaHJvbWl1bSwgU2FmYXJpLCBPcGVyYQogICAgewogICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwoKICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkKICAgICAgewogICAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgICAgIHJhbmdlLmNvbGxhcHNlIChmYWxzZSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgLy8gSW50ZXJuZXQgRXhwbG9yZXIKICAgIHsKICAgICAgdmFyIHRleHRSYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSAoKTsKICAgICAgdGV4dFJhbmdlLmNvbGxhcHNlIChmYWxzZSk7CiAgICB9CiAgfSwKCiAgZ2V0X3NlbGVjdGVkX3RleHQ6IGZ1bmN0aW9uICgpIHsKICAgIHRyeQogICAgewogICAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbikKICAgICAgICByZXR1cm4gd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7CgogICAgICBpZiAoZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKQogICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOwoKICAgICAgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikKICAgICAgICByZXR1cm4gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkudGV4dDsKICAgIH0KICAgIGNhdGNoIChlKQogICAgewogICAgfQoKICAgIHJldHVybiAiIjsKICB9LAoKICAvLyBtYWtlIG5vdGUgb2YgbGVuZ3RoIG9mIHNlbGVjdGVkIHRleHQKICAvLyBhcyB0aGlzIGV2YWx1YXRlcyB0byB6ZXJvIGluIGNsaWNrIGV2ZW50CiAgbW91c2VfYnV0dG9uX3VwOiBmdW5jdGlvbiAoZSkgewogICAgdzNjX3NsaWR5LnNlbGVjdGVkX3RleHRfbGVuID0gdzNjX3NsaWR5LmdldF9zZWxlY3RlZF90ZXh0KCkubGVuZ3RoOwogIH0sCgogIG1vdXNlX2J1dHRvbl9kb3duOiBmdW5jdGlvbiAoZSkgewogICAgdzNjX3NsaWR5LnNlbGVjdGVkX3RleHRfbGVuID0gdzNjX3NsaWR5LmdldF9zZWxlY3RlZF90ZXh0KCkubGVuZ3RoOwogICAgdzNjX3NsaWR5Lm1vdXNlX3ggPSBlLmNsaWVudFg7CiAgICB3M2Nfc2xpZHkubW91c2VfeSA9IGUuY2xpZW50WTsKICB9LAoKICAvLyByaWdodCBtb3VzZSBidXR0b24gY2xpY2sgaXMgcmVzZXJ2ZWQgZm9yIGNvbnRleHQgbWVudXMKICAvLyBpdCBpcyBtb3JlIHJlbGlhYmxlIHRvIGRldGVjdCByaWdodGNsaWNrIHRoYW4gbGVmdGNsaWNrCiAgbW91c2VfYnV0dG9uX2NsaWNrOiBmdW5jdGlvbiAoZSkgewogICAgaWYgKCFlKQogICAgICB2YXIgZSA9IHdpbmRvdy5ldmVudDsKCiAgICBpZiAoTWF0aC5hYnMoZS5jbGllbnRYIC13M2Nfc2xpZHkubW91c2VfeCkgKwogICAgICAgIE1hdGguYWJzKGUuY2xpZW50WSAtdzNjX3NsaWR5Lm1vdXNlX3kpID4gMTApCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmICh3M2Nfc2xpZHkuc2VsZWN0ZWRfdGV4dF9sZW4gPiAwKQogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgcmlnaHRjbGljayA9IGZhbHNlOwogICAgdmFyIGxlZnRjbGljayA9IGZhbHNlOwogICAgdmFyIG1pZGRsZWNsaWNrID0gZmFsc2U7CiAgICB2YXIgdGFyZ2V0OwoKICAgIGlmICghZSkKICAgICAgdmFyIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgaWYgKGUudGFyZ2V0KQogICAgICB0YXJnZXQgPSBlLnRhcmdldDsKICAgIGVsc2UgaWYgKGUuc3JjRWxlbWVudCkKICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgIC8vIHdvcmsgYXJvdW5kIFNhZmFyaSBidWcKICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT0gMykKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgaWYgKGUud2hpY2gpIC8vIGFsbCBicm93c2VycyBleGNlcHQgSUUKICAgIHsKICAgICAgbGVmdGNsaWNrID0gKGUud2hpY2ggPT0gMSk7CiAgICAgIG1pZGRsZWNsaWNrID0gKGUud2hpY2ggPT0gMik7CiAgICAgIHJpZ2h0Y2xpY2sgPSAoZS53aGljaCA9PSAzKTsKICAgIH0KICAgIGVsc2UgaWYgKGUuYnV0dG9uKQogICAgewogICAgICAvLyBLb25xdWVyb3IgZ2l2ZXMgMSBmb3IgbGVmdCwgNCBmb3IgbWlkZGxlCiAgICAgIC8vIElFNiBnaXZlcyAwIGZvciBsZWZ0IGFuZCBub3QgMSBhcyBJIGV4cGVjdGVkCgogICAgICBpZiAoZS5idXR0b24gPT0gNCkKICAgICAgICBtaWRkbGVjbGljayA9IHRydWU7CgogICAgICAvLyBhbGwgYnJvd3NlcnMgYWdyZWUgb24gMiBmb3IgcmlnaHQgYnV0dG9uCiAgICAgIHJpZ2h0Y2xpY2sgPSAoZS5idXR0b24gPT0gMik7CiAgICB9CiAgICBlbHNlCiAgICAgIGxlZnRjbGljayA9IHRydWU7CgogICAgaWYgKHczY19zbGlkeS5zZWxlY3RlZF90ZXh0X2xlbiA+IDApCiAgICB7CiAgICAgIHczY19zbGlkeS5zdG9wX3Byb3BhZ2F0aW9uKGUpOwogICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIGRpc21pc3MgdGFibGUgb2YgY29udGVudHMKICAgIHczY19zbGlkeS5oaWRlX3RhYmxlX29mX2NvbnRlbnRzKGZhbHNlKTsKCiAgICAvLyBjaGVjayBpZiB0YXJnZXQgaXMgc29tZXRoaW5nIHRoYXQgcHJvYmFibHkgd2FudCdzIGNsaWNrcwogICAgLy8gZS5nLiBhLCBlbWJlZCwgb2JqZWN0LCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgb3B0aW9uCiAgICB2YXIgdGFnID0gdGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CgogICAgaWYgKHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkICYmIGxlZnRjbGljayAmJgogICAgICAgICF3M2Nfc2xpZHkuc3BlY2lhbF9lbGVtZW50KHRhcmdldCkgJiYKICAgICAgICAhdGFyZ2V0Lm9uY2xpY2spCiAgICB7CiAgICAgIHczY19zbGlkeS5uZXh0X3NsaWRlKHRydWUpOwogICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKICAgICAgZS5jYW5jZWwgPSB0cnVlOwogICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBzcGVjaWFsX2VsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICBpZiAodGhpcy5oYXNfY2xhc3MoZWxlbWVudCwgIm5vbi1pbnRlcmFjdGl2ZSIpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgdmFyIHRhZyA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICByZXR1cm4gZWxlbWVudC5vbmtleWRvd24gfHwKICAgICAgZWxlbWVudC5vbmNsaWNrIHx8CiAgICAgIHRhZyA9PSAiYSIgfHwKICAgICAgdGFnID09ICJlbWJlZCIgfHwKICAgICAgdGFnID09ICJvYmplY3QiIHx8CiAgICAgIHRhZyA9PSAidmlkZW8iIHx8CiAgICAgIHRhZyA9PSAiYXVkaW8iIHx8CiAgICAgIHRhZyA9PSAic3ZnIiB8fAogICAgICB0YWcgPT0gImNhbnZhcyIgfHwKICAgICAgdGFnID09ICJpbnB1dCIgfHwKICAgICAgdGFnID09ICJ0ZXh0YXJlYSIgfHwKICAgICAgdGFnID09ICJzZWxlY3QiIHx8CiAgICAgIHRhZyA9PSAib3B0aW9uIjsKICB9LAoKICBzbGlkeV9jaHJvbWU6IGZ1bmN0aW9uIChlbCkgewogICAgd2hpbGUgKGVsKQogICAgewogICAgICBpZiAoZWwgPT0gdzNjX3NsaWR5LnRvYyB8fAogICAgICAgICAgZWwgPT0gdzNjX3NsaWR5LnRvb2xiYXIgfHwKICAgICAgICAgIHczY19zbGlkeS5oYXNfY2xhc3MoZWwsICJvdXRsaW5lIikpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICBlbCA9IGVsLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGdldF9rZXk6IGZ1bmN0aW9uIChlKQogIHsKICAgIHZhciBrZXk7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh0eXBlb2Ygd2luZG93LmV2ZW50ICE9ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSB3aW5kb3cuZXZlbnQua2V5Q29kZTsKICAgIGVsc2UgaWYgKGUud2hpY2gpCiAgICAgIGtleSA9IGUud2hpY2g7CgogICAgcmV0dXJuIGtleTsKICB9LAoKICBnZXRfdGFyZ2V0OiBmdW5jdGlvbiAoZSkgewogICAgdmFyIHRhcmdldDsKCiAgICBpZiAoIWUpCiAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgaWYgKGUudGFyZ2V0KQogICAgICB0YXJnZXQgPSBlLnRhcmdldDsKICAgIGVsc2UgaWYgKGUuc3JjRWxlbWVudCkKICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgIGlmICh0YXJnZXQubm9kZVR5cGUgIT0gMSkKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgcmV0dXJuIHRhcmdldDsKICB9LAoKICAvLyBkb2VzIGRpc3BsYXkgcHJvcGVydHkgcHJvdmlkZSBjb3JyZWN0IGRlZmF1bHRzPwogIGlzX2Jsb2NrOiBmdW5jdGlvbiAoZWxlbSkgewogICAgdmFyIHRhZyA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICByZXR1cm4gdGFnID09ICJvbCIgfHwgdGFnID09ICJ1bCIgfHwgdGFnID09ICJwIiB8fCB0YWcgPT0gImRsIiB8fAogICAgICAgICAgIHRhZyA9PSAibGkiIHx8IHRhZyA9PSAidGFibGUiIHx8IHRhZyA9PSAicHJlIiB8fAogICAgICAgICAgIHRhZyA9PSAiaDEiIHx8IHRhZyA9PSAiaDIiIHx8IHRhZyA9PSAiaDMiIHx8CiAgICAgICAgICAgdGFnID09ICJoNCIgfHwgdGFnID09ICJoNSIgfHwgdGFnID09ICJoNiIgfHwKICAgICAgICAgICB0YWcgPT0gImJsb2NrcXVvdGUiIHx8IHRhZyA9PSAiYWRkcmVzcyI7IAogIH0sCgogIGFkZF9saXN0ZW5lcjogZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKSB7CiAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpCiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgZmFsc2UpOwogICAgZWxzZQogICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCJvbiIrZXZlbnQsIGhhbmRsZXIpOwogIH0sCgogIC8vIHVzZWQgdG8gcHJldmVudCBldmVudCBwcm9wYWdhdGlvbiBmcm9tIGZpZWxkIGNvbnRyb2xzCiAgc3RvcF9wcm9wYWdhdGlvbjogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBldmVudCA9IGV2ZW50ID8gZXZlbnQgOiB3aW5kb3cuZXZlbnQ7CiAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyAgLy8gZm9yIElFCgogICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikKICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgY2FuY2VsOiBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIGlmIChldmVudCkKICAgIHsKICAgICAgIGV2ZW50LmNhbmNlbCA9IHRydWU7CiAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOwoKICAgICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KQogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CgogICAgdzNjX3NsaWR5LmtleV93YW50ZWQgPSBmYWxzZTsKICAgIHJldHVybiBmYWxzZTsKICB9LAoKLy8gZm9yIGVhY2ggbGFuZ3VhZ2UgZGVmaW5lIGFuIGFzc29jaWF0aXZlIGFycmF5Ci8vIGFuZCBhbHNvIHRoZSBoZWxwIHRleHQgd2hpY2ggaXMgbG9uZ2VyCgogIHN0cmluZ3NfZXM6IHsKICAgICJzbGlkZSI6InDDoWcuIiwKICAgICJoZWxwPyI6IkF5dWRhIiwKICAgICJjb250ZW50cz8iOiLDjW5kaWNlIiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6InRhYmxhIGRlIGNvbnRlbmlkb3MiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoiVGFibGEgZGUgQ29udGVuaWRvcyIsCiAgICAicmVzdGFydCBwcmVzZW50YXRpb24iOiJSZWluaWNpYXIgcHJlc2VudGFjacOzbiIsCiAgICAicmVzdGFydD8iOiJJbmljaW8iCiAgfSwKICBoZWxwX2VzOgogICAgIlV0aWxpY2UgZWwgcmF0w7NuLCBiYXJyYSBlc3BhY2lhZG9yYSwgdGVjbGFzIEl6ZGEvRGNoYSwgIiArCiAgICAibyBSZSBww6FnIHkgQXYgcMOhZy4gVXNlIFMgeSBCIHBhcmEgY2FtYmlhciBlbCB0YW1hw7FvIGRlIGZ1ZW50ZS4iLAoKICBzdHJpbmdzX2NhOiB7CiAgICAic2xpZGUiOiJww6BnLi4iLAogICAgImhlbHA/IjoiQWp1ZGEiLAogICAgImNvbnRlbnRzPyI6IsONbmRleCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJ0YXVsYSBkZSBjb250aW5ndXRzIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlRhdWxhIGRlIENvbnRpbmd1dHMiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmVpbmljaWFyIHByZXNlbnRhY2nDsyIsCiAgICAicmVzdGFydD8iOiJJbmljaSIKICB9LAogIGhlbHBfY2E6CiAgICAiVXRpbGl0emkgZWwgcmF0b2zDrSwgYmFycmEgZXNwYWlhZG9yYSwgdGVjbGVzIEVzcS4vRHRhLiAiICsKICAgICJvIFJlIHDDoGcgeSBBdiBww6BnLiBVc2kgUyBpIEIgcGVyIGNhbnZpYXIgZ3JhbmTDoHJpYSBkZSBmb250LiIsCgogIHN0cmluZ3NfY3M6IHsKICAgICJzbGlkZSI6InNuw61tZWsiLAogICAgImhlbHA/IjoibsOhcG92xJtkYSIsCiAgICAiY29udGVudHM/Ijoib2JzYWgiLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoib2JzYWggcHJlemVudGFjZSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJPYnNhaCBwcmV6ZW50YWNlIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6Inpub3Z1IHNwdXN0aXQgcHJlemVudGFjaSIsCiAgICAicmVzdGFydD8iOiJyZXN0YXJ0IgogIH0sCiAgaGVscF9jczoKICAgICJQcmV6ZW50YWNpIG3Fr8W+ZXRlIHByb2Now6F6ZXQgcG9tb2PDrSBrbGlrbnV0w60gbXnFoWksIG1lemVybsOta3UsICIgKwogICAgIsWhaXBlayB2bGV2byBhIHZwcmF2byBuZWJvIGtsw6F2ZXMgUGFnZVVwIGEgUGFnZURvd24uIFDDrXNtbyBzZSAiICsKICAgICJkw6EgenbEm3TFoWl0IGEgem1lbsWhaXQgcG9tb2PDrSBrbMOhdmVzIEIgYSBTLiIsCgogIHN0cmluZ3Nfbmw6IHsKICAgICJzbGlkZSI6InBhZ2luYSIsCiAgICAiaGVscD8iOiJIZWxwPyIsCiAgICAiY29udGVudHM/IjoiSW5ob3VkPyIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJpbmhvdWRzb3BnYXZlIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IkluaG91ZHNvcGdhdmUiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiaGVyc3RhcnQgcHJlc2VudGF0aWUiLAogICAgInJlc3RhcnQ/IjoiSGVyc3RhcnQ/IgogIH0sCiAgaGVscF9ubDoKICAgICAiTmF2aWdlZXIgZC5tLnYuIGhldCBtdWlzLCBzcGF0aWViYXIsIExpbmtzL1JlY2h0cyB0b2V0c2VuLCAiICsKICAgICAib2YgUGdVcCBlbiBQZ0RuLiBHZWJydWlrIFMgZW4gQiBvbSBkZSBrYXJha3Rlcmdyb290dGUgdGUgdmVyYW5kZXJlbi4iLAoKICBzdHJpbmdzX2RlOiB7CiAgICAic2xpZGUiOiJTZWl0ZSIsCiAgICAiaGVscD8iOiJIaWxmZSIsCiAgICAiY29udGVudHM/Ijoiw5xiZXJzaWNodCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJJbmhhbHRzdmVyemVpY2huaXMiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoiSW5oYWx0c3ZlcnplaWNobmlzIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IlByw6RzZW50YXRpb24gbmV1IHN0YXJ0ZW4iLAogICAgInJlc3RhcnQ/IjoiTmV1c3RhcnQiCiAgfSwKICBoZWxwX2RlOgogICAgIkJlbnV0emVuIFNpZSBkaWUgTWF1cywgTGVlcnNjaGxhZywgZGllIEN1cnNvcnRhc3RlbiBsaW5rcy9yZWNodHMgb2RlciAiICsKICAgICJQYWdlIHVwL1BhZ2UgRG93biB6dW0gV2VjaHNlbG4gZGVyIFNlaXRlbiB1bmQgUyB1bmQgQiBmw7xyIGRpZSBTY2hyaWZ0Z3LDtnNzZS4iLAoKICBzdHJpbmdzX3BsOiB7CiAgICAic2xpZGUiOiJzbGFqZCIsCiAgICAiaGVscD8iOiJwb21vYz8iLAogICAgImNvbnRlbnRzPyI6InNwaXMgdHJlxZtjaT8iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoic3BpcyB0cmXFm2NpIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlNwaXMgVHJlxZtjaSIsCiAgICAicmVzdGFydCBwcmVzZW50YXRpb24iOiJSZXN0YXJ0dWogcHJlemVudGFjasSZIiwKICAgICJyZXN0YXJ0PyI6InJlc3RhcnQ/IgogIH0sCiAgaGVscF9wbDoKICAgICJabWllbmlhaiBzbGFqZHkga2xpa2FqxIVjIG15c3rEhSwgbmFjaXNrYWrEhWMgc3BhY2rEmSwgc3RyemHFgmtpIGxld28vcHJhd28iICsKICAgICJsdWIgUGdVcCAvIFBnRG4uIFXFvHlqIGtsYXdpc3p5IFMgaSBCLCBhYnkgem1pZW5pxIcgcm96bWlhciBjemN6aW9ua2kuIiwKCiAgc3RyaW5nc19mcjogewogICAgInNsaWRlIjoicGFnZSIsCiAgICAiaGVscD8iOiJBaWRlIiwKICAgICJjb250ZW50cz8iOiJJbmRleCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJ0YWJsZSBkZXMgbWF0acOocmVzIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlRhYmxlIGRlcyBtYXRpw6hyZXMiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmVjb21tZW5jZXIgbCdleHBvc8OpIiwKICAgICJyZXN0YXJ0PyI6IkTDqWJ1dCIKICB9LAogIGhlbHBfZnI6CiAgICAiTmF2aWd1ZXogYXZlYyBsYSBzb3VyaXMsIGxhIGJhcnJlIGQnZXNwYWNlLCBsZXMgZmzDqGNoZXMgIiArCiAgICAiZ2F1Y2hlL2Ryb2l0ZSBvdSBsZXMgdG91Y2hlcyBQZyBVcCwgUGcgRG4uIFV0aWxpc2V6ICIgKwogICAgImxlcyB0b3VjaGVzIFMgZXQgQiBwb3VyIG1vZGlmaWVyIGxhIHRhaWxsZSBkZSBsYSBwb2xpY2UuIiwKCiAgc3RyaW5nc19odTogewogICAgInNsaWRlIjoib2xkYWwiLAogICAgImhlbHA/Ijoic2Vnw610c8OpZyIsCiAgICAiY29udGVudHM/IjoidGFydGFsb20iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoidGFydGFsb21qZWd5esOpayIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJUYXJ0YWxvbWplZ3l6w6lrIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6ImJlbXV0YXTDsyDDumpyYWluZMOtdMOhc2EiLAogICAgInJlc3RhcnQ/Ijoiw7pqcmFpbmTDrXTDoXMiCiAgfSwKICBoZWxwX2h1OgogICAgIkF6IG9sZGFsYWsga8O2enRpIGzDqXBrZWTDqXNoZXoga2F0dGludHNvbiBheiBlZ8OpcnJlbCwgdmFneSAiICsKICAgICJoYXN6bsOhbGphIGEgc3rDs2vDtnosIGEgYmFsLCB2YWd5IGEgam9iYiBuecOtbCwgaWxsZXR2ZSBhIFBhZ2UgRG93biwgIiArCiAgICAiUGFnZSBVcCBiaWxsZW50ecWxa2V0LiBBeiBTIMOpcyBhIEIgYmlsbGVudHnFsWtrZWwgdsOhbHRvenRhdGhhdGphICIgKwogICAgImEgc3rDtnZlZyBtw6lyZXTDqXQuIiwKCiAgc3RyaW5nc19pdDogewogICAgInNsaWRlIjoicGFnLiIsCiAgICAiaGVscD8iOiJBaXV0byIsCiAgICAiY29udGVudHM/IjoiSW5kaWNlIiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6ImluZGljZSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJJbmRpY2UiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmljb21pbmNpYXJlIGxhIHByZXNlbnRhemlvbmUiLAogICAgInJlc3RhcnQ/IjoiSW5pemlvIgogIH0sCiAgaGVscF9pdDoKICAgICJOYXZpZ2FyZSBjb24gbW91c2UsIGJhcnJhIHNwYXppbywgZnJlY2NlIHNpbmlzdHJhL2Rlc3RyYSBvICIgKwogICAgIlBnVXAgZSBQZ0RuLiBVc2FyZSBTIGUgQiBwZXIgY2FtYmlhcmUgbGEgZGltZW5zaW9uZSBkZWkgY2FyYXR0ZXJpLiIsCgogIHN0cmluZ3NfZWw6IHsKICAgICJzbGlkZSI6Is+DzrXOu86vzrTOsSIsCiAgICAiaGVscD8iOiLOss6/zq7OuM61zrnOsTsiLAogICAgImNvbnRlbnRzPyI6Is+AzrXPgc65zrXPh8+MzrzOtc69zrE7IiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6Is+Azq/Ovc6xzrrOsc+CIM+AzrXPgc65zrXPh86/zrzOrc69z4nOvSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiLOoM6vzr3Osc66zrHPgiDOoM61z4HOuc61z4fOv868zq3Ovc+Jzr0iLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoizrXPgM6xzr3Otc66zrrOr869zrfPg863IM+AzrHPgc6/z4XPg86vzrHPg863z4IiLAogICAgInJlc3RhcnQ/IjoizrXPgM6xzr3Otc66zrrOr869zrfPg863OyIKICB9LAogIGhlbHBfZWw6CiAgICAizqDOu86/zrfOs863zrjOtc6vz4TOtSDOvM61IM+Ezr8gzrrOu86vzrogz4TOv8+FIM+Azr/Ovc+EzrnOus65zr/PjSwgz4TOvyBzcGFjZSwgz4TOsSDOss6tzrvOtyDOsc+BzrnPg8+EzrXPgc6sL860zrXOvs65zqwsICIgKwogICAgIs6uIFBhZ2UgVXAgzrrOsc65IFBhZ2UgRG93bi4gzqfPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDPhM6xIM+AzrvOrs66z4TPgc6xIFMgzrrOsc65IEIgzrPOuc6xIM69zrEgzrHOu867zqzOvs61z4TOtSAiICsKICAgICLPhM6/IM68zq3Os861zrjOv8+CIM+EzrfPgiDOs8+BzrHOvM68zrHPhM6/z4POtc65z4HOrM+CLiIsCgogIHN0cmluZ3NfamE6IHsKICAgICJzbGlkZSI6IuOCueODqeOCpOODiSIsCiAgICAiaGVscD8iOiLjg5jjg6vjg5ciLAogICAgImNvbnRlbnRzPyI6IuebruasoSIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiLnm67mrKHjgpLooajnpLoiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi55uu5qyhIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IuacgOWIneOBi+OCieWGjeeUnyIsCiAgICAicmVzdGFydD8iOiLmnIDliJ3jgYvjgokiCiAgfSwKICBoZWxwX2phOgogICAgICLjg57jgqbjgrnlt6bjgq/jg6rjg4Pjgq8g44O7IOOCueODmuODvOOCuSDjg7sg5bem5Y+z44Kt44O8ICIgKwogICAgICLjgb7jgZ/jga8gUGFnZSBVcCDjg7sgUGFnZSBEb3du44Gn5pON5L2c77yMIFMg44O7IELjgafjg5Xjgqnjg7Pjg4jjgrXjgqTjgrrlpInmm7QiLAoKICBzdHJpbmdzX3poOiB7CiAgICAic2xpZGUiOiLlubvnga/niYciLAogICAgImhlbHA/Ijoi5biu5YqpPyIsCiAgICAiY29udGVudHM/Ijoi5YaF5a65PyIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiLnm67lvZUiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi55uu5b2VIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IumHjeaWsOWQr+WKqOWxleekuiIsCiAgICAicmVzdGFydD8iOiLph43mlrDlkK/liqg/IgogIH0sCiAgaGVscF96aDoKICAgICLnlKjpvKDmoIfngrnlh7ssIOepuuagvOadoSwg5bem5Y+z566t5aS0LCBQZyBVcCDlkowgUGcgRG4g5a+86IiqLiAiICsKICAgICLnlKggUywgQiDmlLnlj5jlrZfkvZPlpKflsI8uIiwKCiAgc3RyaW5nc19ydTogewogICAgInNsaWRlIjoi0YHQu9Cw0LnQtCIsCiAgICAiaGVscD8iOiLQv9C+0LzQvtGJ0Yw/IiwKICAgICJjb250ZW50cz8iOiLRgdC+0LTQtdGA0LbQsNC90LjQtT8iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoi0L7Qs9C70LDQstC70LXQvdC40LUiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi0J7Qs9C70LDQstC70LXQvdC40LUiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoi0L/QtdGA0LXQt9Cw0L/Rg9GB0YLQuNGC0Ywg0L/RgNC10LfQtdC90YLQsNGG0LjRjiIsCiAgICAicmVzdGFydD8iOiLQv9C10YDQtdC30LDQv9GD0YHQuj8iCiAgfSwKICBoZWxwX3J1OgogICAgItCf0LXRgNC10LzQtdGJ0LDQudGC0LXRgdGMINC60LvQuNC60LDRjyDQvNGL0YjQutC+0LksINC40YHQv9C+0LvRjNC30YPRjyDQutC70LDQstC40YjRgyDQv9GA0L7QsdC10LssINGB0YLRgNC10LvQutC4IiArCiAgICAi0LLQu9C10LLQvi/QstC/0YDQsNCy0L4g0LjQu9C4IFBnIFVwINC4IFBnIERuLiDQmtC70LDQstC40YjQuCBTINC4IEIg0LzQtdC90Y/RjtGCINGA0LDQt9C80LXRgCDRiNGA0LjRhNGC0LAuIiwKCiAgc3RyaW5nc19zdjogewogICAgInNsaWRlIjoic2lkYSIsCiAgICAiaGVscD8iOiJoasOkbHAiLAogICAgImNvbnRlbnRzPyI6ImlubmVow6VsbCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJpbm5laMOlbGxzZsO2cnRlY2tuaW5nIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IklubmVow6VsbHNmw7ZydGVja25pbmciLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoidmlzYSBwcmVzZW50YXRpb25lbiBmcsOlbiBiw7ZyamFuIiwKICAgICJyZXN0YXJ0PyI6ImLDtnJqYSBvbSIKICB9LAogIGhlbHBfc3Y6CiAgICAiQmzDpGRkcmEgbWVkIGV0dCBrbGljayBtZWQgdsOkbnN0cmEgbXVza25hcHBlbiwgbWVsbGFuc2xhZ3N0YW5nZW50ZW4sICIgKwogICAgInbDpG5zdGVyLSBvY2ggaMO2Z2VycGlsdGFuZ2VudGVybmEgZWxsZXIgdGFuZ2VudGVybmEgUGcgVXAsIFBnIERuLiAiICsKICAgICJBbnbDpG5kIHRhbmdlbnRlcm5hIFMgb2NoIEIgZsO2ciBhdHQgw6RuZHJhIHRleHRlbnMgc3Rvcmxlay4iLAoKICBzdHJpbmdzOiB7IH0sCgogIGxvY2FsaXplOiBmdW5jdGlvbiAoc3JjKSB7CiAgICBpZiAoc3JjID09ICIiKQogICAgICByZXR1cm4gc3JjOwoKICAgICAvLyB0cnkgZnVsbCBsYW5ndWFnZSBjb2RlLCBlLmcuIGVuLVVTCiAgICAgdmFyIHMsIGxvb2t1cCA9IHczY19zbGlkeS5zdHJpbmdzW3czY19zbGlkeS5sYW5nXTsKCiAgICAgaWYgKGxvb2t1cCkKICAgICB7CiAgICAgICBzID0gbG9va3VwW3NyY107CgogICAgICAgaWYgKHMpCiAgICAgICAgcmV0dXJuIHM7CiAgICAgfQoKICAgICAvLyBzdHJpcCBjb3VudHJ5IGNvZGUgc3VmZml4LCBlLmcuCiAgICAgLy8gdHJ5IGVuIGlmIHVuZGVmaW5lZCBmb3IgZW4tVVMKICAgICB2YXIgbGcgPSB3M2Nfc2xpZHkubGFuZy5zcGxpdCgiLSIpOwoKICAgICBpZiAobGcubGVuZ3RoID4gMSkKICAgICB7CiAgICAgICBsb29rdXAgPSB3M2Nfc2xpZHkuc3RyaW5nc1tsZ1swXV07CgogICAgICAgaWYgKGxvb2t1cCkKICAgICAgIHsKICAgICAgICAgcyA9IGxvb2t1cFtzcmNdOwoKICAgICAgICAgaWYgKHMpCiAgICAgICAgICByZXR1cm4gczsKICAgICAgIH0KICAgICB9CgogICAgIC8vIG90aGVyd2lzZSBzdHJpbmcgYXMgaXMKICAgICByZXR1cm4gc3JjOwogIH0sCgogIGluaXRfbG9jYWxpemF0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgaTE4biA9IHczY19zbGlkeTsKICAgIHZhciBoZWxwX3RleHQgPSB3M2Nfc2xpZHkuaGVscF90ZXh0OwoKICAgIC8vIGVhY2ggc3VjaCBsYW5ndWFnZSBhcnJheSBpcyBkZWNsYXJlZCBpbiB0aGUgbG9jYWxpemUgYXJyYXkKICAgIC8vIHRoaXMgaXMgdXNlZCBhcyBpbiAgdzNjX3NsaWR5LmxvY2FsaXplKCJmb28iKTsKICAgIHRoaXMuc3RyaW5ncyA9IHsKICAgICAgImVzIjp0aGlzLnN0cmluZ3NfZXMsCiAgICAgICJjYSI6dGhpcy5zdHJpbmdzX2NhLAogICAgICAiY3MiOnRoaXMuc3RyaW5nc19jcywKICAgICAgIm5sIjp0aGlzLnN0cmluZ3NfbmwsCiAgICAgICJkZSI6dGhpcy5zdHJpbmdzX2RlLAogICAgICAicGwiOnRoaXMuc3RyaW5nc19wbCwKICAgICAgImZyIjp0aGlzLnN0cmluZ3NfZnIsCiAgICAgICJodSI6dGhpcy5zdHJpbmdzX2h1LAogICAgICAiaXQiOnRoaXMuc3RyaW5nc19pdCwKICAgICAgImVsIjp0aGlzLnN0cmluZ3NfZWwsCiAgICAgICJqcCI6dGhpcy5zdHJpbmdzX2phLAogICAgICAiemgiOnRoaXMuc3RyaW5nc196aCwKICAgICAgInJ1Ijp0aGlzLnN0cmluZ3NfcnUsCiAgICAgICJzdiI6dGhpcy5zdHJpbmdzX3N2CiAgICB9LAoKICAgIGkxOG4uc3RyaW5nc19lc1toZWxwX3RleHRdID0gaTE4bi5oZWxwX2VzOwogICAgaTE4bi5zdHJpbmdzX2NhW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfY2E7CiAgICBpMThuLnN0cmluZ3NfY3NbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9jczsKICAgIGkxOG4uc3RyaW5nc19ubFtoZWxwX3RleHRdID0gaTE4bi5oZWxwX25sOwogICAgaTE4bi5zdHJpbmdzX2RlW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfZGU7CiAgICBpMThuLnN0cmluZ3NfcGxbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9wbDsKICAgIGkxOG4uc3RyaW5nc19mcltoZWxwX3RleHRdID0gaTE4bi5oZWxwX2ZyOwogICAgaTE4bi5zdHJpbmdzX2h1W2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfaHU7CiAgICBpMThuLnN0cmluZ3NfaXRbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9pdDsKICAgIGkxOG4uc3RyaW5nc19lbFtoZWxwX3RleHRdID0gaTE4bi5oZWxwX2VsOwogICAgaTE4bi5zdHJpbmdzX2phW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfamE7CiAgICBpMThuLnN0cmluZ3NfemhbaGVscF90ZXh0XSA9IGkxOG4uaGVscF96aDsKICAgIGkxOG4uc3RyaW5nc19ydVtoZWxwX3RleHRdID0gaTE4bi5oZWxwX3J1OwogICAgaTE4bi5zdHJpbmdzX3N2W2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfc3Y7CgogICAgdzNjX3NsaWR5LmxhbmcgPSBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJsYW5nIik7CgogICAgaWYgKCF3M2Nfc2xpZHkubGFuZykKICAgICAgdzNjX3NsaWR5LmxhbmcgPSBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpOwoKICAgIGlmICghdzNjX3NsaWR5LmxhbmcpCiAgICAgIHczY19zbGlkeS5sYW5nID0gImVuIjsKICB9Cn07CgovLyBoYWNrIGZvciBiYWNrIGJ1dHRvbiBiZWhhdmlvcgppZiAodzNjX3NsaWR5LmllNiB8fCB3M2Nfc2xpZHkuaWU3KQp7CiAgZG9jdW1lbnQud3JpdGUoIjxpZnJhbWUgaWQ9J2hpc3RvcnlGcmFtZScgIiArCiAgInNyYz0namF2YXNjcmlwdDpcIjxodG1sIisiPjwvIisiaHRtbD5cIicgIiArCiAgImhlaWdodD0nMScgd2lkdGg9JzEnICIgKwogICJzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDotODAwcHgnPjwvaWZyYW1lPiIpOwp9CgovLyBhdHRhY2ggZXZlbnQgbGlzdGVuZXJzIGZvciBpbml0aWFsaXphdGlvbgp3M2Nfc2xpZHkuc2V0X3VwKCk7CgovLyBoaWRlIHRoZSBzbGlkZXMgYXMgc29vbiBhcyBib2R5IGVsZW1lbnQgaXMgYXZhaWxhYmxlCi8vIHRvIHJlZHVjZSBhbm5veWluZyBzY3JlZW4gbWVzcyBiZWZvcmUgdGhlIG9ubG9hZCBldmVudApzZXRUaW1lb3V0KHczY19zbGlkeS5oaWRlX3NsaWRlcywgNTApOwoK"></script>
</head>
<body>
<div class="slide titlepage">
<h1 class="title">Intro to R (part 2):<br>R language fundamentals<br><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB2aWV3Qm94PSIwIDAgNjQgNjQiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuMyAoMjQwNTU0NiwgMjAxOC0wMy0xMSkiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzQxODciCiAgIGhlaWdodD0iNjQiCiAgIHdpZHRoPSI2NCIKICAgc29kaXBvZGk6ZG9jbmFtZT0idHJvamFuLXJsb2dvLnN2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI2NyIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDI1IgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTg1MyIKICAgICBpbmtzY2FwZTpncmlkLWJib3g9InRydWUiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBpbmtzY2FwZTpjeT0iNjEuMjUxMTk5IgogICAgIGlua3NjYXBlOmN4PSIzNC41ODA1NDMiCiAgICAgaW5rc2NhcGU6em9vbT0iNS41IgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGlkPSJiYXNlIiAvPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM0MTg5Ij4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjA3MDEwMzczLDAsMCwwLjA0Njk1MDQ1LDAuODk5NTM4MjcsLTM4LjEyMjk1NikiCiAgICAgICBpZD0iZ3JhZGllbnRGaWxsLTEiCiAgICAgICB4MT0iMC43NDE0NDI1MyIKICAgICAgIHgyPSI1OTAuODYyNTkiCiAgICAgICB5MT0iMy42NjU4MjY5IgogICAgICAgeTI9IjU5My43ODY5OCIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgc3ByZWFkTWV0aG9kPSJwYWQiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9InJnYigyMDMsMjA2LDIwOCkiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMSIKICAgICAgICAgaWQ9InN0b3A0ODAwIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3AtY29sb3I9InJnYigxMzIsMTMxLDEzOSkiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMSIKICAgICAgICAgaWQ9InN0b3A0ODAyIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjA1Njc5NDAzLDAsMCwwLjA1Nzk1MzMxLDAuODk5NTM4MjcsLTM4LjEyMjk1NikiCiAgICAgICBpZD0iZ3JhZGllbnRGaWxsLTIiCiAgICAgICB4MT0iMzAxLjAyNjAzIgogICAgICAgeDI9IjcwMy4wNjc1MSIKICAgICAgIHkxPSIxNTEuNDAwNjEiCiAgICAgICB5Mj0iNTUzLjQ0MjA5IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICBzcHJlYWRNZXRob2Q9InBhZCI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgc3RvcC1jb2xvcj0icmdiKDM5LDEwOSwxOTUpIgogICAgICAgICBzdG9wLW9wYWNpdHk9IjEiCiAgICAgICAgIGlkPSJzdG9wNDgwNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdG9wLWNvbG9yPSJyZ2IoMjIsOTIsMTcwKSIKICAgICAgICAgc3RvcC1vcGFjaXR5PSIxIgogICAgICAgICBpZD0ic3RvcDQ4MDciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuMDcwMTAzNzMsMCwwLDAuMDQ2OTUwNDUsMC44OTk1MzgyNywtMzguMTIyOTU2KSIKICAgICAgIGlkPSJncmFkaWVudEZpbGwtMS0zIgogICAgICAgeDE9IjAuNzQxNDQyNSIKICAgICAgIHgyPSI1OTAuODYyNjEiCiAgICAgICB5MT0iMy42NjU4MjY4IgogICAgICAgeTI9IjU5My43ODY5OSIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgc3ByZWFkTWV0aG9kPSJwYWQiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9InJnYigyMDMsMjA2LDIwOCkiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMSIKICAgICAgICAgaWQ9InN0b3A0ODAwLTUiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3RvcC1jb2xvcj0icmdiKDEzMiwxMzEsMTM5KSIKICAgICAgICAgc3RvcC1vcGFjaXR5PSIxIgogICAgICAgICBpZD0ic3RvcDQ4MDItNiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTQxOTIiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxnCiAgICAgICBpZD0iZzM3NTUiPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDojZmVmMWQwIgogICAgICAgICBkPSJNIDQuMDM2NjA2Miw2Mi4yMjE0MTYgQyAzLjMzNjI1MjgsNjEuOTQ3ODU3IDMuMTIzNTExNCw2MS42MjU3ODggMy4xMjM1MTE0LDYwLjgzOTA4MyBjIDAsLTAuNzQ2MTggMC4xOTA3MjA0LC0xLjAzMDg5MSAxLjMxNTI4MDYsLTEuOTYzNDczIDEuMzk0OTMwNCwtMS4xNTY3OTYgMy43MTE3MjAzLC0zLjUxNDk3MSA0LjUzNjYwMjUsLTQuNjE3NjM5IDEuNjk3NjQ1NSwtMi4yNjkzNDIgMi42MDk2NjM1LC00LjI5MDIxNyAzLjAxNzUyNzUsLTYuNjg2MzIgMC4xOTMyOTIsLTEuMTM1NTQ1IDAuMjI4NTI3LC0zLjEwOTEwNiAwLjA3ODgyLC00LjQxNDU4NSAtMC4yMjg5NTYsLTEuOTk2NDk3IC0wLjE4MDMwOSwtNS44MDM0NTcgMC4xMTYyODgsLTkuMTAwMzg5IDAuNDY4MzQzLC01LjIwNjAzNSAxLjA4ODIwNSwtOC41NzgzMTggMi4xNjc4MzIsLTExLjc5MzgzMSAxLjg2NzAxMiwtNS41NjA2MjkgNC42NTE3MTUsLTEwLjAxMjE1NyA4LjEzMjE5OSwtMTIuOTk5ODUxNCA0LjIzMzI0NSwtMy42MzM4NzQ3IDkuNDAyODMzLC01LjgwMjI2MzggMTUuNjI0ODc2LC02LjU1Mzg3MDQgMS40MDg0ODIsLTAuMTcwMTQxMSA1LjQzNjczLC0wLjIzOTY4NCA2LjgzNjM5LC0wLjExODAyMjIgNS4wNjQ0MjYsMC40NDAyMTIgOS4yODMzMDMsMS45MTc0NTU2IDEzLjUyMTgwNiw0LjczNDY3MjggMS4zNDc5ODEsMC44OTU5NjU1IDIuODM4NzQ0LDEuOTk3OTE0MiAyLjg5MjU0OCwyLjEzODEyNTMgMC4wMzIzOSwwLjA4NDQxNCAtMC4wNDA3LDAuMTU3NDgwOSAtMC4yNDY0NzUsMC4yNDYzODM1IC0xLjAxOTE3MywwLjQ0MDMyMjQgLTIuMTQ1NjQ1LDEuMDIwODU3NCAtMi43MTE1MzUsMS4zOTc0MDg0IC0xLjg5MTU1NiwxLjI1ODY2OCAtMy4zMjA3NiwyLjk2Mjg4NiAtNC4xNDY0NTYsNC45NDQzMzggLTAuNDAyODAyLDAuOTY2NjE3IC0wLjM5NDk4NywxLjAzNzUyNSAwLjE1MDc4LDEuMzY4MDU5IDAuNjU4MzE0LDAuMzk4Njk2IDEuMDAwODkyLDAuNzQxNjIxIDEuMTk3NTQ5LDEuMTk4NzYzIDAuMjM1NjU0LDAuNTQ3NzkxIDAuMTgzMDI5LDEuMDk3MzAzIC0wLjE1OTE1MiwxLjY2MTkgLTAuMzYxNzYyLDAuNTk2OTA0IC0xLjYwMTI0NSwyLjM1ODMxIC0yLjA4MTExOCwyLjk1NzQzNiBsIC0wLjQxNDcxLDAuNTE3NzcxIDAuNjQyNzMsMC42MzkzOTEgMC42NDI3MjksMC42MzkzOTEgMC43MDQ0MjYsNi4yN2UtNCBjIDEuNTM4ODE1LDAuMDAxNCAyLjc3NTE1NywwLjIzNDI4IDMuNzc1NDI3LDAuNzExMTI3IDIuNTMwMjU5LDEuMjA2MjIgMi44MTI1MTUsMy44MzUyNzUgMC42OTU3ODYsNi40ODA4NTkgLTAuNjA4NTA2LDAuNzYwNTM5IC0xLjM2NTQ3MiwxLjQ3NTY3OCAtMi40NTI3MjIsMi4zMTcxOTUgLTAuNDQyMjcxLDAuMzQyMzEyIC0wLjgwNDEyOSwwLjYzNzY5NSAtMC44MDQxMjksMC42NTY0MDcgMCwwLjAxODcxIDAuMTk5MzI5LDAuMzMzNTQ1IDAuNDQyOTU1LDAuNjk5NjMyIDAuNTQyODY1LDAuODE1NzQyIDAuNjEzMDY1LDEuMTk0Nzg0IDAuMzM5MTg1LDEuODMxNDM0IC0wLjI0NTQ5NSwwLjU3MDY2OCAtMC43MDkxNjIsMC45NTM3NTUgLTEuNTI4Nzk4LDEuMjYzMTA1IC0wLjgxNTY4LDAuMzA3ODU4IC0wLjk4MzMxOSwwLjQ5MzgxMiAtMC43OTkxNzgsMC44ODY0OTMgMC4zMDc1MjMsMC42NTU3OTcgMC4zNDgxMTgsMS4zOTU1MDEgMC4xMDE2MjEsMS44NTE3MjIgLTAuMDg0MjYsMC4xNTU5NDcgLTAuMDc3MzQsMC4yMjg0MzMgMC4wNDQ2NCwwLjQ2NzY4NSAwLjE3NzU3OSwwLjM0ODMwOSAwLjE4MzczOSwwLjc1NjA3MSAwLjAxODc3LDEuMjQxOTkyIC0wLjEwODM0MSwwLjMxOTExIC0wLjExMjk2NywwLjQ3Mjk5OCAtMC4wMzM2OSwxLjEyMDY3NyAwLjA1MDU0LDAuNDEyOTI2IDAuMTQyMzYsMC45NzM2MDkgMC4yMDQwMzcsMS4yNDU5NjQgMC4zMjQ3OTIsMS40MzQyMTUgLTAuMDUyMzksMi4xNjA0NjggLTEuNDMyMjYsMi43NTc4IC0wLjkxNTQ0MiwwLjM5NjI4NiAtMy4zNzk2MTYsMS42MzM3MyAtMy44NDEyNTksMS45Mjg5ODIgLTAuMzM4NDkyLDAuMjE2NDg4IC0wLjQzMzU5OSwwLjMzMjQ3NyAtMC41ODY2ODEsMC43MTU0OTEgLTAuMTY3NzM3LDAuNDE5NjggLTAuMTgzMjYxLDAuNTc5MiAtMC4xODk1NSwxLjk0NzY5OSAtMC4wMDg4LDEuOTA4MjgyIC0wLjA0NzQzLDIuMDE0MDg5IC0wLjk5MDgyMSwyLjcxMTgwNCAtMS41ODc4NzcsMS4xNzQzNjMgLTYuNDE2MzUxLDQuMjY4MjQ2IC03LjY4Nzg0Myw0LjkyNjA0NSAtMC42OTI2ODgsMC4zNTgzNTkgLTAuNzE1NTkyLDAuMzY0MTE1IC0xLjQyNDExNiwwLjM1Nzg4NSAtMC42MzY4NDIsLTAuMDA1NiAtMC44MDQwMTYsLTAuMDM5NjIgLTEuNDQ1Nzg0LC0wLjI5NDE5NCAtMS44NTMzNjcsLTAuNzM1MTkzIC0yLjE5OTgyMiwtMC44NTY0NDggLTIuNzQ1MjUsLTAuOTYwODA2IC0wLjgwNTIyOSwtMC4xNTQwNjYgLTEuNzUwNDE1LC0wLjEzOTU0OCAtMi42MjAwNSwwLjA0MDI0IC0wLjQwMzg3MiwwLjA4MzUgLTIuMTk5Mzk4LDAuNDg2Mjc1IC0zLjk5MDA1NiwwLjg5NTA2MSAtNC43ODA0MTgsMS4wOTEzMTEgLTQuMzg5MzQxLDEuMDI0NzE3IC02LjA0MDc3NSwxLjAyODY0MyAtMS4zNjAzNjUsMC4wMDMyIC0xLjQ3MjE1NywtMC4wMDc3IC0xLjc4MzE1OCwtMC4xNzM4MzUgLTAuMzgzMDEsLTAuMjA0NjQ3IC0wLjU3MDUxNSwtMC41MTI3NDUgLTAuNTcwMDk4LC0wLjkzNjc1NCA2LjI4ZS00LC0wLjYyMzI5NCAwLjExMDU1NiwtMC43MDU5NzYgMi41ODM4MDYsLTEuOTQzMTcgMy41MTYzMTUsLTEuNzU4OTY2IDUuNjU0ODczLC0yLjk3MTg2OSA2LjQ3MzEzMiwtMy42NzEyOTUgMC45NjAyMjYsLTAuODIwNzc3IDEuODI2MjkxLC0zLjI3MTEwNCAxLjc1MzUwNCwtNC45NjExMzIgbCAtMC4wMjM2NCwtMC41NDg4MDEgLTAuMzEzODA2LC0wLjA2NTI4IEMgMjkuMzAzODYsNDkuNDA0MzM4IDI4LjE5MjczNiw0OC45OTkyMzUgMjcuNjQ4MjU3LDQ4LjY4MDUwOSAyNi45OTk3MDgsNDguMzAwODY0IDI2LjE4MDk3OSw0Ny41Nzg1MjMgMjUuODM3NTg5LDQ3LjA4MzAxMSBsIC0wLjIxOTAyMiwtMC4zMTYwNDggMC4yODcyNTgsLTAuOTYxNTk0IGMgMC4zMjAwMzMsLTEuMDcxMzAyIDAuNTY3ODUzLC0yLjIwMTUwNCAwLjY0NTIwNSwtMi45NDI0OTcgbCAwLjA1MTE5LC0wLjQ5MDMyMiBoIC0wLjQzOTU1NyBjIC0wLjM1ODgzNCwwIC0wLjQ1NDkzNCwwLjAyODczIC0wLjUyMzI4MywwLjE1NjQ0MiAtMC4xMjE2NDQsMC4yMjcyOTQgLTAuMzM3ODQxLDEuMzIxNDUzIC0wLjc0NDE2MSwzLjc2NjEzOSAtMC4xOTcyMTcsMS4xODY1ODEgLTAuNDQ2NTczLDIuNTAxOTI2IC0wLjU1NDEyNywyLjkyMjk5IC0xLjA4MTQyNiw0LjIzMzcwNyAtMy41OTIzMzQsNy42NzU3MTcgLTcuMjYwMjI5LDkuOTUyNDg4IC0zLjA4MTY3OCwxLjkxMjg5IC03LjcyNjMxNzgsMy4yMTQ0NzQgLTExLjQzMTI5OTcsMy4yMDM0MzUgLTEuMDE3NDQ2NiwtMC4wMDMgLTEuMjk3OTA1MSwtMC4wMjk1NyAtMS42MTI5NTIxLC0wLjE1MjYyOCB6IgogICAgICAgICBpZD0icGF0aDUwNjMiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZWU1YTAiCiAgICAgICAgIGQ9Im0gNC42MzgwNDA0LDYyLjMwMzAzNCBjIC0wLjk5OTQyMjksLTAuMTU3MDIzIC0xLjQ3NjUyMzIsLTAuNjI4Nzk3IC0xLjQ3MTU1NiwtMS40NTUxMjcgMC4wMDQ2LC0wLjc2NDkyNSAwLjE1OTIwNywtMC45NjkwNDcgMS43MjMyMzM1LC0yLjI3NTA5NyAxLjIxMzA3MzMsLTEuMDEyOTg1IDIuODgxMDczNCwtMi42ODQ1NzIgMy43MTk3Njg5LC0zLjcyNzc3MSAxLjc5MzQ2OTIsLTIuMjMwNzc3IDIuODU4NDM4MiwtNC4zNjk4NDYgMy4zODIwMzQyLC02Ljc5MzA2MyAwLjIxMjc5NywtMC45ODQ4MzMgMC4yOTUxODEsLTMuNDg5NjE2IDAuMTU3MTI4LC00Ljc3NzIzMyAtMC4zNzI2MzcsLTMuNDc1NTM3IC0wLjAyOTI5LC05Ljc0MTYwMiAwLjgyMzIwMiwtMTUuMDIzNDg2IDAuODgzODQsLTUuNDc2MDk3IDMuMDA2ODQ2LC0xMC44NjE3MjQgNS44NTMyNzksLTE0Ljg0ODU1NiA1LjE4ODM3OSwtNy4yNjcwNTc1IDE0LjQyODIzOSwtMTEuMjY5NDg1NyAyNC45Mzg5NzksLTEwLjgwMjgxMjEgNS41NzExMTEsMC4yNDczNTU2IDEwLjE4NjM2OSwxLjc3OTI2OTggMTQuOTI4MDgyLDQuOTU0OTg2OCAxLjI1NjE1NywwLjg0MTI5OTQgMi41NTkzOTEsMS44MjUwMDkzIDIuNTYxNzI0LDEuOTMzNjQ1NCAwLjAwMTIsMC4wNTc2ODMgLTAuMTEyNDg0LDAuMTQ1OTQxNiAtMC4yNTI3MTcsMC4xOTYxMjkxIC0wLjUwMzE1OSwwLjE4MDA3NDQgLTEuOTcyMTUyLDAuOTI3MTAyOCAtMi41MjAzNCwxLjI4MTY3MDggLTIuMDAxMjc1LDEuMjk0NDI0IC0zLjUyMDAyNSwzLjExODU1OCAtNC4zNjI3NDksNS4yMzk5OTMgLTAuMzQ3NDUsMC44NzQ2NTQgLTAuMzQzNTg5LDAuODg3NzQ0IDAuNDA4MzY4LDEuMzg0MjA2IDAuNDY0MTk0LDAuMzA2NDc0IDAuNzA5NjM5LDAuNTMwNjI0IDAuODc2NDE1LDAuODAwMzc5IDAuMzA2OTMsMC40OTY0NDggMC4zNjEwNTcsMS4wNzM1MDcgMC4xNDU2MywxLjU1MjU5MyAtMC4xNzk5OTMsMC40MDAyOTEgLTEuODA0MTYxLDIuNzM3NzE3IC0yLjMyOTIyLDMuMzUyMTA2IC0wLjE5NjYwMywwLjIzMDA1MiAtMC4zNTc0NiwwLjQ0Nzc3MyAtMC4zNTc0NiwwLjQ4MzgyMiAwLDAuMDM2MDUgMC4zMDQxNDUsMC4zNDU2IDAuNjc1ODc3LDAuNjg3ODg5IGwgMC42NzU4NzcsMC42MjIzNDUgMS4yMjY1NzUsMC4wNDk5NCBjIDEuNDg3MTE0LDAuMDYwNTYgMi4zNzg5MjYsMC4yNDU2NTkgMy4yNzYzNTMsMC42ODAwMzkgMi43NzMwMSwxLjM0MjIxNCAyLjcxMDY1Nyw0LjM0NzA1IC0wLjE1MDI2Miw3LjI0MTIzMyAtMC41MzkwNDMsMC41NDUzMTEgLTIuMDAzMTUsMS43NjE3NjcgLTIuMzMyNzI4LDEuOTM4MTUyIC0wLjA4NTM1LDAuMDQ1NjggLTAuMTU1MTc1LDAuMTE3NDU1IC0wLjE1NTE3NSwwLjE1OTUwOSAwLDAuMDQyMDUgMC4xOTkzMywwLjM3NTk4NiAwLjQ0Mjk1NiwwLjc0MjA3MyAwLjU2NjE4NCwwLjg1MDc4MiAwLjYyNjM3NiwxLjIyNzIzMyAwLjMwMjE3MywxLjg4OTg3NyAtMC4yNTc0ODMsMC41MjYyNzkgLTAuNjM4MzQxLDAuODIxMzk2IC0xLjUwNTI1OSwxLjE2NjM5IC0wLjM3NTcxOSwwLjE0OTUxOCAtMC42NTcxNSwwLjMxNzAyMyAtMC43NTQ5MjQsMC40NDkzMjMgbCAtMC4xNTU4ODgsMC4yMTA5MzUgMC4xODQ3NTQsMC40MTY2NzggYyAwLjIzMTk2MiwwLjUyMzE0NiAwLjI2MDg2MSwxLjMzNzk1MyAwLjA1ODQxLDEuNjQ2OTMgLTAuMTI2NDc4LDAuMTkzMDMgLTAuMTI1NDcxLDAuMjE4ODg3IDAuMDE5NjEsMC41MDM0NiAwLjE4NDczNCwwLjM2MjM0NyAwLjE5NDYxMSwwLjc2NjE5IDAuMDMwNTUsMS4yNDk0MDcgLTAuMTA0MDEyLDAuMzA2MzU5IC0wLjEwOTExLDAuNDc0NTkzIC0wLjAzMzk2LDEuMTIwNjc3IDAuMDQ4NjMsMC40MTgxMTIgMC4xMzkwMSwwLjk4MzA0IDAuMjAwODM2LDEuMjU1Mzk1IDAuMzIzMjkzLDEuNDI0MTg0IC0wLjAzNDQyLDIuMTI1NzQxIC0xLjM2ODA5MywyLjY4MzEwNSAtMC45NzUxMjYsMC40MDc1MjMgLTMuNTUwNDY4LDEuNzEyODM4IC0zLjk0NDkyNywxLjk5OTQ5MiAtMC4yODEyMTksMC4yMDQzNjIgLTAuNDA3NDU0LDAuMzcwMzQzIC0wLjU0ODQ0OCwwLjcyMTEyOCAtMC4xNjg0NDYsMC40MTkwODggLTAuMTgzMzU2LDAuNTcyMTczIC0wLjE4NTc0MiwxLjkwNzAyMSAtMC4wMDMsMS43MDMyMDUgLTAuMDQ5OTMsMS44OTQ5NjggLTAuNTc5NTczLDIuMzcwNjAzIC0wLjkyMDk2MywwLjgyNzA0NCAtNy4wNjcxMjYsNC44MDY1NzEgLTguMjk2MjI2LDUuMzcxNjUzIC0wLjg5NDY3LDAuNDExMzI2IC0xLjY4NjgwNiwwLjMyNDQ3MSAtMy4zMTIwMDYsLTAuMzYzMTUgLTEuMjI2OTcyLC0wLjUxOTEzMSAtMS45Mzc0NTQsLTAuNzA3Nzc4IC0yLjg3NzAzMSwtMC43NjM5MDMgLTAuOTk0MDY5LC0wLjA1OTM4IC0xLjA1NzI1NSwtMC4wNDgxNSAtNS42NDUyMjcsMS4wMDMyNjcgLTQuMjU1NjksMC45NzUyNjkgLTQuOTI3MzgsMS4wOTM0MjkgLTYuMjY2NDU0LDEuMTAyMzU0IC0xLjEyOTUyOSwwLjAwNzUgLTEuNTU1NTE4LC0wLjA5MTQ5IC0xLjkwNzM4OSwtMC40NDMzNjIgLTAuMjExNDQzLC0wLjIxMTQ0MyAtMC4yNTk3MDYsLTAuMzIwODc2IC0wLjI1OTcwNiwtMC41ODg4NjYgMCwtMC42NDIxMSAwLjA2ODYxLC0wLjY5NDMxOCAyLjU0OTY3NywtMS45NDAwMzggMy43MTIxNzUsLTEuODYzODQ5IDUuNzE2OTQ1LC0zLjAwNTM5NiA2LjQ3NTAzNCwtMy42ODY5ODMgMC45MzU1NzQsLTAuODQxMTYyIDEuNjUzODI2LC0yLjY3NzIyNyAxLjc3Njc1MSwtNC41NDE5MDYgMC4wNjkxMywtMS4wNDg2NzkgMC4wNTM2MSwtMS4wODE1NyAtMC41NjQxMzMsLTEuMTk1Mzk0IC0xLjUzNjcxMiwtMC4yODMxNSAtMy4xMzY4NzQsLTEuMjE3MDc4IC0zLjkyNTExNiwtMi4yOTA4NzkgbCAtMC4yODk2NzcsLTAuMzk0NjIgMC4yODM4NjcsLTAuOTU3NzExIGMgMC4zNDk3MjYsLTEuMTc5OTAyIDAuNTk2NDg2LC0yLjM3NDIgMC42MTkzMiwtMi45OTc0NTMgbCAwLjAxNzI1LC0wLjQ3MDcxIC0wLjQ0NjgwNywtMC4wMjM0IGMgLTAuMzkzOTA2LC0wLjAyMDYzIC0wLjQ2MDQ3MywtMC4wMDIxIC0wLjU2MjIzNiwwLjE1NjkwMyAtMC4xNTM5MDksMC4yNDA0MSAtMC4zNzM0MTksMS4yOTIxMjggLTAuNzYwODM0LDMuNjQ1MzI2IC0wLjM5Nzk2NywyLjQxNzI4NiAtMC40ODY3MjksMi44NDg0NzIgLTAuNzg4NjM1LDMuODMwOTc4IC0wLjU5OTM5NCwxLjk1MDY0IC0xLjM5NTY2NywzLjU0MzYxOCAtMi41Njg1OTQsNS4xMzg1ODIgLTAuNTM4MDgzLDAuNzMxNjkzIC0xLjg5Nzg2OSwyLjEzNjUwMSAtMi42Nzg4MywyLjc2NzUyNSAtMi43ODE5ODQsMi4yNDc4NjkgLTYuNjgyNjg5LDMuNzgzOTk5IC0xMC45ODMyMjgxLDQuMzI1Mjg1IC0xLjE3OTk1MDksMC4xNDg1MTUgLTIuNjgwNzQxMiwwLjIwODkyNiAtMy4xOTI1Njg1LDAuMTI4NTExIHoiCiAgICAgICAgIGlkPSJwYXRoNTA2MSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZlZDI1YyIKICAgICAgICAgZD0iTSA0LjQ1NzE4OSw2Mi4xOTY1MTYgQyAzLjkyMjI4NzMsNjIuMDcxNjQyIDMuNzQzOTYzOCw2MS45NzUxNTIgMy40ODk3NTY2LDYxLjY3MzA0NSAzLjA5MDgzMjEsNjEuMTk4OTUgMy4xNDc2NDksNjAuMzQ4NjM5IDMuNjEzNzIxNSw1OS44MTc4MTIgMy43NTAyNjA2LDU5LjY2MjMwMyA0LjE5ODg5MTIsNTkuMjUzNjI5IDQuNjEwNjc4NSw1OC45MDk2NDggOC45MTIzNDY2LDU1LjMxNjMxIDExLjI0NDk2OCw1MS45MTEzOTMgMTIuMDc2NjM2LDQ4LjAxMTYyMiBjIDAuMTQ4MzYyLC0wLjY5NTY4MyAwLjE3NDU5MiwtMS4wNzE0MiAwLjE4MDA3MywtMi41Nzk0NTkgMC4wMDM1LC0wLjk3MDgzOSAtMC4wNDI5NywtMi4zOTk4MTMgLTAuMTAzMzM4LC0zLjE3NTQ5OSAtMC4yODg2NTEsLTMuNzA5MDkyIDAuMjQxNTk0LC0xMC44OTg0MjMgMS4xMzcxMSwtMTUuNDE3NTM2IDAuODUwNjI5LC00LjI5MjU5MyAyLjU2ODA1LC04LjY3NzY3MyA0Ljc2MjQ3NywtMTIuMTYwMDAyIDEuMzM1OTUzLC0yLjEyMDAxOSAzLjQ1MTM4NiwtNC40OTYzNCA1LjMxMTA3MywtNS45NjYwNjc0IDMuOTY1OTcsLTMuMTM0MzQwNCA4Ljg5MTUwMiwtNS4xMjU0MjQzIDE0LjM0MzkzMSwtNS43OTgzNTI0IDcuNjk5MDg4LC0wLjk1MDIwNiAxNC4xNzg2MzksMC4zOTgzMTI5IDIwLjE3ODgyLDQuMTk5NTk5MiAxLjExMzEzNywwLjcwNTIwNDYgMy4yMjg3ODksMi4yMzIxMjQ3IDMuMjY5OTA4LDIuMzU5OTc2MiAwLjAxNjAzLDAuMDQ5ODUyIC0wLjEwNTA2NSwwLjEzMzcxNTQgLTAuMjY5MTA2LDAuMTg2MzYzNSAtMC41NDEwNjMsMC4xNzM2NTEzIC0yLjAxMjEyNSwwLjk0OTM4NDkgLTIuNzI4MTU3LDEuNDM4NjM2OSAtMC44NDk1NTMsMC41ODA0ODMgLTIuMDg2MjY3LDEuNzQ4NzA3IC0yLjY1OTAyNCwyLjUxMTc2MyAtMC41NjY3MTEsMC43NTUwMDQgLTEuMDg4NzU4LDEuNjcyODEyIC0xLjQyMTI0MywyLjQ5ODY4OCAtMC4zOTEzNywwLjk3MjE0MiAtMC4zODU2OCwxLjAwMDUzMyAwLjI5Mjg3NiwxLjQ2MTIwNiAwLjMxMjgyNiwwLjIxMjM3OCAwLjY2Mzk4NiwwLjQ4NzA1NCAwLjc4MDM1NCwwLjYxMDM5MSAwLjQzMjQ1NCwwLjQ1ODM0NyAwLjU3Mjk2NCwxLjE2MzU4IDAuMzQxOTc4LDEuNzE2NDA5IC0wLjE0NjkwNywwLjM1MTU5NiAtMS45NDQ2MDUsMi45MzQ2OCAtMi4zNzc1NTgsMy40MTYyNzQgLTAuMTgzMzgxLDAuMjAzOTgzIC0wLjMzMzQxOSwwLjQwMzQzMiAtMC4zMzM0MTksMC40NDMyMTggMCwwLjAzOTc5IDAuMzEzMTgyLDAuMzc4ODA3IDAuNjk1OTYyLDAuNzUzMzc3IGwgMC42OTU5NjIsMC42ODEwMzYgaCAwLjgxNjI5IGMgMS41Njc4ODEsMCAyLjY5NzM0NiwwLjIxNDQ2MiAzLjcxNDg4MywwLjcwNTM4MiAxLjEwMDUzNiwwLjUzMDk2MyAxLjc1NDk1NSwxLjM2MjIxMSAxLjk0NDc1MywyLjQ3MDI0NSAwLjE1OTUxNCwwLjkzMTIzOCAtMC4xOTUzMDksMi4xMjQxOTQgLTAuOTcyOTk5LDMuMjcxMzQyIC0wLjQ5NzI0MSwwLjczMzQ2NSAtMS43MDUwNjUsMS45NDAyMTggLTIuNzUzOTk3LDIuNzUxNTU1IC0wLjUwODM4NiwwLjM5MzIzIC0wLjkyNDMzOCwwLjc1Mjk3IC0wLjkyNDMzOCwwLjc5OTQyIDAsMC4wNDY0NSAwLjIxMTgyLDAuMzk1NzU3IDAuNDcwNzEsMC43NzYyMzggMC40MTEyMTksMC42MDQzNTIgMC40NzA0OTIsMC43MzgxMTkgMC40Njg5ODcsMS4wNTg0MTQgLTAuMDAzNSwwLjc1MDU3OSAtMC41ODYwNTIsMS40Nzc2OTUgLTEuNDE4OTI2LDEuNzcxMTI0IC0wLjcwODMwMSwwLjI0OTU0MiAtMC45ODMyOTMsMC40MTczMzcgLTEuMDg0NTQsMC42NjE3NjkgLTAuMDgzMDcsMC4yMDA1NTMgLTAuMDcyMzQsMC4yNzU4OSAwLjA4MTYxLDAuNTcyOTA5IDAuMjMzMDQxLDAuNDQ5NjEgMC4yNTc3NjEsMS4zMzYwNDUgMC4wNDU5NywxLjY0ODYwOSAtMC4xMzY4MDMsMC4yMDE4OTggLTAuMTM2MTkxLDAuMjE3NTI1IDAuMDE5OTEsMC41MDg3NzQgMC4xOTIwMTgsMC4zNTgyNjQgMC4yMDQ4MTYsMC43NTY3ODcgMC4wMzk5LDEuMjQyNTM0IC0wLjEwOTU5MywwLjMyMjggLTAuMTA5MTMxLDAuNDUwMDM4IDAuMDA0OCwxLjMzNDIzNyAwLjA2OTMsMC41Mzc1NzUgMC4xNTkxMTcsMS4wOTI4OTMgMC4xOTk1OTgsMS4yMzQwNDEgMC4xNDI2MjgsMC40OTczMTQgMC4wOTAwNiwxLjE1NzIxNiAtMC4xMjA4NTEsMS41MTcxMTEgLTAuMTcwMjg4LDAuMjkwNTc4IC0wLjgxMzEzNywwLjgxOTUyNSAtMC45OTU5OTcsMC44MTk1MjUgLTAuMTIwMjQyLDAgLTIuNDQ3OTI3LDEuMTExMjEyIC0zLjMyMDUxNywxLjU4NTE3OSAtMS4wNDA5NjksMC41NjU0MjcgLTEuMjQyMjQ1LDAuNzQ1NDM4IC0xLjQ2NzQyLDEuMzEyMzc5IC0wLjE1NzA0NiwwLjM5NTQxIC0wLjE3NDAzOCwwLjU4MTA3NyAtMC4xNzk5NjYsMS45NjY0NDMgLTAuMDA3NCwxLjczMTM3NCAtMC4wMjkzMSwxLjgxNTAxNSAtMC42MDYwNDEsMi4zMTQ1ODggLTAuNzg3NDE4LDAuNjgyMDcxIC02LjYxMDg0OCw0LjQ0MzMgLTcuOTg3NDQsNS4xNTg5MTcgLTEuMDUwNzcsMC41NDYyMzkgLTEuNzUxMjI4LDAuNDk2MTMyIC0zLjUxNzEzNywtMC4yNTE2IC0xLjQ4MzEyNiwtMC42Mjc5OTUgLTEuOTkyNTE0LC0wLjc0NTM2OCAtMy4yMjY3NzMsLTAuNzQzNTE4IC0xLjAxOTc4NSwwLjAwMTUgLTEuMTM3NzIyLDAuMDE5ODcgLTMuMTc3MjkxLDAuNDk0MTg3IC01LjM5MDQ5MywxLjI1MzU5MSAtNi41MjkxODUsMS40ODkxNTcgLTcuNjI3ODEzLDEuNTc3OTk4IC0xLjcyMjIzMiwwLjEzOTI2NyAtMi40OTMyNywtMC4wMzk3MSAtMi43OTI4NzksLTAuNjQ4Mjg5IC0wLjExODY5NywtMC4yNDExMDUgLTAuMTI4NDgyLC0wLjMzNzEzIC0wLjA1NjU2LC0wLjU1NTA1MyAwLjA0NzgzLC0wLjE0NDkzMiAwLjE2NTM3NCwtMC4zMzQ3NTUgMC4yNjEyMDYsLTAuNDIxODMxIDAuMDk1ODMsLTAuMDg3MDggMS4zNzQ1NDksLTAuNzYyOTYgMi44NDE1OTQsLTEuNTAxOTY1IDIuODczNzU3LC0xLjQ0NzYxNyA0Ljc2MzU4NCwtMi41MTEyNDMgNS42Mjc5NjUsLTMuMTY3NTExIDEuMTI5NzEsLTAuODU3NzE1IDEuOTQ0MDczLC0yLjc1OTk5OSAyLjA3MDE0MSwtNC44MzU2NzUgMC4wNjUyNiwtMS4wNzQ1MDQgMC4wMzc4MiwtMS4xMjgzNCAtMC42Mzg2ODQsLTEuMjUyOTkgLTEuNTM1MTIsLTAuMjgyODU3IC0zLjA1MDk2NiwtMS4xNzY5NTQgLTMuOTEzNTEzLC0yLjMwODMyIGwgLTAuMjI1OTg1LC0wLjI5NjQxNiAwLjI4NTAwNiwtMC45NTg4MSBDIDI2LjM3OSw0NC43MjU5NTIgMjYuNjI3ODI1LDQzLjU3NTA3IDI2LjcwNjQxNiw0Mi44MDc5ODMgbCAwLjA1MjY1LC0wLjUxMzg4NSBoIC0wLjU4OTcwMiBjIC0wLjU2OTk2MiwwIC0wLjU5MjYxMSwwLjAwNzIgLTAuNjc2NTMzLDAuMjE1NzQyIC0wLjE0NzE3MiwwLjM2NTY3NCAtMC4zMDMzNDQsMS4xNTA0ODQgLTAuNjc1MTkyLDMuMzkzMDMzIC0wLjQxODg5OSwyLjUyNjMwOSAtMC41MTQ2NDYsMi45ODg5OTUgLTAuODM2MDc2LDQuMDQwMjU4IC0wLjc3ODc1LDIuNTQ2OTU0IC0xLjk5MTE4Niw0LjY1NjY0OSAtMy43MTUzMDMsNi40NjQ3OTggLTIuNTQwOTU0LDIuNjY0Nzk3IC02LjA1MjEzNSw0LjQ2NDA1IC0xMC40ODU1Mjc0LDUuMzczMTUyIEMgNy43NDMzNiw2Mi4xOTg4NiA1LjI4Nzk1NzQsNjIuMzkwNDcxIDQuNDU3MTM3LDYyLjE5NjUxNiBaIgogICAgICAgICBpZD0icGF0aDUwNTkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZGM1MmIiCiAgICAgICAgIGQ9Ik0gNC42MzExMTM2LDYyLjEzMzQ2IEMgMy43MzAzNDM4LDYxLjk4MzQ4MiAzLjMyOTEyNTgsNjEuNTg3MTgzIDMuMzI5NjAyMiw2MC44NDc5MDcgYyAzLjk4NWUtNCwtMC42MTg5NjUgMC4yMjE4MzAzLC0wLjk0MTU4IDEuMjIxMzU3OSwtMS43Nzk0NTggNC40NjcwNzgyLC0zLjc0NDYzMiA2LjgyNTY2MDksLTcuMTYyNTQgNy41OTgwMDM5LC0xMS4wMTA1NDUgMC4yNDkxMDksLTEuMjQxMTE5IDAuMjg4ODc0LC0zLjE1NTE5NiAwLjExMjc3NCwtNS40MjgyOTggLTAuMzcxMTAyLC00Ljc5MDIwOSAwLjMyMzk3NSwtMTIuNzYzNTEzIDEuNTM2NjQ4LC0xNy42MjcwNiAxLjU0NzU5OCwtNi4yMDY3OTggNC43ODgxNDQsLTEyLjAxODUxMyA4LjUyODEyOSwtMTUuMjk0NjU3NiA0Ljk1MTA2NSwtNC4zMzcwMjQ3IDExLjAwOTU4OCwtNi42MjYxNzMgMTguMzg0OTAzLC02Ljk0NjUzOTUgNi43NjY0MjYsLTAuMjkzOTE3OCAxMi4zNzk2NzksMS4yNDI0NzA1IDE3LjgzODE2Nyw0Ljg4MjQzNjUgMS4wMjEwNjYsMC42ODA4OTMgMi40OTM1NzYsMS43ODI4ODI1IDIuNDQ1OTYzLDEuODMwNDk2NiAtMC4wMjI0NCwwLjAyMjQzNyAtMC4zNzE1ODEsMC4xODk3NzA0IC0wLjc3NTg3NCwwLjM3MTg1MDkgLTIuNTgzNjAyLDEuMTYzNTcxMSAtNC42MTgwODgsMy4wMjQwMDgxIC01Ljc2NzY4NCw1LjI3NDI2MzEgLTAuMzU2NjgzLDAuNjk4MTg0IC0wLjgwNTYzMiwxLjgwOTAyIC0wLjgwNTYzMiwxLjk5MzM4MiAwLDAuMDM5NDYgMC4zMTc5MTMsMC4yODU1MTcgMC43MDY0NzIsMC41NDY3ODQgMC40MzAxNjcsMC4yODkyNDMgMC43ODc1OTcsMC41OTc2MTggMC45MTM4OTUsMC43ODg0NjkgMC4yODQ1NjIsMC40MzAwMDEgMC4zMjg5MDksMC45NjA1MDQgMC4xMTk4MDgsMS40MzMyMSAtMC4xNzkxNjksMC40MDUwNDMgLTEuNDkzMDA4LDIuMzIwNzM1IC0yLjIxMzA5NywzLjIyNjg5MSAtMC4yNTc2NzMsMC4zMjQyNTUgLTAuNDY3NzU2LDAuNjM0MjE5IC0wLjQ2Njg1MiwwLjY4ODgwOCA5LjAyZS00LDAuMDU0NTkgMC4zMjc0NiwwLjQwMjQyNiAwLjcyNTY3OCwwLjc3Mjk3MyBsIDAuNzI0MDMyLDAuNjczNzIgMS4yMTYsMC4wNTIyMyBjIDEuMzUyNDQ0LDAuMDU4MDkgMi4wNTU3MzMsMC4xNzUwNDcgMi44NDYyMzEsMC40NzMzMzMgMC45ODc0OTIsMC4zNzI2MiAxLjY2OTk1OCwwLjkzMjc2MyAyLjA0OTg1LDEuNjgyNDQ0IDAuODkyNTU5LDEuNzYxMzggLTAuMDU1MDEsNC4wMzkwNzQgLTIuNTgzMjQ2LDYuMjA5NDEzIC0wLjQ0MjA4MiwwLjM3OTUwMSAtMS4wMTk3NiwwLjg0MjMxIC0xLjI4MzcyOSwxLjAyODQ2NyAtMC4zMDQzNjIsMC4yMTQ2NDIgLTAuNDc5OTQ0LDAuMzkzNzQ4IC0wLjQ3OTk0NCwwLjQ4OTU3NiAwLDAuMDgzMTEgMC4xNTM4MywwLjM2NzQxMSAwLjM0MTg0NiwwLjYzMTc4MSAwLjY1NTQ2MywwLjkyMTY1NCAwLjczNzk1MiwxLjI4MjgyOSAwLjQzNTYyNiwxLjkwNzM1NCAtMC4yMjU5MjgsMC40NjY3MDMgLTAuNjIzMzA1LDAuNzcwMTMzIC0xLjM5MTg5OCwxLjA2MjgyNyAtMC40MzE5MjgsMC4xNjQ0ODUgLTAuNzIwMjExLDAuMzI4MDIyIC0wLjg0OTg3LDAuNDgyMTE0IC0wLjIxMjk4OCwwLjI1MzEyMiAtMC4yMTA5NywwLjI5Nzg5OSAwLjA0NDYzLDAuOTkwMTg1IDAuMjA0NzQyLDAuNTU0NTI2IDAuMjA0MDc1LDAuODU5NDEyIC0wLjAwMjksMS4zNDA2MTggLTAuMTU4NjA0LDAuMzY4Njg1IC0wLjE2MDMxLDAuMzk2ODU5IC0wLjAzMjU4LDAuNTM4MDAyIDAuMjAxNzE5LDAuMjIyODk3IDAuMjM1ODE1LDAuNzAzNjUzIDAuMDg2MzYsMS4yMTc3NDUgLTAuMTQzNjUzLDAuNDk0MTQ3IC0wLjA5NzQyLDEuMjA3MzQ4IDAuMTYyNjUzLDIuNTA5MTY5IDAuMTcxNTQxLDAuODU4NjYgMC4xMTg4NjYsMS4zNzcwNzggLTAuMTc3ODE4LDEuNzUwMDc3IC0wLjI0OTQwOCwwLjMxMzU2MyAtMC40NjcxNDcsMC40MzQ4MjkgLTIuNTU5MTA1LDEuNDI1MjUxIC0xLjY1ODYxOCwwLjc4NTI2IC0yLjY3OTAwMywxLjM2NzU2IC0yLjg3MSwxLjYzODM4MiAtMC4zNjc0MzksMC41MTgyOTMgLTAuNDM4MDQ1LDAuOTEzMjIgLTAuNDQ0NDY0LDIuNDg2MDQ4IC0wLjAwNzcsMS44ODU1NzQgLTAuMDAyMywxLjg3MjM0OSAtMS4wODY5NDcsMi42NjA0OTQgLTEuOTAzMzQ0LDEuMzgzMDMxIC02LjI3NzkxMSw0LjE3MDg5OCAtNy40OTYwNTcsNC43NzcxNjIgLTAuNjE2MDQyLDAuMzA2NiAtMC43MDQzNzQsMC4zMjg3OTEgLTEuMjk0NDUyLDAuMzI1MTg5IC0wLjcxODEzMSwtMC4wMDQ0IC0wLjg3MzA5MywtMC4wNDgyNyAtMi4yNjM5NzksLTAuNjQxMjU5IC0xLjMyNzEwOCwtMC41NjU3OTMgLTIuMjMyNjQyLC0wLjc1NDY3OSAtMy4zOTAyMiwtMC43MDcxNjcgLTAuNzQyNTgzLDAuMDMwNDggLTEuMzcxODY0LDAuMTUyNjIyIC00LjUxMDk2OCwwLjg3NTU3NiAtNS4zMzUxNDQsMS4yMjg3MTYgLTUuMzEzNzY5LDEuMjI0ODMzIC02Ljc4NzM1MiwxLjIzMjgxNyAtMS4wNzk2NTYsMC4wMDU5IC0xLjQ5OTg1NCwtMC4wODE5OSAtMS43OTI1OTksLTAuMzc0NzM3IC0wLjI0ODg4NCwtMC4yNDg4ODQgLTAuMjgyNDAzLC0wLjc1NDMwNiAtMC4wNjc2LC0xLjAxOTI2OSAwLjA3NDU1LC0wLjA5MTk2IDEuMTU5MzM5LC0wLjY4MjI0MiAyLjQxMDY0MywtMS4zMTE3NDQgMy45NTEwODIsLTEuOTg3Njk2IDYuMDc5NTQyLC0zLjIzOTMxNiA2LjY5MjEwOCwtMy45MzUyMjcgMC44OTQ3MzMsLTEuMDE2NDcxIDEuNTgyNTgyLC0zLjEyMTg0MSAxLjU4NDA3NSwtNC44NDg1NDEgNi4yOGUtNCwtMC43MTQ1NzEgLTAuMDYxMjcsLTAuODEwNTQyIC0wLjU2NzAzOCwtMC44NzkyNDggLTEuNTQ1ODY3LC0wLjIwOTk5OCAtMy4zNDY5LC0xLjI2OTIyNSAtNC4wOTIyMTYsLTIuNDA2NzIxIC0wLjEyMjkxMSwtMC4xODc1ODUgLTAuMTE5NDYyLC0wLjIzMTk5MSAwLjA2MzQ2LC0wLjgxNjk3NiAwLjM5NTUzMiwtMS4yNjQ4ODcgMC43NTEzMzIsLTIuOTU1MTEzIDAuNzUxODczLC0zLjU3MTc2NCAzLjE0ZS00LC0wLjMzNTM2NCAtMC4wNzgyOSwtMC4zODEwMzggLTAuNjU1NTQ5LC0wLjM4MTAzOCAtMC43OTY2OTEsMCAtMC43OTc2MzYsMC4wMDI1IC0xLjQ1OTQ0OSwzLjg5MjIyMyAtMC4yNTYxMjIsMS41MDUzMTcgLTAuNTczNTQyLDMuMTE3Mzk0IC0wLjcwNTM3OCwzLjU4MjM5NCAtMS4zNDQ5MzcsNC43NDM3MzMgLTQuNTEzNDY3LDguMzg0NDgyIC05LjEwNDA3NiwxMC40NjA4OTMgLTIuMzcwODUyLDEuMDcyMzc2IC01LjQ1MTgxOTEsMS44NDI3MzYgLTguMjY4MzcwOSwyLjA2NzQwOCAtMS4xNDY2OTg3LDAuMDkxNDcgLTEuNDA3NjIyNiwwLjA5MDYgLTEuOTkxNzE1NSwtMC4wMDY3IHoiCiAgICAgICAgIGlkPSJwYXRoNTA1NyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9ImZpbGw6I2Y0YjIyYiIKICAgICAgICAgZD0ibSA0LjU2Njk5NDcsNjEuMDg4OTE1IGMgLTAuMjg5MzQ3OSwtMC4xMjU5NiAtMC4zODY5MzU4LC0wLjMyOTQ3OSAtMC4yNDkwNDA0LC0wLjUxOTM3MiAwLjA1NTAwNSwtMC4wNzU3NSAwLjU0MTI5OTMsLTAuNTAwOTk3IDEuMDgwNjU0MiwtMC45NDUwMDMgMS4yMTg4OTE0LC0xLjAwMzQxIDMuMDQ3NjIxMSwtMi44MjI3MDEgMy45NDc3OTU4LC0zLjkyNzQxOSAxLjk2OTkyNzcsLTIuNDE3NTQ2IDMuMzIzMDE1NywtNS4wNTU0MjcgMy44MjMyMzY3LC03LjQ1MzQ5OSAwLjA4NDA0LC0wLjQwMjg3IDAuMTcyNTksLTEuMTczNzgxIDAuMTk2Nzg4LC0xLjcxMzEzNiAwLjAyNDIsLTAuNTM5MzU1IDAuMDU5NDQsLTEuMDU3MzYgMC4wNzgzMywtMS4xNTExMjMgMC4wMjA5MiwtMC4xMDM4ODUgMC4yNDUzODMsLTAuMzEwNzg2IDAuNTc0NjI3LC0wLjUyOTY2NyAwLjY4MDgyNiwtMC40NTI2MTIgMS40NjU3NzMsLTEuMjg2MjIzIDEuNzA2NzI4LC0xLjgxMjUzOCAwLjE4MjMxLC0wLjM5ODIxNyAwLjM2OTgzMSwtMS4xNjQ2OTcgMC4yNzM1ODIsLTEuMTE4MjUxIC0wLjAyNzE0LDAuMDEzMSAtMC40OTA2MywwLjI0MzE5IC0xLjAyOTk4NSwwLjUxMTMxOSAtMC41MzkzNTUsMC4yNjgxMzEgLTEuMTI4OTQ5LDAuNTEwMjkxIC0xLjMxMDIwOCwwLjUzODEzMyAtMC4zMTMxNTgsMC4wNDgxIC0wLjMzMjY4NCwwLjAzOTQyIC0wLjM5MjI1OCwtMC4xNzQ1MjggLTAuMDM0NDgsLTAuMTIzODM0IC0wLjA2MTk5LC0xLjgxMzc5OCAtMC4wNjExMywtMy43NTU0NzUgMC4wMDE2LC0zLjY2NjY5NSAwLjA3NzMzLC01LjAzNzgwOCAwLjQyNjUzOCwtNy43MjU1MjkgMC4xMjYzMTYsLTAuOTcyMTk5IDAuMTcyMjg4LC0xLjE1NTYyNyAwLjMxOTUwNywtMS4yNzQ4MzkgMC4wOTQ1OCwtMC4wNzY1OSAwLjIxNzMxLC0wLjEzOTI0NyAwLjI3MjczNCwtMC4xMzkyNDcgMC4zNjkwNzksMCAyLjI5Njg0NSwtMS4wMjU4OTYgMi42ODA3NTgsLTEuNDI2NjE2IGwgMC4yMTE2MDUsLTAuMjIwODY4IC0wLjUwNSwtNi4yN2UtNCBjIC0wLjQ5Njg1MSwtNi4yOGUtNCAtMS43MTY1MTYsLTAuMTE1ODY5IC0yLjEyNjMxOCwtMC4yMDA4OTYgLTAuMTE1MDUzLC0wLjAyMzg3IC0wLjIyOTUyLC0wLjA5NjM5IC0wLjI1NDM3MSwtMC4xNjExNDkgLTAuMDYyMjYsLTAuMTYyMjUxIDAuNDQyNzQ5LC0yLjM4NDcgMC45MDA0NDksLTMuOTYyNjkzIDAuOTE4NDIzLC0zLjE2NjQxNCAyLjE4NjgzNSwtNi4wOTkxNzMgMy42NDI5MzEsLTguNDIzMDA4IDAuNzY3MzU3LC0xLjIyNDY1IDEuMDU0Njk0LC0xLjYwODQwNyAxLjIwMzQxMSwtMS42MDcyMjcgMC4wNzE0Niw1LjQ5ZS00IDAuNDY1MzExLDAuMDcwNjYgMC44NzUyMjEsMC4xNTU3NzIgMC40MDk5MSwwLjA4NTExIDEuMTg2NTgxLDAuMTc1NDk2IDEuNzI1OTM2LDAuMjAwODY0IGwgMC45ODA2NDUsMC4wNDYxMiAtMC4yMzUzNTUsLTAuMjA5MjYgQyAyMy4xOTUzNjEsMTMuOTc0MDYgMjIuNzc2NDAzLDEzLjYwOTc3OCAyMi4zOTM3ODksMTMuMjc5NjM3IDIxLjY2NTgyNiwxMi42NTE0OTMgMjEuMzI0MjksMTIuMjkxNTcyIDIxLjMyNDI5LDEyLjE1MjU1IGMgMCwtMC4xMjEzMyAxLjI2NDU3NiwtMS4zOTczMDQgMi4wNzg5NjgsLTIuMDk3NzA1IDIuMDczMTE1LC0xLjc4MjkzOTIgNC40NDUzOTgsLTMuMTk5NTk4MyA3LjEzOTA5OCwtNC4yNjMyNjQzIDEuMTMzNjQxLC0wLjQ0NzY0MzIgMi4zMzc2NzgsLTAuODQwNDU4NSAyLjU3NjEyNywtMC44NDA0NTg1IDAuMDg2NCwwIDAuMTkwOTY0LDAuMTI4MTU0OSAwLjI4NjU5MSwwLjM1MTI0NDcgMC4wODI4MSwwLjE5MzE4NDYgMC4yNzk0OCwwLjU1Mjc3ODYgMC40MzcwNDksMC43OTkwOTc4IDAuMjkzNjU5LDAuNDU5MDYyNyAxLjEwMzk2OCwxLjM2MDEwOTUgMS4yMjMxNDMsMS4zNjAxMDk1IDAuMDM2NTgsMCAwLjA2NzIxLC0wLjQxNDgxMyAwLjA2ODA2LC0wLjkyMTgwNjYgMC4wMDE4LC0xLjA0NTEzMDEgMC4xMTQxNTUsLTEuOTczODY2NiAwLjI1NTgxNSwtMi4xMTM4Nzg2IDAuMTE4ODMxLC0wLjExNzQ0ODIgMS40NzgwMiwtMC4zNjQ4NDY3IDMuMDEyODcyLC0wLjU0ODQwMDUgMS40NDQ4MzcsLTAuMTcyNzg5IDYuMDU0NDcsLTAuMTk5NTY4OCA3LjI0MjI3NywtMC4wNDIwNzQgMS4zOTE5MSwwLjE4NDU1NzIgMi43MDYyMDMsMC40MjM5MDc0IDIuODEzNTU5LDAuNTEyMzg2NCAwLjA3Nzk1LDAuMDY0MjQ2IDAuMDkzMzIsMC4xOTUzMDE2IDAuMDU2NjQsMC40ODMwMzQ5IC0wLjExODQ3NywwLjkyOTMxNTggLTAuMTk0NjE5LDIuMTQyNDQ0NCAtMC4xNTE0NzMsMi40MTMzMDAyIGwgMC4wNDY1OSwwLjI5MjQ5NzMgMC4yMzgzMDQsLTAuMzMxNzIzMSBjIDAuNTI1NDc3LC0wLjczMTQ2NTEgMS43MjMwNTEsLTIuMTgwMjg2NiAxLjg2NDk4NywtMi4yNTYyNDg3IDAuMTE0NTY1LC0wLjA2MTMxNCAwLjI5ODE1NSwtMC4wMzA0NTEgMC43NTk2ODcsMC4xMjc3MDc4IDEuNTkxNDUxLDAuNTQ1MzYyIDMuMzc3NTQ2LDEuMzUyMDA0MSA0Ljc2NjU0OSwyLjE1MjY4NDYgMS4wMTc5NzcsMC41ODY4MDQ4IDIuODUxNzE3LDEuODE0NjM0OCAyLjkwMDY3OCwxLjk0MjIyNyAwLjA2MjgsMC4xNjM2NjM0IDAuMDEwNzUsMC4yMTA5NzcyIC0wLjYwNjM0MiwwLjU1MTExODIgLTIuMjc1MDAzLDEuMjUzOTgyOSAtNC4yODQ3NTgsMy41Nzc4MTc5IC01LjI1MzYzNiw2LjA3NDY2MjkgLTAuMjA4NjIsMC41Mzc2MiAtMC4zNjg3NzgsMC44NDMzNTUgLTAuNDQxNzkxLDAuODQzMzU1IC0wLjA2Mjk5LDAgLTAuNDcwODczLC0wLjE3MzI0NyAtMC45MDYzOTksLTAuMzg0OTkzIC0yLjM0ODM4MywtMS4xNDE3NDkgLTUuMjk1OTczLC0xLjgzNjExMSAtOC4yNDQ3NywtMS45NDIyMTUgLTguMDgyNDIyLC0wLjI5MDgyMSAtMTUuNjU5NTEzLDQuMTE3NTUzIC0xOS40MTkwODQsMTEuMjk4MDgyIC0wLjQ3NjI0MiwwLjkwOTU5MSAtMS4yMTA5NzQsMi42Mjk2MTEgLTEuMTQ5NTI1LDIuNjkxMDYgMC4wMTk0MSwwLjAxOTQxIDAuMjEwODIyLC0wLjI5MzA1MiAwLjQyNTM2MywtMC42OTQzNTUgMS4xNTYxMDMsLTIuMTYyNTAyIDEuNzQ1ODM4LC0yLjk3OTM0NCAzLjUzOTc4MiwtNC45MDI5NTYgMS43NDA1NTIsLTEuODY2MzU5IDMuMjI0ODY4LC0zLjE2ODE2IDQuNzg0MTIsLTQuMTk1ODUzIDIuNDg4OTA5LC0xLjY0MDQyMyA1LjE3NTUyLC0yLjY2Njk0OSA4LjIxMDU2OSwtMy4xMzcxNzIgMS4zOTI4OTQsLTAuMjE1ODAxIDQuMTM2OTg0LC0wLjIzNzgyMiA1LjQ5NDI4NiwtMC4wNDQwOSAyLjc4NzM0OCwwLjM5Nzg0OSA1LjQyMDIzMiwxLjMxNjMzNyA3LjczODc4MiwyLjY5OTY5MyAxLjE1MTI3NCwwLjY4NjkwMyAxLjUxNzI0NCwxLjAyOTEzIDEuNDM4MDMzLDEuMzQ0NzM0IC0wLjA2NjUsMC4yNjQ5NTMgLTIuMTgxODc1LDMuMjU0NDY3IC0yLjQ1NDcyMSwzLjQ2OTA4OSAtMC4yNzk3MDgsMC4yMjAwMTggLTAuNDk0MDI2LDAuMTY5NDUxIC0xLjE4OTk5NywtMC4yODA3NyAtMC44MzA2MjYsLTAuNTM3MzI5IC0yLjM0NzYyOCwtMS4yNDU1MzEgLTMuNDI0NDI0LC0xLjU5ODY2OCAtMS43OTgyOTUsLTAuNTg5NzU2IC0zLjcyMjAyNSwtMC44MjU0NTYgLTUuNzM3Mjc0LC0wLjcwMjk0NSAtNC4yMTc1NjcsMC4yNTYzOTMgLTguMzM0NTIxLDIuNDM5MTU2IC0xMC45NDU5NzIsNS44MDM0MzIgLTAuNTQ3OTU5LDAuNzA1OTI1IC0xLjIzNTEwMiwxLjc2OTMzNCAtMS4yMzUxMDIsMS45MTE0MjIgMCwwLjExNDg1NCAzLjg4MDg3NCw0LjE5NjYwNyA0LjE4NTU0Miw0LjQwMjE5IDAuMzgyNjQyLDAuMjU4MTk5IDAuODEwMzU0LDAuMzY3NTYzIDEuMjk5MjE2LDAuMzMyMjAyIDAuNDk2MzQxLC0wLjAzNTkgMC41OTY3NDQsLTAuMDgwNSAyLjE2MjI0LC0wLjk2MDM2NSA2LjE2OTA2LC0zLjQ2NzI0NyAxMS42NzA5NDIsLTUuMjUxOTMxIDE2Ljc5MDY4NCwtNS40NDY1MTIgMi42OTQ1ODQsLTAuMTAyNDEgNC4wMjI2MjIsMC4xNjg5MTUgNC45MzI2NzYsMS4wMDc3NzQgMC41NDg5MzMsMC41MDU5ODggMC43MDI4OTEsMC44OTUwOTkgMC42NjE5NTksMS42NzMwMjQgLTAuMDI4MzUsMC41Mzg4ODIgLTAuMDc5ODIsMC43MzYzOSAtMC4zMjA1OTMsMS4yMzAzMjEgLTAuMzg3MTU0LDAuNzk0MjIyIC0wLjkxOTQwOCwxLjQ3NzExNSAtMS44Mzk2MzIsMi4zNjAyOCAtMS4wNjE3MzMsMS4wMTg5NzcgLTIuMDI5NjM2LDEuNzQxNzgyIC0yLjIwNjAwOCwxLjY0NzM5IC0wLjA3NDAxLC0wLjAzOTYxIC0wLjYyNjUxMywtMC43ODEwMjUgLTEuMjI3Nzc3LC0xLjY0NzU4NyAtMC42MDEyNjMsLTAuODY2NTYyIC0xLjEzNDU2NywtMS41NzU1NjcgLTEuMTg1MTE4LC0xLjU3NTU2NyAtMC4xNjkzOTIsMCAtMC4zMjUzMjgsMC4zNTI2MjYgLTAuMzgyNDg3LDAuODY0OTQgLTAuMDgxNjcsMC43MzIwNDkgLTAuMjcwMDY1LDEuMTAzOTQ5IC0wLjc1MjMyMSwxLjQ4NTE1MSAtMC41OTEyMTUsMC40NjczMjggLTAuODQ0NzQ1LDAuNTgxODY0IC0xLjI5MzEzLDAuNTg0MTg5IC0wLjMzMTI1OCwwLjAwMTcgLTAuNDk3ODA5LC0wLjA1NzQ2IC0xLjAxOTg3MSwtMC4zNjIzODEgLTEuMjA5Nzg1LC0wLjcwNjU5NyAtMS4zMDAwNiwtMC43MjkwODcgLTIuODk5MDU0LC0wLjcyMjIzMiAtMS4zMTU3NzksMC4wMDU2IC0xLjQ3NDM2MSwwLjAyMjUgLTIuMzI0MjE4LDAuMjQ3MTI1IC0xLjE1NjEyNCwwLjMwNTU2OSAtMi4xMjI4MDYsMC42ODc1MzYgLTMuMzYzNTI1LDEuMzI5MDMxIC0wLjg5ODksMC40NjQ3NjIgLTIuNjc5OTIyLDEuNTgxOTExIC0yLjc3OTkxOCwxLjc0MzcwOCAtMC4wNDc3NCwwLjA3NzI1IDMuODc1NDg4LDcuMTczOTg3IDQuMjY4MzkxLDcuNzIxMDk2IDAuNDMxNzE0LDAuNjAxMTUxIDEuMDAzMDMyLDAuOTg3ODM2IDEuODg0OTQ3LDEuMjc1Nzg5IDAuMzg0MzY1LDAuMTI1NDk5IDAuODg5ODIzLDAuMTQ2MzcxIDQuNjI4NjQ2LDAuMTkxMTM3IDQuMzY5NzQ1LDAuMDUyMzIgNC41MjE0MTksMC4wNjQ0NiA1LjA4MTY0NCwwLjQwNjU0OSAwLjMyOTM5MiwwLjIwMTEzOSAwLjQ4ODQyMSwwLjUxMzMzIDAuNDg4NDIxLDAuOTU4ODIzIDAsMC41OTAwODMgLTAuMjI0NTAzLDAuNzY3MTA2IC0yLjA0Nzg1NiwxLjYxNDc2MSAtMC44NzQ1NjUsMC40MDY1NzQgLTEuOTk4MzYxLDAuOTcyMzk2IC0yLjQ5NzMyNSwxLjI1NzM4MiAtMC44MDgyNTgsMC40NjE2NCAtMC45MzQ1NTUsMC41NjM1MDggLTEuMTU3OTUsMC45MzM5NzMgLTAuMzk0MDI4LDAuNjUzNDMyIC0wLjUwNjgzMiwxLjMxMjQxNCAtMC40NzkwOTksMi43OTg4MDQgMC4wMjIyNCwxLjE5MjE1NiAwLjAxMzE0LDEuMjg4NzQyIC0wLjE0MDkyLDEuNDk2MDA3IC0wLjI5MzAwNCwwLjM5NDE4NiAtNC4wMTgxNzgsMi44OTEyNCAtNi45NTk2ODgsNC42NjUyMSAtMS45NDM2MDMsMS4xNzIxNTEgLTIuMjU5NzgyLDEuMjE5MzY5IC0zLjgwNzQzNiwwLjU2ODU5NCAtMS45OTczNjgsLTAuODM5ODc1IC0yLjc0NzQ1MywtMS4wMTA3MTMgLTQuMTY0MzU3LC0wLjk0ODQ2MyAtMC44MDQwNzcsMC4wMzUzMyAtMS4yOTgxNzksMC4xMTU4MjkgLTIuNjczMTE1LDAuNDM1NTI5IC02LjcxMDgxOCwxLjU2MDM5NyAtNy4yMTg5MjksMS42NTc5NyAtOC42Mzc1ODUsMS42NTg2OSAtMS4wNTQ4NTMsNS41ZS00IC0xLjM4MjkxNCwtMC4wODM0NSAtMS40NTU0OSwtMC4zNzI2MTUgLTAuMDY2MTksLTAuMjYzNzM0IC0wLjAyODUsLTAuMjg5MjIgMS41ODEwNzQsLTEuMDY4OTg0IDIuOTQ1NjgxLC0xLjQyNzA0OSA1Ljc5OTI2NiwtMy4wMTgyODEgNi45MTczMjUsLTMuODU3Mjc2IDAuNjQ0NjUxLC0wLjQ4Mzc0OSAwLjgzMDM5NCwtMC43MDcwNjMgMS4yNjkyMTgsLTEuNTI1OTUzIDAuNzAyMzEyLC0xLjMxMDU4NCAwLjk3NjY3MSwtMi40MjQxNzUgMC45ODU3NDksLTQuMDAxMDMzIDAuMDAzNiwtMC42MjU2NTEgLTAuMDIxOTEsLTEuMzA0MDEgLTAuMDU2NjksLTEuNTA3NDYzIC0wLjA1OTgxLC0wLjM0OTg3IC0wLjA3ODk0LC0wLjM3MjU0OCAtMC4zNTMwMzIsLTAuNDE4NSAtMS4yMzkzOTUsLTAuMjA3NzgzIC0yLjUwMjU1MywtMC43NjcwNDIgLTMuMjQwMjMxLC0xLjQzNDYwMyAtMC4zNjM1NTYsLTAuMzI4OTk5IC0wLjQ2NjQ1MiwtMC40NjkwNjIgLTAuNDM2NTg5LC0wLjU5NDI5NSAwLjAyMTQ5LC0wLjA5MDEyIDAuMTY0MDA1LC0wLjY0NTY0NiAwLjMxNjcwMSwtMS4yMzQ1MDkgMC4yODQ5MDUsLTEuMDk4NzE0IDAuNDk0ODgzLC0yLjQzMDExMyAwLjUzNjM5MywtMy40MDEwODMgbCAwLjAyMzQ4LC0wLjU0OTE2MSAtMS4zMDU4MzUsLTAuMDIxNDcgLTEuMzA1ODM2LC0wLjAyMTQ3IC0wLjI0NzAyMywwLjIwNzg1NyBjIC0wLjUxNDM2NSwwLjQzMjgwOSAtMC42OTE3OTksMS4wMDcxOTYgLTEuMDYzODQ3LDMuNDQzODYzIC0wLjQ2NjUxNiwzLjA1NTM3NyAtMC44MTA4MjIsNC41NDcyMTIgLTEuMzgwNDI4LDUuOTgxMjA0IC0yLjI5NDgwNyw1Ljc3NzIzIC03LjQyNDUxNyw5LjI4NDg3OSAtMTUuMDAwNDA2OSwxMC4yNTcxNDIgLTEuMTU5MzE0LDAuMTQ4NzgzIC0yLjY3MDYxMTIsMC4xNTIxOTkgLTMuMDA0NjI4NCwwLjAwNjggeiBtIDM2LjE1MDE0NjMsLTkuODkyMDEgYyAwLjQxODMyNSwtMC4xNDI5MTMgMS4xMDIyNjgsLTAuMzM4Nzk2IDEuNTE5ODcyLC0wLjQzNTI5NiBsIDAuNzU5MjgyLC0wLjE3NTQ1NCAwLjE1MzQyNCwtMC4zNDY4NDEgYyAwLjA4NDM4LC0wLjE5MDc2MyAwLjEzNjgxMiwtMC4zOTAxMzMgMC4xMTY1MDcsLTAuNDQzMDQ2IC0wLjAyMTEzLC0wLjA1NTA3IC0wLjQ2NTAxOCwtMC4xNzA0NyAtMS4wMzgxOSwtMC4yNjk5MDQgLTEuMTc0OTY5LC0wLjIwMzgzMiAtMS44MjI3ODEsLTAuNDY2Mzg5IC0yLjE3OTc3OSwtMC44ODM0NjIgLTAuMjY5NjI4LC0wLjMxNDk5OSAtMC4zNzAwNTUsLTAuNTM3ODc5IC0xLjUxNzQyNSwtMy4zNjc2NDIgLTAuNDExMTM2LC0xLjAxMzk4OCAtMC43NzIwMzEsLTEuODY5OTE4IC0wLjgwMTk4NywtMS45MDIwNjcgLTAuMDgyMzMsLTAuMDg4MzUgLTAuNjM1NzgsMC45MDUxNzYgLTAuNjM1NzgsMS4xNDEzMSAwLDAuMTQ4MjM3IDEuNzI0NTE0LDUuNjE5OTQzIDIuMjM2OTIsNy4wOTc1MTkgMC4wMjcwNywwLjA3ODA2IDAuMDk5MjMsMC4wNzIwMSAwLjMzMDU5NywtMC4wMjc3MSAwLjE2Mjc4MywtMC4wNzAxNiAwLjYzODIzNCwtMC4yNDQ0OTYgMS4wNTY1NTksLTAuMzg3NDA5IHogbSAxMi4wOTQ2OTksLTcuNDE3MTc4IC0wLjYwNzY1MSwtMC41NjM0MjIgLTAuNDYyMjQyLDAuMDQ4MzEgYyAtMC40MzU5NTUsMC4wNDU1NyAtMC40NzUyNTUsMC4wMzUzIC0wLjY5MTA0NSwtMC4xODA0ODggLTAuMzk5OTUyLC0wLjM5OTk1MyAtMC4yMzUzODgsLTAuODU2MjkyIDAuNDIzODg2LC0xLjE3NTQ0MSAwLjQ0NTcwMSwtMC4yMTU3NjEgMS4wODU4OCwtMC4yMTQ1OTUgMS42NzgzMDUsMC4wMDMxIDAuODY4NjU2LDAuMzE5MTM1IDEuMTU0NTE0LDAuNjcwNzAzIDAuOTYzNTk1LDEuMTg1MDk3IC0wLjA1MjMzLDAuMTQwOTk0IC0wLjExNzc4MiwwLjQ2ODE3MSAtMC4xNDU0NDcsMC43MjcwNjIgLTAuMDQ5MTQsMC40NTk4MzEgLTAuMDU2MSwwLjQ3MTI3IC0wLjMwMTAyNiwwLjQ5NDk3NiAtMC4yMTY4MzEsMC4wMjA5OSAtMC4zMzI4NjYsLTAuMDUxOSAtMC44NTgzNzUsLTAuNTM5MTU0IHogbSAtMC4xODUzNTMsLTIuNDc3NDI2IGMgLTAuNjY0MzQ5LC0wLjM1NjQ5OCAtMC42NjkwMzQsLTAuMzU3NjUzIC0xLjI1NTIyNiwtMC4zMDk0OCAtMC4zMjM2MTMsMC4wMjY1OSAtMS4wMTU2NTIsMC4wNzAwNSAtMS41Mzc4NjQsMC4wOTY1NyAtMC45MzMzOSwwLjA0NzQgLTAuOTUxNjY2LDAuMDQ1MDkgLTEuMDc4NzEsLTAuMTM2Mjg1IC0wLjE4NDkwMiwtMC4yNjM5ODUgLTAuMTU5NzA2LC0wLjU3MjA0OSAwLjA2OTAyLC0wLjg0Mzg3MiAwLjI1NzQyMywtMC4zMDU5MjggMC41NTI3MjYsLTAuMzY0OTI5IDEuMDY1MDMzLC0wLjIxMjc5MSAwLjU3Mzc4NiwwLjE3MDM5NyAwLjc1OTQ2NiwwLjE1Njc3MyAxLjY1NDkxOSwtMC4xMjE0MjMgMC45MjkwMDEsLTAuMjg4NjE5IDEuNjMxNDk0LC0wLjI5NTUzNCAyLjAwMzc5MywtMC4wMTk3MyAwLjQ4NzEyNywwLjM2MDg3NSAwLjczMTc3OSwxLjAyMDAzNSAwLjU2MDcyLDEuNTEwNzM2IC0wLjE3ODY4LDAuNTEyNTYyIC0wLjU3NTk2NCwwLjUyMjI4NiAtMS40ODE2ODIsMC4wMzYyNyB6IG0gMC41MDkyOTMsLTIuNDE2NTEgYyAtMC4yNDUzMDIsLTAuMjk5MzU5IC0wLjM0ODcxOSwtMC4zNjE2NzYgLTAuNzMwOTMsLTAuNDQwNDM4IC0wLjUxNTg5MywtMC4xMDYzMTEgLTAuNzc4ODQ4LC0wLjIyNzk1MyAtMC45ODQ4NTUsLTAuNDU1NTg4IC0wLjExODE4MSwtMC4xMzA1ODkgLTAuMTM5OTEyLC0wLjI0ODIzNCAtMC4xMTA3NjgsLTAuNTk5NjczIDAuMDYyNDMsLTAuNzUyOCAwLjQ5NzA1NSwtMS4xMDk2OTYgMC44OTU1MTksLTAuNzM1MzU5IDAuMTg1NzgsMC4xNzQ1MzIgMC4yMDQ2MDMsMC4xNzYzNzYgMC43NTcyMjYsMC4wNzQxOCAwLjMxMTY4OSwtMC4wNTc2NCAxLjE1NDYwNywtMC4xMjE2MTggMS44NzMxNDgsLTAuMTQyMTcgbCAxLjMwNjQ0LC0wLjAzNzM3IDAuMTM0MDk4LDAuMjA0NjYxIGMgMC4xNzg4NzIsMC4yNzI5OTMgMC4xMDAyNjgsMC42NzgyIC0wLjE5NzMwNSwxLjAxNzExNSAtMC4yMzA2NDgsMC4yNjI2OTUgLTAuNDYyODY3LDAuMzg3MTE3IC0xLjI3MjkzOCwwLjY4MjAzOCAtMC4zMDcyMDEsMC4xMTE4NDIgLTAuNTMyNzc5LDAuMjYxMTgxIC0wLjcxMzU5LDAuNDcyNDE5IC0wLjM2MjQ2NiwwLjQyMzQ2IC0wLjU4Mzk4NSwwLjQxNDIzNSAtMC45NTYwNDUsLTAuMDM5ODEgeiIKICAgICAgICAgaWQ9InBhdGg1MDU1IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDojZTU5NDJkIgogICAgICAgICBkPSJtIDUuMDg0ODAyLDYxLjEyNTAwMSBjIC0wLjQ4MjgxMjIsLTAuMDUyMTIgLTAuNzg0NTE2MywtMC4xODgxMzkgLTAuNzg0NTE2MywtMC4zNTM2OCAwLC0wLjA2MDY2IDAuMjAyOTkzNiwtMC4yODUxMzggMC40NTEwOTY5LC0wLjQ5ODgzOSAyLjQ5ODYyNDgsLTIuMTUyMTYgMy42MTczOTU4LC0zLjI1MzIgNC44MDQyNzIsLTQuNzI4MTMzIDEuODkwODE0NCwtMi4zNDk3MTggMy4xNzg1MTI0LC00LjkwOTE5NyAzLjY4NjM2MTQsLTcuMzI3MTUzIDAuMDkyMjMsLTAuNDM5MTQ4IDAuMTg1ODUxLC0xLjI2MDE3NCAwLjIxMjY1MywtMS44NjQ5ODggbCAwLjA0Nzg4LC0xLjA4MDQ3MSAwLjUzMzg3MiwtMC4zNTQ5MTcgYyAwLjY3NDkwNiwtMC40NDg2NzYgMS4zOTI3NzgsLTEuMTcwMTA4IDEuNjY4NTg4LC0xLjY3Njg2MyAwLjE5MzUyLC0wLjM1NTU1OCAwLjQ3OTMxNCwtMS40MDQ4NzggMC40MDMzMywtMS40ODA4NjEgLTAuMDE3MiwtMC4wMTcyIC0wLjEzMzQ2MywwLjA0MTQ5IC0wLjI1ODM1OSwwLjEzMDQyMiAtMC4zNzYyODksMC4yNjc5NDEgLTEuNjAwMzkzLDAuODU5NDI4IC0xLjk5Nzc1LDAuOTY1MzEzIC0wLjI5ODcxOCwwLjA3OTYgLTAuMzkxNjM2LDAuMDc5NzIgLTAuNDcwNzEsNi4yOGUtNCAtMC4xNjMxMjUsLTAuMTYzMTYxIC0wLjEzMDgyOCwtNy4xODQzMjIgMC4wNDEzOCwtOC45OTQ5MTUgMC4xODU3NjEsLTEuOTUzMTM3IDAuMzY2NTU2LC0zLjQyMTEyNCAwLjQ0NTIyNCwtMy42MTUwNDYgMC4wNDI5MiwtMC4xMDU3OTIgMC4yNDEzNTMsLTAuMjI2NjU3IDAuNTY0Mjc4LC0wLjM0MzY5MSAxLjA3MzU5NCwtMC4zODkwOTEgMi44MTI0MDYsLTEuNDA5NDY5IDIuODEyNDA2LC0xLjY1MDM4NyAwLC0wLjA0NiAtMC4yNjE2NjgsLTAuMDc4NjEgLTAuNjMwNzA1LC0wLjA3ODYxIC0wLjg5MDE1NywwIC0yLjEzNDk5NiwtMC4xNDg1MzQgLTIuMjU4ODk4LC0wLjI2OTUzIC0wLjA4NzA1LC0wLjA4NTAxIC0wLjA3NjcsLTAuMjMyMDM1IDAuMDYxNzQsLTAuODc3MzI3IDAuNjcyOTE2LC0zLjEzNjY3NCAxLjY5NzQ4MywtNi4yMDY3MDEgMi45MTU3MTksLTguNzM2NyAwLjY1NDY3OCwtMS4zNTk2MTYgMS4wNTc0NCwtMi4wNzMyOTUgMS44OTgzNjIsLTMuMzYzODE5IGwgMC42MzE4NjYsLTAuOTY5Njk2IDAuMzE4ODMxLDAuMDQ3MjQgYyAwLjE3NTM1OCwwLjAyNTk4IDAuNjA3MTE5LDAuMDk5MTggMC45NTk0NjksMC4xNjI2NjYgMC44NDIwMjksMC4xNTE3MDcgMi4yNDM2MjcsMC4yMzk3NDkgMi40MDIzOCwwLjE1MDkwNyAwLjEwMTk1NSwtMC4wNTcwNiAwLjAxOTMxLC0wLjE1NDc0OCAtMC40Mzg4MzMsLTAuNTE4NzU1IC0wLjcyODMwMywtMC41Nzg2NTEgLTEuNzAxOTIxLC0xLjUyMTMzIC0xLjcwMjIzNSwtMS42NDgxNDIgLTMuOTJlLTQsLTAuMTUyMjUgMS43NDY4MDUsLTEuODM0Mjg2IDIuNjY3NiwtMi41NjgxMzUxIDEuNjE4Njg0LC0xLjI5MDA0OTQgMy41MjcyMjMsLTIuNDQ2NzIwNyA1LjQyMjM0NywtMy4yODYyMTc2IDEuMjk5NDE3LC0wLjU3NTYxMjIgMy40NDAwMjksLTEuMzEzNjMzNyAzLjYxNTE5NywtMS4yNDY0MTU4IDAuMDcxNSwwLjAyNzQzOSAwLjI0NjA4NCwwLjI4MzEyMTcgMC4zODc5NTQsMC41NjgxODQxIDAuMzk5Mzc1LDAuODAyNDY4NiAxLjQyOTMzNSwyLjAxMTU3MyAxLjYxNTUxNSwxLjg5NjUwNzQgMC4wMzM1NSwtMC4wMjA3MzQgMC4wNzA3MSwtMC40NzE1ODQxIDAuMDgyNTksLTEuMDAxODg4MSAwLjAyMzY5LC0xLjA1ODE2NjYgMC4xMjUwMTMsLTEuOTM1NzgxOCAwLjIzNjMzMSwtMi4wNDcwOTk4IDAuMDg5MiwtMC4wODkyMDEgMS45Mzg1MTksLTAuNDA1MjM3NiAzLjE5Mjg0MywtMC41NDU2MzU5IDEuMjY5MDM4LC0wLjE0MjA0NTQgNS45NzY3NjQsLTAuMTQzMDk0OCA3LjA5OTg3MiwtMC4wMDE1OCAxLjI0MjkxNCwwLjE1NjYwNzcgMi42MTQ4MDgsMC40MDA2NjY3IDIuNjkzMjcyLDAuNDc5MTMxNCAwLjA0MDY4LDAuMDQwNjc1IDAuMDMwOTYsMC40MDc3NjUzIC0wLjAyMzMyLDAuODgwOTUyOSAtMC4wNTExOCwwLjQ0NjE3MTUgLTAuMDgxNTMsMS4xNzkzMzYxIC0wLjA2NzQ0LDEuNjI5MjU0OCBsIDAuMDI1NjIsMC44MTgwMzM5IDAuMzQ1Njk5LC0wLjQ2NTAwMTYgYyAwLjc4NDY1OCwtMS4wNTU0NDYyIDEuNzYzNjgxLC0yLjIyOTI0MjEgMS44OTM3NywtMi4yNzA1MzEgMC4zNDQ2OTksLTAuMTA5NDAzMiAzLjU0NTQwNiwxLjIzNTY5MzMgNS4yMzEzNTMsMi4xOTg0NzU0IDEuMDQ1ODQ2LDAuNTk3MjQzOCAyLjgzOTMzNCwxLjc2NDAzNTYgMi45ODkzMzQsMS45NDQ3NzUxIDAuMTI1ODk1LDAuMTUxNjk0MSAwLjA5OTAzLDAuMTc1NTE4OSAtMC43ODE3MiwwLjY5MzM1MTMgLTEuNDAwODIzLDAuODIzNjA0NiAtMi44OTI0MjcsMi4yNjE4MzY2IC0zLjg1MzY1MiwzLjcxNTc2NjYgLTAuNTc1NTI2LDAuODcwNTI4IC0wLjc4OTUwMywxLjI4MjMzOSAtMS4xNjE3NjIsMi4yMzU4NzEgLTAuMTYwMDMsMC40MDk5MSAtMC4zNDIyMzgsMC43NTU2MDIgLTAuNDA0OTA3LDAuNzY4MjA0IC0wLjA2MjY3LDAuMDEyNiAtMC40NjM4OCwtMC4xNTA2MzIgLTAuODkxNTc4LC0wLjM2Mjc0NCAtMS43MTM5NzcsLTAuODUwMDI5IC0zLjg5NDIzLC0xLjQ3NTY2NiAtNi4xOTIyODksLTEuNzc2OTE2IC01Ljc2Njk5MiwtMC43NTU5ODYgLTExLjUyNjI2NCwwLjg3MzE5NSAtMTYuMTIwMzE2LDQuNTYwMTEgLTIuMjM1NzkzLDEuNzk0MzE2IC00LjMxODQ3Miw0LjQxMjkxMiAtNS42MDY1OSw3LjA0OTI4MyAtMC41ODg0OTIsMS4yMDQ0NTkgLTEuMTY4NDI1LDIuNjYxMjgxIC0xLjExODc0LDIuODEwMzM2IDAuMDE1MjgsMC4wNDU4NCAwLjE5ODQwNywtMC4yMzIzNTggMC40MDY5NTEsLTAuNjE4MjA4IDAuODk3OTUsLTEuNjYxMzk2IDEuNjc2NDc2LC0yLjkzMzY3NSAyLjE3ODQ0MSwtMy41NjAwNCAxLjI5NjU0MywtMS42MTc4NjEgMy43MjA0MTksLTQuMDU2MzEgNS4xMjA1ODMsLTUuMTUxMzcgMi43MzM5MjQsLTIuMTM4MTgzIDYuMDk0OTEsLTMuNTYwMTA2IDkuNjQ5NTUsLTQuMDgyNDExIDEuMTYxNzkyLC0wLjE3MDcwOCA0LjExMzA5OCwtMC4xOTU0MDggNS4xNzc4MDgsLTAuMDQzMzMgMi44OTI5NDYsMC40MTMyMDcgNS40NjkxNDIsMS4yOTc0MjMgNy44MTAzNTQsMi42ODA3MTEgMS4wMzgwMTIsMC42MTMzMDEgMS40ODYxNjMsMC45ODY5OCAxLjQ4NjE2MywxLjIzOTE5NyAwLDAuMTcxNjkyIC0yLjA4NTMyOCwzLjE2OTYyIC0yLjM5OTYxOSwzLjQ0OTc2MiAtMC4yODQ5NDksMC4yNTM5ODggLTAuNDU0MDI1LDAuMjIzMDQ0IC0xLjEyMjg2NywtMC4yMDU1IC0xLjgxMTQ3MywtMS4xNjA2NTcgLTMuOTQ1Njk3LC0xLjkzODUyMiAtNi4xNzQ2MTIsLTIuMjUwNDczIC0xLjM4MTg2NSwtMC4xOTM0MDEgLTMuNzE4OTg3LC0wLjEyMDg0MSAtNS4wMzM2NzIsMC4xNTYyOCAtMi4zMjIxMDksMC40ODk0NzMgLTQuNDAxNjY5LDEuNDM3MzAzIC02LjMxMTU1LDIuODc2NzA0IC0wLjgzMzU2MywwLjYyODIyNCAtMi4zMjAyODMsMi4xMzAwNDEgLTIuOTIzODY2LDIuOTUzNTU4IC0wLjUzOTk5MiwwLjczNjc1NSAtMS4wNTk4ODIsMS41NzQ3IC0xLjA1OTg4MiwxLjcwODI5MSAwLDAuMDUwMyAwLjg5NzU4MSwxLjA0MTIxMyAxLjk5NDYyNSwyLjIwMjAzNyAxLjY3MjIzNCwxLjc2OTQ1MyAyLjA3Mjc2NiwyLjE1MTc5OSAyLjQ3ODA4MSwyLjM2NTU1NiAwLjUxNTE4MywwLjI3MTcgMC45NjAzOTUsMC4zMjQ4NDIgMS40ODk2MTcsMC4xNzc4MDMgMC4xNTEwMiwtMC4wNDE5NiAwLjgwNDEyOSwtMC4zNzA3ODIgMS40NTEzNTUsLTAuNzMwNzE3IDEuOTEwMTcxLC0xLjA2MjI4NCAyLjkwMzc0MSwtMS41NzY1NzEgNC4yNzU2MTQsLTIuMjEzMTIxIDQuOTcyNDExLC0yLjMwNzIwNCA5LjM3MjM1MywtMy40MDczMDYgMTMuNzI5MDM0LC0zLjQzMjYyMiAxLjMyNTQxMiwtMC4wMDc3IDEuNjIxNDQ5LDAuMDEzODMgMi4yMTU3MDMsMC4xNjExNTIgMi41MTMyMzksMC42MjMwNTUgMy4xMjUxMjQsMi4yMTg3MzggMS42ODUwMjYsNC4zOTQyMzEgLTAuNzMyMjQ2LDEuMTA2MTcyIC0zLjI1OTIzNiwzLjQxMzc0MiAtMy41NTYyOTQsMy4yNDc1IC0wLjA2MTU2LC0wLjAzNDQ1IC0wLjYwMDc1NiwtMC43NjY5NCAtMS4xOTgyMTIsLTEuNjI3NzU1IC0wLjU5NzQ1NiwtMC44NjA4MTQgLTEuMTQzMDcxLC0xLjU3NjM0OSAtMS4yMTI0NzcsLTEuNTkwMDc4IC0wLjIwMjg4NywtMC4wNDAxMyAtMC40MTk3OTgsMC40MTQ1NjYgLTAuNDc3NiwxLjAwMTE2OCAtMC4wMzgzNiwwLjM4OTM0OCAtMC4xMTI5NzUsMC42Mjk5OSAtMC4yNzQwOTksMC44ODQwNTYgLTAuMjg0MTk5LDAuNDQ4MTM1IC0xLjA2MTQwMywwLjk3NTM2MSAtMS41NDQ2NDMsMS4wNDc4MjggLTAuMzExMDM4LDAuMDQ2NjQgLTAuNDE5NDc2LDAuMDIwMTUgLTAuODQxMTEsLTAuMjA1NDk5IC0xLjU1NzA3MywtMC44MzMzMDkgLTEuOTAzNDMyLC0wLjkzNzQzIC0zLjExODM3MiwtMC45Mzc0MyAtMS44MTExMjEsMCAtMy43NTY0ODksMC41NDg3MDMgLTUuODc3NjY2LDEuNjU3ODMzIC0wLjg5MTI2NiwwLjQ2NjAyOSAtMi41NTI2NTIsMS41MjIwNzYgLTIuNzI5MTg2LDEuNzM0Nzg1IC0wLjA3MjUsMC4wODczNiAwLjMyNTc5MiwwLjg1OTYxNiAxLjk1NTM0NiwzLjc5MTMxNiAxLjEyNTUxNCwyLjAyNDg4OSAyLjE2ODAzMywzLjg0NzkwOCAyLjMxNjcxLDQuMDUxMTU1IDAuNDU4OTU0LDAuNjI3NDA3IDEuMDYxNjQzLDEuMDIzNjY3IDEuOTUxNjE0LDEuMjgzMTYgMC40MDY1OTQsMC4xMTg1NTIgMS4wMTI3NTMsMC4xNDI5NjQgNC42NjQ0ODUsMC4xODc4NTUgNC42NzkwMDYsMC4wNTc1MiA0LjcwMDcwMiwwLjA2MDA0IDUuMTc1NDUsMC42MDA3NDcgMC4xOTg0NDQsMC4yMjYwMTYgMC4yMzc3MTIsMC4zMzcwOTIgMC4yMzc3MTIsMC42NzI0MTUgMCwwLjM2NDUwNiAtMC4wMjc4NiwwLjQyNzc3NCAtMC4zMDExMDYsMC42ODM3MjIgLTAuMTY1NjA5LDAuMTU1MTI2IC0wLjQ3NDUxMywwLjM0ODUzMyAtMC42ODY0NTIsMC40Mjk3OTUgLTAuNjgwNDYxLDAuMjYwOTAyIC0zLjY2NTkwMiwxLjc2NTcwMyAtNC4xMDUxNDEsMi4wNjkxODEgLTAuODM3MTQyLDAuNTc4Mzk5IC0xLjE1MDQxMiwxLjU0MDc2NyAtMS4wNzg3NDMsMy4zMTM5MSAwLjAyMzU0LDAuNTgyNTAzIDAuMDIyNjIsMS4xNTkwMDIgLTAuMDAyMSwxLjI4MTEwOCAtMC4wMjQ2OCwwLjEyMjEwNiAtMC4xNzIyMiwwLjM0NTY5NyAtMC4zMjc4NzYsMC40OTY4NjggLTAuNTYyMTQzLDAuNTQ1OTQ3IC02LjQzOTgsNC4zNjM2IC03Ljg1OTc4OSw1LjEwNTA4OCAtMC41MTQzOTgsMC4yNjg2MDcgLTAuNjE5MzgzLDAuMjk0Nzg3IC0xLjE2MzA0LDAuMjkwMDI3IC0wLjUyMTU2NCwtMC4wMDQ2IC0wLjY5NzQyNCwtMC4wNDc3MyAtMS4zODIxMTksLTAuMzM5MTg3IC0xLjkwNDQxOSwtMC44MTA2NzQgLTIuNzU5NDU4LC0xLjAyODc2NyAtNC4wMzA5MjIsLTEuMDI4MTYyIC0wLjc2MDM0NCwzLjkzZS00IC0xLjQ3NTgwNCwwLjEzOTAwNiAtNS40NjE3MjQsMS4wNTgzODYgLTMuNjkzNjkzLDAuODUxOTc1IC00LjI5NTM1MiwwLjk2OTg3MiAtNS4zNDI1NjYsMS4wNDY4OTMgLTEuNTAyMTc2LDAuMTEwNDg1IC0yLjMzMzc2LC0wLjA2MzUxIC0yLjEwMjgxMSwtMC40Mzk5NzYgMC4wNDU4MywtMC4wNzQ3IDEuMTIxOTc2LC0wLjY1Nzg0MyAyLjM5MTQ0NCwtMS4yOTU4NzMgMy44NzU4MzQsLTEuOTQ3OTc4IDUuOTk2MjU0LC0zLjIxMDc4NyA2LjY5MzQ5NiwtMy45ODYyODggMC40MzI5NDgsLTAuNDgxNTQyIDEuMDc2NjA0LC0xLjc2OTU5NiAxLjMzMzI3NSwtMi42NjgwODcgMC4zNTEwNTMsLTEuMjI4ODgyIDAuNDQ1MDc4LC0yLjkzNzA4MiAwLjIxOTM1NywtMy45ODUxNjkgLTAuMDU3MzksLTAuMjY2NDk5IC0wLjA1OTgzLC0wLjI2Nzc3NSAtMC45MTg4MDcsLTAuNDgwNjkyIC0wLjQ3MzY5MiwtMC4xMTc0MTYgLTEuMDYxNjA0LC0wLjMwMjk2MiAtMS4zMDY0NzEsLTAuNDEyMzIzIC0wLjUzNjcyMywtMC4yMzk3MSAtMS4yNzUzMDEsLTAuNzM1MTMxIC0xLjU4NjUzMywtMS4wNjQyMTMgbCAtMC4yMjczNTgsLTAuMjQwMzk2IDAuMjA1NzUzLC0wLjcyODg3NCBjIDAuNDA2OTc3LC0xLjQ0MTcwNSAwLjY3NjU5OCwtMy4wNjI4NTggMC42NzkwMDksLTQuMDgyNjggbCAwLjAwMTQsLTAuNjA4IGggLTEuMzA0ODA1IGMgLTEuNTE1NTQ2LDAgLTEuNjY1OTY4LDAuMDUxMjQgLTIuMDA5Mjc0LDAuNjg0NDgxIC0wLjI4NzIxNCwwLjUyOTc3NyAtMC40MTA2OCwxLjA3MTI5MyAtMC43NjEzMjMsMy4zMzkxMzkgLTAuMzU2ODAyLDIuMzA3Njg0IC0wLjYxMjQ2MSwzLjUxMjgyNiAtMS4wMDIwODgsNC43MjM3MzYgLTEuMDc0NTk4LDMuMzM5Njk5IC0zLjExNjYzNiw2LjA0NDAyOSAtNi4wMjM0MTUsNy45NzY5OCAtMS41NjYyNzQsMS4wNDE1NDIgLTQuMDIzMTQ0LDIuMDg4Mzg3IC02LjExOTIyNywyLjYwNzMzMyAtMS45MjU1MTUzLDAuNDc2NzE4IC00LjUzODQyOTgsMC43OTE2MTUgLTUuNjA5MjkxLDAuNjc2MDA4IHogTSA0MS4zODMxNTcsNTEuMDUwNDc2IGMgMC4zODAzNzIsLTAuMTEwOTYgMC44ODU3NTQsLTAuMjQxOTM5IDEuMTIzMDcxLC0wLjI5MTA2MyAwLjIzNzMxNiwtMC4wNDkxMiAwLjQ3MzY3OCwtMC4xMjMyMTUgMC41MjUyNDksLTAuMTY0NjQ0IDAuMTE0MDI1LC0wLjA5MTYgMC4zNzEyNDYsLTAuODQwMzg5IDAuMzA5Nzk3LC0wLjkwMTgzOSAtMC4wMjQxNSwtMC4wMjQxNSAtMC41MjE3MzksLTAuMTI3NDcyIC0xLjEwNTc1NSwtMC4yMjk2MDcgLTEuMTcxOTEyLC0wLjIwNDk0OCAtMS42NTU0MzUsLTAuMzkyNDY5IC0yLjA2MzA2MiwtMC44MDAwOTUgLTAuMzE4MzAzLC0wLjMxODMwMyAtMC40MjgxNjIsLTAuNTU0NjgyIC0xLjU0NzI0NiwtMy4zMjkxMyAtMC40NjU1NiwtMS4xNTQyMTkgLTAuODc1NjExLC0yLjA5ODU4MSAtMC45MTEyMjQsLTIuMDk4NTgxIC0wLjEwOTk0MywwIC0wLjY5OTM3MywxLjA1NzEyNCAtMC42OTkzNzMsMS4yNTQzMDIgMCwwLjE3Nzg4IDIuMTM5NjM1LDYuODgyNTcxIDIuMjgyNTU4LDcuMTUyNTUyIDAuMDYyMSwwLjExNzMxMiAwLjEzNDU2NCwwLjEwNDQ0IDAuNzMxNjYzLC0wLjEyOTk3MSAwLjM2NDUwNCwtMC4xNDMwOTggMC45NzM5NDgsLTAuMzUwOTY0IDEuMzU0MzIyLC0wLjQ2MTkyNCB6IG0gMTIuMDU3MjIsLTYuODQ0ODM3IGMgLTAuMTI0MDI2LC0wLjA2MzY4IC0wLjQwMjAxOSwtMC4yODYzMTQgLTAuNjE3NzYxLC0wLjQ5NDczOCAtMC41MjczNTIsLTAuNTA5NDY1IC0wLjY4NzAzNiwtMC41ODE3NzYgLTEuMTQ5MzEyLC0wLjUyMDQ1NCAtMC4zMzg2OTQsMC4wNDQ5MyAtMC40MDQxNzYsMC4wMjg1MiAtMC41NzczODYsLTAuMTQ0Njg5IC0wLjQxODU3OSwtMC40MTg1NzkgLTAuMDg5MzMsLTAuOTU1MDcxIDAuNzMyODE5LC0xLjE5NDA3NSAwLjQyMzQyNSwtMC4xMjMwOTMgMC40NjI3MDEsLTAuMTIxNDA5IDEuMDMwODQ1LDAuMDQ0MjEgMC43MDYwMjUsMC4yMDU4MSAxLjE1ODAxMywwLjQ4MzI2NCAxLjIyNTUzNiwwLjc1MjI5NiAwLjAyNzE4LDAuMTA4Mjg5IC0wLjAwNzUsMC4zNzA4MDQgLTAuMDc2OTksMC41ODMzNjYgLTAuMDY5NTMsMC4yMTI1NjIgLTAuMTI2NDExLDAuNTI2MTA2IC0wLjEyNjQxMSwwLjY5Njc2MyAwLDAuMzY2MDA4IC0wLjEyMDc4OCwwLjQ0MTkwOCAtMC40NDEzMzYsMC4yNzczMjIgeiBtIC0wLjgxMzg5LC0yLjk4MDM4OCAtMC42NjY4MzgsLTAuMzYwNDE3IC0wLjYyNzYxMywwLjA1Mjc1IGMgLTIuMjYxNzU2LDAuMTkwMDg4IC0yLjI3MDE2MywwLjE5MDM0MSAtMi40NTE2MTQsMC4wNzM5NyAtMC4yNjcwMzUsLTAuMTcxMjU1IC0wLjI0MTU0NCwtMC42MDU3ODkgMC4wNTI4LC0wLjkwMDEzNyAwLjI2MjcxMiwtMC4yNjI3MTIgMC41MTg3NTcsLTAuMjkwNTc1IDEuMDI1OTA2LC0wLjExMTY0MyAwLjQ3MzEyNiwwLjE2NjkyOSAwLjcxMDI0MywwLjE0ODgzNiAxLjU0MjI0NCwtMC4xMTc2NzcgMS41MzEzMDksLTAuNDkwNTIyIDIuNDE4ODc5LC0wLjE3NjAxOCAyLjU4MjUwMSwwLjkxNTA5MSAwLjA0Mjg4LDAuMjg1OTUgMC4wMjMxOSwwLjM5NDczOCAtMC4xMDE5MTMsMC41NjMwMjYgLTAuMjQ4OTg2LDAuMzM0OTM3IC0wLjU3NDA5MSwwLjMwNzM2MyAtMS4zNTU0NzcsLTAuMTE0OTY0IHogbSAwLjkwMjE5NCwtMi4wNjkxNzYgYyAtMC4wODYzLC0wLjAzMjk5IC0wLjI2OTIzLC0wLjIwMDI5NiAtMC40MDY1MTksLTAuMzcxNzg3IC0wLjIxMzcyMiwtMC4yNjY5NjQgLTAuMzE2OTA2LC0wLjMyNTAzOCAtMC43MTc1NjYsLTAuNDAzODYzIC0wLjI1NzM3MywtMC4wNTA2MyAtMC41ODYzMzYsLTAuMTcxNjQ2IC0wLjczMTAzLC0wLjI2ODkxMyAtMC4yMzg0ODIsLTAuMTYwMzE0IC0wLjI2NTA2NSwtMC4yMTY5NDEgLTAuMjg0MzIyLC0wLjYwNTY0OCAtMC4wMzgxOCwtMC43NzA1MzggMC4zODg5MTIsLTEuMTczNDM4IDAuODE3Mjg2LC0wLjc3MTAwMyAwLjE3NzQyLDAuMTY2Njc4IDAuMTgzMzksMC4xNjY5MjQgMC45NDk5LDAuMDM5MjMgMC40NjA0MzUsLTAuMDc2NzEgMS4yMTk0ODksLTAuMTI4NTA2IDEuODgzMTA5LC0wLjEyODUwNiAxLjA0OTk5NSwwIDEuMTE2NjYxLDAuMDA5MiAxLjIwMDE0NCwwLjE2NTE2NCAwLjEzMzExMiwwLjI0ODcyMiAwLjAyMDE5LDAuNjYwODE2IC0wLjI2MjUxOCwwLjk1ODAyNCAtMC4xNzEwNzgsMC4xNzk4NTMgLTAuNDcyMTA4LDAuMzQ3NDk5IC0wLjkzODcxNSwwLjUyMjc3OCAtMC41MDkzNiwwLjE5MTMzOSAtMC43NTUxNjIsMC4zMzM2MDcgLTAuOTUxMDk5LDAuNTUwNDg1IC0wLjMzMjMxOSwwLjM2NzgzOCAtMC4zNjY5ODksMC4zODczMjcgLTAuNTU4NjcsMC4zMTQwNDMgeiIKICAgICAgICAgaWQ9InBhdGg1MDUzIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDojZDI2ZjJmIgogICAgICAgICBkPSJtIDQuODU1MDcyOCw2MS4wMzcxNDMgYyAtMC4zOTM1MDU2LC0wLjA3NzIgLTAuNTE2NjgxOSwtMC4xNjcwNjcgLTAuNDUzNzUxLC0wLjMzMTA2MiAwLjAyMzg4LC0wLjA2MjIzIDAuNDYxMDMyNCwtMC40NTk1OTggMC45NzE0NDk0LC0wLjg4MzAzOSAxLjE4NjgxNTIsLTAuOTg0NTc5IDMuNDE5MDI0NCwtMy4yMTkxMzMgNC4yMjM2MzE0LC00LjIyODA2NyAyLjQ2MjkwMTQsLTMuMDg4MzQ4IDMuNzg5NTMzNCwtNi4yMjQ2NTQgMy45MzY5OTQ0LC05LjMwNzQ4OSBsIDAuMDQ4NDksLTEuMDEzNzI2IDAuMzYwNDkxLC0wLjIyMzE0NyBjIDAuOTE2NjA1LC0wLjU2NzM4NyAxLjc3NDM3OCwtMS41MTEwNDggMi4wMDY0NDksLTIuMjA3MzU0IDAuMTcxNjI5LC0wLjUxNDk1NiAwLjI2NzE3OSwtMS4wOTQ1OCAwLjE4ODQ1OSwtMS4xNDMyMzIgLTAuMDM3MzYsLTAuMDIzMDkgLTAuMjI5ODA2LDAuMDY5MzggLTAuNDI3NjQ1LDAuMjA1NDk5IC0wLjUwMTMwOCwwLjM0NDkwOSAtMS42NDQ2MjEsMC44NjkyODUgLTEuOTk4OTQ5LDAuOTE2ODExIGwgLTAuMjk1NTIzLDAuMDM5NjQgLTAuMDQzNTEsLTAuNDk5NjgxIGMgLTAuMTQ3NTkzLC0xLjY5NTIyNiAtMC4wOTIwNCwtNS45NzQ3MSAwLjEwODgzOSwtOC4zODQwNjggMC4xMTc0MTgsLTEuNDA4MzI1IDAuMzkzNjE0LC0zLjYyNDM5NSAwLjQ2OTEzNywtMy43NjQxNDIgMC4wMzU0MywtMC4wNjU1NyAwLjIxNzY2NSwtMC4xNjQ2IDAuNDA0OTU2LC0wLjIyMDA3MiAwLjkzNjM4MSwtMC4yNzczNCAzLjA0NzExMiwtMS41NDEzNTQgMy4wNDcxMTIsLTEuODI0NzY4IDAsLTAuMDQyNjkgLTAuMzQ2NTkxLC0wLjA3NDg5IC0wLjgwNjE4NywtMC4wNzQ4OSAtMC45MDM0NDQsMCAtMi4wOTc5NDksLTAuMTI4NTkyIC0yLjIwODA1MiwtMC4yMzc3MDQgLTAuMTI0ODg1LC0wLjEyMzc1OSAwLjU4NDMwOSwtMy4wNzg5MzUgMS4yMTM3ODYsLTUuMDU3NzgxIDAuNzAzMDc0LC0yLjIxMDIwNiAxLjg0ODA4OSwtNC44MTE5NTkgMi45NDA2NDEsLTYuNjgxODQ3IDAuNDc0MjM3LC0wLjgxMTY1MSAxLjI2NjAyMiwtMS45OTE2MjYgMS4zOTMxMTcsLTIuMDc2MTI0IDAuMDQxMjMsLTAuMDI3NDEgMC4xODUzNDYsLTAuMDE5ODUgMC4zMjAyNTEsMC4wMTY4MSAwLjkyOTUxNCwwLjI1MjU5OCAzLjMyODg0MiwwLjQzMzM3MSAzLjQ5MDczNywwLjI2MzAwNCAwLjAyNzIzLC0wLjAyODY2IC0wLjA1MjY0LC0wLjEyNzQzIC0wLjE3NzQ4NiwtMC4yMTk0OTMgLTAuNzI4NjIsLTAuNTM3Mjc2IC0yLjA4NzMyMiwtMS44MDM1MDEgLTIuMDg3MzIyLC0xLjk0NTI1NCAwLC0wLjEyMjE3IDEuMDMxMzcxLC0xLjE2NTkyNSAxLjg4MjgzOSwtMS45MDU0NDkgMS45MjY5NDgsLTEuNjczNjA4MiAzLjk1OTE2NCwtMi45NDg0OTQxIDYuMzc1NjMzLC0zLjk5OTY3NjUgMS4xMDk0ODgsLTAuNDgyNjM2IDIuOTkxMDU2LC0xLjE0MjgxNiAzLjI1NzExOCwtMS4xNDI4MTYgMC4xMjc2MDMsMCAwLjIyMzk3OCwwLjEwNDYzMSAwLjM3OTM3LDAuNDExODcxIDAuNDQxMzk3LDAuODcyNzI2NCAxLjQ0MzI3NCwyLjA5ODU4MDkgMS43MTUxNDYsMi4wOTg1ODA5IDAuMDY3NjIsMCAwLjExMDQxMywtMC4zMjM0ODI5IDAuMTQ3OTgxLC0xLjExODU2NTEgMC4wNjEzOSwtMS4yOTkxNzQ1IDAuMTQ4NjM0LC0xLjkzNTM3MzMgMC4yNzYyMzIsLTIuMDE0MjMyNyAwLjE0MDAyNywtMC4wODY1NDIgMi4wMzA0OTksLTAuMzc5MTkzNyAzLjM4MTk0MiwtMC41MjM1MzY2IDEuNjgzMzA0LC0wLjE3OTc4NzggNS4wNDc5NywtMC4xNzk5MzMyIDYuNjE1Njg3LC0yLjgyNGUtNCAxLjQ5NzI0NywwLjE3MTU3MiAyLjgwOTEyNSwwLjQwODc5NTggMi44NzgxMjgsMC41MjA0NDUyIDAuMDI5OCwwLjA0ODIxOSAwLjAyMzYyLDAuMjM1MjEwNCAtMC4wMTM3MywwLjQxNTUzNTkgLTAuMDM3MzUsMC4xODAzMjIyIC0wLjA5MDMzLDAuOTAxNTM4NyAtMC4xMTc3MzUsMS42MDI3MDAxIC0wLjA0NTAyLDEuMTUxOTEyIC0wLjAzNzM1LDEuMjc0ODM4OSAwLjA3OTQ2LDEuMjc0ODM4OSAwLjA3MTExLDAgMC4xMjkyODQsLTAuMDI3MTMzIDAuMTI5Mjg0LC0wLjA2MDI5NiAwLC0wLjA3MzYxOCAwLjk2NDUzOSwtMS4zNDkxNjM2IDEuNjA4MjU5LC0yLjEyNjgyNSAwLjQ0NzE2NywtMC41NDAyMTIyIDAuNDgzNjk5LC0wLjU2NjIxOTcgMC43MzA0MzksLTAuNTE5OTk1NSAwLjg5OTk5MiwwLjE2ODYwNDQgNC4wNDEzNjMsMS41ODU3NTI2IDUuNjI0MTQyLDIuNTM3MTg2MiAxLjEwNDMxMiwwLjY2MzgxOTIgMi4zNDgyNCwxLjUyODI2OTUgMi4zMzMsMS42MjEyODUzIC0wLjAwNzEsMC4wNDMxNDggLTAuMzMwNzE1LDAuMjc4NDc1NiAtMC43MTkyMTMsMC41MjI5NDk0IC0xLjAzMjk2NCwwLjY1MDAyMzkgLTEuNjAxNTc5LDEuMTAzNzM4OSAtMi40Mzc1MjksMS45NDQ5NzU5IC0xLjE3OTA2MywxLjE4NjUyMSAtMi4wOTA4NjksMi41OTQ0MTMgLTIuNjgyMjgsNC4xNDE2MjQgLTAuMTM2MDY5LDAuMzU1OTc0IC0wLjI4OTEyMSwwLjY0NzIyNiAtMC4zNDAxMTgsMC42NDcyMjYgLTAuMDUxLDAgLTAuNDk1ODcxLC0wLjE5MTYzMiAtMC45ODg2MSwtMC40MjU4NDcgLTMuMzEzNzY4LC0xLjU3NTE1IC03LjU0NzIxMywtMi4yMTIwMzYgLTExLjQ3MDM4OSwtMS43MjU2MjUgLTYuNzI4NDY3LDAuODM0MjIzIC0xMi43MzgwMTQsNC45MjExNzEgLTE1Ljk3ODYzNiwxMC44NjY2ODYgLTAuNzQ4ODI1LDEuMzczODU4IC0xLjY2MzMwMywzLjYxMzExMiAtMS41Mjg5ODksMy43NDM5OTMgMC4wODAyMywwLjA3ODE4IDAuMjA0MjE2LC0wLjExNTM4NiAwLjk5NTY4MywtMS41NTQ0MzIgMS4xODI5NzYsLTIuMTUwODkgMS40ODc2NTQsLTIuNTcwODE4IDMuMjQ4MywtNC40NzcwMjUgMi41MjI1NTIsLTIuNzMxMTA0IDQuNjExNDI0LC00LjM1NzMxMiA3LjIxMDA2OCwtNS42MTMxMTIgMS44NzQzNDksLTAuOTA1NzgzIDMuNzI5MDEsLTEuNDc5Njg5IDUuODQ0NjQ2LC0xLjgwODU2OSAxLjEzODgzNiwtMC4xNzcwMzUgNC4zNzE2NDEsLTAuMTk5NjE4IDUuNDUyMzg4LC0wLjAzODA5IDMuMDcwNzczLDAuNDU4OTYgNS44OTEwNzYsMS40OTcwMDYgOC4yNTgyODYsMy4wMzk1NjIgMC43MDMxNzIsMC40NTgyMTIgMC44ODE4MDMsMC42OTg3NjggMC43NDM4LDEuMDAxNjUxIC0wLjA5NDMxLDAuMjA2OTc5IC0xLjk5NDk5OCwyLjg5MzQ3MSAtMi4yNDE5NzUsMy4xNjg4NzIgLTAuMDg3MDYsMC4wOTcwOCAtMC4yNDE1ODgsMC4xNzY1MTYgLTAuMzQzMzg1LDAuMTc2NTE2IC0wLjEwMTc5OCwwIC0wLjU0NTc2LC0wLjIxODEyMyAtMC45ODY1ODMsLTAuNDg0NzE5IC00LjUzMzczMiwtMi43NDE4NTQgLTkuOTU5MDYzLC0zLjAxMjY2MyAtMTQuNjg3NDM1LC0wLjczMzEzNSAtMi4xMDI2OTQsMS4wMTM3IC00LjExOTU5NiwyLjY1OTUxIC01LjUzMDM1OSw0LjUxMjgyMyAtMC41MTAxMzgsMC42NzAxNjYgLTEuMTc3MjU1LDEuNzE3OTY4IC0xLjE3NzI1NSwxLjg0OTA0OCAwLDAuMDQ4MzcgMC45MjUwMDEsMS4wNjUxMzYgMi4wNTU1NTcsMi4yNTk0OCAxLjY1NDQ1NiwxLjc0NzgwNCAyLjEzNTcwOSwyLjIxMDc1MSAyLjQ2NjMyMywyLjM3MjUwNSAwLjg2OTcxNywwLjQyNTUxMyAxLjM5MDgwMywwLjM0MDUwNyAyLjc4NzA0NSwtMC40NTQ2NTcgNS4zOTcwNjcsLTMuMDczNjQ3IDEwLjI5NzU4NywtNC45MDU4ODMgMTQuNzM1OTgyLC01LjUwOTU3NiAzLjgyMjIyNywtMC41MTk4ODYgNi4yODI5MzksLTAuMjc3NTg0IDcuMzk2MzM2LDAuNzI4MzAzIDEuMjMxNTY0LDEuMTEyNjQzIDAuNzU0ODg0LDIuODYyNjc1IC0xLjM0OTI4Nyw0Ljk1MzYzOSAtMC44MjY2MzEsMC44MjE0NDEgLTIuMDc4ODQ3LDEuODMxNjA1IC0yLjIxNDQ1NiwxLjc4NjQwMyAtMC4wMzkxOSwtMC4wMTMwNyAtMC41NzQ1ODcsLTAuNzQ3MTQ1IC0xLjE4OTc2MywtMS42MzEyODggLTAuNzk4MTUxLC0xLjE0NzExOCAtMS4xNjE3NjEsLTEuNjA3NTM0IC0xLjI2OTU0MSwtMS42MDc1MzQgLTAuMjIyMDQ0LDAgLTAuNTEwMzIxLDAuNDc0NDE1IC0wLjUxMDMyMSwwLjgzOTgyOSAwLDAuODU3MzM0IC0wLjQwOTk5OCwxLjQ3MDA4OSAtMS4yNzA1ODgsMS44OTg5NCAtMC42MDI4NjEsMC4zMDA0MTggLTAuODEyODA1LDAuMjY5ODQzIC0xLjgxNjI4MywtMC4yNjQ1MDkgLTEuMTc2MzkzLC0wLjYyNjQzIC0xLjY3MzI5NCwtMC43Mzk1ODUgLTIuOTkzMTMsLTAuNjgxNjAxIC0xLjY0MTMyMywwLjA3MjExIC0zLjE4NzcwOSwwLjUwMTY3NyAtNS4wNDI0MzYsMS40MDA3MyAtMS40NzExMDEsMC43MTMwOTUgLTMuMzEyNjYyLDEuOTA3Nzc4IC0zLjMxMjY2MiwyLjE0OTAzNCAwLDAuMDY2MjQgMC45NDQzNjEsMS44MjAxNTcgMi4wOTg1ODEsMy44OTc1ODggMi4yOTEyMjksNC4xMjM4ODUgMi41MTIzNiw0LjQ0MDk0MSAzLjM5MzAzMyw0Ljg2NDkxIDAuOTY0NTE1LDAuNDY0MzMxIDEuMDEyMTU5LDAuNDY4NzcyIDUuNTcwMDY1LDAuNTE5MTQ1IGwgNC4xOTcxNjIsMC4wNDYzOSAwLjM4ODE4MSwwLjE5NjEyOSBjIDAuMjEzNDk5LDAuMTA3ODcxIDAuNDU5ODE5LDAuMjk0NzI3IDAuNTQ3Mzc4LDAuNDE1MjM2IDAuMjA5MjcsMC4yODgwMjIgMC4yMDg1OTcsMC43NjU4OTggLTAuMDAxNSwxLjA1MjM2OCAtMC4xNzQ5MjksMC4yMzg1MzggLTAuMTQzNzg3LDAuMjIxNjExIC0yLjQyNDY1OSwxLjMxNzg0OSAtMi43NzUyNTQsMS4zMzM4NDggLTMuMDgwODI1LDEuNTY3NTMgLTMuNDI3MzYxLDIuNjIxMDMxIC0wLjE0NzYwOSwwLjQ0ODc0MyAtMC4xNzExOTEsMC43MDcyODggLTAuMTc5NTA1LDEuOTY3OTY5IC0wLjAwNTMsMC43OTgyNDUgLTAuMDM2MTksMS41MDgxNDggLTAuMDY4NzIsMS41Nzc1NjIgLTAuMTg0OTk5LDAuMzk0NzQ3IC02Ljg1ODUwNyw0Ljc2NTkzNiAtOC4zMjc1MTMsNS40NTQ1NzMgLTAuNzIzMTA5LDAuMzM4OTc3IC0xLjMwOTcxMywwLjIzNzQ2NyAtMy4xODk1NTMsLTAuNTUxOTM5IC0xLjM2MTQ5NSwtMC41NzE3MzcgLTIuNzk1MDI5LC0wLjc4ODUxNyAtMy45ODg3NzEsLTAuNjAzMTg0IC0wLjMyMzYxMywwLjA1MDI0IC0xLjk4Mjg2NSwwLjQxMDcyNyAtMy42ODcyMjYsMC44MDEwNzggLTQuNjQzNjU1LDEuMDYzNTM5IC01LjA1NjI0NSwxLjE0Nzg4MiAtNi4xMDYzNjMsMS4yNDgyODIgLTEuNDQyNDExLDAuMTM3OTA2IC0yLjMxNzkzOSw3LjA2ZS00IC0yLjE4NjIwMiwtMC4zNDI1OTggMC4wMjY4NCwtMC4wNjk5NCAxLjA4Mjg0OCwtMC42NDQzNTUgMi4zNDY2ODMsLTEuMjc2NDY2IDMuNTU1Mzg5LC0xLjc3ODIzOCA1LjY3MTk4OCwtMy4wMTA0MSA2LjUzMDM2MywtMy44MDE2MzIgMC44OTgyOSwtMC44MjgwMTQgMS42NjU5OTUsLTIuNzM0MjAxIDEuODU2NDczLC00LjYwOTU2MSAwLjA4NTcyLC0wLjg0Mzk4NiAtMC4wMTg0MSwtMi40MDU2MzcgLTAuMTcwNzAyLC0yLjU1OTk5MSAtMC4wNDA0LC0wLjA0MDk1IC0wLjQzMjA2OSwtMC4xNTQ4ODIgLTAuODcwMzY3LC0wLjI1MzE3OCAtMC41MDA2NTQsLTAuMTEyMjgzIC0xLjA2MjA5OSwtMC4zMDg3NDQgLTEuNTEwMjY2LC0wLjUyODQ3NyAtMC43MTk5ODMsLTAuMzUzMDAxIC0xLjUzNzEwMiwtMC45ODQ4MiAtMS41MzcxMDIsLTEuMTg4NTMgMCwtMC4wNjA3MiAwLjA4OTY4LC0wLjQxOTg0NSAwLjE5OTI4OSwtMC43OTgwNDUgMC4yOTU5MjQsLTEuMDIxMDcgMC41ODU0OTcsLTIuNjg5MTY5IDAuNjM5NTE4LC0zLjY4Mzk2NSBsIDAuMDQ3NjksLTAuODc4MTMzIC0wLjIwMjQ2OSwtMC4wNTA4MiBjIC0wLjExMTM1NywtMC4wMjc5NSAtMC43NDMyODIsLTAuMDM4NzggLTEuNDA0Mjc4LC0wLjAyNDA2IC0xLjM2MjU5NCwwLjAzMDM0IC0xLjQ5NTk0MiwwLjA3NzQ1IC0xLjgyNzk4OCwwLjY0NTg4NiAtMC4yODMzNzMsMC40ODUxMSAtMC40Nzc0NjYsMS4zMDc3NzYgLTAuNzg4NjQ3LDMuMzQyNjc4IC0wLjMyNTc2NSwyLjEzMDI3MiAtMC41NzU4NzQsMy4zNzA0NjQgLTAuODk3NTYsNC40NTA2NDggLTEuMDM4NTM0LDMuNDg3MjczIC0zLjA4MjM1LDYuMjY4MTA5IC02LjA3NjE4OCw4LjI2NzMyMiAtMi42MTcyNDIsMS43NDc3MzEgLTUuODcyODYsMi44MzAwOTkgLTkuNzcyOTc5NCwzLjI0OTE0MSAtMS4xNjg3MTA5LDAuMTI1NTY5IC0xLjY2OTQxMzgsMC4xMzI0NTQgLTIuMTkxMDE5OCwwLjAzMDEzIHogTSA0MS41MjU1ODIsNTEuMDgzNjcgYyAwLjQ3NDYzMywtMC4xMzIzNTcgMS4wMTU5NDUsLTAuMjc3NTg2IDEuMjAyOTE3LC0wLjMyMjczMSAwLjMwODAyNiwtMC4wNzQzNyAwLjM1Nzg3NCwtMC4xMjEyMzUgMC41MzA4MzEsLTAuNDk5MDIzIDAuMTY5MTc4LC0wLjM2OTUzMyAwLjE4ODIyNiwtMC42NzAxMDIgMC4wNDI2MywtMC42NzI3MjYgLTAuMjk5NTY0LC0wLjAwNTQgLTIuMTk2ODE4LC0wLjQxMzgyMyAtMi40NTcwMzUsLTAuNTI4OTMgLTAuNzU3NjEyLC0wLjMzNTEyOCAtMC44NTQ0MDIsLTAuNTAyNzQ1IC0yLjE2Mjk2NSwtMy43NDU3NzUgLTAuNzcwNTc5LC0xLjkwOTczNyAtMC45MTI1NiwtMi4xOTY3OTIgLTEuMDQ1ODIyLC0yLjExNDQzMiAtMC4xMjA3NzYsMC4wNzQ2NCAtMC42OTk5NzksMS4xMzQ1MjggLTAuNjk5OTc5LDEuMjgwODkzIDAsMC4xOTYyNzcgMi4yNTI3OTUsNy4xNDUxNzIgMi4zNTcyMTgsNy4yNzA5OTQgMC4wNTU2MywwLjA2NzAzIDAuMjQ0NzI4LDAuMDIyOTQgMC43MjIyOTYsLTAuMTY4NDEgMC4zNTU4MTYsLTAuMTQyNTY2IDEuMDM1Mjc0LC0wLjM2NzUwMyAxLjUwOTkwNiwtMC40OTk4NiB6IG0gMTEuODQ2MTk2LC02Ljk3NjE0MiBjIC0wLjEyOTQ0NSwtMC4wODA5OCAtMC4zNzY1NjgsLTAuMjk1NTcgLTAuNTQ5MTYyLC0wLjQ3Njg2NSAtMC40NDM5MTgsLTAuNDY2Mjk3IC0wLjY4MzY1MSwtMC41NzUyNSAtMS4xMzA1MTUsLTAuNTEzNzkgLTAuNTE0NjMsMC4wNzA3OCAtMC43NTQzMjMsLTAuMTMxMjExIC0wLjcyMjM5MywtMC42MDg3NjEgMC4wMTI5NiwtMC4xOTM3OTMgMC42NjcwMTIsLTAuNTg5NDA4IDEuMDc1Nzg5LC0wLjY1MDcwOCAwLjI0MTgwMywtMC4wMzYyNiAwLjQ5Mzg1OSwtMC4wMDM3IDAuODcyMzkzLDAuMTEyNjQ5IDEuMDQzOTYsMC4zMjA5MTYgMS4yNDczMTYsMC41ODA5MTggMS4wMTUzNDYsMS4yOTgxNzkgLTAuMDcwOTMsMC4yMTkzMjMgLTAuMTM4MDIsMC41MTk2MTIgLTAuMTQ5MDg0LDAuNjY3MzA5IC0wLjAyNDU5LDAuMzI4MjIgLTAuMTA3NDIsMC4zNjI3NjcgLTAuNDEyMzc0LDAuMTcxOTg3IHogTSA1Mi44OTMxNCw0MS4zMDEzOTMgQyA1Mi42ODE3NTgsNDEuMTg2ODg5IDUyLjQwMjksNDEuMDM3MzggNTIuMjczNDU1LDQwLjk2OTE1IGMgLTAuMjgwNDgyLC0wLjE0NzgzOCAtMC42NjE3OTMsLTAuMTUyODI0IC0yLjEwNjU3MSwtMC4wMjc1NCAtMS4yNTgzMDgsMC4xMDkxMTMgLTEuMzg0NTI2LDAuMDc4MDcgLTEuMzg0NTI2LC0wLjM0MDU0NiAwLC0wLjMyNDE3MiAwLjI4NzIxNywtMC42NjAxNTQgMC41NjUyMDgsLTAuNjYxMTcyIDAuMDk5MDUsLTMuOTJlLTQgMC40MTUwNCwwLjA1OTU1IDAuNzAyMjEsMC4xMzMxNDIgbCAwLjUyMjEyOCwwLjEzMzgwMiAwLjg1MDc3NSwtMC4yNjc4MzggYyAxLjQxMTE0NywtMC40NDQyNSAyLjA2ODg5OCwtMC4zMzgzODggMi40Mzk0MjEsMC4zOTI2MTcgMC4yMDY0NjUsMC40MDczMzEgMC4yMjU1MzcsMC43NTkyNjMgMC4wNTQzOSwxLjAwMzYwOSAtMC4xNjc0MzUsMC4yMzkwNDggLTAuNTQyNDkxLDAuMjI2NjQ5IC0xLjAyMzM1MSwtMC4wMzM4MyB6IG0gMC4yOTk3MDUsLTIuNTI3NDI2IGMgLTAuMjk0MzM5LC0wLjMwMzc1MSAtMC40NDI1OTMsLTAuMzk0MTIzIC0wLjcyMzI2MSwtMC40NDA4ODUgLTAuNDQ5Mzk1LC0wLjA3NDg3IC0wLjkxMTM0MywtMC4zMDc5NDIgLTEuMDIyNjc5LC0wLjUxNTk3MyAtMC4wOTYwNCwtMC4xNzk0NSAwLjAxNjczLC0wLjg4MTU2NSAwLjE3MTU0OCwtMS4wNjgxMTMgMC4xMjY2NTIsLTAuMTUyNjA2IDAuMzg1Njc1LC0wLjEyNTgyOSAwLjU4Mzg2NCwwLjA2MDM2IDAuMTcxMTQsMC4xNjA3NzggMC4xODc3NDMsMC4xNjE1NTEgMC45MDcyNSwwLjA0MjIzIDEuMDQ0Njk0LC0wLjE3MzI1MSAyLjczODY4NSwtMC4yNTA2OTkgMi45NTQ3MTEsLTAuMTM1MDg1IDAuMzI2NTMsMC4xNzQ3NTMgMC4xNjMwODYsMC44NTgxMzYgLTAuMjc4OTI5LDEuMTY2MjQ3IC0wLjExOTMwOSwwLjA4MzE3IC0wLjQ4MTcsMC4yNTA4MTMgLTAuODA1MzEzLDAuMzcyNTUxIC0wLjQxMDk0LDAuMTU0NTg5IC0wLjY5MjgzOCwwLjMyMzc4OCAtMC45MzQ3MzIsMC41NjEwMzkgLTAuMTkwNDksMC4xODY4MzQgLTAuMzc2OTE5LDAuMzM5Njk5IC0wLjQxNDI4OCwwLjMzOTY5OSAtMC4wMzczNywwIC0wLjIzNDU0NSwtMC4xNzE5MyAtMC40MzgxNzEsLTAuMzgyMDY2IHoiCiAgICAgICAgIGlkPSJwYXRoNTA1MSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9ImZpbGw6I2M0NTMzMCIKICAgICAgICAgZD0ibSA0LjcwNzE2MzksNjAuOTU0OTcyIGMgLTAuMTg2NzU5NywtMC4wNTM4MiAtMC4yNTMwMzIxLC0wLjExNDQzIC0wLjIzNTM1NDksLTAuMjE1MjUxIDAuMDEzNTMzLC0wLjA3NzE5IDAuNDY1ODk2MiwtMC41MDQ0NzUgMS4wMDUyNTExLC0wLjk0OTUzIDEuMTk5NjI5NiwtMC45ODk4ODkgMy4yNzYxMDczLC0zLjA2NDg4NSA0LjEwODMxMDQsLTQuMTA1Mzc5IDEuOTE1NTE3NSwtMi4zOTQ5NDkgMy4yMDM0NTE1LC00LjkxNTIzOCAzLjczNTk2NTUsLTcuMzEwNzEzIDAuMDg2MzMsLTAuMzg4MzM2IDAuMTk4NDA1LC0xLjI0MDg2OCAwLjI0OTA2MywtMS44OTQ1MTYgbCAwLjA5MjExLC0xLjE4ODQ1MSAwLjQ4MzY0NCwtMC4zMTc5NzkgYyAwLjY0NDY1NCwtMC40MjM4MzQgMS41MDE3NzMsLTEuMzQ0MDM1IDEuNzQzMzAxLC0xLjg3MTYgMC4yMDI1ODksLTAuNDQyNTE0IDAuNDA0MzMzLC0xLjM5MjM2OSAwLjMxNDc1OCwtMS40ODE5NDUgLTAuMDI4NDcsLTAuMDI4NDcgLTAuMjIxMDQsMC4wNTY4NyAtMC40Mjc5MzgsMC4xODk2MzQgLTAuNDQ0NDc2LDAuMjg1MjE5IC0xLjc3NDA0OSwwLjkxNjAxNyAtMi4wNzk2NDIsMC45ODY2NTkgLTAuMTg1MzQ0LDAuMDQyODQgLTAuMjIxOTEsMC4wMjA0NSAtMC4yNzMyMTMsLTAuMTY3MzMxIC0wLjA5OTEzLC0wLjM2Mjg0MiAtMC4wNjU4NiwtNi40NjI2NzUgMC4wNDI5MSwtNy44NjU4MjggMC4xMTEyNzQsLTEuNDM1NTExIDAuMjc1NjE3LC0zLjAwNDk1IDAuNDEzMTc1LC0zLjk0NTcwNSAwLjA3NDYzLC0wLjUxMDM4NyAwLjExODk2NiwtMC42MjgwMTggMC4yNTY3ODYsLTAuNjgxMjcxIDEuNDkzMDU3LC0wLjU3NjkxNCAyLjE2NTA5OCwtMC45MzMyOTMgMi44OTg0NTcsLTEuNTM3MDM0IDAuMjQ3ODU4LC0wLjIwNDA1IDAuNDM3ODAyLC0wLjQwOTgzNiAwLjQyMjA5OCwtMC40NTczMDIgLTAuMDE4MzUsLTAuMDU1NDYgLTAuNDg4OTA2LC0wLjEwMzIxIC0xLjMxNjY4MiwtMC4xMzM2MTQgLTAuNzA4NDcxLC0wLjAyNjAyIC0xLjM4OTEyMiwtMC4wNzQ5NiAtMS41MTI1NiwtMC4xMDg3NTEgLTAuMjE4NzYyLC0wLjA1OTg5IC0wLjIyMzExNSwtMC4wNzEzNyAtMC4xNzIyOTIsLTAuNDU0NDgzIDAuMDI4NjgsLTAuMjE2MTc1IDAuMjI4Mzk5LC0xLjA5NjAxOCAwLjQ0MzgyOCwtMS45NTUyMDcgMS4wNTA4NDksLTQuMTkxMDcyIDIuNTA2NTY4LC03LjYyMzI1MiA0LjUyOTc5NywtMTAuNjc5OTk0IDAuNDY0ODE4LC0wLjcwMjI1OCAwLjUyOTE2MywtMC43NjgwMjkgMC43MTI4MjYsLTAuNzI4NjI4IDAuMTExMDM3LDAuMDIzODIgMC40NDkwMDksMC4wOTg2OCAwLjc1MTA0OCwwLjE2NjM0MiAwLjY4NDQwMSwwLjE1MzMyOCAyLjg5NjQ0OSwwLjI1NTI5NCAyLjk2OTYyOCwwLjEzNjg4NiAwLjAyODA3LC0wLjA0NTQyIC0wLjE4NzMyNSwtMC4yNjkwMzkgLTAuNDc4NjUyLC0wLjQ5Njk0MiAtMC44NDczOTMsLTAuNjYyOTA3IC0xLjgyNDEzNywtMS41ODM5NSAtMS44MjQxMzcsLTEuNzIwMTEzIDAsLTAuMTMwNzE0IDEuMjM3MjM4LC0xLjM3MzcwMSAyLjExODE5MywtMi4xMjgwMzYgMS44Nzc1MTIsLTEuNjA3NjU1IDQuMzYzNTU2LC0zLjA3MjIwMTggNi45NDI5NjksLTQuMDkwMTUzOCAxLjMwNjc2LC0wLjUxNTcwNjMgMi40MDQzMjYsLTAuODYwNjkwNCAyLjQ4Mzc3MywtMC43ODA2OTM3IDAuMDMxNSwwLjAzMTcxNSAwLjE2OTQ2MSwwLjI2OTQ4MjggMC4zMDY1ODcsMC41MjgzNzMxIDAuMTM3MTI2LDAuMjU4ODkwNCAwLjM2NjA4LDAuNjMwOTUxNyAwLjUwODc4NSwwLjgyNjgwMjkgMC4zMjg1OTEsMC40NTA5NTk1IDEuMDg4OTk4LDEuMTczNzEzNSAxLjIzNDg2MiwxLjE3MzcxMzUgMC4wODkxOSwwIDAuMTIwNDM4LC0wLjI1NzEzNjUgMC4xNTk3MTcsLTEuMzE0MDY0NyAwLjAyNjg2LC0wLjcyMjczNTUgMC4wNzc1OCwtMS40Mzc0ODExIDAuMTEyNzA3LC0xLjU4ODMyMzYgbCAwLjA2Mzg3LC0wLjI3NDI1ODkgMC43MDI5MTQsLTAuMTMyNTQ1MSBjIDMuNTUwOTk1LC0wLjY2OTU5MzUgNy45Mjg3MDksLTAuNjk0NjM5IDExLjQ5NDAxNSwtMC4wNjU3NTkgMC43Mzg4NzgsMC4xMzAzMjk4IDAuNzIzNjE4LDAuMTEwNjQwNCAwLjYxNDExNCwwLjc5MjM4OTggLTAuMTA5NDM4LDAuNjgxMzQ1NyAtMC4xMzg4NTYsMi42OTU1OTYxIC0wLjA0MDc3LDIuNzkxMzQgMC4wMzcwOCwwLjAzNjE5MSAwLjEyNTMzNiwtMC4wMjI0NTYgMC4xOTYxMjksLTAuMTMwMzI2OSAwLjIyMzQ0NCwtMC4zNDA0NzMyIDEuMTIwMTg4LC0xLjUwNzQwNjYgMS42MTI2NzksLTIuMDk4NTgxIDAuMzIyODU3LC0wLjM4NzU1MDEgMC41MjgzNzgsLTAuNTY4Nzc0MiAwLjY0NTAyOSwtMC41Njg3NzQyIDAuNDQyNTA5LDAgMy4yNTU1MzksMS4xODM2Mzk3IDQuNjk2Mjk4LDEuOTc2MDYyOCAwLjk4MDQ3NywwLjUzOTI2NjQgMi42OTA4OTIsMS42MTM1NjgxIDMuMDk4MDE2LDEuOTQ1ODQ2NyBsIDAuMjcyNTU0LDAuMjIyNDQ3MiAtMC4yNTg4MjIsMC4xNDQwODAxIGMgLTIuNTc2NTc0LDEuNDM0MzE2OCAtNC42MDEzNjgsMy43Mjk0MDM4IC01LjYyNDE0Miw2LjM3NDkxNzggLTAuMTQzMDgyLDAuMzcwMDk4IC0wLjI4OTQzNywwLjY3MjI1OCAtMC4zMjUyMzMsMC42NzE0NjYgLTAuMDM1OCwtNy45MmUtNCAtMC4zNjYwMDIsLTAuMTQ4MDIzIC0wLjczMzc5MywtMC4zMjcxODIgLTEuOTg5NTQ2LC0wLjk2OTE1NSAtNC4xNjgzMzYsLTEuNTczNzc2IC02Ljc0NDk2OSwtMS44NzE3NSAtMS4zODc4MTQsLTAuMTYwNDk0IC00LjEyOTcwMSwtMC4xMjA3MzUgLTUuNDEzMTYyLDAuMDc4NDkgLTMuNzg5NzE0LDAuNTg4MjY5IC03LjM4NzYsMi4xNzUwNDcgLTEwLjM1NDI4Niw0LjU2NjU1NyAtMS41NTU0OCwxLjI1MzkwOCAtMy4yMzU5MTUsMy4xMzExODMgLTQuNDEyODY0LDQuOTI5NzczIC0wLjkxNDQwMywxLjM5NzM3MSAtMi4wOTk0MDYsMy44OTI3MDYgLTIuMzc4NzM3LDUuMDA5MDU3IC0wLjA0Nzg0LDAuMTkxMTk2IC0wLjAzNDU3LDAuMjE5NDg4IDAuMDkxODIsMC4xOTU3MSAwLjA5MzA0LC0wLjAxNzUgMC4yOTg2OTMsLTAuMzAzNjA2IDAuNTU1NDA3LC0wLjc3MjY2OSAwLjkzNzQxMSwtMS43MTI4MTUgMS43MDc2NzMsLTIuOTc3Mjg0IDIuMTUwMjcxLC0zLjUyOTkwNSAxLjI1NjczNCwtMS41NjkxMzcgMy40NzQzOTYsLTMuODA4OTc1IDQuOTM0MTk2LC00Ljk4MzUzNiA2LjQzMTExOCwtNS4xNzQ0OTkgMTUuNTQ3MDEsLTUuODI2MTI1IDIyLjY1NTgwNSwtMS42MTk0OTMgMS4xNTcyNzQsMC42ODQ4MTggMS40Mjg4NDQsMC45MDYzNiAxLjQyODg0NCwxLjE2NTYzIDAsMC4yMjU3MiAtMi4xMDIzOTMsMy4yNTM4MzIgLTIuMzg5OSwzLjQ0MjIxNCAtMC4yMTQzNzksMC4xNDA0NjcgLTAuMzEzMTEyLDAuMTA3MDY1IC0xLjAwNzEzMywtMC4zNDA3MDggLTAuNzI5ODksLTAuNDcwOTE3IC0yLjI4MTA4MiwtMS4yMDU1OSAtMy4yNDk4MzgsLTEuNTM5MTgzIC02LjY3NzU5OSwtMi4yOTk0NTEgLTE0LjI0MjIxNSwwLjQxODY1MSAtMTcuOTkyMjM3LDYuNDY0OTMxIC0wLjIxMjgyOCwwLjM0MzE1IC0wLjM4Njk2LDAuNjUyMDk5IC0wLjM4Njk2LDAuNjg2NTU0IDAsMC4xMDU4MzggNC4wMzY0NjEsNC4zMjg5OSA0LjMyMTY1OCw0LjUyMTU0IDAuNTQ0MjY0LDAuMzY3NDU4IDEuMzEwMTI0LDAuNDgyMjc3IDEuOTA1NzMsMC4yODU3MDkgMC4xNTU2NzcsLTAuMDUxMzggMC44MjE2NiwtMC4zOTU3ODYgMS40Nzk5NiwtMC43NjUzNTEgNi43OTMzNzcsLTMuODEzNzQzIDEyLjU0ODIwNSwtNS41OTgxMDUgMTguMDI0Nzg1LC01LjU4ODgyNCAyLjE5Njc1MiwwLjAwMzcgMy40MzEzNDgsMC40MjMwMzkgNC4xMTY3MTUsMS4zOTgxOTcgMC4yMjA3MTcsMC4zMTQwNDIgMC4yMzcxNDgsMC4zODUzMzggMC4yMzQ0NiwxLjAxNzQwMSAtMC4wMDI0LDAuNTY0Mzg2IC0wLjAzNzgzLDAuNzU1MjIzIC0wLjIwODgyMiwxLjEyNDkwNiAtMC4zMDc4MjUsMC42NjU0OTcgLTAuNzY4Nzc1LDEuMzA0OTI5IC0xLjQ4OTc1MSwyLjA2NjU5MSAtMC42NTA2MTcsMC42ODczMzIgLTIuMjExODM0LDEuOTk5MTY1IC0yLjM3OTIxMiwxLjk5OTE2NSAtMC4wNDk0NCwwIC0wLjU5MjA4LC0wLjcyMjg0MiAtMS4yMDU4NjMsLTEuNjA2MzE2IC0wLjYxMzc4MywtMC44ODM0NzQgLTEuMTQ4NTg1LC0xLjYyNjQ3NSAtMS4xODg0NSwtMS42NTExMTIgLTAuMTA3OTE3LC0wLjA2NjcgLTAuMzQ5NTc5LDAuMDg1OTMgLTAuNTAwMzE5LDAuMzE1OTkyIC0wLjA3MzE2LDAuMTExNjUgLTAuMTYyNjgxLDAuNDY3NTYzIC0wLjE5ODk0NCwwLjc5MDkxOSAtMC4wODExNCwwLjcyMzQ4MiAtMC4yODQyMDIsMS4wNTg3MzMgLTAuODk2ODksMS40ODA3MDggLTAuMzQzNDI5LDAuMjM2NTI4IC0wLjUzNTQ0NCwwLjMxMTcxMiAtMC44NjYxMzIsMC4zMzkxMzUgLTAuMzk2MTUzLDAuMDMyODUgLTAuNDcxNzI1LDAuMDA4NCAtMS4xMTc3MzksLTAuMzYxNDM5IC0xLjExMTI0NSwtMC42MzYyMDQgLTEuNTMwNDQ1LC0wLjc1MDY4MyAtMi43MzI2MDMsLTAuNzQ2MjQxIC0xLjgwNjY0OCwwLjAwNjcgLTMuNDcyNDA5LDAuNDQxNDQzIC01LjQ5MTYxNCwxLjQzMzMyNyAtMS41NjgwODIsMC43NzAyODEgLTMuMzM0MTk0LDEuOTE0NTAyIC0zLjMzNDE5NCwyLjE2MDE0NCAwLDAuMTU4ODE2IDQuMDU2MTU1LDcuNDAyNzIgNC40MDg3NjQsNy44NzM2MjggMC4zNzM2NDksMC40OTkwMDggMS4wNjk0MTEsMC45Njk1NzEgMS43ODMyNTYsMS4yMDYwNjUgMC40OTQ4MzMsMC4xNjM5MzYgMC42ODQ1OTMsMC4xNzI4NTcgNC43MTI3NTYsMC4yMjE1NjIgMy42MTQ4MjMsMC4wNDM3MSA0LjI1MzI4MywwLjA2ODk1IDQuNjAxNjQ5LDAuMTgxOTA3IDAuODIxNDIxLDAuMjY2MzUyIDEuMTUxNzk1LDEuMDE5ODQxIDAuNjc0MjIzLDEuNTM3NzExIC0wLjE0MDA3MiwwLjE1MTg5MiAtMC43Nzg0MTYsMC40OTU5NTMgLTEuODE5OTc4LDAuOTgwOTUxIC0yLjExOTU2NCwwLjk4Njk2NiAtMy4yNjA1MzgsMS42NDEwMDggLTMuNTQ0NzM5LDIuMDMxOTU4IC0wLjUxMzgzNiwwLjcwNjgzOSAtMC42OTY1OTcsMS42NjQzMjUgLTAuNjM0OTM3LDMuMzI2NDU0IGwgMC4wMzg1OCwxLjAzOTk5NiAtMC4yODg0NjksMC4yNzIwNjEgYyAtMC41MTk0MywwLjQ4OTg4NSAtNS41OTY3OTEsMy44MDc0MjMgLTcuNTc3NTU2LDQuOTUxMTYgLTAuNjYzNjAxLDAuMzgzMTc3IC0wLjY3MDI2NywwLjM4NTA0NyAtMS4zNzI5MDQsMC4zODUwNDcgLTAuNjQ2MTcsMCAtMC43NjU5NTgsLTAuMDI1NzkgLTEuNDEyMTI5LC0wLjMwMzk5OSAtMS44NTc3NDcsLTAuNzk5ODYyIC0yLjY1ODUwOSwtMS4wMDMxNzMgLTMuOTYxODA3LC0xLjAwNTg5MSAtMS4wMDM2ODEsLTAuMDAyMSAtMS4wNTUxMTIsMC4wMDc3IC01Ljg0NDY0NiwxLjExMTA1MSAtNC4wNTY3MzgsMC45MzQ1NTQgLTQuMjgwMDYzLDAuOTczMTk4IC01LjY1NTcxMywwLjk3ODY1NyAtMC44OTc4MDUsMC4wMDM2IC0xLjIxNTY0OCwtMC4wMjE1MiAtMS4zMTUwMzIsLTAuMTAzNzc1IC0wLjIxMDE5NSwtMC4xNzM5NjggLTAuMDUyMDEsLTAuMjg1MjQ1IDEuMzk3NTEyLC0wLjk4MzA5NyAyLjgxMTQ5LC0xLjM1MzU1MyA1Ljc0NTk0LC0yLjk4NDQwNyA2Ljg4Nzk2MywtMy44MjgwNjQgMC42ODc2NzYsLTAuNTA4MDEzIDAuOTY0NzI1LC0wLjgzOTkxNCAxLjQwNjAxOSwtMS42ODQzOTUgMC43NjE0MiwtMS40NTcwOTQgMS4wNDIzMzcsLTIuNzM4Mjk2IDAuOTg1OTg2LC00LjQ5Njg3NiAtMC4wNDEyOCwtMS4yODgyOTQgLTAuMTA5NDY5LC0xLjU0NDI2IC0wLjQyODYwNSwtMS42MDg5MyAtMS41MTQzOCwtMC4zMDY4NzUgLTIuNTE5NzE5LC0wLjcyNTY3NiAtMy4yMjY0MzQsLTEuMzQ0MDYgLTAuNDgxODU3LC0wLjQyMTYzIC0wLjQ3NzUzNSwtMC4zNzUzODQgLTAuMTQ5MjU5LC0xLjU5NzIwNCAwLjI4NzA4OSwtMS4wNjg1MTkgMC41MjQ2MjEsLTIuNTgxNTkyIDAuNTQ4MDU3LC0zLjQ5MTA5NyBsIDAuMDIwMjIsLTAuNzg0NTE2IC0xLjM5OTg5MiwtMC4wMjE0NSBjIC0xLjY4NTcyOSwtMC4wMjU4MyAtMS43ODU0MzksMC4wMTA1OSAtMi4xNjU3OCwwLjc5MTE4NyAtMC4yOTg3MDYsMC42MTMwNSAtMC40MDA3NzcsMS4wNjg0ODEgLTAuNzUwNTY3LDMuMzQ4OTc3IC0wLjQzMDA5OCwyLjgwNDA3OCAtMC43MjY0MTYsNC4wNjcxNDcgLTEuMjk3NzczLDUuNTMxODIzIC0xLjk5OTAzMyw1LjEyNDUyNSAtNi4zMDMxNTIsOC40NjczMTQgLTEyLjYxOTUyMjEsOS44MDA5MzcgLTIuMDEyNDQ2LDAuNDI0OTAyIC00LjQwMDUxMzMsMC42MjQ0NDIgLTUuMDkxMjA1LDAuNDI1NDA0IHogTSA0MC4wMjY1ODgsNTEuNjI4MjE2IGMgMC41MDIzMDYsLTAuMjAxMTMzIDIuMDEzODY2LC0wLjY1MzAzMiAyLjgzMjY3MiwtMC44NDY4NjEgMC40MDQxOTYsLTAuMDk1NjggMC43ODgyNzksLTEuMDk3NzY0IDAuNDY3ODgxLC0xLjIyMDcxMSAtMC4wNjYyOCwtMC4wMjU0MyAtMC41NTE2OTgsLTAuMTE4NTI0IC0xLjA3ODcxLC0wLjIwNjg2NiAtMS4xMDg0OTYsLTAuMTg1ODE1IC0xLjgwODY2NywtMC40ODAzODYgLTIuMTIzNzU4LC0wLjg5MzQ5MSAtMC4xOTMwODQsLTAuMjUzMTQ2IC0wLjgzOTg4NCwtMS43NDM1ODEgLTEuODE2Mjc2LC00LjE4NTI4NiAtMC41MzU4MDYsLTEuMzM5OTEyIC0wLjU4OTk3NSwtMS4zNzAzNDQgLTEuMDQ3MzYxLC0wLjU4ODM4NyAtMC4xNzAzNjEsMC4yOTEyNTIgLTAuMzMxOTE3LDAuNjA1IC0wLjM1OTAxNCwwLjY5NzIxOCAtMC4wMzE4OCwwLjEwODQ4MyAwLjMyNjk2OSwxLjMyNjk2NiAxLjAxNjU4NCwzLjQ1MTg3MSAwLjU4NjIxOCwxLjgwNjMxMSAxLjExOTcxOSwzLjQ1MTg5MyAxLjE4NTU1NywzLjY1Njg0OCAwLjA2NTg0LDAuMjA0OTU1IDAuMTY3MTU3LDAuMzcyNjQ1IDAuMjI1MTUxLDAuMzcyNjQ1IDAuMDU3OTksMCAwLjM3MTc2OCwtMC4xMDY2NDEgMC42OTcyNzQsLTAuMjM2OTggeiBtIDEyLjg4ODg3OSwtNy45ODczNjIgYyAtMC42MjM2NTQsLTAuNTY2NDY2IC0wLjg1Njg4OSwtMC42NjkzNjEgLTEuMjU3MDk0LC0wLjU1NDU4NCAtMC40NDY2OTcsMC4xMjgxMTEgLTAuODEzNTk4LC0wLjMwMTA0OCAtMC41NzIyNjUsLTAuNjY5MzY5IDAuMTczNDcyLC0wLjI2NDc1MiAwLjc0MjA0MiwtMC41MTUwNjEgMS4xNjk5NDcsLTAuNTE1MDYxIDAuMzk0NjkyLDAgMS4xNDIyODEsMC4yNDQ2OSAxLjQ4ODM2OCwwLjQ4NzE1MiAwLjI0MDkwNywwLjE2ODc3NiAwLjI4NzQ0MiwwLjUwNzE5OSAwLjEyMzc5LDAuOTAwMjU3IC0wLjA1MDU3LDAuMTIxNDY3IC0wLjA5NDcsMC4zNjE0NjQgLTAuMDk4MDYsMC41MzMzMjcgLTAuMDA0MywwLjIyMDUxIC0wLjA0MzAxLDAuMzE5NjU5IC0wLjEzMTQ4OSwwLjMzNjg3NyAtMC4wNjg5NiwwLjAxMzQyIC0wLjM5NDM5NCwtMC4yMTk5NSAtMC43MjMxOTMsLTAuNTE4NTk5IHogbSAtMC4xMDg3MzYsLTIuNDU1ODE1IGMgLTAuODE1OTI0LC0wLjQzMjg3NiAtMC45NzM3ODUsLTAuNDU5OTAyIC0xLjk2MjAyNCwtMC4zMzU5MTEgLTAuNDY1NDkyLDAuMDU4NCAtMS4wODU0MDMsMC4xMDczMzggLTEuMzc3NTgsMC4xMDg3NCAtMC40OTY3MTksMC4wMDI0IC0wLjUzNzI1MSwtMC4wMTA2NiAtMC42MjM5MiwtMC4yMDA4ODEgLTAuMDc0NTMsLTAuMTYzNTc4IC0wLjA2OTgsLTAuMjQ0MjY3IDAuMDI0MTQsLTAuNDExODcxIDAuMjA4NjgzLC0wLjM3MjI5NiAwLjQzMjk3MiwtMC40MTk5NjIgMS4xMDQ5NTgsLTAuMjM0ODI3IGwgMC41OTMzMDYsMC4xNjM0NTggMC43NzU0NjgsLTAuMjUyODA4IGMgMS4zMzMzMzIsLTAuNDM0Njc1IDIuMDAwNzgsLTAuMzg3OTE5IDIuNDA4NzE4LDAuMTY4NzM0IDAuMjIwNDI4LDAuMzAwNzg1IDAuMjcyMTIxLDAuOTY0NzMzIDAuMDkwNzIsMS4xNjUxODEgLTAuMTk5MTY3LDAuMjIwMDc2IC0wLjM0MzYxLDAuMTk2MzQ5IC0xLjAzMzc4OCwtMC4xNjk4MTUgeiBNIDUzLjIzMDU1MiwzOC43MjU5NyBDIDUyLjk1OTk0LDM4LjQyNDgxNCA1Mi44NDgxNzgsMzguMzYxMjkgNTIuNDUxNzMyLDM4LjI4MzI5NCA1MS44MDQ4LDM4LjE1NjAxOCA1MS40OTUzODQsMzcuOTMzMTQyIDUxLjQ2NTA1LDM3LjU3MjU3OCBjIC0wLjAyODA2LC0wLjMzMzQ5NSAwLjE1OTA5OSwtMC44MzAwOTMgMC4zMzg4MzcsLTAuODk5MDY1IDAuMDc3ODUsLTAuMDI5ODcgMC4yMTAxNywwLjAzMjQyIDAuMzQ2Njk2LDAuMTYzMjIxIGwgMC4yMjA3OTUsMC4yMTE1MzQgMC42MTc4NzcsLTAuMTMwNzg2IGMgMC4zMzk4MzMsLTAuMDcxOTMgMS4xNzAwNDgsLTAuMTQ5NzY5IDEuODQ0OTIyLC0wLjE3Mjk3MiAxLjE2ODU1MSwtMC4wNDAxOCAxLjIzMTAzNywtMC4wMzQ3MiAxLjMxMDgzMiwwLjExNDM3NSAwLjExMTc0NiwwLjIwODc5OCAtMC4wMTIyOSwwLjY0OTY5OCAtMC4yNDQwMjUsMC44NjczOTkgLTAuMTc2MzE2LDAuMTY1NjQyIC0wLjU0MzQ5NiwwLjM0MTY0NCAtMS4yNDkzNzksMC41OTg4NzQgLTAuMjE1MzExLDAuMDc4NDYgLTAuNDgzNDE5LDAuMjYyMTEyIC0wLjY0NzAyMiwwLjQ0MzIwMSAtMC4xNTM2NTEsMC4xNzAwNzIgLTAuMzE5NTc1LDAuMzA5MjIyIC0wLjM2ODcyMiwwLjMwOTIyMiAtMC4wNDkxNSwwIC0wLjIzMTUzNSwtMC4xNTgyMjUgLTAuNDA1MzA5LC0wLjM1MTYxMSB6IgogICAgICAgICBpZD0icGF0aDUwNDkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHN0eWxlPSJmaWxsOiNiZDQ0MzEiCiAgICAgICAgIGQ9Ik0gNS4wNDU1NzYyLDYwLjk3NTQyMiBDIDQuNjQ2MTI1Myw2MC45MjI2MTMgNC40NTcxODksNjAuODQ2ODk1IDQuNDU3MTg5LDYwLjczOTYyMyBjIDAsLTAuMDMyODkgMC40NjYxNzM0LC0wLjQ0NTYyIDEuMDM1OTQxMSwtMC45MTcxNzggMS4zNDM0NDQ4LC0xLjExMTg3NyAzLjExOTk2NzUsLTIuODg3NTU0IDQuMDc2MzI4NywtNC4wNzQzODkgMi41NTMxNzcyLC0zLjE2ODQ2NiAzLjg5OTI1NjIsLTYuMjk2MTkgNC4wNDM3MjEyLC05LjM5NTkxMyBsIDAuMDQ2NywtMS4wMDIwODUgMC41OTYwNzMsLTAuNDE4MzA2IGMgMS4yMjk3MjEsLTAuODYyOTc5IDEuODEzNDQyLC0xLjczNzI4NCAyLjAwOTc5MywtMy4wMTAyOTkgMC4wNDM5NCwtMC4yODQ4NTQgMC4wMzE0MiwtMC4zMzM0MiAtMC4wODU4OSwtMC4zMzM0MiAtMC4wNzU1MywwIC0wLjI5OTI3NCwwLjEwMzU5MyAtMC40OTcyMTksMC4yMzAyMDYgLTAuNDkyOTU2LDAuMzE1MzEzIC0xLjYzOTYyMiwwLjg1NTc3MiAtMS45NDA2MDgsMC45MTQ2NjggbCAtMC4yNDcwMywwLjA0ODM0IC0wLjA1NzA4LC0wLjc2MTM2NiBjIC0wLjA4ODY3LC0xLjE4Mjc0MyAwLjAxMzg4LC02Ljg4OTg5IDAuMTQ5Mjk3LC04LjMwODIwNiAwLjE3NjI2MSwtMS44NDYxMzcgMC4zNzMwNDUsLTMuMzcyMTkgMC40NDQ5MjIsLTMuNDUwMzU5IDAuMDM0ODUsLTAuMDM3OSAwLjM5MjQ0NywtMC4xOTg1OTUgMC43OTQ2NiwtMC4zNTcwOTggMC45NDY0NTUsLTAuMzcyOTc2IDEuODAzNTE3LC0wLjg3NzI5NCAyLjMxOTk0MiwtMS4zNjUxMTQgMC4yMjY1MjksLTAuMjEzOTgxIDAuNDExODcxLC0wLjQxNDAxNiAwLjQxMTg3MSwtMC40NDQ1MjIgMCwtMC4wMzA1MSAtMC41NzM2NzgsLTAuMDc3NjQgLTEuMjc0ODM5LC0wLjEwNDczOSAtMC43MDExNjIsLTAuMDI3MSAtMS4zOTg0LC0wLjA3ODc3IC0xLjU0OTQyLC0wLjExNDgyNSAtMC4yNTQxNTMsLTAuMDYwNjcgLTAuMjcyOTY0LC0wLjA4NTYgLTAuMjUyODU1LC0wLjMzNDk3OSAwLjAzOSwtMC40ODM1ODkgMC43ODA5NzMsLTMuMzc3OTcgMS4xOTUyOTMsLTQuNjYyNzE3IDAuNjAzODE1LC0xLjg3MjM0OCAxLjI3NDM2NywtMy41MjExMDggMi4wNzM5MDgsLTUuMDk5MzU1IDAuNjI4NDYsLTEuMjQwNTQ1IDEuNjIzNDg3LC0yLjkxMzI3MSAyLjA3NTM2MywtMy40ODg4NjcgbCAwLjE1MjIyMSwtMC4xOTM4OTcgMC42NTMzOSwwLjEzNDY4OCBjIDEuNDM4OTI2LDAuMjk2NjE4IDMuMjgxNTIsMC4zNTQ2NjIgMy4yODE1MiwwLjEwMzM3MyAwLC0wLjA1MjAyIC0wLjIyMDY0NSwtMC4yNTc0MDEgLTAuNDkwMzIyLC0wLjQ1NjM5NyAtMC4yNjk2NzgsLTAuMTk4OTk3IC0wLjgwODA1MiwtMC42NTk5MTIgLTEuMTk2Mzg4LC0xLjAyNDI1NyBsIC0wLjcwNjA2NCwtMC42NjI0NDQgMC4zMjIzNTMsLTAuMzUwMDE5IGMgMi41MTEyMTYsLTIuNzI2NzQzOCA2LjExNTMyNCwtNC45OTQ3MzQ1IDEwLjAyOTk5NSwtNi4zMTE2NzA2IDAuNTU5MTMyLC0wLjE4ODA5OCAxLjA1NjQyNSwtMC4zNDE5OTYzIDEuMTA1MDk0LC0wLjM0MTk5NjMgMC4wNDg2NywwIDAuMjc5NjExLDAuMzI2NDIyOSAwLjUxMzIwMiwwLjcyNTM4NDIgMC42MDg1MTQsMS4wMzkzMDU3IDEuNzk3NjE2LDIuMjA0ODA2MiAxLjc5NzYxNiwxLjc2MTkzNTkgMCwtMS4wMzgzOTYyIDAuMTQxMTk3LC0yLjg4NDEzMTUgMC4yMzE4NTUsLTMuMDMwODE5MyAwLjA3NTAyLC0wLjEyMTM4MTIgMC40MDM0NTUsLTAuMTkzOTA4OCAxLjc2ODY2MiwtMC4zOTA1Njc2IDMuMjg2OTU3LC0wLjQ3MzQ4OCA3LjI2NjQwMiwtMC40NDcxMDgxIDEwLjExNzY3LDAuMDY3MDcgMC40NjQwMzMsMC4wODM2ODEgMC44NjIyMDMsMC4xNzA2NTM1IDAuODg0ODIzLDAuMTkzMjczIDAuMDIyNjIsMC4wMjI2MTkgMC4wMDExLDAuMzUzNTQxOCAtMC4wNDc5MSwwLjczNTM4MzEgLTAuMDQ4OTcsMC4zODE4NDEyIC0wLjA4OTAzLDEuMTQxOTgyMiAtMC4wODkwMywxLjY4OTIwMTkgMCwxLjE1MjMwNTkgMC4wNjg2OCwxLjI0MDE2MTEgMC40OTE5MzksMC42MjkzMDcgMC4zNTI1ODMsLTAuNTA4ODUwOCAxLjczMzA1OSwtMi4yNDA5MjY3IDEuODg5NTM1LC0yLjM3MDc5MDYgMC4xMTA3NzEsLTAuMDkxOTMyIDAuMjQ2MDM1LC0wLjA2NjQ2MyAwLjk2Mzc1OSwwLjE4MTQ2NTMgMS43MDI5NTEsMC41ODgyNjEyIDMuNzQ1NzE3LDEuNTgxNzgwNSA1LjQwMjEyMywyLjYyNzM3NDUgMS44MTQ3MzQsMS4xNDU1MzggMS45NTcwMDIsMS4yNjgyNTcyIDEuNjAxMTkzLDEuMzgxMTg2NSAtMC4wOTAxOCwwLjAyODYyMyAtMC41NDAzLDAuMzAyODc4MiAtMS4wMDAyNTgsMC42MDk0NTYyIC0xLjEwMzY0MSwwLjczNTYxMzggLTIuNjkwNTMsMi4zMDY4NjM4IC0zLjM3OTIzMSwzLjM0NTkyNzggLTAuNTYzMjI1LDAuODQ5NzU2IC0xLjAwNTQwNSwxLjcwMTcwOSAtMS4yNjQ0MjEsMi40MzYxODEgLTAuMDk4OTEsMC4yODA0NjQgLTAuMjA2NTk3LDAuNTQwNjQ2IC0wLjIzOTMwNywwLjU3ODE4MSAtMC4wMzI3MSwwLjAzNzU0IC0wLjQzNTEzNiwtMC4xMTQ3NjYgLTAuODk0Mjc4LC0wLjMzODQ0NyAtMS42MTg3NjQsLTAuNzg4NjE1IC00LjAyOTc0NiwtMS40NzU3ODcgLTYuMjM4NDEsLTEuNzc4MDU3IC0xLjIwMTUzMywtMC4xNjQ0MzkgLTMuOTk3Nzg0LC0wLjE4NzUgLTUuMTM4NTgxLC0wLjA0MjM4IC0yLjY1NzY1NCwwLjMzODA4IC01LjAzMTgzMSwxLjA2OTI3MyAtNy4zNjczOTQsMi4yNjg5OTEgLTQuNjIzODYyLDIuMzc1MTU2IC04LjM4OTE0OCw2LjYxOTQzOSAtMTAuMTk2MDgxLDExLjQ5MzE2NSAtMC4zMTg1NjIsMC44NTkyNCAtMC4zNjA5MjMsMS4xODE1ODcgLTAuMTQ5OTM0LDEuMTQwOTU0IDAuMDgxOTEsLTAuMDE1NzcgMC40NjU2NDcsLTAuNjIyNyAwLjk4MzI3NywtMS41NTUxNzEgMC40NjY5MTksLTAuODQxMTE2IDEuMDA1ODc4LC0xLjc2NjA1NiAxLjE5NzY4OSwtMi4wNTU0MjQgMC43MTAwODksLTEuMDcxMjQ1IDIuODE0Mzk4LC0zLjM2Nzg5NSA0LjQxMDUwOCwtNC44MTM2NDUgMy4wNzAzNjYsLTIuNzgxMTIyIDYuNjQ5NzgsLTQuNDgzMjggMTAuNzI5Njc3LC01LjEwMjQgMS4xODEyNDYsLTAuMTc5MjUzIDQuMjU1OTY0LC0wLjIwMzkwNCA1LjMzNDcxLC0wLjA0Mjc3IDMuMTUzNjQ0LDAuNDcxMDY1IDUuODE3MjUzLDEuNDQyOTk2IDguMjU3NjY3LDMuMDEzMTYxIDAuNzE4NTA4LDAuNDYyMjg5IDAuOTAzODMyLDAuNjkxNjM1IDAuNzU2NTE3LDAuOTM2MjIgLTAuMjE0NjU1LDAuMzU2MzkyIC0yLjE5Mjg2MSwzLjEwMTY1MyAtMi4yOTI3MzQsMy4xODE3NSAtMC4yMDYxMTMsMC4xNjUzMDEgLTAuMzgyODU0LDAuMTEzNzI4IC0xLjA1NDE3OCwtMC4zMDc2MDkgLTEuOTEwNzI5LC0xLjE5OTIxNSAtNC4xMDg4MTgsLTEuOTczNDQyIC02LjQxMDUwNCwtMi4yNTc5NTggLTAuOTMyODYyLC0wLjExNTMxMyAtMi43OTAxMjcsLTAuMDk5NiAtMy43Nzg0MzQsMC4wMzE5NyAtNC4xMDQ4MTQsMC41NDY0NjQgLTcuODg3Mzc3LDIuNzc2OTAzIC0xMC4zNzE1LDYuMTE1Njk3IC0wLjU3NzYzOSwwLjc3NjM3OSAtMS4wNzIxLDEuNTg1NTM5IC0xLjA2OTgwNiwxLjc1MDY4MyAwLjAwMTEsMC4wNzY1NyAwLjk0NTQyNiwxLjEyNTM3IDIuMDk4NTgxLDIuMzMwNjczIDIuMjU0OTUzLDIuMzU2OTI0IDIuNDY5MTM1LDIuNTI3NzI0IDMuMjczOTI5LDIuNjEwNzg1IDAuNTU1MjU5LDAuMDU3MzEgMC45ODMyNzUsLTAuMDg3NTggMi4wNTE2MDUsLTAuNjk0NDk3IDYuNDE3NTk5LC0zLjY0NTgyMSAxMS41NjU1OTIsLTUuMzc4MDU0IDE3LjAxMTYzMywtNS43MjQxOTQgMy43NDkxMzIsLTAuMjM4Mjg4IDUuNjUzOTYzLDAuNTU5NTg5IDUuNjM2NzM3LDIuMzYxMDU4IC0wLjAwOTIsMC45NTgwMjEgLTAuNTI4MDU3LDEuODk2OTg1IC0xLjc1MTk3MywzLjE3MDI3NyAtMC43OTQ4OTksMC44MjY5NjcgLTIuMjQzMDM5LDIuMDM4MTUyIC0yLjM1NDUxOCwxLjk2OTI1NSAtMC4wMzY4MSwtMC4wMjI3NSAtMC41Njg1NTUsLTAuNzY0NjU4IC0xLjE4MTY1NiwtMS42NDg2ODggLTAuNzYxMDM3LC0xLjA5NzMzNCAtMS4xNjAyLC0xLjYwNzMyNiAtMS4yNTgwMzQsLTEuNjA3MzI2IC0wLjA3ODgyLDAgLTAuMjMyOTc2LDAuMDk2NzEgLTAuMzQyNTc1LDAuMjE0OTA1IC0wLjE5NTc4NiwwLjIxMTE0NiAtMC4yMjAyNywwLjI5MzM3MiAtMC4zMjExNTYsMS4wNzg1MTQgLTAuMDI3NjUsMC4yMTUxNzMgLTAuMDk4ODgsMC40ODUyMjkgLTAuMTU4Mjk2LDAuNjAwMTI1IC0wLjE0MjY1NSwwLjI3NTg2MyAtMC42ODIxMDksMC43MzE5MDkgLTEuMTExODYxLDAuOTM5OTQ4IC0wLjQ2NjM0NCwwLjIyNTc1NCAtMC44MzExNTYsMC4xNjYwMTggLTEuNTE3MDUyLC0wLjI0ODQwNyAtMC44OTU1MzEsLTAuNTQxMDg4IC0xLjQ3MDAwMSwtMC43MTgyMzggLTIuNDY5ODk4LC0wLjc2MTY0NCAtMi4yNDc0NTIsLTAuMDk3NTYgLTQuNjc1NTg1LDAuNjUzNjUyIC03LjM2OTQ2MiwyLjI3OTk2NiAtMS4wNDgwNzYsMC42MzI3MyAtMS44NTY5NjIsMS4yMjc5MjIgLTEuODI3OTgzLDEuMzQ1MDU4IDAuMDEyOTgsMC4wNTI0NiAwLjk1OTEzMSwxLjc4MzcyNiAyLjEwMjU2MywzLjg0NzI2NiAyLjI3NzQ4Miw0LjExMDE0NiAyLjU0MDU0OSw0LjQ5MDQwMyAzLjQzNzEwNyw0Ljk2ODI2NSAwLjkyMDYzMywwLjQ5MDY5MiAxLjA1MDg5MywwLjUwMzY5NiA1LjYyNDA1NiwwLjU2MTQ3MSA0LjQ3ODE0NSwwLjA1NjU3IDQuNTQzMDExLDAuMDYyODIgNC45OTAzMDcsMC40ODA2NiAwLjIxNDI2MiwwLjIwMDE1IDAuMjcyMTQ3LDAuNDA1MzUxIDAuMjI4NDc5LDAuODA5OTQxIC0wLjAzNzMxLDAuMzQ1NzA4IC0wLjI3NDQ4LDAuNTA3NTI0IC0xLjc0Mzg1OCwxLjE4OTgyIC0xLjg5OTE1MiwwLjg4MTg1OCAtMy4yMzU3ODksMS42MTIwMTUgLTMuNjA1ODY2LDEuOTY5NzU3IC0wLjYzMjQ2NCwwLjYxMTM4MiAtMC44NzA1MTUsMS41ODMwMzkgLTAuODMzNzk2LDMuNDAzMzIyIDAuMDIyOTcsMS4xMzg3OTkgMC4wMjA0NCwxLjE1ODg1MSAtMC4xNzI4MTQsMS4zNjgzNSAtMC4zOTUyMTcsMC40Mjg0MzQgLTYuNjY2ODAyLDQuNTA0MjY2IC03Ljk1Njg0Nyw1LjE3MTA2NiAtMC40MDM1MSwwLjIwODU2NiAtMC41NDMsMC4yMzk0MzYgLTEuMDU5MDk3LDAuMjM0Mzg5IC0wLjU0NDQ1NCwtMC4wMDUzIC0wLjY4OTkzMiwtMC4wNDYgLTEuNzMxOTI5LC0wLjQ4NDIwMSAtMS42OTIwMzksLTAuNzExNTczIC0yLjIzMTM3NSwtMC44MzY2MyAtMy42MDg3NzUsLTAuODM2NzcyIC0xLjExOTI3NiwtNy45ZS01IC0xLjE3MTU3NSwwLjAwNzggLTMuMjU1NzQyLDAuNDkyOTUyIC01LjI3NjM4OSwxLjIyODIzMSAtNi41Mzc5MiwxLjQ5MDQ3MyAtNy41NjY5MTksMS41NzI5ODYgLTAuNTYwMTgxLDAuMDQ0OTIgLTEuMTE2NzI1LDAuMDY2MTUgLTEuMjM2NzY0LDAuMDQ3MTkgLTAuMTIwMDQsLTAuMDE4OTcgLTAuMzUwNjQxLC0wLjA1NTIxIC0wLjUxMjQ0OCwtMC4wODA1NSAtMC4xNjQzNDQsLTAuMDI1NzMgLTAuMjk0MTk0LC0wLjA5MDc5IC0wLjI5NDE5NCwtMC4xNDc0MDEgMCwtMC4wNTU3MyAwLjk5NzMxNywtMC42MDAyOTcgMi4yMTYyNTksLTEuMjEwMTM2IDMuNjgxMjcsLTEuODQxNzQ5IDYuMDA4MDIxLC0zLjIwNzIwNSA2Ljc0NzgyLC0zLjk1OTk2NyAxLjIzMjg1MiwtMS4yNTQ0NTIgMi4wMzYxNDMsLTQuMDM2MzI5IDEuNzk3MjYyLC02LjIyNDA5MSAtMC4wNDkyNSwtMC40NTEwODcgLTAuMTIzNDE1LC0wLjg4MzQzMiAtMC4xNjQ4MDQsLTAuOTYwNzY3IC0wLjA1MjMzLC0wLjA5Nzc3IC0wLjI0OTg1NCwtMC4xNzE0MjggLTAuNjQ4NDEsLTAuMjQxNzc2IC0xLjEzMDE5MywtMC4xOTk0ODkgLTIuMzA3Mzk2LC0wLjczODQ0MyAtMi45OTQ4MzIsLTEuMzcxMTExIC0wLjIzODA1NCwtMC4yMTkwODkgLTAuMjkyNzM3LC0wLjMxNzQ3IC0wLjI1MzY0NiwtMC40NTYzNDQgMC40OTY4MjUsLTEuNzY0OTg2IDAuNzQwNDkzLC0zLjA3MDE0MiAwLjgwNzAzOCwtNC4zMjI3MTcgMC4wNDAwMSwtMC43NTMwNTMgMC4wMjg0NCwtMC45NDI0MDcgLTAuMDYxMDUsLTAuOTk5MDU3IC0wLjE1Njc2NCwtMC4wOTkyNCAtMi41MjU3OTIsLTAuMDg5NTkgLTIuNzkyMjczLDAuMDExMzggLTAuNDc4MjMsMC4xODExOTYgLTAuODUyMjU2LDAuNzQxODkzIC0xLjA3MzA3OSwxLjYwODYzNCAtMC4wNjUxNywwLjI1NTgwOSAtMC4yNDY3NjUsMS4yOTQ3MzQgLTAuNDAzNTM2LDIuMzA4NzIxIC0wLjUzNjMwNywzLjQ2ODc5NyAtMS4wMTc2NTMsNS4yNjE2ODYgLTEuODczNTY3LDYuOTc4NTUxIC0xLjUzODI3OSwzLjA4NTYxIC0zLjgzOTg5Myw1LjMxNjYzMyAtNy4xMjMwOTQsNi45MDQ2MjUgLTEuMTI2MDI3LDAuNTQ0NjI4IC0yLjE5MjQ1MSwwLjk0NzA0MiAtMy40MzczODEsMS4yOTcwOTMgLTEuOTY2Mzg4MywwLjU1MjkxMiAtNS4xNDU5NTY0LDAuOTc3OTMxIC02LjIzNjkwNDgsMC44MzM3IHogbSAzNS4xODEzODU4LC05LjM4NDY1IGMgMC40MDc2MTcsLTAuMTU4OTIzIDEuMjE0OTUsLTAuNDA4Mjg5IDEuNzk0MDczLC0wLjU1NDE0NyAxLjE0NTQ2LC0wLjI4ODQ5NSAxLjE4NzIyOSwtMC4zMTYyMTEgMS4zOTM3NzgsLTAuOTI0ODY0IDAuMTEyMywtMC4zMzA5MjQgMC4xMTQ0MzEsLTAuMzk1MjM2IDAuMDE2MzQsLTAuNDkzMzIzIC0wLjA2MjA0LC0wLjA2MjA0IC0wLjU5OTUyNSwtMC4yMDEwOTMgLTEuMTk0NDIxLC0wLjMwOTAxOCAtMS41NTQwNCwtMC4yODE5MyAtMi4wMDc4MDQsLTAuNTUxNzk5IC0yLjQwMjk4NywtMS40MjkxMzYgLTAuMDkxNDUsLTAuMjAzMDM0IC0wLjU1MjYyMSwtMS4zMjIzNCAtMS4wMjQ4MTcsLTIuNDg3MzQ3IC0wLjQ3MjE5NiwtMS4xNjUwMDYgLTAuOTAzOTU2LC0yLjE2MzYyIC0wLjk1OTQ2NywtMi4yMTkxNDEgLTAuMDU1NTEsLTAuMDU1NTIgLTAuMTUzOTE1LC0wLjA4MDYxIC0wLjIxODY3NiwtMC4wNTU3NiAtMC4xNTk0NTgsMC4wNjExOSAtMC43NzMwNzgsMS4xNTI2MzcgLTAuNzczMDc4LDEuMzc1MDc0IDAsMC4yMTczMzggMi4yNTgxNTYsNy4yMTMzMDkgMi4zNzQzODEsNy4zNTYwNDggMC4wNDU1MiwwLjA1NTkgMC4xMjEyMywwLjA4NTY0IDAuMTY4MjUyLDAuMDY2MSAwLjA0NzAyLC0wLjAxOTU0IDAuNDE5MDAxLC0wLjE2NTU2IDAuODI2NjE4LC0wLjMyNDQ4MyB6IG0gMTIuNzkzNDYzLC03LjkyMjA3IGMgLTAuNTQ0OTg4LC0wLjU1MTg0MyAtMC44NTU0OTQsLTAuNzAxODczIC0xLjMyMDY1NywtMC42MzgxMTYgLTAuMjcwNTEsMC4wMzcwOCAtMC4zODg4NjIsMC4wMTc3MiAtMC40OTg1MTgsLTAuMDgxNTEgLTAuMzQ5NDg5LC0wLjMxNjI4MiAwLjAwNzEsLTAuNzg4Mjc4IDAuNzMzMzY5LC0wLjk3MDgzMSAwLjMyMjU5MywtMC4wODEwOCAwLjQ0MDgyMiwtMC4wNzA0NSAwLjk3MjcxNywwLjA4NzQ1IDAuOTgyNTMyLDAuMjkxNjgxIDEuMjAzMTQyLDAuNTc5NzYxIDAuOTM1MTUyLDEuMjIxMTUzIC0wLjA2NDcyLDAuMTU0OTAzIC0wLjExNzY3OCwwLjQwMDg5MSAtMC4xMTc2NzgsMC41NDY2NDEgMCwwLjM5MDcwOSAtMC4yMDI2MDEsMC4zNDMzMTIgLTAuNzA0Mzg1LC0wLjE2NDc4MyB6IG0gLTAuMzkzOTM4LC0yLjYwNDIxNiAtMC42NjY4MzgsLTAuMzU4MDE2IC0wLjU4ODM4OCwwLjA1MjA5IGMgLTEuNzg2MTg0LDAuMTU4MTQzIC0yLjMxOTI1MywwLjE4MTQ4MiAtMi40MTIzODcsMC4xMDU2MiAtMC4xNTg2MTYsLTAuMTI5MjAxIC0wLjExNDA4LC0wLjQ4ODk4MSAwLjA4MzUxLC0wLjY3NDYwNSAwLjIxMzQzNSwtMC4yMDA1MTEgMC40NTgzMjQsLTAuMjE0NjQzIDAuOTE2NzUsLTAuMDUyOSAwLjQ0OTQ0OCwwLjE1ODU3NSAwLjc1MTI1MywwLjE0ODIxNSAxLjMwMTc4MywtMC4wNDQ2OSAxLjI3MjEwMSwtMC40NDU3MzEgMS45NTYyMjEsLTAuNDMyMTg3IDIuMzc3MDA0LDAuMDQ3MDYgMC4yNjcyNSwwLjMwNDM4MiAwLjM5MDIzOCwwLjg2MTU0MyAwLjI0ODU5NiwxLjEyNjIwMiAtMC4xMzk2ODEsMC4yNjA5OTcgLTAuNTA5Nzg2LDAuMjAyMDI2IC0xLjI2MDAyOCwtMC4yMDA3NjggeiBtIDAuNjQxNDE4LC0yLjM1NzMyNCBjIC0wLjMyNjA1OCwtMC4zMzY1MTQgLTAuNDM4ODI3LC0wLjQwMDEyOSAtMC44NTQxNTIsLTAuNDgxODM5IC0wLjY2NTE4OSwtMC4xMzA4NjggLTAuODg1NTg4LC0wLjMxOTUxNSAtMC44ODU1ODgsLTAuNzU4MDAzIDAsLTAuNDA5MDM4IDAuMTM1Njg1LC0wLjc0MzI4NyAwLjMwMTcyOSwtMC43NDMyODcgMC4wNjU4LDAgMC4yMDEzMzQsMC4wNzY3NCAwLjMwMTE3OSwwLjE3MDU0NSBsIDAuMTgxNTM4LDAuMTcwNTQ2IDAuODQzMzksLTAuMTI5MjcgYyAwLjkxMzI0NCwtMC4xMzk5NzYgMi43NDM5MjgsLTAuMjA3ODExIDIuOTAyNzQ1LC0wLjEwNzU2IDAuMTc5Nzg1LDAuMTEzNDg3IDAuMTA5NzIzLDAuNTA0NjE0IC0wLjE0MTY4MiwwLjc5MDk0OCAtMC4xNzM1MTEsMC4xOTc2MTggLTAuNDI4MTgxLDAuMzQ0MTEyIC0wLjkyMTgwNywwLjUzMDI1MSAtMC41MjA4OTQsMC4xOTY0MjIgLTAuNzYxMTc1LDAuMzM4NSAtMS4wMTY4NzksMC42MDEyODIgbCAtMC4zMzQ4MTksMC4zNDQwODggeiIKICAgICAgICAgaWQ9InBhdGg1MDQ3IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDojYWMyMTMzIgogICAgICAgICBkPSJtIDQuODE2NjkzNCw2MC44OTc0NjQgYyAtMC4xMjU4ODU1LC0wLjAyNzI2IC0wLjI0MTYyNTksLTAuMDg3ODcgLTAuMjU3MjAwOSwtMC4xMzQ3MDggLTAuMDE1NTc1LC0wLjA0NjgzIDAuMzIxNjc1MywtMC4zNzE1OTcgMC43NDk0NDUxLC0wLjcyMTY5NyA0Ljk3Nzk1NzQsLTQuMDc0MTIxIDcuODU4ODI1NCwtOC42MTMzODcgOC4zMjU2MDE0LC0xMy4xMTgzMTUgMC4wNDI0NywtMC40MDk5MSAwLjA3Nzg0LC0wLjkyNDQwMSAwLjA3ODU4LC0xLjE0MzMxNCBsIDAuMDAxNCwtMC4zOTgwMjQgMC41NTEwMjUsLTAuMzc2NDk4IGMgMC42NzE3MTksLTAuNDU4OTY2IDEuMzgzNzU4LC0xLjIyMDM5NCAxLjY2OTY2NiwtMS43ODU0OCAwLjIwNTQ4NiwtMC40MDYxMzcgMC40NzQ0MjgsLTEuNTIzMDA0IDAuMzk2OTMzLC0xLjY0ODM5MyAtMC4wNzQ3NiwtMC4xMjA5NjIgLTAuMjU3NTg4LC0wLjA1NjI5IC0wLjgxODUyMiwwLjI4OTU1MyAtMC42MjE4NjUsMC4zODM0MDggLTEuNjE5OTc4LDAuODI1NzY4IC0xLjg2MzIwNSwwLjgyNTc2OCAtMC4xNDcwMDUsMCAtMC4xNTU4MDksLTAuMDg2NjcgLTAuMjA5MTc4LC0yLjA1OTM1NSAtMC4wODA2OSwtMi45ODI0NTYgMC4xMDY3NzIsLTYuNjkzMjQ0IDAuNDc0Mzc2LC05LjM5MDI4MyAwLjA2NzMxLC0wLjQ5Mzg0MiAwLjEzNjc3NCwtMC45MjExOCAwLjE1NDM2NCwtMC45NDk2NDIgMC4wMTc1OSwtMC4wMjg0NiAwLjI1MzcxMSwtMC4xMzIwNjUgMC41MjQ3MTQsLTAuMjMwMjMyIDAuNjU2MzI1LC0wLjIzNzc0MyAxLjQ5Mjg2OCwtMC42NjEzMTEgMi4wMjI1MzksLTEuMDI0MDc2IDAuNTQxMDA4LC0wLjM3MDUyOCAxLjA1NDY2NSwtMC44OTcwOTkgMC45ODUwMjIsLTEuMDA5Nzg0IC0wLjAzMzU4LC0wLjA1NDMzIC0wLjQxNjA1NSwtMC4wODYxMSAtMS4wNDg0OTEsLTAuMDg3MTEgLTAuOTMzOTUxLC0wLjAwMTUgLTEuOTQxMTUsLTAuMDk0MDUgLTIuMDM0MDUsLTAuMTg2OTUyIC0wLjA1MzkxLC0wLjA1MzkxIDAuMzA4MDMxLC0xLjY5ODM0IDAuNjU3ODQyLC0yLjk4ODc2MSAxLjAyMDcwNywtMy43NjUyOSAyLjM5MTI2NiwtNi45NDE3OTUgNC4xNTcwODIsLTkuNjM0NzQzIDAuNTMyMTkzLC0wLjgxMTYxOSAwLjY4NjgzMiwtMC45OTYyNDQgMC44MDM0MzUsLTAuOTU5MjM2IDAuNTgzNjIzLDAuMTg1MjM1IDEuNDExODY3LDAuMjkzNjc2IDIuNTM5NTQ4LDAuMzMyNDk5IDEuMjgwNDM0LDAuMDQ0MDggMS4zMTQwNjUsMC4wNDExOSAxLjMxNDA2NSwtMC4xMTMwMDYgMCwtMC4xMDQ2OTQgLTAuMTkyNDgsLTAuMzAzNDI3IC0wLjU2ODc3NCwtMC41ODcyNTMgLTAuNjEyOTM2LC0wLjQ2MjMxNCAtMS43ODQ3NzUsLTEuNTI5NTM4IC0xLjc4NDc3NSwtMS42MjU0NCAwLC0wLjExMzY4NCAxLjc3NDM4NiwtMS44MTE5MTQgMi41MTA0NTIsLTIuNDAyNzA1MSAxLjI1NTYxOCwtMS4wMDc3OTk5IDIuOTMyMzA0LC0yLjA4NTc3MjUgNC4zNTY3NTksLTIuODAxMDQwNyAxLjIzNDYxNSwtMC42MTk5NDM3IDQuMDU0MTEzLC0xLjcwNDMwMzUgNC40MzE0NDMsLTEuNzA0MzAzNSAwLjEwMTYwNSwwIDAuMjMzNzcxLDAuMTY1NjQ0MSAwLjQyOTc3NSwwLjUzODYzODggMC4zMzc1NTEsMC42NDIzNjE3IDAuODgxNzI5LDEuMzMxNDUwOCAxLjM4ODk5NCwxLjc1ODg3NCAwLjU0MzkyLDAuNDU4MzA4NSAwLjYxMTMxNSwwLjM5MzU3ODIgMC42MTI5NzEsLTAuNTg4NzI3OCAwLjAwMTUsLTAuODk5NTI4MSAwLjEyNjU4OSwtMi4yNjE3MDQ4IDAuMjE1NDc5LC0yLjM0Njc5MTkgMC4wMzE3NiwtMC4wMzA0IDAuNDk5MDMzLC0wLjEyOTA1MyAxLjAzODM4OCwtMC4yMTkyMjk3IDMuMjk3MDI4LC0wLjU1MTI0MTggNi44NzgwOTUsLTAuNjA3NDgzNyAxMC4wMDI1ODIsLTAuMTU3MDkzOSAxLjQ0ODU1MiwwLjIwODgwNjQgMS43MDYyOTEsMC4yNzg4OTUzIDEuNjUzNTIsMC40NDk2NTM0IC0wLjE5NzEwNSwwLjYzNzc5MjEgLTAuMjY2OTU4LDMuMDM0OTgxOCAtMC4wOTUyOCwzLjI2OTc2NTQgMC4xMjczMzIsMC4xNzQxMzggMC4wNjQxNiwwLjIzNzIwNzMgMC45NDE0NzMsLTAuOTM5OTI2OCAwLjg3NzQzNCwtMS4xNzcyOTcgMS40NTEyNTQsLTEuODQzNjEzMSAxLjU4NzY4NiwtMS44NDM2MTMxIDAuMjM1MDA1LDAgMi4yNzcwMzEsMC44MDYxNTgxIDMuMzg0MTU3LDEuMzM2MDA5OSAwLjYxNDMzNSwwLjI5NDAxMDggMS41NDk4NzEsMC43ODk2ODg0IDIuMDc4OTY4LDEuMTAxNTA1OCAwLjk3NDA1NywwLjU3NDA1MDEgMi4zMDQ5LDEuNDUxNTExNyAyLjM3NjAwOSwxLjU2NjU2ODYgMC4wMjEzNCwwLjAzNDUyMiAtMC4yMzUxMzQsMC4yMjg3Nzk4IC0wLjU2OTkzNCwwLjQzMTY4MzggLTEuNDEzNTg5LDAuODU2NzAwOCAtMi45MzQ3NzksMi4yODk2MDk4IC0zLjg0NjM2MywzLjYyMzE0MzggLTAuNTE2MSwwLjc1NDk5MSAtMS4xNTI0NzIsMS45NzE4OTUgLTEuMzk1OTE5LDIuNjY5MzQ4IC0wLjA3OTA3LDAuMjI2NTI5IC0wLjE3Mjk3NCwwLjQxMTg3MSAtMC4yMDg2NzYsMC40MTE4NzEgLTAuMDM1NywwIC0wLjMxODg3MywtMC4xMjc4OTMgLTAuNjI5MjcsLTAuMjg0MjA3IC0xLjg1Njc1OSwtMC45MzUwNDkgLTQuNDgzMjk1LC0xLjY1MTUxIC03LjAzMzE5MiwtMS45MTg0OTkgLTEuMzE2Mjk0LC0wLjEzNzgyNCAtNC4yNjE4NzksLTAuMDUzNjkgLTUuNDk5OTU0LDAuMTU3MDg3IC00LjM4NzU0MiwwLjc0Njk3NCAtOC4yNjQzMDksMi42OTQ0NzggLTExLjM5ODE3OSw1LjcyNTkwOCAtMi40MDc0MTgsMi4zMjg3MjQgLTQuMTgxMzI1LDUuMDM5MzAzIC01LjI4MjQ1Myw4LjA3MTczMyAtMC4yOTI4MjksMC44MDY0MyAtMC4zMjAwMiwwLjk5NzY2MiAtMC4xNTEwNzYsMS4wNjI0OTEgMC4xOTU5MzgsMC4wNzUxOSAwLjM5MzY4OSwtMC4xODc1NDggMS4wMjEyNDIsLTEuMzU2ODQ0IDEuMTc3MjkyLC0yLjE5MzYwOSAxLjYzNjMxNCwtMi44NDk5ODIgMy4xNTcyNjgsLTQuNTE0NzAxIDEuODM3MjE4LC0yLjAxMDg3NiAzLjQwMjkxNCwtMy40MDUzMiA1LjA2ODk0NCwtNC41MTQ1MTUgMy4yNzM5NDMsLTIuMTc5Njk3IDYuOTg4MzAxLC0zLjI5MTQyMSAxMC45OTY4OTksLTMuMjkxNDIxIDIuNjQ5MjgsMCA0Ljk3NDAyNSwwLjQ0MzM1MSA3LjQyOTUwOSwxLjQxNjg3OCAxLjY1NjM2MSwwLjY1NjY5OSAzLjk0NjI2NiwxLjk3MDIxOCA0LjAzMjI5MywyLjMxMjk3NiAwLjA1NjcyLDAuMjI1OTkzIDAuMTQ0NDI0LDAuMDgwODEgLTEuMTcwODc2LDEuOTM4Mjc1IC0wLjkxNDQzNCwxLjI5MTM2NSAtMS4xMjkwODgsMS41NDk0MiAtMS4yODg4MjQsMS41NDk0MiAtMC4xMDU0MSwwIC0wLjUxNDc1NCwtMC4yMDAzNTIgLTAuOTA5NjUzLC0wLjQ0NTIyNyAtNi4wNTg0NzEsLTMuNzU2ODM4IC0xMy45Mjk1NDUsLTIuODI0NjEyIC0xOS4wMjEwNTgsMi4yNTI3OTYgLTEuMTYxNzk5LDEuMTU4NTggLTIuNjY2OTk2LDMuMjIzNTY3IC0yLjU5MTIxNiwzLjU1NDkwMiAwLjA0NDYyLDAuMTk1MDgxIDQuMDczNjM2LDQuMzczNTcyIDQuNDQyOTY1LDQuNjA3Nzk0IDAuNDgyNzIxLDAuMzA2MTMyIDEuMDgyODExLDAuNDIxODIgMS42MDY1NjcsMC4zMDk3MiAwLjI1OTMwNCwtMC4wNTU1IDAuOTk5ODksLTAuNDE0NDU5IDIuMDE3OTA1LC0wLjk3ODA3MSA0Ljg4Mjg1MSwtMi43MDMzMjggOC44NDMxNDQsLTQuMjQwODIxIDEyLjgyNjg0MSwtNC45Nzk3MjUgMi4zMTA4OTUsLTAuNDI4NjI5IDUuMjQ1OTc0LC0wLjU5NTQ0NyA2LjUyNTkwNCwtMC4zNzA5MDUgMS4yNjgzLDAuMjIyNTAxIDIuMDUzMDQsMC42Mzc0ODcgMi40MzUzNTQsMS4yODc4NjUgMC4xODU1NjYsMC4zMTU2NzggMC4yMTc1ODIsMC40NTY3MiAwLjIxNzU4MiwwLjk1ODUyOSAwLDAuNTE0NjU0IC0wLjAzNTQ1LDAuNjYyMTIxIC0wLjI4Mjg5MiwxLjE3Njc3NSAtMC4xNTU1OTEsMC4zMjM2MTMgLTAuNDQzMjgzLDAuODAwMjA2IC0wLjYzOTMxNCwxLjA1OTA5NyAtMC41ODAzOTcsMC43NjY1MDUgLTIuMzYzNzcsMi40Mjk3NTUgLTMuMDE1MTE2LDIuODEyMDI3IC0wLjA2MDQxLDAuMDM1NDUgLTAuNDk3MDIxLC0wLjUyNTM5OCAtMS4yNDEyMDYsLTEuNTk0NDA4IC0wLjc0ODI4NiwtMS4wNzQ5MDMgLTEuMTk1NTQ3LC0xLjY0OTEwMyAtMS4yODQ1MzEsLTEuNjQ5MTAzIC0wLjM0Mzg1NiwwIC0wLjcxNDAyNiwwLjYxNjM3NCAtMC43MTY5ODcsMS4xOTM4NjcgLTAuMDAzMywwLjY1MDQ2MyAtMC40Mzg1NzksMS4yNTQ2NzEgLTEuMTc0MTA4LDEuNjI5OTA5IC0wLjQ5NTg2OCwwLjI1Mjk3NCAtMC43NzY0MzUsMC4yMDcwMyAtMS42Nzg5NzYsLTAuMjc0OTM1IC0xLjIxMDIwMiwtMC42NDYyNTkgLTEuNDUzNjUzLC0wLjcwNjg5OCAtMi43OTM3MSwtMC42OTU4NTIgLTEuNjU4NzUxLDAuMDEzNjcgLTIuOTgzODQxLDAuMzMxNTY3IC00Ljg3Nzg2NCwxLjE3MDIxNyAtMS41NzQyOCwwLjY5NzA3MiAtMy45MDg3MTksMi4xNzkyMiAtMy45MDg3MTksMi40ODE2NjcgMCwwLjE1NTI3NSAzLjc5NTI0OSw3LjA2MTk1OCA0LjIzODk5Nyw3LjcxNDIyNSAwLjMyMDU5MSwwLjQ3MTI0IDAuOTI1MDY3LDEuMDAyNTg4IDEuNDEwODg5LDEuMjQwMjA2IDAuODg2OTM0LDAuNDMzODAyIDEuMTc1MDMyLDAuNDYwMDM4IDUuNjQ3MTQ5LDAuNTE0MjUyIDQuMDAxODUyLDAuMDQ4NTEgNC4xMjkxMjUsMC4wNTQ3NCA0LjQ4NTc4NSwwLjIxOTU3IDAuNTU1MzEsMC4yNTY2MzMgMC43NDU1NzUsMC43MjA0MyAwLjQ5NDYyNSwxLjIwNTcxNCAtMC4wODU3NSwwLjE2NTgyOCAtMC4yNzczMTIsMC4zMDEzODUgLTAuNjg2NDUyLDAuNDg1NzcyIC0wLjMxMjEyOCwwLjE0MDY2NiAtMS4zNzY4OTQsMC42NTg1MyAtMi4zNjYxNDYsMS4xNTA4MDkgLTEuNDY5NiwwLjczMTMxMiAtMS44NzMyMTEsMC45NjgyMzcgLTIuMjA2MjY3LDEuMjk1MTA3IC0wLjY4ODkxLDAuNjc2MTEzIC0wLjkzMDgyOSwxLjY2NjcyMiAtMC44NDczNjUsMy40Njk4MDUgMC4wNDM2NiwwLjk0MzE3NSAwLjAzNTk5LDEuMDIzMTk0IC0wLjExNjM5NywxLjIxMzkzMSAtMC4zOTIwNDksMC40OTA3MjIgLTYuODU5MzQ0LDQuNzA0NSAtOC4xMzI3NTMsNS4yOTg5MTIgLTAuNzM5MTYyLDAuMzQ1MDMyIC0xLjM2Nzk2NywwLjI0NDY3NiAtMi45OTU4MTgsLTAuNDc4MTI3IC0xLjA3NjU0MywtMC40NzgwMDkgLTIuMDI2MzMyLC0wLjY4NjY3MiAtMy4xNjI2MzQsLTAuNjk0ODExIC0wLjUzOTM1NSwtMC4wMDM5IC0xLjE5MjQ2NSwwLjAzODMgLTEuNDUxMzU1LDAuMDkzNjkgLTAuMjU4ODkxLDAuMDU1NCAtMS45ODg3NDksMC40NDc5MDYgLTMuODQ0MTMsMC44NzIyNDQgLTQuMzE1Nzc2LDAuOTg3MDUgLTQuODkxNzcyLDEuMDk1NTQ0IC02LjA4MDAwMSwxLjE0NTIxOCAtMC45NDcyNjQsMC4wMzk2IC0xLjQxNDc5OSwtMC4wMTQ0NyAtMS40NjUyOTYsLTAuMTY5NDc1IC0wLjAxMzI5LC0wLjA0MDggMS4xMTQxMTIsLTAuNjQ2NTk3IDIuNTA1MzQsLTEuMzQ2MjI1IDMuNjk3MjMxLC0xLjg1OTI4MiA1LjU3NzA4MSwtMi45Njg1NjIgNi4zOTA1MDMsLTMuNzcwOTY3IDAuNzE0OTI5LC0wLjcwNTI0NyAxLjQ2NDMzNSwtMi4zNTI3NDYgMS43MDkzNzMsLTMuNzU3ODk2IDAuMTk1NjU5LC0xLjEyMTk5IDAuMTI5MjM0LC0zLjMzOTM4MSAtMC4xMDcxMTYsLTMuNTc1NzMxIC0wLjAzNTg5LC0wLjAzNTg5IC0wLjM3OTU3MSwtMC4xMzAyMDcgLTAuNzYzNzM4LC0wLjIwOTU5NyAtMS4xMjMzMDMsLTAuMjMyMTM1IC0yLjA3MzU5NSwtMC42NzkxMjMgLTIuODg5OTM0LC0xLjM1OTMzNyBsIC0wLjIzMDE1OSwtMC4xOTE3OCAwLjI4ODA2NSwtMS4xNjg3NDEgYyAwLjM3Mzk5MSwtMS41MTczNjEgMC41MzIwMTUsLTIuNTQwMzQ2IDAuNTQ5OTgxLC0zLjU2MDM0MiBsIDAuMDE0NTMsLTAuODI0OTE2IC0xLjUwODEsLTAuMDIxMyAtMS41MDgxMDEsLTAuMDIxMyAtMC4zMDY1MjEsMC4yNzY5MjMgYyAtMC41NTMxMzMsMC40OTk3MjIgLTAuNzE1OTA4LDEuMDQ5NTk1IC0xLjE0OTg2NCwzLjg4NDM4NiAtMC4zNDk3NjMsMi4yODQ3OTcgLTAuNjQyMTIyLDMuNjM4MzY0IC0xLjA0ODE2OCw0Ljg1MjgxIC0wLjczNzE4NywyLjIwNDg2MyAtMS43OTcwNTYsMy45NzMxMzggLTMuMzM4MTAyLDUuNTY5MjUzIC0xLjkyNDQxMiwxLjk5MzE3OCAtNC4yMDI2NTgsMy4zNTQ5MzUgLTcuMjM0NDQyLDQuMzI0MTc4IC0yLjI4NzQxNTEsMC43MzEyNzMgLTYuMDgwMzgwMywxLjI3NTM2IC03LjIwMDM2MjYsMS4wMzI4NjcgeiBNIDM5LjU4ODc4NSw1MS45MTIwNCBjIDAuMzY4MzExLC0wLjE5MDQ2MSAxLjgyNzY2OCwtMC42NzcwOTUgMi42MDM2MzYsLTAuODY4MjA0IDAuOTk1NTY0LC0wLjI0NTE5MSAwLjk4NDk1MiwtMC4yMzk0MzUgMS4xNzEwNDgsLTAuNjM1MzM2IDAuMTg0NDQxLC0wLjM5MjM4MyAwLjIxMDM4MiwtMC43NTk1NTggMC4wNjIzNCwtMC44ODI0MjEgLTAuMDU1MTYsLTAuMDQ1NzggLTAuNTMzNDI4LC0wLjE1NzEzMiAtMS4wNjI4MjIsLTAuMjQ3NDU1IC0xLjU2NDY5MiwtMC4yNjY5NjMgLTIuMDQ1NDE1LC0wLjUyMzg2MSAtMi40MjY2MTUsLTEuMjk2NzgzIC0wLjA4NTEyLC0wLjE3MjU5NCAtMC41NTEwMTQsLTEuMzAyMjk3IC0xLjAzNTMxNiwtMi41MTA0NTIgLTAuNDg0MzAyLC0xLjIwODE1NSAtMC45NDE1NDEsLTIuMjU5ODAyIC0xLjAxNjA4NiwtMi4zMzY5OTIgLTAuMDc0NTUsLTAuMDc3MTkgLTAuMTg4NzAxLC0wLjExOTk0NCAtMC4yNTM2NzgsLTAuMDk1MDEgLTAuMTM3MzAzLDAuMDUyNjkgLTAuNzQ2MjY3LDEuMDQwNjI0IC0wLjgxODI2NiwxLjMyNzQ5IC0wLjA1NTE1LDAuMjE5NzQ1IDIuMjY4MTQ0LDcuNDk0ODMxIDIuNDI1NTE5LDcuNTk1MTgzIDAuMTE3OSwwLjA3NTE4IDAuMTA0NDA0LDAuMDc3MTEgMC4zNTAyMzgsLTAuMDUwMDIgeiBtIDEzLjQ2Njc2OCwtOC4yODY1MTQgYyAtMC42MTYxMDUsLTAuNTczMTYgLTAuOTM0NTM5LC0wLjcyNTIgLTEuMzcyMjcsLTAuNjU1MjA0IC0wLjI0MzYyOCwwLjAzODk2IC0wLjM1MTUxMiwwLjAxODQyIC0wLjQ3MDkyNywtMC4wODk2NSAtMC4yMDAxODEsLTAuMTgxMTYxIC0wLjE5NTM0LC0wLjI4NTg3OSAwLjAyMjY5LC0wLjQ5MDcwNCAwLjI0MTc5MiwtMC4yMjcxNTMgMC43MDE3MjgsLTAuNDA5Njc4IDEuMDMyMzI0LC0wLjQwOTY3OCAwLjMzMTY3NCwwIDEuMjUxMiwwLjMyMzI4OCAxLjQ2MTkxMywwLjUxMzk4IDAuMTg1MDAxLDAuMTY3NDI1IDAuMTk2MTY3LDAuNTA3NTY1IDAuMDI3MzgsMC44MzM5NzIgLTAuMDY4NzgsMC4xMzMwMSAtMC4xMDk5NzIsMC4zNDQ2MzEgLTAuMDkxNTMsMC40NzAyNjggMC4wMTg0NCwwLjEyNTYzNyAwLjAwNDksMC4yNDYxMTEgLTAuMDMwMDQsMC4yNjc3MTkgLTAuMDM0OTYsMC4wMjE2MSAtMC4yOTU3NSwtMC4xNzY3MDggLTAuNTc5NTI2LC0wLjQ0MDcwNCB6IG0gLTAuMDQ1NTYsLTIuNDMxNTk3IGMgLTEuMDE0MjI3LC0wLjU2OTEwNyAtMS4wMTcwNzQsLTAuNTY5NTA4IC0yLjc4OTU2MywtMC4zOTI5NjYgLTAuOTE3OTQ2LDAuMDkxNDMgLTEuMTMzMjE0LDAuMDkyNzkgLTEuMjM1NjEzLDAuMDA3OCAtMC4xNjY0NzIsLTAuMTM4MTYgLTAuMTU2MjMzLC0wLjI1NjkyMyAwLjA0NDExLC0wLjUxMTYxNCAwLjE0NDkxOSwtMC4xODQyMzUgMC4yMTI1NiwtMC4yMDkxMzYgMC40OTAzMjMsLTAuMTgwNTA1IDAuMTc3MjE3LDAuMDE4MjcgMC40ODc0NzYsMC4wODEwNSAwLjY4OTQ2NywwLjEzOTUxNSAwLjM0ODQxNCwwLjEwMDg0OSAwLjQwOTgzMSwwLjA5Mjk3IDEuMTk3MjYsLTAuMTUzNjE3IDEuMTIwOTQxLC0wLjM1MTAyNiAxLjQzNjg4OCwtMC4zODAwNjUgMS44Njc0MzYsLTAuMTcxNjQxIDAuNTI3NTk0LDAuMjU1NDA1IDAuODA4NjU3LDEuMDUzMzEzIDAuNDg1MDI3LDEuMzc2OTQzIC0wLjE3MTQyMSwwLjE3MTQyMSAtMC4yNjU0MjUsMC4xNTcxMTIgLTAuNzQ4NDQ0LC0wLjExMzkyIHogbSAwLjMxODA0NCwtMi41MDI0OTEgYyAtMC4yNTI1MTYsLTAuMzE0MjIyIC0wLjQ1MTQ5NiwtMC40MjUwNDIgLTAuOTM2NTg1LC0wLjUyMTYxNyAtMC40MDg1NjMsLTAuMDgxMzQgLTAuNzc3MjI3LC0wLjI3ODM3MiAtMC44Mjk1OTgsLTAuNDQzMzc3IC0wLjA2NzMsLTAuMjEyMDQzIDAuMDM5ODIsLTAuNzUwOTA1IDAuMTc2NDMzLC0wLjg4NzUxNSAwLjEwNDE2NSwtMC4xMDQxNjUgMC4xNDM3MDIsLTAuMDk1MTggMC4zNTE4OTQsMC4wODAwMSAwLjI3Njc5NSwwLjIzMjkwOCAwLjI1NTg0NiwwLjIzMTM3MSAxLjAwNzAyMSwwLjA3MzgxIDAuMzU3NTI5LC0wLjA3NDk5IDEuMDUwMTAzLC0wLjEyODgzNCAxLjc2NTE2MiwtMC4xMzcyMjYgbCAxLjE3Njc3NCwtMC4wMTM4MSAwLjAyNTEsMC4yNjE4OTUgYyAwLjAyMDk0LDAuMjE4NDYxIC0wLjAyNTQ5LDAuMzEwMDIzIC0wLjI3OTk2LDAuNTUyMDkyIC0wLjE2Nzc4MywwLjE1OTYwOCAtMC40NjE1MDQsMC4zMzY5ODMgLTAuNjUyNzEzLDAuMzk0MTY3IC0wLjU1NDYxNiwwLjE2NTg2NCAtMS4wNzQ0ODgsMC40NTk5NDcgLTEuMjYyNDA3LDAuNzE0MTIxIC0wLjA5NTYyLDAuMTI5MzMgLTAuMjAwODUxLDAuMjM1MTQ1IC0wLjIzMzg1MSwwLjIzNTE0NSAtMC4wMzMsMCAtMC4xNzEyNzIsLTAuMTM4NDYyIC0wLjMwNzI3LC0wLjMwNzY5MiB6IgogICAgICAgICBpZD0icGF0aDUwNDUiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L2c+CiAgICA8ZwogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC41OTc2OTgwNywwLDAsMC41OTc2OTgwNywtMjIuMjAzNTk3LDM3LjUyMjEyOSkiCiAgICAgICBpZD0iZzQ4NzUiPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI2dyYWRpZW50RmlsbC0xLTMpO2ZpbGwtcnVsZTpldmVub2RkIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBkPSJtIDEwNC42MjEyOSwtMTUuNTM2MDUyIGMgLTUuMTE5Mzc0LDIuMTMxNDUxIC0xMC4xOTQyMzUsMS42ODA5IC0xMS44NTU2MTUsLTAuNjE0OTk4IC0xLjU2MzA3NSwtMi4xNjAwNDkgMC4xODY3ODksLTUuNTgyNzgzIDQuMjY3NDc2LC04LjAyMTM1MyA0LjY2NTc4OSwtMi43ODgyMiAxMS4wMDQyMzksLTMuNTIzNjA5IDEzLjY5Mzg1OSwtMS4wOTYyODQgMi45MTA3OSwyLjYyNjkyOSAtMC4xNDY3Niw3LjI1MTYyMyAtNi4xMDU3Miw5LjczMjYzNSAwLDAgMCwwIDAsMCBtIC00Ljk2MzMxMiwtNy44MzM5MzkgYyAtMy40MTA2NjEsMS45MTg3MzggLTQuOTk4MTM2LDQuNTM5NjM0IC0zLjc5ODgyNCw2LjA4MDg5OSAxLjI1MzA2MiwxLjYxMDMzOSA1LjI0ODM3NiwxLjY4MTUwNiA5LjI1MTgxNiwtMC4wNzQxNSA0LjQ5NTQsLTEuOTcxNCA3LjA2MTY4LC00LjYzMjUwOCA0LjY0MDIsLTYuODgzODI2IC0yLjI2MzcxLC0yLjEwNDYzMiAtNi4zMDA0NSwtMS4yNTY2MDIgLTEwLjA5MzE5MiwwLjg3NzA4MSAwLDAgMCwwIDAsMCIKICAgICAgICAgaWQ9InBhdGg0ODA5IiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0iZmlsbDojODAxOTI3O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmZjNzJjO3N0cm9rZS13aWR0aDowLjU7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgZD0ibSAxMDguMDM5NzUsLTIwLjEwNTE1NyBjIDAsMCAwLjc5NjcsLTAuMTczMDg4IDEuMzE5OTIsLTAuMjIzMzAzIDAuMTgzMjYsLTAuMDE3NTkgMC41MTQ2MSwtMC4wMzYyNiAwLjgwOTkzLDAuMDAzNiAwLjI5MTU1LDAuMDM5MyAwLjQ5NzY1LDAuMTIwMTEyIDAuNDk3NjUsMC4xMjAxMTIgMCwwIDYuMzMyNDIsMS44ODYzMzMgNi4zMzI0MiwxLjg4NjMzMyAwLDAgLTQuOTY3NjMsMS45MzE2NjYgLTQuOTY3NjMsMS45MzE2NjYgMCwwIC00LjU2ODI3LC0xLjczNzc1OSAtNC41NjgyNywtMS43Mzc3NTkgMCwwIC0wLjgyODA4LC0wLjI4NzgwMSAtMS4xODk4LC0wLjMxNDE0MyAtMC4yOTg5NCwtMC4wMjE3NiAtMC40MTg0OSwtMC4wMjMzMSAtMC42MTA3MSwwLjA2MyAtMC4xMzMyMiwwLjA1OTgxIC0wLjkyNTYsMC40MTU1ODIgLTAuOTI1NiwwLjQxNTU4MiAwLDAgMi45NjIzNSwzLjI1MzUyMiAyLjk2MjM1LDMuMjUzNTIyIDAsMCAtMy41MzA4MiwxLjM3MzA4MSAtMy41MzA4MiwxLjM3MzA4MSAwLDAgLTYuNDMzMjQsLTcuNTk0MDU1IC02LjQzMzI0LC03LjU5NDA1NSAwLDAgNi4wNTIzNywtMy4yNzk2NTggNi4wNTIzNywtMy4yNzk2NTggMCwwIDMuMTgwMTUsLTEuNjY2NDQ3IDUuMjYwNzUsMC4yOTc3NyAyLjIxMzkxLDIuMDkwMDYxIC0xLjAwOTMxLDMuODA0Mjc5IC0xLjAwOTMxLDMuODA0Mjc5IDAsMCAtMWUtNSwyZS02IC0xZS01LDJlLTYgbSAtNC4wMzMxNSwtMS44NDUyMjIgYyAwLDAgLTEuOTU2MTYsMC45OTQyNDEgLTEuOTU2MTYsMC45OTQyNDEgMCwwIDEuMTUwMTQsMS4yNjQzNiAxLjE1MDE0LDEuMjY0MzYgMCwwIDIuMDI1ODQsLTAuOTc5MTA1IDIuMDI1ODQsLTAuOTc5MTA1IDAsMCAwLjk3NTkyLC0wLjQ3NDMzMSAwLjMzMzE4LC0xLjEzMzk5MyAtMC42NDI5MiwtMC42NTk4NTUgLTEuNTUzMDEsLTAuMTQ1NTMgLTEuNTUzMDEsLTAuMTQ1NTMgMCwwIDFlLTUsMi43ZS01IDFlLTUsMi43ZS01IgogICAgICAgICBpZD0icGF0aDQ4MTEiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" width="250px"></h1>
<p class="author">
George G. Vega Yon<br>University of Southern California<br>Department of Preventive Medicine
</p>
<p class="date">July 7th, 2018</p>
</div>
<div id="creating-objects" class="slide section level1">
<h1>Creating objects</h1>
<ul>
<li><p>In R you can create new objects by either using the assign operator (<code><-</code>) or the equal sign <code>=</code>, for example, the following 2 are equivalent:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1">a <-<span class="st"> </span><span class="dv">1</span></a>
<a class="sourceLine" id="cb1-2" data-line-number="2">a =<span class="st"> </span><span class="dv">1</span></a></code></pre></div>
<p>And it works for any type of data</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="co"># Hey! here is a comment!.</span></a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="co"># Comments in R can be either at the begining of a line ...</span></a>
<a class="sourceLine" id="cb2-3" data-line-number="3">b <-<span class="st"> "aloha"</span> <span class="co"># ... or at the end of it!</span></a></code></pre></div>
<p>Historically the assign operator is the most common used.</p></li>
</ul>
</div>
<div id="data-types" class="slide section level1">
<h1>Data types</h1>
<ul>
<li><p>The most basic data (object) type in R are vectors.</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1">myvec1 <-<span class="st"> </span><span class="kw">vector</span>(<span class="st">"logical"</span>, <span class="dv">3</span>) <span class="co"># This is a logical vector of length 3</span></a>
<a class="sourceLine" id="cb3-2" data-line-number="2">myvec2 <-<span class="st"> </span><span class="kw">c</span>(<span class="ot">FALSE</span>, <span class="ot">TRUE</span>, <span class="ot">FALSE</span>) <span class="co"># This is ALSO a logical vector of length 3</span></a>
<a class="sourceLine" id="cb3-3" data-line-number="3">myvec2</a></code></pre></div>
<pre><code>## [1] FALSE TRUE FALSE</code></pre>
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">length</span>(myvec2)</a></code></pre></div>
<pre><code>## [1] 3</code></pre></li>
<li><p>Vectors can be of different modes: <code>logical</code>, <code>integer</code>, <code>numeric</code> (double), <code>complex</code>, <code>character</code>, and <code>raw</code>. (so one mode per vector!).</p></li>
<li><p>Vectors can also be lists, which is a VERY special type of object in R (most of its objects are lists!)</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1">mylist1 <-<span class="st"> </span><span class="kw">vector</span>(<span class="st">"list"</span>, <span class="dv">2</span>) <span class="co"># This is a list with 2 empty slots</span></a>
<a class="sourceLine" id="cb7-2" data-line-number="2">mylist2 <-<span class="st"> </span><span class="kw">list</span>(<span class="ot">NULL</span>, <span class="ot">NULL</span>) <span class="co"># This is ALSO a list with 2 empty slots</span></a>
<a class="sourceLine" id="cb7-3" data-line-number="3">mylist1</a></code></pre></div>
<pre><code>## [[1]]
## NULL
##
## [[2]]
## NULL</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>Moreover, lists elements can have names</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1">mylist2 <-<span class="st"> </span><span class="kw">list</span>(<span class="dt">first =</span> <span class="ot">NULL</span>, <span class="dt">second =</span> <span class="dv">1</span>, <span class="dt">third =</span> <span class="kw">c</span>(<span class="st">"a"</span>, <span class="st">"b"</span>, <span class="st">"c"</span>))</a>
<a class="sourceLine" id="cb9-2" data-line-number="2">mylist2</a></code></pre></div>
<pre><code>## $first
## NULL
##
## $second
## [1] 1
##
## $third
## [1] "a" "b" "c"</code></pre>
<p>And we can access them as follows</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1"><span class="co"># Getting the 3rd element of the list</span></a>
<a class="sourceLine" id="cb11-2" data-line-number="2">mylist2<span class="op">$</span>third <span class="co"># By name using the dollar sign</span></a>
<a class="sourceLine" id="cb11-3" data-line-number="3">mylist2[[<span class="dv">3</span>]] <span class="co"># By position</span></a>
<a class="sourceLine" id="cb11-4" data-line-number="4">mylist2[[<span class="st">"third"</span>]] <span class="co"># By name using a string</span></a></code></pre></div>
<pre><code>## [1] "a" "b" "c"</code></pre></li>
</ul>
</div>
<div id="attributes-and-structure" class="slide section level1">
<h1>Attributes and Structure</h1>
<ul>
<li><p>Objects in R have attributes (metadata)</p>
<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1"><span class="co"># Here are the attributes of the iris dataset</span></a>
<a class="sourceLine" id="cb13-2" data-line-number="2"><span class="kw">attributes</span>(iris) </a></code></pre></div>
<pre><code>## $names
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## [5] "Species"
##
## $class
## [1] "data.frame"
##
## $row.names
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
## [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
## [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
## [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
## [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
## [103] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
## [120] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
## [137] 137 138 139 140 141 142 143 144 145 146 147 148 149 150</code></pre>
<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">head</span>(iris)</a></code></pre></div>
<pre><code>## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>You can take a general look at the structure of an R object with the <code>str()</code> function</p>
<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1"><span class="co"># Let's take a look at the iris dataset, again</span></a>
<a class="sourceLine" id="cb17-2" data-line-number="2"><span class="kw">str</span>(iris)</a></code></pre></div>
<pre><code>## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...</code></pre></li>
</ul>
</div>
<div id="missing-values" class="slide section level1 small">
<h1>Missing values</h1>
<p>R has different types of Missing values:</p>
<ul>
<li><code>NA</code>: no information, has length 1,</li>
<li><code>NULL</code>: which has length 0,</li>
<li><code>Inf</code>: Infinite, and</li>
<li><code>NaN</code>: Not a Number</li>
</ul>
<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1"><span class="kw">str</span>(<span class="kw">c</span>(<span class="ot">NA</span>, 1L)) <span class="co"># Integers can have NAs</span></a>
<a class="sourceLine" id="cb19-2" data-line-number="2">## int [1:2] NA 1</a>
<a class="sourceLine" id="cb19-3" data-line-number="3"><span class="kw">str</span>(<span class="kw">c</span>(<span class="ot">NaN</span>, 1L, <span class="ot">Inf</span>)) <span class="co"># But not NaN or Inf (automatic coercion)</span></a>
<a class="sourceLine" id="cb19-4" data-line-number="4">## num [1:3] NaN 1 Inf</a>
<a class="sourceLine" id="cb19-5" data-line-number="5"><span class="kw">str</span>(<span class="kw">c</span>(<span class="op">-</span><span class="ot">Inf</span>, <span class="dv">1</span>, <span class="ot">NULL</span>, <span class="op">+</span><span class="ot">Inf</span>)) <span class="co"># And Nulls are... of length 0!</span></a>
<a class="sourceLine" id="cb19-6" data-line-number="6">## num [1:3] -Inf 1 Inf</a></code></pre></div>
<ul>
<li><p>In the second line, we have an example of <em>automatic coercion</em></p></li>
<li><p>These have companion functions <code>is.na()</code>, <code>is.null</code>, <code>is.infinite</code> (or <code>is.finite()</code>, which covers NA, Inf, and NaN), and <code>is.nan</code>.</p></li>
</ul>
</div>
<div id="questions" class="slide section level1">
<h1>Questions</h1>
<ol style="list-style-type: decimal">
<li><p>What is the mode of the following vector <code>myvector <- c(NA, NaN, Inf)</code>? (try not to use the <code>mode()</code> function in R)</p></li>
<li><p>The <code>c()</code> function can be used with other vectors, for example</p>
<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1">my_integer_vector <-<span class="st"> </span><span class="kw">c</span>(1L, 2L, 3L) </a>
<a class="sourceLine" id="cb20-2" data-line-number="2">my_string_vector <-<span class="st"> </span><span class="kw">c</span>(<span class="st">"hello"</span>, <span class="st">"world"</span>)</a></code></pre></div>
<p>What is the mode of the vector <code>c(my_integer_vector, my_string_vector)</code>?</p></li>
<li><p>What do each one of these functions return on the vector <code>myvector</code>?</p></li>
<li><p>What are the attributes of the following object <code>mymat <- matrix(runif(12), ncol=4)</code>?</p></li>
</ol>
</div>
<div id="linear-algebra" class="slide section level1">
<h1>Linear Algebra</h1>
<ul>
<li><p><strong>Matrix</strong>: A special class of array, are vectors with a <code>dim</code> attribute of length 2 (number of rows and number of columns).</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1">mymat <-<span class="st"> </span><span class="kw">matrix</span>(<span class="dv">1</span><span class="op">:</span><span class="dv">9</span>, <span class="dt">ncol=</span><span class="dv">3</span>) <span class="co"># A matrix with numbers 1 through 9 with 3 columns</span></a>
<a class="sourceLine" id="cb21-2" data-line-number="2">mymat</a></code></pre></div>
<pre><code>## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9</code></pre>
<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1"><span class="kw">str</span>(mymat)</a></code></pre></div>
<pre><code>## int [1:3, 1:3] 1 2 3 4 5 6 7 8 9</code></pre>
<p>R stores elements in column major-order. We can access matrices elements in the following way.</p>
<div class="sourceCode" id="cb25"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1">mymat[<span class="dv">1</span>, <span class="dv">2</span>] <span class="co"># The element in the (1, 2) location of the matrix</span></a>
<a class="sourceLine" id="cb25-2" data-line-number="2">## [1] 4</a>
<a class="sourceLine" id="cb25-3" data-line-number="3">mymat[<span class="dv">4</span>] <span class="co"># The fourth element in the vector... which is (1, 2)</span></a>
<a class="sourceLine" id="cb25-4" data-line-number="4">## [1] 4</a></code></pre></div>
<p>Matrices can have row and column names too.</p></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>Some matrix fundamental operators, for matrices <code>A</code>, and <code>B</code> (both square) with the same dimensions (just for the examples):</p>
<ul>
<li>Element wise product, addition, substraction, and quotient: <code>A * B</code>, <code>A + B</code>, <code>A - B</code>, <code>A/B</code></li>
<li>Transpose <code>t(A)</code></li>
<li>Inverse <code>solve(A)</code></li>
<li>Column and row bind, <code>cbind(A, B)</code>, <code>rbind(A, B)</code></li>
</ul>
<p>See the <code>help("%*%")</code>, <code>help("cbind")</code></p></li>
</ul>
</div>
<div id="questions-1" class="slide section level1">
<h1>Questions</h1>
<ul>
<li><p>Given the following matrices <code>A</code>, <code>B</code>, and C</p>
<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1"><span class="kw">set.seed</span>(<span class="dv">122</span>)</a>
<a class="sourceLine" id="cb26-2" data-line-number="2">A <-<span class="st"> </span><span class="kw">matrix</span>(<span class="kw">rnorm</span>(<span class="dv">12</span>), <span class="dt">ncol=</span><span class="dv">3</span>)</a>
<a class="sourceLine" id="cb26-3" data-line-number="3">B <-<span class="st"> </span><span class="kw">matrix</span>(<span class="kw">rnorm</span>(<span class="dv">12</span>), <span class="dt">nrow=</span><span class="dv">3</span>)</a>
<a class="sourceLine" id="cb26-4" data-line-number="4">C <-<span class="st"> </span>A <span class="op">%*%</span><span class="st"> </span><span class="kw">cbind</span>(<span class="dv">1</span><span class="op">:</span><span class="dv">3</span>) <span class="op">+</span><span class="st"> </span><span class="kw">rnorm</span>(<span class="dv">4</span>) <span class="co"># Adding a vector of length 4!</span></a></code></pre></div>
<p>Compute</p>
<ol style="list-style-type: decimal">
<li>Matrix multiplication</li>
<li>Transpose of A</li>
<li>Element-wise product of A and B’</li>
<li>The inverse of the cross product of A</li>
<li><span class="math inline">\((A^\mbox{t} A)^{-1} A^\mbox{t} C\)</span></li>
</ol></li>
</ul>
</div>
<div id="other-fundamental-types" class="slide section level1">
<h1>Other fundamental types</h1>
<p>Other fundamental type of objects in R are:</p>
<ul>
<li><p><strong>Factors</strong>: A set of <em>integer codes</em> with labels (levels).</p>
<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1">myfactor <-<span class="st"> </span><span class="kw">factor</span>(<span class="kw">c</span>(<span class="st">"a"</span>, <span class="st">"a"</span>, <span class="st">"b"</span>, <span class="st">"xyz"</span>))</a>
<a class="sourceLine" id="cb27-2" data-line-number="2">myfactor</a></code></pre></div>
<pre><code>## [1] a a b xyz
## Levels: a b xyz</code></pre>
<p>We treat factors as vectors.</p></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p><strong>Data frames</strong>: “A data frame is a list of variables of the same number of rows with unique row names, given class”data.frame“.”</p>
<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1"><span class="co"># Data frames can have multiple type objects, here, factor and numeric</span></a>
<a class="sourceLine" id="cb29-2" data-line-number="2">mydf <-<span class="st"> </span><span class="kw">data.frame</span>(<span class="dt">a_letter =</span> <span class="kw">c</span>(<span class="st">"a"</span>, <span class="st">"b"</span>, <span class="st">"c"</span>), <span class="dt">a_number =</span> <span class="kw">c</span>(<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">100</span>))</a>
<a class="sourceLine" id="cb29-3" data-line-number="3">mydf</a></code></pre></div>
<pre><code>## a_letter a_number
## 1 a 1
## 2 b 2
## 3 c 100</code></pre>
<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1"><span class="kw">str</span>(mydf)</a></code></pre></div>
<pre><code>## 'data.frame': 3 obs. of 2 variables:
## $ a_letter: Factor w/ 3 levels "a","b","c": 1 2 3
## $ a_number: num 1 2 100</code></pre>
<p>We can access data frame objects as follow</p>
<div class="sourceCode" id="cb33"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" data-line-number="1">mydf<span class="op">$</span>a_letter <span class="co"># Dollar sign</span></a>
<a class="sourceLine" id="cb33-2" data-line-number="2">mydf[[<span class="dv">1</span>]] <span class="co"># Position of the column</span></a>
<a class="sourceLine" id="cb33-3" data-line-number="3">mydf[[<span class="st">"a_letter"</span>]] <span class="co"># Name of the column</span></a></code></pre></div>
<pre><code>## [1] a b c
## Levels: a b c</code></pre></li>
</ul>
</div>
<div id="statistical-functions" class="slide section level1">
<h1>Statistical Functions</h1>
<ul>
<li><p>R has a very nice set of families of distributions. In general, distribution functions have the following name structure:</p>
<ol style="list-style-type: lower-alpha">
<li><p><strong>Random Number Generation</strong>: <code>r[name-of-the-distribution]</code>, e.g. <code>rnorm</code> for normal, <code>runif</code> for uniform.</p></li>
<li><p><strong>Density function</strong>: <code>d[name-of-the-distribution]</code>, e.g. <code>dnorm</code> for normal, <code>dunif</code> for uniform.</p></li>
<li><p><strong>Cumulative Distribution Function (CDF)</strong>: <code>p[name-of-the-distribution]</code>, e.g. <code>pnorm</code> for normal, <code>punif</code> for uniform.</p></li>
<li><p><strong>Inverse of the CDF (quantile)</strong>: <code>q[name-of-the-distribution]</code>, e.g. <code>qnorm</code> for the normal, <code>qunif</code> for the uniform.</p></li>
</ol></li>
<li><p>In the case of <a href="https://en.wikipedia.org/wiki/Pseudorandom_number_generator" target="_blank"><strong>pseudo random numbers</strong></a> (the <code>r</code> prefix), it is important to <strong>always</strong> set the seed to ensure <strong>reproducibility</strong></p>
<div class="sourceCode" id="cb35"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" data-line-number="1"><span class="co"># First run</span></a>
<a class="sourceLine" id="cb35-2" data-line-number="2"><span class="kw">set.seed</span>(<span class="dv">12</span>)</a>
<a class="sourceLine" id="cb35-3" data-line-number="3"><span class="kw">rnorm</span>(<span class="dv">4</span>)</a>
<a class="sourceLine" id="cb35-4" data-line-number="4">## [1] -1.4805676 1.5771695 -0.9567445 -0.9200052</a>
<a class="sourceLine" id="cb35-5" data-line-number="5"></a>
<a class="sourceLine" id="cb35-6" data-line-number="6"><span class="co"># Second run</span></a>
<a class="sourceLine" id="cb35-7" data-line-number="7"><span class="kw">set.seed</span>(<span class="dv">12</span>)</a>
<a class="sourceLine" id="cb35-8" data-line-number="8"><span class="kw">rnorm</span>(<span class="dv">4</span>)</a>
<a class="sourceLine" id="cb35-9" data-line-number="9">## [1] -1.4805676 1.5771695 -0.9567445 -0.9200052</a></code></pre></div>
<p>More distributions available at <code>??Distributions</code>.</p></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li>Take a look at the normal distribution</li>
</ul>
<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" data-line-number="1"><span class="kw">set.seed</span>(<span class="dv">12</span>)</a>
<a class="sourceLine" id="cb36-2" data-line-number="2">op <-<span class="st"> </span><span class="kw">par</span>(<span class="dt">mfrow =</span> <span class="kw">c</span>(<span class="dv">2</span>,<span class="dv">2</span>))</a>
<a class="sourceLine" id="cb36-3" data-line-number="3"><span class="kw">hist</span>(<span class="kw">rnorm</span>(<span class="fl">1e5</span>))</a>
<a class="sourceLine" id="cb36-4" data-line-number="4"><span class="kw">curve</span>(qnorm)</a>
<a class="sourceLine" id="cb36-5" data-line-number="5"><span class="kw">curve</span>(pnorm, <span class="dt">xlim=</span><span class="kw">c</span>(<span class="op">-</span><span class="dv">3</span>, <span class="dv">3</span>))</a>
<a class="sourceLine" id="cb36-6" data-line-number="6"><span class="kw">curve</span>(dnorm, <span class="dt">xlim=</span><span class="kw">c</span>(<span class="op">-</span><span class="dv">3</span>, <span class="dv">3</span>))</a></code></pre></div>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABgAAAASACAMAAAAOH3aoAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nOzdB3gUZf7A8d8mIQm9d0S6XVHsqKAiCKKiHhbEswE2CHinop6KYsOu//NUEPSwnh4WVFDELnZAsMKJBCyISJcekvnv7GaTTbKbzO5OeWfe7+fxMbPZnXnfkMl+k93ZWTEAAFoSrycAAPAGAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANAUAQAATREAANBUQAOwu4g0qnqpe3jhTM8mZc3bx7bNaXCsa8MV7SPyiJMDrMiX7C+dHABAughAqafCV8lKVyZXrWnmPKS7a+PdI9Jue9mlb0Mim1LbwJ+P9umY1/KAqxbFPnGplBsZvnyZyKEldk0XgI0IQClVAtDF3QD8Uk/kwfKLZ0iqAZjfqfS+Pvuu0s/0rhSAn3JFHrVtwgDsQwBKKRKAzeFfwWXvh55za7zBIm22xi4UDZdUA/BTk/J7+/ujn2peKQBGeKtNV9s5aQD20CsAj02YMGF64jUUCcAScxqPuzbcV+HR7ogsbS386Lr2knIABphrdBl8VF74Q16h+Zk/pHIAloSjdr3dMweQOb0CUA2VAjDNteHOE8mJftG7l91ppxKAReYfLGPDC/NqhxeuNj/1XnjhfxVv1Vuk2RabZgzAPnoFoEN44eLo59aM69+tdvtewz6LXBoTu/crvfZ/1x7aslbTfS59t2wbJU8f16LOfvcXGQPDvg1/wrz1BOPXizseYV69dPQxnfNbHzT41ejTnevMW80pmXRIg/rdbw/f9/14Wefau/R9rOpzoRUHuqpeHXOz+fWaxt8mfiRzu/81Ph/aPr/rydOSbKXCGtXO5LdckZPL/40qB2DLg33b5jY/8PplSf+dbwvfPnezuTTY/EvAXHgo/KfAzoq3ekIcPtIIQFp0DcBt9WP3d8ctMSoHYNul2bHLvX+JbmJNr+jlYzeb/59jlN7Jft9C5FDD2D4iJ7bCbl+bN19pLj7ZP/qpfdZMrxddOmq7UUHlgcqmkR9/q/iRIsv/LB1tUFHCrVRYo9qZ3BReejk6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" width="768" /></p>
<div class="sourceCode" id="cb37"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" data-line-number="1"><span class="kw">par</span>(op)</a></code></pre></div>
</div>
<div class="slide section level1">
<ul>
<li>Take a look at the exponential</li>
</ul>
<div class="sourceCode" id="cb38"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb38-1" data-line-number="1"><span class="kw">set.seed</span>(<span class="dv">12</span>)</a>
<a class="sourceLine" id="cb38-2" data-line-number="2">op <-<span class="st"> </span><span class="kw">par</span>(<span class="dt">mfrow =</span> <span class="kw">c</span>(<span class="dv">2</span>,<span class="dv">2</span>))</a>
<a class="sourceLine" id="cb38-3" data-line-number="3"><span class="kw">hist</span>(<span class="kw">rexp</span>(<span class="fl">1e5</span>))</a>
<a class="sourceLine" id="cb38-4" data-line-number="4"><span class="kw">curve</span>(qexp)</a>
<a class="sourceLine" id="cb38-5" data-line-number="5"><span class="kw">curve</span>(pexp, <span class="dt">xlim=</span><span class="kw">c</span>(<span class="dv">0</span>, <span class="dv">6</span>))</a>
<a class="sourceLine" id="cb38-6" data-line-number="6"><span class="kw">curve</span>(dexp, <span class="dt">xlim=</span><span class="kw">c</span>(<span class="dv">0</span>, <span class="dv">6</span>))</a></code></pre></div>
<p><img src="data:image/png;base64,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AEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKADDV5kYyMvzgSam52ttWANcx/64gAIw1R5IWhX6sqSlTvG4FcB3z7wYCwFyDpOWuYLCHXOZ1I4AHmH8XEADm2tZE7gxOkewfvG4E8ADz7wICwGALAsnTa8l0r9sAPMH860cAmGyYBOR6r5sAPML8a0cAmGxHjmRv9boJwCPMv3YEgMlW15TAO143AXiE+deOADBYyfmSLc12eN0G4AnmXz8CwGAPSePCE2WE120AnmD+9SMAzLWsmswNzpLAu143AniA+XcBAWCsPWfKjaEf/aU5L4JhH+bfDQSAse6SRltCPzZll10TBbAJ8+8GAsBUi5JlZvjBq5L0nse9AG5j/l1BAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAICl/h9TtRuMocYeCwAAAABJRU5ErkJggg==" width="768" /></p>
<div class="sourceCode" id="cb39"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb39-1" data-line-number="1"><span class="kw">par</span>(op)</a></code></pre></div>
</div>
<div id="questions-2" class="slide section level1">
<h1>Questions</h1>
<ol style="list-style-type: decimal">
<li><p>Draw 1e5 samples from a chi2 with 2 degrees of freedom (hint: check <code>?Distributions</code>).</p></li>
<li><p>Draw 1e5 samples from a chi2 with 2 degrees of freedom using <code>rnorm</code> (hint: Recall that if <span class="math inline">\(X\sim N(0,1)\)</span>, then <span class="math inline">\(X^2\sim\chi^2_1\)</span>, and if <span class="math inline">\(X, Y\sim N(0,1)\)</span>, then <span class="math inline">\(X^2 + Y^2\sim\chi^2_2\)</span>).</p></li>
</ol>
</div>
<div id="control-flow-statements" class="slide section level1">
<h1>Control-flow statements</h1>
<ul>
<li><p>For-loops</p>
<div class="sourceCode" id="cb40"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb40-1" data-line-number="1"><span class="co"># The oldfashion forloop</span></a>
<a class="sourceLine" id="cb40-2" data-line-number="2"><span class="cf">for</span> (i <span class="cf">in</span> <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>) {</a>
<a class="sourceLine" id="cb40-3" data-line-number="3"> <span class="kw">print</span>(<span class="kw">paste</span>(<span class="st">"I'm step"</span>, i, <span class="st">"/"</span>, <span class="dv">10</span>))</a>
<a class="sourceLine" id="cb40-4" data-line-number="4">}</a></code></pre></div>
<pre><code>## [1] "I'm step 1 / 10"
## [1] "I'm step 2 / 10"
## [1] "I'm step 3 / 10"
## [1] "I'm step 4 / 10"
## [1] "I'm step 5 / 10"
## [1] "I'm step 6 / 10"
## [1] "I'm step 7 / 10"
## [1] "I'm step 8 / 10"
## [1] "I'm step 9 / 10"
## [1] "I'm step 10 / 10"</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>Ifelse</p>
<div class="sourceCode" id="cb42"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb42-1" data-line-number="1"><span class="co"># A nice ifelse</span></a>
<a class="sourceLine" id="cb42-2" data-line-number="2"><span class="cf">for</span> (i <span class="cf">in</span> <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>) {</a>
<a class="sourceLine" id="cb42-3" data-line-number="3"></a>
<a class="sourceLine" id="cb42-4" data-line-number="4"> <span class="cf">if</span> (i <span class="op">%%</span><span class="st"> </span><span class="dv">2</span>) <span class="co"># Modulus operand</span></a>
<a class="sourceLine" id="cb42-5" data-line-number="5"> <span class="kw">print</span>(<span class="kw">paste</span>(<span class="st">"I'm step"</span>, i, <span class="st">"/"</span>, <span class="dv">10</span>, <span class="st">"(and I'm odd)"</span>))</a>
<a class="sourceLine" id="cb42-6" data-line-number="6"> <span class="cf">else</span></a>
<a class="sourceLine" id="cb42-7" data-line-number="7"> <span class="kw">print</span>(<span class="kw">paste</span>(<span class="st">"I'm step"</span>, i, <span class="st">"/"</span>, <span class="dv">10</span>, <span class="st">"(and I'm even)"</span>))</a>
<a class="sourceLine" id="cb42-8" data-line-number="8"></a>
<a class="sourceLine" id="cb42-9" data-line-number="9">}</a></code></pre></div>
<pre><code>## [1] "I'm step 1 / 10 (and I'm odd)"
## [1] "I'm step 2 / 10 (and I'm even)"
## [1] "I'm step 3 / 10 (and I'm odd)"
## [1] "I'm step 4 / 10 (and I'm even)"
## [1] "I'm step 5 / 10 (and I'm odd)"
## [1] "I'm step 6 / 10 (and I'm even)"
## [1] "I'm step 7 / 10 (and I'm odd)"
## [1] "I'm step 8 / 10 (and I'm even)"
## [1] "I'm step 9 / 10 (and I'm odd)"
## [1] "I'm step 10 / 10 (and I'm even)"</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>While</p>
<div class="sourceCode" id="cb44"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb44-1" data-line-number="1"><span class="co"># A while</span></a>
<a class="sourceLine" id="cb44-2" data-line-number="2">i <-<span class="st"> </span><span class="dv">10</span></a>
<a class="sourceLine" id="cb44-3" data-line-number="3"><span class="cf">while</span> (i <span class="op">></span><span class="st"> </span><span class="dv">0</span>) {</a>
<a class="sourceLine" id="cb44-4" data-line-number="4"> <span class="kw">print</span>(<span class="kw">paste</span>(<span class="st">"I'm step"</span>, i, <span class="st">"/"</span>, <span class="dv">10</span>))</a>
<a class="sourceLine" id="cb44-5" data-line-number="5"> i <-<span class="st"> </span>i <span class="op">-</span><span class="st"> </span><span class="dv">1</span></a>
<a class="sourceLine" id="cb44-6" data-line-number="6">}</a></code></pre></div>
<pre><code>## [1] "I'm step 10 / 10"
## [1] "I'm step 9 / 10"
## [1] "I'm step 8 / 10"
## [1] "I'm step 7 / 10"
## [1] "I'm step 6 / 10"
## [1] "I'm step 5 / 10"
## [1] "I'm step 4 / 10"
## [1] "I'm step 3 / 10"
## [1] "I'm step 2 / 10"
## [1] "I'm step 1 / 10"</code></pre></li>
</ul>
</div>
<div id="functions" class="slide section level1">
<h1>Functions</h1>
<ul>
<li><p>Understanding functions, and functional programming can be very useful for your day-to-day work with R (and any programming language).</p></li>
<li><p>Functions can be created in a single line, or span multiple lines of code.</p></li>
<li><p>Usually, functions are structured as follow:</p>
<div class="sourceCode" id="cb46"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb46-1" data-line-number="1">name_of_the_function <-<span class="st"> </span><span class="cf">function</span>(</a>
<a class="sourceLine" id="cb46-2" data-line-number="2"> argument1, <span class="co"># First argument, required value</span></a>
<a class="sourceLine" id="cb46-3" data-line-number="3"> <span class="dt">argument2 =</span> <span class="dv">1</span> <span class="co"># Second argument, has a default (so is optional)</span></a>
<a class="sourceLine" id="cb46-4" data-line-number="4">) {</a>
<a class="sourceLine" id="cb46-5" data-line-number="5"></a>
<a class="sourceLine" id="cb46-6" data-line-number="6"> [your neat R code here]</a>
<a class="sourceLine" id="cb46-7" data-line-number="7"></a>
<a class="sourceLine" id="cb46-8" data-line-number="8"> <span class="kw">return</span>(answer)</a>
<a class="sourceLine" id="cb46-9" data-line-number="9"></a>
<a class="sourceLine" id="cb46-10" data-line-number="10">}</a></code></pre></div></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>This is the very basic that we can write in R</p>
<div class="sourceCode" id="cb47"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb47-1" data-line-number="1"><span class="co"># A function that does nothing</span></a>
<a class="sourceLine" id="cb47-2" data-line-number="2">my_lame_function <-<span class="st"> </span><span class="cf">function</span>() {}</a>
<a class="sourceLine" id="cb47-3" data-line-number="3"><span class="kw">my_lame_function</span>()</a></code></pre></div>
<pre><code>## NULL</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>Here is a more complicated function</p>
<div class="sourceCode" id="cb49"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb49-1" data-line-number="1">calc_sum <-<span class="st"> </span><span class="cf">function</span>(A, B) {</a>
<a class="sourceLine" id="cb49-2" data-line-number="2"> A <span class="op">+</span><span class="st"> </span>B</a>
<a class="sourceLine" id="cb49-3" data-line-number="3">}</a>
<a class="sourceLine" id="cb49-4" data-line-number="4"></a>
<a class="sourceLine" id="cb49-5" data-line-number="5"><span class="kw">calc_sum</span>(<span class="dv">1</span>, <span class="dv">5</span>)</a></code></pre></div>
<pre><code>## [1] 6</code></pre></li>
</ul>
</div>
<div class="slide section level1">
<ul>
<li><p>We can use recursions too!</p>
<div class="sourceCode" id="cb51"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb51-1" data-line-number="1"><span class="co"># An inefficient implementation of the Fibonacci number</span></a>
<a class="sourceLine" id="cb51-2" data-line-number="2">fib <-<span class="st"> </span><span class="cf">function</span>(i) {</a>
<a class="sourceLine" id="cb51-3" data-line-number="3"></a>
<a class="sourceLine" id="cb51-4" data-line-number="4"> <span class="cf">if</span> (i <span class="op"><=</span><span class="st"> </span><span class="dv">2</span>)</a>
<a class="sourceLine" id="cb51-5" data-line-number="5"> <span class="kw">return</span>(<span class="dv">1</span>)</a>
<a class="sourceLine" id="cb51-6" data-line-number="6"></a>
<a class="sourceLine" id="cb51-7" data-line-number="7"> <span class="kw">fib</span>(i <span class="op">-</span><span class="st"> </span><span class="dv">2</span>) <span class="op">+</span><span class="st"> </span><span class="kw">fib</span>(i <span class="op">-</span><span class="st"> </span><span class="dv">1</span>)</a>
<a class="sourceLine" id="cb51-8" data-line-number="8"></a>
<a class="sourceLine" id="cb51-9" data-line-number="9">}</a>
<a class="sourceLine" id="cb51-10" data-line-number="10"></a>
<a class="sourceLine" id="cb51-11" data-line-number="11"><span class="kw">c</span>(<span class="kw">fib</span>(<span class="dv">1</span>), <span class="kw">fib</span>(<span class="dv">2</span>), <span class="kw">fib</span>(<span class="dv">4</span>), <span class="kw">fib</span>(<span class="dv">5</span>), <span class="kw">fib</span>(<span class="dv">6</span>), <span class="kw">fib</span>(<span class="dv">7</span>), <span class="kw">fib</span>(<span class="dv">8</span>))</a></code></pre></div>
<pre><code>## [1] 1 1 3 5 8 13 21</code></pre></li>
</ul>
</div>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>